[tor-commits] [orbot/master] remove redundant code from old ant build format (not in gradle modules)

n8fr8 at torproject.org n8fr8 at torproject.org
Thu Oct 13 19:38:50 UTC 2016


commit 54b33493441870a09efe4e28dad9ae30f327afac
Author: Nathan Freitas <nathan at freitas.net>
Date:   Wed Jun 29 09:54:03 2016 -0400

    remove redundant code from old ant build format (not in gradle modules)
---
 assets/bridges.txt                                 |    22 -
 jni/Android.mk                                     |   145 -
 jni/Application.mk                                 |     4 -
 jni/libancillary/API                               |   139 -
 jni/libancillary/COPYING                           |    21 -
 jni/libancillary/Makefile                          |    73 -
 jni/libancillary/ancillary.h                       |   131 -
 jni/libancillary/fd_recv.c                         |    98 -
 jni/libancillary/fd_send.c                         |    92 -
 jni/libancillary/test.c                            |   112 -
 jni/pdnsd/AUTHORS                                  |    58 -
 jni/pdnsd/COPYING                                  |   674 --
 jni/pdnsd/COPYING.BSD                              |    26 -
 jni/pdnsd/ChangeLog                                |  3304 ------
 jni/pdnsd/ChangeLog.old                            |   161 -
 jni/pdnsd/INSTALL                                  |   190 -
 jni/pdnsd/Makefile.am                              |    40 -
 jni/pdnsd/Makefile.in                              |   734 --
 jni/pdnsd/NEWS                                     |   324 -
 jni/pdnsd/PKGBUILD.in                              |    24 -
 jni/pdnsd/README                                   |    22 -
 jni/pdnsd/README.par                               |   216 -
 jni/pdnsd/README.par.old                           |   249 -
 jni/pdnsd/THANKS                                   |    66 -
 jni/pdnsd/TODO                                     |    20 -
 jni/pdnsd/acconfig.h                               |   191 -
 jni/pdnsd/aclocal.m4                               |  1021 --
 jni/pdnsd/compile                                  |   142 -
 jni/pdnsd/config.h                                 |   437 -
 jni/pdnsd/config.h.in                              |   430 -
 jni/pdnsd/configure                                | 11389 -------------------
 jni/pdnsd/configure.in                             |   548 -
 jni/pdnsd/contrib/Makefile.am                      |     2 -
 jni/pdnsd/contrib/Makefile.in                      |   323 -
 jni/pdnsd/contrib/README                           |    30 -
 jni/pdnsd/contrib/change_pdnsd_server_ip.pl        |   124 -
 jni/pdnsd/contrib/dhcp2pdnsd                       |    45 -
 jni/pdnsd/contrib/pdnsd_dhcp.pl                    |   246 -
 jni/pdnsd/depcomp                                  |   530 -
 jni/pdnsd/doc/Makefile.am                          |    28 -
 jni/pdnsd/doc/Makefile.in                          |   483 -
 jni/pdnsd/doc/doc_makefile                         |    38 -
 jni/pdnsd/doc/html/dl.html                         |    96 -
 jni/pdnsd/doc/html/dl.html.in                      |    96 -
 jni/pdnsd/doc/html/doc.html                        |  2630 -----
 jni/pdnsd/doc/html/doc_makefile                    |    23 -
 jni/pdnsd/doc/html/faq.html                        |   412 -
 jni/pdnsd/doc/html/htmlsubst.pl                    |    36 -
 jni/pdnsd/doc/html/index.html                      |   686 --
 jni/pdnsd/doc/html2confman.pl                      |   161 -
 jni/pdnsd/doc/pdnsd-ctl.8                          |   198 -
 jni/pdnsd/doc/pdnsd.8.in                           |   326 -
 jni/pdnsd/doc/pdnsd.conf.5.in                      |  1328 ---
 jni/pdnsd/doc/pdnsd.conf.in                        |   143 -
 jni/pdnsd/doc/txt/doc_makefile                     |    21 -
 jni/pdnsd/doc/txt/faq.txt                          |   227 -
 jni/pdnsd/doc/txt/intro.txt                        |   305 -
 jni/pdnsd/doc/txt/manual.txt                       |  2017 ----
 jni/pdnsd/file-list.base.in                        |     5 -
 jni/pdnsd/install-sh                               |   323 -
 jni/pdnsd/missing                                  |   360 -
 jni/pdnsd/pdnsd.spec.in                            |   244 -
 jni/pdnsd/src/Makefile.am                          |    24 -
 jni/pdnsd/src/Makefile.in                          |   921 --
 jni/pdnsd/src/cache.c                              |  2731 -----
 jni/pdnsd/src/cache.h                              |   306 -
 jni/pdnsd/src/conf-keywords.h                      |   238 -
 jni/pdnsd/src/conf-parser.c                        |  2118 ----
 jni/pdnsd/src/conf-parser.h                        |    29 -
 jni/pdnsd/src/conff.c                              |   544 -
 jni/pdnsd/src/conff.h                              |   190 -
 jni/pdnsd/src/consts.c                             |   133 -
 jni/pdnsd/src/consts.h                             |    69 -
 jni/pdnsd/src/debug.c                              |    64 -
 jni/pdnsd/src/debug.h                              |    52 -
 jni/pdnsd/src/dns.c                                |   617 -
 jni/pdnsd/src/dns.h                                |   309 -
 jni/pdnsd/src/dns_answer.c                         |  2170 ----
 jni/pdnsd/src/dns_answer.h                         |    40 -
 jni/pdnsd/src/dns_query.c                          |  3798 -------
 jni/pdnsd/src/dns_query.h                          |    51 -
 jni/pdnsd/src/error.c                              |   142 -
 jni/pdnsd/src/error.h                              |   115 -
 jni/pdnsd/src/freebsd_netinet_ip_icmp.h            |   187 -
 jni/pdnsd/src/hash.c                               |   322 -
 jni/pdnsd/src/hash.h                               |    83 -
 jni/pdnsd/src/helpers.c                            |   795 --
 jni/pdnsd/src/helpers.h                            |   319 -
 jni/pdnsd/src/icmp.c                               |   544 -
 jni/pdnsd/src/icmp.h                               |    43 -
 jni/pdnsd/src/ipvers.h                             |   297 -
 jni/pdnsd/src/list.c                               |   171 -
 jni/pdnsd/src/list.h                               |   170 -
 jni/pdnsd/src/main.c                               |   710 --
 jni/pdnsd/src/make_rr_types_h.pl                   |   309 -
 jni/pdnsd/src/netdev.c                             |   363 -
 jni/pdnsd/src/netdev.h                             |    32 -
 jni/pdnsd/src/pdnsd-ctl/Makefile.am                |    18 -
 jni/pdnsd/src/pdnsd-ctl/Makefile.in                |   470 -
 jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c                |   799 --
 jni/pdnsd/src/pdnsd_assert.h                       |    51 -
 jni/pdnsd/src/rc/ArchLinux/Makefile.am             |     7 -
 jni/pdnsd/src/rc/ArchLinux/Makefile.in             |   332 -
 jni/pdnsd/src/rc/ArchLinux/pdnsd.in                |    45 -
 jni/pdnsd/src/rc/Debian/Makefile.am                |     8 -
 jni/pdnsd/src/rc/Debian/Makefile.in                |   334 -
 jni/pdnsd/src/rc/Debian/pdnsd.in                   |    52 -
 jni/pdnsd/src/rc/Makefile.am                       |     5 -
 jni/pdnsd/src/rc/Makefile.in                       |   526 -
 jni/pdnsd/src/rc/README                            |   104 -
 jni/pdnsd/src/rc/RedHat/Makefile.am                |    12 -
 jni/pdnsd/src/rc/RedHat/Makefile.in                |   337 -
 jni/pdnsd/src/rc/RedHat/pdnsd.in                   |    88 -
 jni/pdnsd/src/rc/Slackware/Makefile.am             |     3 -
 jni/pdnsd/src/rc/Slackware/Makefile.in             |   330 -
 jni/pdnsd/src/rc/Slackware/rc.pdnsd.in             |    74 -
 jni/pdnsd/src/rc/SuSE/Makefile.am                  |    22 -
 jni/pdnsd/src/rc/SuSE/Makefile.in                  |   345 -
 jni/pdnsd/src/rc/SuSE/pdnsd.in                     |    68 -
 jni/pdnsd/src/rr_types.c                           |   172 -
 jni/pdnsd/src/rr_types.h                           |   536 -
 jni/pdnsd/src/rr_types.in                          |    99 -
 jni/pdnsd/src/servers.c                            |   856 --
 jni/pdnsd/src/servers.h                            |    68 -
 jni/pdnsd/src/sort_namevalues.pl                   |    25 -
 jni/pdnsd/src/status.c                             |   824 --
 jni/pdnsd/src/status.h                             |    59 -
 jni/pdnsd/src/test/Makefile.am                     |    35 -
 jni/pdnsd/src/test/Makefile.in                     |   464 -
 jni/pdnsd/src/test/if_up.c                         |    36 -
 jni/pdnsd/src/test/is_local_addr.c                 |    57 -
 jni/pdnsd/src/test/random.c                        |    33 -
 jni/pdnsd/src/test/tping.c                         |    59 -
 jni/pdnsd/src/thread.c                             |    85 -
 jni/pdnsd/src/thread.h                             |   143 -
 jni/pdnsd/version                                  |     1 -
 libs/android-support-v4.jar                        |   Bin 1364299 -> 0 bytes
 res/drawable-hdpi-v11/ic_stat_notifyerr.png        |   Bin 480 -> 0 bytes
 res/drawable-hdpi-v11/ic_stat_tor.png              |   Bin 802 -> 0 bytes
 res/drawable-hdpi-v11/ic_stat_tor_off.png          |   Bin 744 -> 0 bytes
 res/drawable-hdpi-v11/ic_stat_tor_xfer.png         |   Bin 967 -> 0 bytes
 res/drawable-hdpi-v11/inverse.png                  |   Bin 1027 -> 0 bytes
 res/drawable-hdpi-v9/ic_stat_notifyerr.png         |   Bin 616 -> 0 bytes
 res/drawable-hdpi-v9/ic_stat_tor.png               |   Bin 713 -> 0 bytes
 res/drawable-hdpi-v9/inverse.png                   |   Bin 1027 -> 0 bytes
 res/drawable-hdpi/ic_action_settings.png           |   Bin 553 -> 0 bytes
 res/drawable-hdpi/ic_launcher.png                  |   Bin 4194 -> 0 bytes
 res/drawable-hdpi/ic_stat_notifyerr.png            |   Bin 1312 -> 0 bytes
 res/drawable-hdpi/ic_stat_tor.png                  |   Bin 852 -> 0 bytes
 res/drawable-hdpi/ic_stat_tor_xfer.png             |   Bin 990 -> 0 bytes
 res/drawable-hdpi/inverse.png                      |   Bin 1027 -> 0 bytes
 res/drawable-ldpi-v11/ic_stat_notifyerr.png        |   Bin 294 -> 0 bytes
 res/drawable-ldpi-v11/ic_stat_tor.png              |   Bin 390 -> 0 bytes
 res/drawable-ldpi-v11/inverse.png                  |   Bin 1027 -> 0 bytes
 res/drawable-ldpi-v9/ic_stat_notifyerr.png         |   Bin 342 -> 0 bytes
 res/drawable-ldpi-v9/ic_stat_tor.png               |   Bin 358 -> 0 bytes
 res/drawable-ldpi-v9/inverse.png                   |   Bin 1027 -> 0 bytes
 res/drawable-ldpi/ic_action_settings.png           |   Bin 319 -> 0 bytes
 res/drawable-ldpi/ic_launcher.png                  |   Bin 2852 -> 0 bytes
 res/drawable-ldpi/ic_stat_notifyerr.png            |   Bin 647 -> 0 bytes
 res/drawable-ldpi/ic_stat_tor.png                  |   Bin 606 -> 0 bytes
 res/drawable-ldpi/inverse.png                      |   Bin 1027 -> 0 bytes
 res/drawable-mdpi-v11/ic_stat_notifyerr.png        |   Bin 357 -> 0 bytes
 res/drawable-mdpi-v11/ic_stat_tor.png              |   Bin 517 -> 0 bytes
 res/drawable-mdpi-v11/ic_stat_tor_xfer.png         |   Bin 607 -> 0 bytes
 res/drawable-mdpi-v11/inverse.png                  |   Bin 1027 -> 0 bytes
 res/drawable-mdpi-v9/ic_stat_notifyerr.png         |   Bin 458 -> 0 bytes
 res/drawable-mdpi-v9/ic_stat_tor.png               |   Bin 475 -> 0 bytes
 res/drawable-mdpi-v9/inverse.png                   |   Bin 1027 -> 0 bytes
 res/drawable-mdpi/ic_action_settings.png           |   Bin 364 -> 0 bytes
 res/drawable-mdpi/ic_launcher.png                  |   Bin 2677 -> 0 bytes
 res/drawable-mdpi/ic_stat_notifyerr.png            |   Bin 883 -> 0 bytes
 res/drawable-mdpi/ic_stat_tor.png                  |   Bin 535 -> 0 bytes
 res/drawable-mdpi/ic_stat_tor_xfer.png             |   Bin 600 -> 0 bytes
 res/drawable-mdpi/inverse.png                      |   Bin 1027 -> 0 bytes
 res/drawable-xhdpi-v11/ic_stat_notifyerr.png       |   Bin 618 -> 0 bytes
 res/drawable-xhdpi-v11/ic_stat_tor.png             |   Bin 1165 -> 0 bytes
 res/drawable-xhdpi-v11/ic_stat_tor_xfer.png        |   Bin 1337 -> 0 bytes
 res/drawable-xhdpi-v11/inverse.png                 |   Bin 1027 -> 0 bytes
 res/drawable-xhdpi-v9/ic_stat_notifyerr.png        |   Bin 747 -> 0 bytes
 res/drawable-xhdpi-v9/ic_stat_tor.png              |   Bin 970 -> 0 bytes
 res/drawable-xhdpi-v9/inverse.png                  |   Bin 1027 -> 0 bytes
 res/drawable-xhdpi/ic_action_settings.png          |   Bin 716 -> 0 bytes
 res/drawable-xhdpi/ic_launcher.png                 |   Bin 5964 -> 0 bytes
 res/drawable-xhdpi/ic_stat_notifyerr.png           |   Bin 1796 -> 0 bytes
 res/drawable-xhdpi/ic_stat_tor.png                 |   Bin 1161 -> 0 bytes
 res/drawable-xhdpi/ic_stat_tor_xfer.png            |   Bin 1378 -> 0 bytes
 res/drawable-xhdpi/inverse.png                     |   Bin 1027 -> 0 bytes
 res/drawable-xxhdpi-v11/ic_stat_tor.png            |   Bin 1903 -> 0 bytes
 res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png       |   Bin 2019 -> 0 bytes
 res/drawable-xxhdpi/ic_launcher.png                |   Bin 9556 -> 0 bytes
 res/drawable-xxhdpi/ic_stat_tor.png                |   Bin 1872 -> 0 bytes
 res/drawable-xxhdpi/ic_stat_tor_xfer.png           |   Bin 2216 -> 0 bytes
 res/drawable-xxhdpi/inverse.png                    |   Bin 1027 -> 0 bytes
 res/drawable-xxxhdpi-v11/ic_stat_tor.png           |   Bin 2661 -> 0 bytes
 res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png      |   Bin 3156 -> 0 bytes
 res/drawable-xxxhdpi/ic_launcher.png               |   Bin 13297 -> 0 bytes
 res/drawable-xxxhdpi/ic_stat_tor.png               |   Bin 2631 -> 0 bytes
 res/drawable-xxxhdpi/ic_stat_tor_xfer.png          |   Bin 2859 -> 0 bytes
 res/drawable-xxxhdpi/inverse.png                   |   Bin 1027 -> 0 bytes
 res/drawable/button.xml                            |    37 -
 res/drawable/button_off.xml                        |    37 -
 res/drawable/button_on.xml                         |    35 -
 res/drawable/classyfabric.png                      |   Bin 8856 -> 0 bytes
 res/drawable/error.png                             |   Bin 2922 -> 0 bytes
 res/drawable/ic_chatsecure.png                     |   Bin 4013 -> 0 bytes
 res/drawable/ic_duckduckgo.png                     |   Bin 5042 -> 0 bytes
 res/drawable/ic_launcher.png                       |   Bin 6055 -> 0 bytes
 res/drawable/ic_menu_about.png                     |   Bin 1771 -> 0 bytes
 res/drawable/ic_menu_exit.png                      |   Bin 2693 -> 0 bytes
 res/drawable/ic_menu_goto.png                      |   Bin 1636 -> 0 bytes
 res/drawable/ic_play.png                           |   Bin 3560 -> 0 bytes
 res/drawable/ic_stat_tor_off.png                   |   Bin 744 -> 0 bytes
 res/drawable/ic_stat_tor_xfer.png                  |   Bin 600 -> 0 bytes
 res/drawable/ic_twitter.png                        |   Bin 2797 -> 0 bytes
 res/drawable/icon_martus.png                       |   Bin 6763 -> 0 bytes
 res/drawable/icon_orfox.png                        |   Bin 7617 -> 0 bytes
 res/drawable/icon_story_maker.png                  |   Bin 4290 -> 0 bytes
 res/drawable/inverse.png                           |   Bin 1027 -> 0 bytes
 res/drawable/n8fr8.jpg                             |   Bin 18062 -> 0 bytes
 res/drawable/oldtoroff.png                         |   Bin 63700 -> 0 bytes
 res/drawable/oldtoron.png                          |   Bin 121036 -> 0 bytes
 res/drawable/oldtorstarting.png                    |   Bin 111753 -> 0 bytes
 res/drawable/onion32.png                           |   Bin 1599 -> 0 bytes
 res/drawable/tilebg.xml                            |     4 -
 res/drawable/toggle.xml                            |     8 -
 res/drawable/tor.png                               |   Bin 4766 -> 0 bytes
 res/drawable/tor25.png                             |   Bin 2227 -> 0 bytes
 res/drawable/toroff.png                            |   Bin 39556 -> 0 bytes
 res/drawable/toron.png                             |   Bin 47022 -> 0 bytes
 res/drawable/torstarting.png                       |   Bin 41700 -> 0 bytes
 res/layout-v21/layout_notification_expanded.xml    |   123 -
 res/layout/layout_about.xml                        |   120 -
 res/layout/layout_apps.xml                         |    74 -
 res/layout/layout_apps_item.xml                    |    17 -
 res/layout/layout_diag.xml                         |    14 -
 res/layout/layout_help.xml                         |    20 -
 res/layout/layout_log.xml                          |    52 -
 res/layout/layout_main.xml                         |   244 -
 res/layout/layout_notification_expanded.xml        |   122 -
 res/layout/layout_promo_apps.xml                   |   115 -
 res/layout/layout_settings.xml                     |    29 -
 res/layout/layout_vpn_setup.xml                    |    34 -
 .../notification_template_part_chronometer.xml     |    25 -
 res/layout/notification_template_part_time.xml     |    25 -
 res/layout/scrollingtext_buttons_view.xml          |    34 -
 res/menu/orbot_main.xml                            |    70 -
 res/menu/share_menu.xml                            |     7 -
 res/raw/geoip.mp3                                  |   Bin 609031 -> 0 bytes
 res/raw/geoip6.mp3                                 |  1663 ---
 res/raw/pluto.properties                           |     3 -
 res/raw/torpolipo.conf                             |    23 -
 res/raw/torrc                                      |     8 -
 res/values-ach/strings.xml                         |    12 -
 res/values-ar/strings.xml                          |   262 -
 res/values-az/strings.xml                          |   297 -
 res/values-bg/strings.xml                          |   293 -
 res/values-bn-rBD/strings.xml                      |    40 -
 res/values-bn-rIN/strings.xml                      |    12 -
 res/values-bn/strings.xml                          |    12 -
 res/values-brx/strings.xml                         |    12 -
 res/values-bs/strings.xml                          |    18 -
 res/values-ca/strings.xml                          |   226 -
 res/values-cs-rCZ/strings.xml                      |   223 -
 res/values-cs/strings.xml                          |    74 -
 res/values-cy/strings.xml                          |    81 -
 res/values-da/strings.xml                          |   203 -
 res/values-de-rAT/strings.xml                      |    12 -
 res/values-de/strings.xml                          |   293 -
 res/values-el/strings.xml                          |   208 -
 res/values-en-rGB/strings.xml                      |    13 -
 res/values-eo/strings.xml                          |   146 -
 res/values-es-rAR/strings.xml                      |    69 -
 res/values-es/strings.xml                          |   294 -
 res/values-et/strings.xml                          |   210 -
 res/values-eu/strings.xml                          |   218 -
 res/values-fa/strings.xml                          |   292 -
 res/values-fi/strings.xml                          |   278 -
 res/values-fr-rFR/strings.xml                      |   293 -
 res/values-fr/strings.xml                          |    54 -
 res/values-gl/strings.xml                          |   209 -
 res/values-gu-rIN/strings.xml                      |    14 -
 res/values-gu/strings.xml                          |    17 -
 res/values-he                                      |     1 -
 res/values-hi/strings.xml                          |    26 -
 res/values-hr-rHR/strings.xml                      |    30 -
 res/values-hr/strings.xml                          |   293 -
 res/values-hu/strings.xml                          |   293 -
 res/values-hy-rAM/strings.xml                      |    12 -
 res/values-ia/strings.xml                          |    30 -
 res/values-id                                      |     1 -
 res/values-in-rID/strings.xml                      |   284 -
 res/values-in/strings.xml                          |    48 -
 res/values-is/strings.xml                          |   278 -
 res/values-it/strings.xml                          |   293 -
 res/values-iw/strings.xml                          |   233 -
 res/values-ja/strings.xml                          |   293 -
 res/values-kn-rIN/strings.xml                      |    12 -
 res/values-kn/strings.xml                          |    12 -
 res/values-ko/strings.xml                          |   214 -
 res/values-ky/strings.xml                          |    21 -
 res/values-lt-rLT/strings.xml                      |    12 -
 res/values-lt/strings.xml                          |    28 -
 res/values-lv/strings.xml                          |   278 -
 res/values-mk/strings.xml                          |   278 -
 res/values-ml/strings.xml                          |    12 -
 res/values-mn/strings.xml                          |    12 -
 res/values-mr-rIN/strings.xml                      |    12 -
 res/values-ms-rMY/strings.xml                      |   196 -
 res/values-ms/strings.xml                          |   200 -
 res/values-my/strings.xml                          |    30 -
 res/values-nb/strings.xml                          |   258 -
 res/values-nl/strings.xml                          |   292 -
 res/values-pa/strings.xml                          |    19 -
 res/values-pl/strings.xml                          |   293 -
 res/values-ps/strings.xml                          |    12 -
 res/values-pt-rBR/strings.xml                      |   285 -
 res/values-pt-rPT/strings.xml                      |    14 -
 res/values-pt/strings.xml                          |   181 -
 res/values-ro-rRO/strings.xml                      |    30 -
 res/values-ro/strings.xml                          |   231 -
 res/values-rs-rAR/strings.xml                      |    58 -
 res/values-ru/strings.xml                          |   293 -
 res/values-si-rLK/strings.xml                      |   190 -
 res/values-sk-rSK/strings.xml                      |    15 -
 res/values-sk/strings.xml                          |    45 -
 res/values-sl/strings.xml                          |    79 -
 res/values-sn/strings.xml                          |    22 -
 res/values-sq/strings.xml                          |    30 -
 res/values-sr/strings.xml                          |   200 -
 res/values-sv/strings.xml                          |   293 -
 res/values-ta/strings.xml                          |    68 -
 res/values-th/strings.xml                          |   169 -
 res/values-tl/strings.xml                          |   249 -
 res/values-tr/strings.xml                          |   282 -
 res/values-uk/strings.xml                          |   278 -
 res/values-ur/strings.xml                          |    18 -
 res/values-uz/strings.xml                          |    47 -
 res/values-vi/strings.xml                          |   293 -
 res/values-zh-rCN/strings.xml                      |   298 -
 res/values-zh-rTW/strings.xml                      |   116 -
 res/values/arrays.xml                              |    16 -
 res/values/colors.xml                              |     8 -
 res/values/dimens.xml                              |   361 -
 res/values/pdnsd.xml                               |    33 -
 res/values/strings.xml                             |   339 -
 res/values/styles.xml                              |     5 -
 res/values/theme.xml                               |     8 -
 res/xml/preferences.xml                            |   269 -
 .../integration/android/IntentIntegrator.java      |   506 -
 .../zxing/integration/android/IntentResult.java    |    95 -
 src/info/guardianproject/util/Languages.java       |   233 -
 src/net                                            |     1 -
 src/org/torproject/android/OrbotApp.java           |    78 -
 src/org/torproject/android/OrbotConstants.java     |    37 -
 src/org/torproject/android/OrbotMainActivity.java  |  1442 ---
 src/org/torproject/android/Prefs.java              |   134 -
 .../torproject/android/service/DummyActivity.java  |    15 -
 .../android/service/HiddenServiceManager.java      |    25 -
 .../torproject/android/service/OnBootReceiver.java |    46 -
 .../android/service/StartTorReceiver.java          |    36 -
 .../android/service/TorResourceInstaller.java      |   372 -
 src/org/torproject/android/service/TorService.java |  2276 ----
 .../android/service/TorServiceConstants.java       |   163 -
 .../android/service/TorServiceUtils.java           |   188 -
 .../torproject/android/service/TorTransProxy.java  |   763 --
 .../torproject/android/service/TorrcConfig.java    |    33 -
 src/org/torproject/android/service/Utils.java      |   100 -
 .../torproject/android/settings/AppManager.java    |   389 -
 .../android/settings/SettingsPreferences.java      |   183 -
 .../torproject/android/settings/TorifiedApp.java   |   139 -
 .../torproject/android/ui/BridgeSetupActivity.java |     5 -
 .../torproject/android/ui/ImageProgressView.java   |    78 -
 .../android/ui/OrbotDiagnosticsActivity.java       |   333 -
 .../torproject/android/ui/PromoAppsActivity.java   |   215 -
 .../torproject/android/ui/Rotate3dAnimation.java   |    76 -
 .../torproject/android/ui/VPNSetupActivity.java    |     5 -
 .../torproject/android/vpn/OrbotVpnManager.java    |   455 -
 src/org/torproject/android/vpn/Tun2Socks.java      |   126 -
 .../torproject/android/vpn/VPNEnableActivity.java  |   164 -
 380 files changed, 84345 deletions(-)

diff --git a/assets/bridges.txt b/assets/bridges.txt
deleted file mode 100644
index 679f811..0000000
--- a/assets/bridges.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-obfs3 83.212.101.3:80 A09D536DD1752D542E1FBB3C9CE4449D51298239
-obfs3 169.229.59.74:31493 AF9F66B7B04F8FF6F32D455F05135250A16543C9
-obfs3 169.229.59.75:46328 AF9F66B7B04F8FF6F32D455F05135250A16543C9
-obfs3 109.105.109.163:38980 1E05F577A0EC0213F971D81BF4D86A9E4E8229ED
-obfs3 109.105.109.163:47779 4C331FA9B3D1D6D8FB0D8FBBF0C259C360D97E6A
-scramblesuit 83.212.101.3:443 A09D536DD1752D542E1FBB3C9CE4449D51298239 password=XTCXLG2JAMJKZW2POLBAOWOQETQSMASH
-obfs4 198.245.60.50:443 752CF7825B3B9EA6A98C83AC41F7099D67007EA5 cert=xpmQtKUqQ/6v5X7ijgYE/f03+l2/EuQ1dexjyUhh16wQlu/cpXUGalmhDIlhuiQPNEKmKw iat-mode=0
-obfs4 109.105.109.165:10527 8DFCD8FB3285E855F5A55EDDA35696C743ABFC4E cert=Bvg/itxeL4TWKLP6N1MaQzSOC6tcRIBv6q57DYAZc3b2AzuM+/TfB7mqTFEfXILCjEwzVA iat-mode=0
-obfs4 83.212.101.3:41213 A09D536DD1752D542E1FBB3C9CE4449D51298239 cert=lPRQ/MXdD1t5SRZ9MquYQNT9m5DV757jtdXdlePmRCudUU9CFUOX1Tm7/meFSyPOsud7Cw iat-mode=0
-obfs4 104.131.108.182:56880 EF577C30B9F788B0E1801CF7E433B3B77792B77A cert=0SFhfDQrKjUJP8Qq6wrwSICEPf3Vl/nJRsYxWbg3QRoSqhl2EB78MPS2lQxbXY4EW1wwXA iat-mode=0
-obfs4 109.105.109.147:13764 BBB28DF0F201E706BE564EFE690FE9577DD8386D cert=KfMQN/tNMFdda61hMgpiMI7pbwU1T+wxjTulYnfw+4sgvG0zSH7N7fwT10BI8MUdAD7iJA iat-mode=0
-obfs4 154.35.22.10:41835 8FB9F4319E89E5C6223052AA525A192AFBC85D55 cert=GGGS1TX4R81m3r0HBl79wKy1OtPPNR2CZUIrHjkRg65Vc2VR8fOyo64f9kmT1UAFG7j0HQ iat-mode=0
-obfs4 154.35.22.11:49868 A832D176ECD5C7C6B58825AE22FC4C90FA249637 cert=YPbQqXPiqTUBfjGFLpm9JYEFTBvnzEJDKJxXG5Sxzrr/v2qrhGU4Jls9lHjLAhqpXaEfZw iat-mode=0
-obfs4 154.35.22.12:80 00DC6C4FA49A65BD1472993CF6730D54F11E0DBB cert=N86E9hKXXXVz6G7w2z8wFfhIDztDAzZ/3poxVePHEYjbKDWzjkRDccFMAnhK75fc65pYSg iat-mode=0
-obfs4 154.35.22.13:443 FE7840FE1E21FE0A0639ED176EDA00A3ECA1E34D cert=fKnzxr+m+jWXXQGCaXe4f2gGoPXMzbL+bTBbXMYXuK0tMotd+nXyS33y2mONZWU29l81CA iat-mode=0
-obfs4 154.35.22.10:1984 8FB9F4319E89E5C6223052AA525A192AFBC85D55 cert=GGGS1TX4R81m3r0HBl79wKy1OtPPNR2CZUIrHjkRg65Vc2VR8fOyo64f9kmT1UAFG7j0HQ iat-mode=0
-obfs4 154.35.22.11:1984 A832D176ECD5C7C6B58825AE22FC4C90FA249637 cert=YPbQqXPiqTUBfjGFLpm9JYEFTBvnzEJDKJxXG5Sxzrr/v2qrhGU4Jls9lHjLAhqpXaEfZw iat-mode=0
-obfs4 154.35.22.12:1984 00DC6C4FA49A65BD1472993CF6730D54F11E0DBB cert=N86E9hKXXXVz6G7w2z8wFfhIDztDAzZ/3poxVePHEYjbKDWzjkRDccFMAnhK75fc65pYSg iat-mode=0
-obfs4 154.35.22.13:1984 FE7840FE1E21FE0A0639ED176EDA00A3ECA1E34D cert=fKnzxr+m+jWXXQGCaXe4f2gGoPXMzbL+bTBbXMYXuK0tMotd+nXyS33y2mONZWU29l81CA iat-mode=0
-meek 0.0.2.0:1 46D4A71197B8FA515A826C6B017C522FE264655B url=https://meek-reflect.appspot.com/ front=www.google.com
-meek 0.0.2.0:2 B9E7141C594AF25699E0079C1F0146F409495296 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com
-meek 0.0.2.0:3 A2C13B7DFCAB1CBF3A884B6EB99A98067AB6EF44 url=https://az786092.vo.msecnd.net/ front=ajax.aspnetcdn.com
diff --git a/jni/Android.mk b/jni/Android.mk
deleted file mode 100644
index f4af1d9..0000000
--- a/jni/Android.mk
+++ /dev/null
@@ -1,145 +0,0 @@
-# Copyright (C) 2009 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-LOCAL_PATH := $(call my-dir)
-ROOT_PATH := $(LOCAL_PATH)
-EXTERN_PATH := $(LOCAL_PATH)/../external
-
-########################################################
-## pdnsd library
-########################################################
-
-include $(CLEAR_VARS)
-
-PDNSD_SOURCES  := $(wildcard $(LOCAL_PATH)/pdnsd/src/*.c)
-
-LOCAL_MODULE    := pdnsd
-LOCAL_SRC_FILES := $(PDNSD_SOURCES:$(LOCAL_PATH)/%=%)
-LOCAL_CFLAGS    := -Wall -O2 -I$(LOCAL_PATH)/pdnsd -DHAVE_STPCPY
-
-include $(BUILD_EXECUTABLE)
-
-########################################################
-## libancillary
-########################################################
-
-include $(CLEAR_VARS)
-
-ANCILLARY_SOURCE := fd_recv.c fd_send.c
-
-LOCAL_MODULE := libancillary
-LOCAL_CFLAGS := -O2 -I$(LOCAL_PATH)/libancillary
-
-LOCAL_SRC_FILES := $(addprefix libancillary/, $(ANCILLARY_SOURCE))
-
-include $(BUILD_STATIC_LIBRARY)
-
-
-########################################################
-## tun2socks
-########################################################
-
-include $(CLEAR_VARS)
-
-LOCAL_CFLAGS := -std=gnu99
-LOCAL_CFLAGS += -DBADVPN_THREADWORK_USE_PTHREAD -DBADVPN_LINUX -DBADVPN_BREACTOR_BADVPN -D_GNU_SOURCE
-LOCAL_CFLAGS += -DBADVPN_USE_SELFPIPE -DBADVPN_USE_EPOLL
-LOCAL_CFLAGS += -DBADVPN_LITTLE_ENDIAN -DBADVPN_THREAD_SAFE
-LOCAL_CFLAGS += -DNDEBUG -DANDROID
-LOCAL_CFLAGS += -DTUN2SOCKS_JNI
-LOCAL_CFLAGS += -DPSIPHON
-
-LOCAL_STATIC_LIBRARIES := libancillary
-
-LOCAL_C_INCLUDES:= \
-		$(LOCAL_PATH)/libancillary \
-        $(EXTERN_PATH)/badvpn/ \
-        $(EXTERN_PATH)/badvpn/lwip/src/include/ipv4 \
-        $(EXTERN_PATH)/badvpn/lwip/src/include/ipv6 \
-        $(EXTERN_PATH)/badvpn/lwip/src/include \
-        $(EXTERN_PATH)/badvpn/lwip/custom \
-
-TUN2SOCKS_SOURCES := \
-        base/BLog_syslog.c \
-        system/BReactor_badvpn.c \
-        system/BSignal.c \
-        system/BConnection_unix.c \
-        system/BTime.c \
-        system/BUnixSignal.c \
-        system/BNetwork.c \
-        flow/StreamRecvInterface.c \
-        flow/PacketRecvInterface.c \
-        flow/PacketPassInterface.c \
-        flow/StreamPassInterface.c \
-        flow/SinglePacketBuffer.c \
-        flow/BufferWriter.c \
-        flow/PacketBuffer.c \
-        flow/PacketStreamSender.c \
-        flow/PacketPassConnector.c \
-        flow/PacketProtoFlow.c \
-        flow/PacketPassFairQueue.c \
-        flow/PacketProtoEncoder.c \
-        flow/PacketProtoDecoder.c \
-        socksclient/BSocksClient.c \
-        tuntap/BTap.c \
-        lwip/src/core/timers.c \
-        lwip/src/core/udp.c \
-        lwip/src/core/memp.c \
-        lwip/src/core/init.c \
-        lwip/src/core/pbuf.c \
-        lwip/src/core/tcp.c \
-        lwip/src/core/tcp_out.c \
-        lwip/src/core/netif.c \
-        lwip/src/core/def.c \
-        lwip/src/core/mem.c \
-        lwip/src/core/tcp_in.c \
-        lwip/src/core/stats.c \
-        lwip/src/core/inet_chksum.c \
-        lwip/src/core/ipv4/icmp.c \
-        lwip/src/core/ipv4/igmp.c \
-        lwip/src/core/ipv4/ip4_addr.c \
-        lwip/src/core/ipv4/ip_frag.c \
-        lwip/src/core/ipv4/ip4.c \
-        lwip/src/core/ipv4/autoip.c \
-        lwip/src/core/ipv6/ethip6.c \
-        lwip/src/core/ipv6/inet6.c \
-        lwip/src/core/ipv6/ip6_addr.c \
-        lwip/src/core/ipv6/mld6.c \
-        lwip/src/core/ipv6/dhcp6.c \
-        lwip/src/core/ipv6/icmp6.c \
-        lwip/src/core/ipv6/ip6.c \
-        lwip/src/core/ipv6/ip6_frag.c \
-        lwip/src/core/ipv6/nd6.c \
-        lwip/custom/sys.c \
-        tun2socks/tun2socks.c \
-        base/DebugObject.c \
-        base/BLog.c \
-        base/BPending.c \
-		system/BDatagram_unix.c \
-        flowextra/PacketPassInactivityMonitor.c \
-        tun2socks/SocksUdpGwClient.c \
-        udpgw_client/UdpGwClient.c
-
-LOCAL_MODULE := tun2socks
-
-LOCAL_LDLIBS := -ldl -llog
-
-LOCAL_SRC_FILES := $(addprefix ../external/badvpn/, $(TUN2SOCKS_SOURCES))
-
-##include $(BUILD_EXECUTABLE)
-include $(BUILD_SHARED_LIBRARY)
-
-# Import cpufeatures
-$(call import-module,android/cpufeatures)
diff --git a/jni/Application.mk b/jni/Application.mk
deleted file mode 100644
index 554a462..0000000
--- a/jni/Application.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-APP_ABI      			:= armeabi x86
-APP_PLATFORM 			:= android-16
-APP_STL      			:= stlport_static
-NDK_TOOLCHAIN_VERSION 	:= 4.8
diff --git a/jni/libancillary/API b/jni/libancillary/API
deleted file mode 100644
index b558995..0000000
--- a/jni/libancillary/API
+++ /dev/null
@@ -1,139 +0,0 @@
-  This library provide an easy interface to the black magic that can be done
-  on Unix domain sockets, like passing file descriptors from one process to
-  another.
-
-  Programs that uses this library should include the ancillary.h header file.
-  Nothing else is required.
-
-  All functions of this library require the following header:
-
-	#include <ancillary.h>
-
-  At this time, the only ancillary data defined by the Single Unix
-  Specification (v3) is file descriptors.
-
-Passing file descriptors
-
-	int ancil_send_fd(socket, file_descriptor)
-	  int socket: the Unix socket
-	  int file_descriptor: the file descriptor
-	  Return value: 0 for success, -1 for failure.
-
-  Sends one file descriptor on a socket.
-  In case of failure, errno is set; the possible values are the ones of the
-  sendmsg(2) system call.
-
-
-	int ancil_recv_fd(socket, file_descriptor)
-	  int socket: the Unix socket
-	  int *file_descriptor: pointer to the returned file descriptor
-	  Return value: 0 for success, -1 for failure
-
-  Receives one file descriptor from a socket.
-  In case of success, the file descriptor is stored in the integer pointed
-  to by file_descriptor.
-  In case of failure, errno is set; the possible values are the ones of the
-  recvmsg(2) system call.
-  The behavior is undefined if the recv_fd does not match a send_fd* on the
-  other side.
-
-
-	int ancil_send_fds(socket, file_descriptors, num_file_descriptors)
-	  int socket: the Unix socket
-	  const int *file_descriptors: array of file descriptors
-	  unsigned num_file_descriptors: number of file descriptors
-	  Return value: 0 for success, -1 for failure
-
-  Sends several file descriptors on a socket.
-  In case of failure, errno is set; the possible values are the ones of the
-  sendmsg(2) system call.
-  The maximum number of file descriptors that can be sent using this
-  function is ANCIL_MAX_N_FDS; the behavior is undefined in case of
-  overflow, probably a stack corruption.
-
-
-	int ancil_recv_fds(socket, file_descriptors, num_file_descriptors)
-	  int socket: the Unix socket
-	  int *file_descriptors: return array of file descriptors
-	  unsigned num_file_descriptors: number of file descriptors
-	  Return value: number of received fd for success, -1 for failure
-
-  Receives several file descriptors from a socket, no more than
-  num_file_descriptors.
-  In case of success, the received file descriptors are stored in the array
-  pointed to by file_descriptors.
-  In case of failure, errno is set; the possible values are the ones of the
-  recvmsg(2) system call.
-  The maximum number of file descriptors that can be received using this
-  function is ANCIL_MAX_N_FDS; the behavior is undefined in case of
-  overflow, probably a stack corruption.
-  The behavior is undefined if the recv_fds does not match a send_fd* on
-  the other side, or if the number of received file descriptors is more than
-  num_file_descriptors.
-
-
-	int ancil_send_fds_with_buffer(socket, fds, num, buffer)
-	  int socket: the Unix socket
-	  const int *fds: array of file descriptors
-	  unsigned num: number of file descriptors
-	  void *buffer: buffer to hold the system data structures
-	  Return value: 0 for success, -1 for failure
-
-  Sends several file descriptors on a socket.
-  In case of failure, errno is set; the possible values are the ones of the
-  sendmsg(2) system call.
-  The buffer argument must point to a memory area large enough to hold the
-  system data structures, see ANCIL_FD_BUFFER.
-
-
-	int ancil_send_fds_with_buffer(socket, fds, num, buffer)
-	  int socket: the Unix socket
-	  int *fds: return array of file descriptors
-	  unsigned num: number of file descriptors
-	  void *buffer: buffer to hold the system data structures
-	  Return value: number of received fd for success, -1 for failure
-
-  Receives several file descriptors from a socket, no more than
-  num_file_descriptors.
-  In case of success, the received file descriptors are stored in the array
-  pointed to by file_descriptors.
-  In case of failure, errno is set; the possible values are the ones of the
-  recvmsg(2) system call.
-  The behavior is undefined if the recv_fds does not match a send_fd* on
-  the other side, or if the number of received file descriptors is more than
-  num_file_descriptors.
-  The buffer argument must point to a memory area large enough to hold the
-  system data structures, see ANCIL_FD_BUFFER.
-
-
-	ANCIL_MAX_N_FDS
-
-  Maximum number of file descriptors that can be sent with the sent_fds and
-  recv_fds functions. If you have to send more at once, use the
-  *_with_buffer versions. The value is enough to send "quite a few" file
-  descriptors.
-
-
-	ANCIL_FD_BUFFER(n)
-	  int n: number of file descriptors
-
-  Expands to a structure data type large enough to hold the system data
-  structures for n file descriptors. So the address of a variable declared
-  of type ANCIL_FD_BUFFER(n) is suitable as the buffer argument for
-  *_with_buffer on n file descriptors.
-  To use this macro, you need <sys/types.h> and <sys/socket.h>. Bevare: with
-  Solaris, the _XPG4_2 macro must be defined before sys/socket is included.
-
-
-Tuning the compilation
-
-  This library is designed to be included in projects, not installed in
-  /usr/lib. If your project does not use some of the functions, the
-  TUNE_OPTS variable in the Makefile allows not to build them. It is a list
-  of proprocessor options:
-
-  -DNDEBUG: turn assertions off (see assert(3))
-  -DSPARE_SEND_FDS: do not build ancil_send_fds
-  -DSPARE_SEND_FD:  do not build ancil_send_fd
-  -DSPARE_RECV_FDS: do not build ancil_recv_fds
-  -DSPARE_RECV_FD:  do not build ancil_recv_fd
diff --git a/jni/libancillary/COPYING b/jni/libancillary/COPYING
deleted file mode 100644
index 5bcd9c2..0000000
--- a/jni/libancillary/COPYING
+++ /dev/null
@@ -1,21 +0,0 @@
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
- 3. The name of the author may not be used to endorse or promote products
-    derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/jni/libancillary/Makefile b/jni/libancillary/Makefile
deleted file mode 100644
index 3d32533..0000000
--- a/jni/libancillary/Makefile
+++ /dev/null
@@ -1,73 +0,0 @@
-###########################################################################
-# libancillary - black magic on Unix domain sockets
-# (C) Nicolas George
-# Makefile - guess what
-###########################################################################
-
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-# 
-#  1. Redistributions of source code must retain the above copyright notice,
-#     this list of conditions and the following disclaimer.
-#  2. Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in the
-#     documentation and/or other materials provided with the distribution.
-#  3. The name of the author may not be used to endorse or promote products
-#     derived from this software without specific prior written permission.
-# 
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-CC=gcc
-CFLAGS=-Wall -g -O2
-LDFLAGS=
-LIBS=
-AR=ar
-RANLIB=ranlib
-RM=rm
-CP=cp
-MKDIR=mkdir
-TAR=tar
-GZIP=gzip -9
-
-NAME=libancillary
-DISTRIBUTION=API COPYING Makefile ancillary.h fd_send.c fd_recv.c test.c
-VERSION=0.9.1
-
-OBJECTS=fd_send.o fd_recv.o
-
-TUNE_OPTS=-DNDEBUG
-#TUNE_OPTS=-DNDEBUG \
-	-DSPARE_SEND_FDS -DSPARE_SEND_FD -DSPARE_RECV_FDS -DSPARE_RECV_FD
-
-.c.o:
-	$(CC) -c $(CFLAGS) $(TUNE_OPTS) $<
-
-all: libancillary.a
-
-libancillary.a: $(OBJECTS)
-	$(AR) cr $@ $(OBJECTS)
-	$(RANLIB) $@
-
-fd_send.o: ancillary.h
-fd_recv.o: ancillary.h
-
-test: test.c libancillary.a
-	$(CC) -o $@ $(CFLAGS) $(LDFLAGS) -L. test.c -lancillary $(LIBS)
-
-clean:
-	-$(RM) -f *.o *.a test 
-
-dist:
-	$(MKDIR) $(NAME)-$(VERSION)
-	$(CP) $(DISTRIBUTION) $(NAME)-$(VERSION)
-	$(TAR) -cf - $(NAME)-$(VERSION) | $(GZIP) > $(NAME)-$(VERSION).tar.gz
-	$(RM) -rf $(NAME)-$(VERSION)
diff --git a/jni/libancillary/ancillary.h b/jni/libancillary/ancillary.h
deleted file mode 100644
index 636d867..0000000
--- a/jni/libancillary/ancillary.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/***************************************************************************
- * libancillary - black magic on Unix domain sockets
- * (C) Nicolas George
- * ancillary.c - public header
- ***************************************************************************/
-
-/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 
- *  1. Redistributions of source code must retain the above copyright notice,
- *     this list of conditions and the following disclaimer.
- *  2. Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *  3. The name of the author may not be used to endorse or promote products
- *     derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef ANCILLARY_H__
-#define ANCILLARY_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/***************************************************************************
- * Start of the readable part.
- ***************************************************************************/
-
-#define ANCIL_MAX_N_FDS 960
-/*
- * Maximum number of fds that can be sent or received using the "esay"
- * functions; this is so that all can fit in one page.
- */
-
-extern int
-ancil_send_fds_with_buffer(int, const int *, unsigned, void *);
-/*
- * ancil_send_fds_with_buffer(sock, n_fds, fds, buffer)
- *
- * Sends the file descriptors in the array pointed by fds, of length n_fds
- * on the socket sock.
- * buffer is a writeable memory area large enough to hold the required data
- * structures.
- * Returns: -1 and errno in case of error, 0 in case of success.
- */
-
-extern int
-ancil_recv_fds_with_buffer(int, int *, unsigned, void *);
-/*
- * ancil_recv_fds_with_buffer(sock, n_fds, fds, buffer)
- *
- * Receives *n_fds file descriptors into the array pointed by fds
- * from the socket sock.
- * buffer is a writeable memory area large enough to hold the required data
- * structures.
- * Returns: -1 and errno in case of error, the actual number of received fd
- * in case of success
- */
-
-#define ANCIL_FD_BUFFER(n) \
-    struct { \
-	struct cmsghdr h; \
-	int fd[n]; \
-    }
-/* ANCIL_FD_BUFFER(n)
- *
- * A structure type suitable to be used as buffer for n file descriptors.
- * Requires <sys/socket.h>.
- * Example:
- * ANCIL_FD_BUFFER(42) buffer;
- * ancil_recv_fds_with_buffer(sock, 42, my_fds, &buffer);
- */
-
-extern int
-ancil_send_fds(int, const int *, unsigned);
-/*
- * ancil_send_fds(sock, n_fds, fds)
- *
- * Sends the file descriptors in the array pointed by fds, of length n_fds
- * on the socket sock.
- * n_fds must not be greater than ANCIL_MAX_N_FDS.
- * Returns: -1 and errno in case of error, 0 in case of success.
- */
-
-extern int
-ancil_recv_fds(int, int *, unsigned);
-/*
- * ancil_recv_fds(sock, n_fds, fds)
- *
- * Receives *n_fds file descriptors into the array pointed by fds
- * from the socket sock.
- * *n_fds must not be greater than ANCIL_MAX_N_FDS.
- * Returns: -1 and errno in case of error, the actual number of received fd
- * in case of success.
- */
-
-
-extern int
-ancil_send_fd(int, int);
-/* ancil_recv_fd(sock, fd);
- *
- * Sends the file descriptor fd on the socket sock.
- * Returns : -1 and errno in case of error, 0 in case of success.
- */
-
-extern int
-ancil_recv_fd(int, int *);
-/* ancil_send_fd(sock, &fd);
- *
- * Receives the file descriptor fd from the socket sock.
- * Returns : -1 and errno in case of error, 0 in case of success.
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ANCILLARY_H__ */
diff --git a/jni/libancillary/fd_recv.c b/jni/libancillary/fd_recv.c
deleted file mode 100644
index 46c2e69..0000000
--- a/jni/libancillary/fd_recv.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/***************************************************************************
- * libancillary - black magic on Unix domain sockets
- * (C) Nicolas George
- * fd_send.c - receiving file descriptors
- ***************************************************************************/
-
-/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 
- *  1. Redistributions of source code must retain the above copyright notice,
- *     this list of conditions and the following disclaimer.
- *  2. Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *  3. The name of the author may not be used to endorse or promote products
- *     derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _XPG4_2 /* Solaris sucks */
-# define _XPG4_2
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <assert.h>
-#if defined(__FreeBSD__)
-# include <sys/param.h> /* FreeBSD sucks */
-#endif
-
-#include "ancillary.h"
-
-int
-ancil_recv_fds_with_buffer(int sock, int *fds, unsigned n_fds, void *buffer)
-{
-    struct msghdr msghdr;
-    char nothing;
-    struct iovec nothing_ptr;
-    struct cmsghdr *cmsg;
-    int i;
-
-    nothing_ptr.iov_base = ¬hing;
-    nothing_ptr.iov_len = 1;
-    msghdr.msg_name = NULL;
-    msghdr.msg_namelen = 0;
-    msghdr.msg_iov = &nothing_ptr;
-    msghdr.msg_iovlen = 1;
-    msghdr.msg_flags = 0;
-    msghdr.msg_control = buffer;
-    msghdr.msg_controllen = sizeof(struct cmsghdr) + sizeof(int) * n_fds;
-    cmsg = CMSG_FIRSTHDR(&msghdr);
-    cmsg->cmsg_len = msghdr.msg_controllen;
-    cmsg->cmsg_level = SOL_SOCKET;
-    cmsg->cmsg_type = SCM_RIGHTS;
-    for(i = 0; i < n_fds; i++)
-	((int *)CMSG_DATA(cmsg))[i] = -1;
-    
-    if(recvmsg(sock, &msghdr, 0) < 0)
-	return(-1);
-    for(i = 0; i < n_fds; i++)
-	fds[i] = ((int *)CMSG_DATA(cmsg))[i];
-    n_fds = (msghdr.msg_controllen - sizeof(struct cmsghdr)) / sizeof(int);
-    return(n_fds);
-}
-
-#ifndef SPARE_RECV_FDS
-int
-ancil_recv_fds(int sock, int *fd, unsigned n_fds)
-{
-    ANCIL_FD_BUFFER(ANCIL_MAX_N_FDS) buffer;
-
-    assert(n_fds <= ANCIL_MAX_N_FDS);
-    return(ancil_recv_fds_with_buffer(sock, fd, n_fds, &buffer));
-}
-#endif /* SPARE_RECV_FDS */
-
-#ifndef SPARE_RECV_FD
-int
-ancil_recv_fd(int sock, int *fd)
-{
-    ANCIL_FD_BUFFER(1) buffer;
-
-    return(ancil_recv_fds_with_buffer(sock, fd, 1, &buffer) == 1 ? 0 : -1);
-}
-#endif /* SPARE_RECV_FD */
diff --git a/jni/libancillary/fd_send.c b/jni/libancillary/fd_send.c
deleted file mode 100644
index 01de87f..0000000
--- a/jni/libancillary/fd_send.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/***************************************************************************
- * libancillary - black magic on Unix domain sockets
- * (C) Nicolas George
- * fd_send.c - sending file descriptors
- ***************************************************************************/
-
-/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 
- *  1. Redistributions of source code must retain the above copyright notice,
- *     this list of conditions and the following disclaimer.
- *  2. Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *  3. The name of the author may not be used to endorse or promote products
- *     derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _XPG4_2 /* Solaris sucks */
-# define _XPG4_2
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <assert.h>
-#if defined(__FreeBSD__)
-# include <sys/param.h> /* FreeBSD sucks */
-#endif
-
-#include "ancillary.h"
-
-int
-ancil_send_fds_with_buffer(int sock, const int *fds, unsigned n_fds, void *buffer)
-{
-    struct msghdr msghdr;
-    char nothing = '!';
-    struct iovec nothing_ptr;
-    struct cmsghdr *cmsg;
-    int i;
-
-    nothing_ptr.iov_base = ¬hing;
-    nothing_ptr.iov_len = 1;
-    msghdr.msg_name = NULL;
-    msghdr.msg_namelen = 0;
-    msghdr.msg_iov = &nothing_ptr;
-    msghdr.msg_iovlen = 1;
-    msghdr.msg_flags = 0;
-    msghdr.msg_control = buffer;
-    msghdr.msg_controllen = sizeof(struct cmsghdr) + sizeof(int) * n_fds;
-    cmsg = CMSG_FIRSTHDR(&msghdr);
-    cmsg->cmsg_len = msghdr.msg_controllen;
-    cmsg->cmsg_level = SOL_SOCKET;
-    cmsg->cmsg_type = SCM_RIGHTS;
-    for(i = 0; i < n_fds; i++)
-	((int *)CMSG_DATA(cmsg))[i] = fds[i];
-    return(sendmsg(sock, &msghdr, 0) >= 0 ? 0 : -1);
-}
-
-#ifndef SPARE_SEND_FDS
-int
-ancil_send_fds(int sock, const int *fds, unsigned n_fds)
-{
-    ANCIL_FD_BUFFER(ANCIL_MAX_N_FDS) buffer;
-
-    assert(n_fds <= ANCIL_MAX_N_FDS);
-    return(ancil_send_fds_with_buffer(sock, fds, n_fds, &buffer));
-}
-#endif /* SPARE_SEND_FDS */
-
-#ifndef SPARE_SEND_FD
-int
-ancil_send_fd(int sock, int fd)
-{
-    ANCIL_FD_BUFFER(1) buffer;
-
-    return(ancil_send_fds_with_buffer(sock, &fd, 1, &buffer));
-}
-#endif /* SPARE_SEND_FD */
diff --git a/jni/libancillary/test.c b/jni/libancillary/test.c
deleted file mode 100644
index d3c1fda..0000000
--- a/jni/libancillary/test.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/***************************************************************************
- * libancillary - black magic on Unix domain sockets
- * (C) Nicolas George
- * test.c - testing and example program
- ***************************************************************************/
-
-/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 
- *  1. Redistributions of source code must retain the above copyright notice,
- *     this list of conditions and the following disclaimer.
- *  2. Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *  3. The name of the author may not be used to endorse or promote products
- *     derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <sys/wait.h>
-#include <sys/socket.h>
-#include "ancillary.h"
-
-void child_process(int sock)
-{
-    int fd;
-    int fds[3], nfds;
-    char b[] = "This is on the received fd!\n";
-
-    if(ancil_recv_fd(sock, &fd)) {
-	perror("ancil_recv_fd");
-	exit(1);
-    } else {
-	printf("Received fd: %d\n", fd);
-    }
-    write(fd, b, sizeof(b));
-    close(fd);
-    sleep(2);
-
-    nfds = ancil_recv_fds(sock, fds, 3);
-    if(nfds < 0) {
-	perror("ancil_recv_fds");
-	exit(1);
-    } else {
-	printf("Received %d/3 fds : %d %d %d.\n", nfds,
-	    fds[0], fds[1], fds[2]);
-    }
-}
-
-void parent_process(int sock)
-{
-    int fds[2] = { 1, 2 };
-
-    if(ancil_send_fd(sock, 1)) {
-	perror("ancil_send_fd");
-	exit(1);
-    } else {
-	printf("Sent fd.\n");
-    }
-    sleep(1);
-
-    if(ancil_send_fds(sock, fds, 2)) {
-	perror("ancil_send_fds");
-	exit(1);
-    } else {
-	printf("Sent two fds.\n");
-    }
-}
-
-int main(void)
-{
-    int sock[2];
-
-    if(socketpair(PF_UNIX, SOCK_STREAM, 0, sock)) {
-	perror("socketpair");
-	exit(1);
-    } else {
-	printf("Established socket pair: (%d, %d)\n", sock[0], sock[1]);
-    }
-
-    switch(fork()) {
-	case 0:
-	    close(sock[0]);
-	    child_process(sock[1]);
-	    break;
-	case -1:
-	    perror("fork");
-	    exit(1);
-	default:
-	    close(sock[1]);
-	    parent_process(sock[0]);
-	    wait(NULL);
-	    break;
-    }
-    return(0);
-}
diff --git a/jni/pdnsd/AUTHORS b/jni/pdnsd/AUTHORS
deleted file mode 100644
index fa0454e..0000000
--- a/jni/pdnsd/AUTHORS
+++ /dev/null
@@ -1,58 +0,0 @@
-Most of pdnsd was written by Thomas Moestl (tmoestl at gmx.net).
-In the "par" versions large parts of the code have been revised
-and several features have been added by Paul Rombouts.
-
-Small parts of this program are based on code that  was taken from nmap (IP 
-checksumming), the isdn4k-utils (ippp interface uptest), glibc 2.1.2 (some
-definitions for kernel 2.2.x missing in 2.0 glibcs) and FreeBSD
-(SIZEOF_ADDR_IFREQ in netdev.c).
-nmap was written by Fyodor. The insd4k-utils were written by Fritz Elfert and
-others. The GNU C library (glibc) is copyright by the Free Software 
-Foundation.
-
-The following people have contributed code:
-Andrew M. Bishop	contributed support for server labels
-Carsten Block	        contributed 'configure'-able rc scripts
-Stephan Boettcher	contributed the SCHEME= option.
-P.J. Bostley		contributed patches to get pdnsd working on
-			alpha
-Frank Elsner		contributed rc script fixes
-Christian Engstler	contributed patches for SuSE compatability
-Bjoern Fischer		contributed code to make pdnsd leave the case of names
-			in the cache unchanged
-Torben Janssen		contributed RedHat rc scripts
-Olaf Kirch		contributed a security fix for the run_as()
-			function
-Bernd Leibing		contributed fixes to the spec file.
-Sourav K. Mandal	contributed the autoconf/automake code, gdbm
-			caching facility and many suggestions
-Markus Mohr		contributed Debian rc scripts
-Alexandre Nunes		contributed autoconf fixes
-Wolfgang Ocker		contributed the server_ip option
-Soenke J. Peters	contributed patches and suggestions for RedHat 
-			compatability
-Roman Shterenzon	contributed many helpful hints and patches for
-			FreeBSD compatability.
-Andreas Steinmetz	contributed the code for the query_port_start and
-			query_port_end options (which I changed slightly,
-			so blame any breakage on me ;)
-Marko Stolle		contributed the contrib/pdnsd_update.pl script that
-			makes pdnsd usable in a DHCP setup.
-Lyonel Vincent		extended the serve_aliases option to support an
-			arbitrary number of aliases
-Paul Wagland		contributed a patches for bind9-compatability
-			and for some memory leaks on error paths.
-Sverker Wiberg		contributed IPv6 build fixes
-Michael Wiedmann	contributed the pdnsd-ctl.8 man page.
-Ron Yorston		contributed the dev-uptest for Linux ppp dial-
-			on-demand devices
-Nikita V. Youshchenko	contributed extensions to the "if" uptest
-Mahesh T. Pai		contributed the pdnsd.8 man page.
-Nikola Kotur		contributed the Slackware start-up script.
-Kiyo Kelvin Lee		contributed a patch for Cygwin support.
-Rodney Brown		contributed a patch for Darwin (Apple Mac OS X) support.
-Jan-Marek Glogowski	contributed a patch implementing the "use_nss" option.
-
-Please look into the THANKS file for people who helped me in various ways on
-this project.
-If this list is incomplete, pease drop me a mail!
diff --git a/jni/pdnsd/COPYING b/jni/pdnsd/COPYING
deleted file mode 100644
index 94a9ed0..0000000
--- a/jni/pdnsd/COPYING
+++ /dev/null
@@ -1,674 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  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
-them 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 prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  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.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey 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;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If 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 convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU 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 that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  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.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-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.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     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
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    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 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 <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program 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, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU 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.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/jni/pdnsd/COPYING.BSD b/jni/pdnsd/COPYING.BSD
deleted file mode 100644
index 99fe14a..0000000
--- a/jni/pdnsd/COPYING.BSD
+++ /dev/null
@@ -1,26 +0,0 @@
-A small part of the pdnsd source is licensed under the following BSD-style
-license:
-
-Copyright (C) 2001 Thomas Moestl
-
-This file is part of the pdnsd package.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/jni/pdnsd/ChangeLog b/jni/pdnsd/ChangeLog
deleted file mode 100644
index fe77465..0000000
--- a/jni/pdnsd/ChangeLog
+++ /dev/null
@@ -1,3304 +0,0 @@
-2012-04-23  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Refine the return values of p_dns_cached_resolve(), p_dns_resolve() and
-	p_recursive_query() so that they distinguish between answers found in
-	the cache and replies obtained by querying other servers.
-	This, among other things, can be used to prevent data that was recently
-	obtained from the cache needlessly being added back to the cache.
-
-2012-04-22  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* configure.in
-	On the Linux platform, check if we can compile and link with the
-	-pthread flag instead of linking with -lpthread.
-
-2012-04-21  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	When following the delegation chain trying to get an authoritative
-	answer, pdnsd would answer with SERVFAIL if it failed to get a reply
-	from the last server in the chain. Instead pdnsd will now use the last
-	reply in the chain with RCode=0 that raised the AA or RA flag, if there
-	is one.
-
-2012-04-19  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	In report_cache_stat(), make copies of volatile data to get a
-	consistent data set before making calculations with cache size and
-	entry numbers.
-
-2012-04-16  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/netdev.c
-	If we can't open /proc/net/if_inet6 in is_local_addr() log a warning
-	message.
-
-2012-04-15  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	The code checking for duplicate IP addresses obtained from NS records
-	in auth_ok() has been slightly optimized.
-
-2012-04-12  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	When resolving nameservers obtained from NS records, allow pdnsd to use
-	more than one IP address per nameserver.
-	In rare cases, using just one IP address for each nameserver will cause
-	unnecessary resolve failures if the address chosen for each nameserver
-	happens to be unreachable while the other addresses would lead to
-	successful resolution, as demonstrated by Yuri Vorobyev.
-
-2012-03-16  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	When adding RR records one by one to a cache entry using add_cent_rr(),
-	use the smallest ttl value in case of conflicting ttls.
-	Code for local/nonlocal conflict resolution has been taken out of
-	add_cent_rr_int() and put into add_cent_rr() and cr_check_add()
-	which should be slightly more efficient.
-
-2012-03-15  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Enforcing strict RFC 2181 compliance by rejecting all the answers
-	with inconsistent ttl timestamps can cause undesirable resolve failures.
-	I have tried to implement a more compromising solution, whereby
-	inconsistent answers that should be normally rejected are still never
-	cached, but are nevertheless used as intermediary or temporary results
-	if all else fails.
-
-2012-03-13  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Fixed a typo in rr_to_cache() that caused pdnsd to fail to compile when
-	configured with the --enable-strict-rfc2181 option.
-	Thanks to Gonzalo L. R. for reporting this problem.
-	Also changed the return value of rr_to_cache() from a simple boolean to
-	an RC code in order to properly distinguish between memory allocation
-	errors and time-stamp inconsistencies.
-
-2012-02-21  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	If we have used EDNS in a query and the remote server answered
-	with rcode "format error", try again with the OPT pseudo-record
-	removed from the additional section of the query.
-
-	Also fixed a bug in p_exec_query() that caused pdnsd to behave
-	as if every reply with a non-empty additional section contained
-	an OPT record.
-
-2012-02-15  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c,src/helpers.c,src/helpers.h,src/icmp.c,
-	  src/ipvers.h,src/main.c,src/netdev.c
-	Introduced a new macro SEL_IPVER() to reduce some of the clutter in the
-	code caused by having to support both IPv4 and IPv6.
-
-2012-01-31  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* configure.in
-	Add AM_PROG_CC_C_O line to configure.in to prevent automake warning.
-
-2012-01-29  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	In report_cache_stat(), add the average number of bytes used per cache
-	entry when reporting the cache status, as suggested by M. Galabant.
-
-2012-01-28  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c,src/dns_query.c
-	Cleaned up the code a bit to avoid warning messages when
-	compiling with '-Wall -Winline' flags.
-
-2012-01-18  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conff.c
-	Set the default of the edns_query option to false.
-
-2011-07-31  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	Use a slightly more sophisticated merge-sort algorithm in sort_rrl().
-
-2011-05-09  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	In compose_answer(), also add an OPT pseudo-RR to the additional section
-	of a NXDOMAIN reply when appropriate.
-
-2011-05-08  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c,src/cache.h,src/dns_query.c,src/status.c
-	Make the dns_cent_t struct more compact by putting the fields that are
-	only used for either non-existent or existent domains, but not both,
-	into a union so that these fields can share memory.
-	When saving the cache to file, only write the TTL and time-stamp for
-	a whole domain when it is negatively cached.
-
-2011-05-06  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c,src/cache.h,src/dns_query.c
-	At the request of Andrei Caraman, the TTL of a negatively cached domain
-	is now adjusted in accordance with the min_ttl and max_ttl options, just
-	as it is done for (negatively) cached records.
-	Additional change to the TTL policy is that for negative records (and
-	negative domains) the neg_ttl setting overrides min_ttl if
-	neg_ttl < min_ttl.
-
-2011-04-26  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c
-	Fixed memory leak that can occur when the configuration file is reloaded
-	and an error is encountered while parsing the definition of a TXT
-	record.
-
-2011-03-21  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/make_rr_types_h.pl,src/cache.h,src/cache.c,src/dns_answer.c
-	Introduced arrays rrmuiterlist and rrcachiterlist to make iterating
-	over all possible RR types in a cache entry in strict ascending order
-	a little more efficient.
-
-2011-03-09  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c,src/conf-parser.c,src/conf-keywords.h
-	Implemented a new config option "outgoing_ip", which
-	makes it possible to bind outgoing connections to
-	a specific interface.
-
-2011-02-21  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/netdev.c
-	Fixed UDP socket descriptors leak in the implementation of
-	is_local_addr() for the FreeBSD platform. Thanks to Ashish Shukla for
-	reporting this bug.
-
-2011-02-14  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	In purge_all_rrsets(), also free the rrext array if it has become empty after
-	purging all the RR sets.
-
-2011-02-04  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conff.c,src/conff.h,src/conf-parser.c,src/conf-keywords.h,
-	  src/dns_query.c,src/dns_query.h,src/servers.c
-	Changed "edns_query" from a "global" option to a "server"
-	configuration option.
-
-2011-02-04  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conff.c,src/conff.h,src/dns_query.c,src/dns_query.h,src/servers.c,
-	  src/conf-parser.c
-	The query uptest sometimes fails because some DNS servers are configured
-	to ignore empty queries. The new config option "query_test_name" makes
-	it possible to query for a specific name instead.
-
-2011-02-01  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	When processing a reply from a remote name server which seems to delegate
-	to other name servers, check if the names for which NS records have
-	been supplied have locally defined NS records. If so, the local
-	records will now override those supplied by the remote server.
-
-2011-01-31  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c
-	Added support for defining TXT records in the configuration file.
-
-2011-01-30  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Do not cache additional records from a response that is rejected because
-	it contains IP addresses in the reject list, even when the reply
-	is processed as a NXDOMAIN reply.
-
-2011-01-25  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c
-	Modified the function scan_string() to allow back-slashed escape
-	sequences in strings.
-
-2011-01-21  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c,src/dns_query.c,src/conff.h,src/conff.c,
-	  src/conf-parser.c
-	Added support for EDNS (Extension mechanisms for DNS).
-	Currently this is only useful for allowing UDP message sizes
-	to be larger than 512 bytes.
-
-2011-01-20  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	To avoid frequent reallocs when composing a DNS reply message,
-	grow the message buffer in multiples of a certain minimum chunk size.
-
-2011-01-19  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns.c,src/dns.h,src/dns_answer.c
-	Extended debugging info with DNS-message lengths and flags of incoming
-	messages.
-
-2011-01-17  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conff.c,src/conff.h,src/conf-parser.c,src/dns_answer.c
-	Made "ignore_cd" option obsolete. It is now effectively always on.
-
-2010-12-27  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c,src/cache.h,src/dns_answer.c,src/dns_query.c,
-	  src/make_rr_types.pl,src/rr_types.in,src/rr_types.c
-	The array of pointers to rr_set_t structs in the dns_cent_t struct
-	contains mostly null pointers in practice, so is somewhat
-	inefficient in storage usage. This problem is exacerbated if we add
-	support for caching more RR-types. To ameliorate to the problem
-	I have decided to split the array in two, with one part fixed in the
-	dns_cent_t struct as before, and an extension part that will be
-	separately allocated, if necessary. If the extension part is used only
-	for very rarely cached types, in most cases the extension array will not
-	need to be allocated thus hopefully saving memory overall.
-	The lookup tables which are necessary to support the new cache entry
-	structure are cumbersome to write by hand, so I have written a perl
-	script to do this automatically. As an additional benefit, which RR
-	types are cache-able is now configurable for each type separately via
-	rr_types.in.
-
-2010-03-14  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Using randomized source ports for outgoing queries in IPv6 mode failed
-	with the warning "Out of ports in the range 1024-65535, dropping query!",
-	because the pdnsd tried to bind to the fixed port for incoming queries,
-	instead of the dynamically chosen port. This is a very old bug, but it
-	has only become apparent since source port randomization has become the
-	default.
-	Thanks to Philip-André Fillion, Phil Sutter, Radoslaw Szkodzinski and
-	others for reporting this bug and sending patches.
-
-2009-12-25  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/status.c,src/status.h,src/pdnsd-ctl/pdnsd-ctl.c
-	Add a magic number to pdnsd-ctl command codes to guard against
-	possible incompatibility between the pdnsd-ctl utility and the
-	pdnsd server.
-
-2009-10-18  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Make root-server discovery a little more fault tolerant, i.e. if some
-	of the root-server names don't resolve don't necessarily reject the
-	whole result.
-
-2009-10-17  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/servers.c,src/dns_query.c,src/dns_query.h
-	Implemented automatic root-server discovery, which can now be configured
-	by setting "root_server=discover".
-
-2009-06-14  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c,src/consts.c,src/consts.h,src/conf-parser.c
-	Changed the default behaviour of the "neg_rrs_pol" option. The default
-	used to be to only cache records negatively in case the AA (authoritive
-	answer) bit in the reply was set. The new default is to also allow
-	negative caching in case the reply has the RA (recursion available) bit
-	set and the query had the RD (recursion desired) bit set.
-	This gives the behaviour that is usually wanted in case "proxy_only=on"
-	is set without having to set "neg_rrs_pol=on", which can be more
-	problematic. The new default can be explicitly set using
-	"neg_rrs_pol=default". The values "on","off" and "auth" are also
-	still available.
-
-2009-06-13  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conff.c,src/conff.h,src/dns_answer.c,src/conf-parser.c,src/conf-keywords.h
-	Included a patch contributed by Andreas Steinmetz that implements a new
-	global configuration option "ignore_cd". pdnsd used to check that the CD
-	bit in the DNS header of queries is zero and return the error code
-	"format error" if it is not. However, considering the meaning of this
-	bit today it appears to be harmless to ignore it, so the new "ignore_cd"
-	is on by default. Setting "ignore_cd=off" gives the earlier strict
-	behavior.
-	Also renamed the the Z1, AU, Z2 bits to correspond with their modern names
-	CD, AD, Z.
-
-2008-12-19  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* pdnsd-1.2.7/src/dns_query.c
-	If pdnsd receives a SERVFAIL response with a non-empty answer section,
-	use the information tentatively if no better response is available.
-	The previous behaviour was to discard the reply completely, which could
-	cause failure to resolve some names.
-	Thanks to Rafal Wijata for providing an example involving PowerDNS servers
-	replying with CNAME records.
-
-2008-09-01  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	In p_dns_resolve(), try to reduce the burden on root servers further for
-	names ending in "arpa".
-
-2008-08-31  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	In p_exec_query(), if the reply from a remote name server is negative
-	(either because the rcode is NXDOMAIN or because the answer section
-	contains no records for the queried name), ignore the remaining records
-	in the answer section (in particular do not add them to the cache).
-
-2008-07-29  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conff.c,src/dns_query.c
-	Made the default of the configuration option query_port_start equal to
-	1024.  Also improved the algorithm used by pdnsd to select random source
-	ports to ensure that each (free) port gets an equal chance of being
-	selected.  This should guarantee random source ports in the range
-	1024-65535, making pdnsd less vulnerable to some of the issues described
-	in CERT VU#800113.
-	The old situation, where pdnsd lets the kernel select the source ports,
-	is still available by specifying query_port_start=none.
-
-2008-07-25  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Fixed a dangling pointer bug in p_exec_query(), which could cause pdnsd
-	to crash when processing a long reply with many entries in the answer
-	section.
-
-2008-05-12  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c,src/conff.c
-	Added a recursive-depth counter to the read_config_file() and
-	confparse() functions to prevent the possibility of infinite
-	recursion when processing include files.
-	In confparse(), warn when in a server section the root_server option is
-	set in combination with policy=simple_only or policy=fqdn_only.
-
-2008-05-10  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/ipvers.h
-	Included a patch contributed by Georg Schwarz which selectively undoes
-	a Debian patch contributed by Juliusz Chroboczek on platforms for which
-	the IPV6_RECVPKTINFO macro is not defined (e.g. MacOS X).
-
-2008-05-08  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
-	The pdnsd-ctl add command can now also be used to define NS records.
-	A wildcard record defined with this command now behaves the same way as
-	one defined in the config file.
-
-2008-05-07  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c,src/conf-keywords.h,src/conff.c
-	Added the ability to process "include" sections in the configuration
-	file.  This makes it possible to place local definitions in separate
-	files and include them from the main configuration file.
-
-2008-05-05  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conff.c,src/conf-parser.c,src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
-	Implemented two new pdnsd-ctl commands, which make it easier to add
-	definitions to the pdnsd cache at run time. "pdnsd-ctl include" is
-	similar to "pdnsd-ctl config" but only processes configuration sections
-	that effect the cache and disallows global and server sections.
-	"pdnsd-ctl eval" directly parses its string arguments as if they were
-	part of a configuration (include) file.
-
-2007-09-15  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns.h,src/dns_answer.c,src/dns_query.c
-	Changed the declarations of various packed structs, by moving the
-	__attribute__((packed)) specifiers from the field level to the struct level.
-	This was necessary to get the correct value for sizeof(rr_hdr_t) when
-	compiling with gcc for the ARM architecture.
-	Thanks to Dirk Armbrust for reporting the problem and supplying the solution.
-
-2007-08-10  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	Applied a Debian patch contributed by Juliusz Chroboczek which
-	reportedly fixes a problem with pdnsd running in IPv6 mode
-	(IPV6_RECVPKTINFO instead of IPV6_PKTINFO).
-
-2007-08-04  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	When resolving a name recursively, pdnsd would stop querying further
-	name servers as soon as it received a reply with the authority (aa) flag
-	set. Unfortunately, it appears this flag is sometimes raised erroneously
-	in replies. I have implemented a work-around that ignores the aa flag
-	when there appears to be a clear delegation to a sub-domain.
-	Thanks to Nico Erfurth for reporting this problem.
-
-	It appears that pdnsd would also fail to consult servers in the authority
-	section when configured with neg_rrs_pol=on. This has been fixed.
-
-2007-08-01  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/pdnsd-ctl/pdnsd-ctl.c
-	Made the matching of pdnsd-ctl command names and most of the arguments
-	case-insensitive.
-
-2007-07-22  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	Instead of sharing the responsibility for freeing the answer buffer in
-	case of an error amongst different functions, only free it in
-	compose_answer().
-
-	* configure.in, src/Makefile.am, src/test/Makefile.am
-	Merged patch contributed by Pierre Habouzit to deal with CFLAGS the
-	automake way (allowing packagers to override CFLAGS properly).
-
-2007-07-21  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	For each target name in a SRV record in the answer section, add
-	addresses to the additional section of the response, as is recommended
-	by the RFCs.
-
-2007-07-14  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/list.c,src/list.h
-	Made modifications to the implementation of dynamic arrays, which
-	should ensure proper alignment on all supported architectures.
-
-2007-07-10  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* Upgraded pdnsd's license to GPL version 3.
-
-2007-07-08  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.h,src/dns_query.c
-	The data field of the rr_bucket_t struct is now aligned such that
-	it possible to use straightforward assignment to copy IP addresses,
-	making memcpy unnecessary for this purpose.
-
-2007-07-07  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	If pdnsd fails to connect to a name server using a IPv6 address, it will
-	now retry the connection using a IPv4 address, if available. This allows
-	pdnsd to recover from situations where IPv6 connectivity is temporarily
-	unavailable, but IPv4 connectivity still functions.
-	Thanks to Andreas Ferber for reporting this problem.
-
-2007-07-04  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	I have reordered the arguments of the add_rr() and related
-	functions to make them more consistent with each other.
-
-2007-07-03  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c,src/hash.c
-	pdnsd will no longer immediately abort in add_dns_hash() if it fails
-	to allocate memory for a new hash entry.
-
-2007-07-01  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conff.c,src/conff.h,src/consts.c,src/consts.h,
-	  src/conf-parser.c,src/conf-keywords.h,src/dns_query.c
-	Implemented the new "reject", "reject_policy" and "reject_recursively"
-	options for the server section of the configuration file.
-
-	* src/ipvers.h,src/conf-parser.c,src/dns.c,src/status.c,
-	  src/pdnsd-ctl/pdnsd-ctl.c
-	Allow local AAAA records to be defined even if pdnsd is compiled
-	without --enable-ipv6, provided there is sufficient support in the
-	C libraries and --disable-new-rrs was not used.
-
-2007-06-30  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	Previously, when the answer buffer was realloced in add_rr(), an
-	extra 2 bytes used to be reserved, which are unnecessary, as far
-	as I can tell. I have decided to do without these extra 2 bytes,
-	which originate from Thomas Moestl's code. As compensation, I have
-	added extra PDNSD_ASSERT() statements to check that the answer
-	buffer does not overflow.
-
-2007-06-27  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/status.c, src/pdnsd-ctl/pdnsd-ctl.c
-	Extended the pdnsd-ctl 'add a' and 'add aaaa' commands to allow
-	multiple IP addresses to be specified.
-
-2007-06-25  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conff.c,src/conff.h,src/conf-parser.c,src/conf-keywords.h,
-	  src/dns_query.c
-	Implemented a new option for the server section of the configuration
-	file: randomize_servers.
-
-	* src/servers.c
-	Improved the debug messages in uptest().
-
-2007-01-30  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/icmp.c
-	Fixed up the code implementing the ping test in icmp.c,
-	which was broken for 64-bit systems.
-	Thanks to Michael Uleysky for reporting this bug.
-
-2007-01-09  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	auth_ok() now returns 1 if the cache entry has the DF_NEGATIVE flag set,
-	without providing a list of authoritative servers to continue querying.
-	Otherwise if we receive a non-authoritative NXDOMAIN reply and pdnsd
-	is configured with neg_domain_pol=on, pdnsd will continue to try to
-	get an authoritative answer. The intention is that pdnsd
-	stops querying as soon as it gets an "unknown domain" answer.
-
-2006-04-29  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/main.c
-	pdnsd would segfault if it tried to call log_message() (via the
-	log_warn() and log_error() macros) before the FILE pointer to the debug
-	output stream was properly initialized.
-	Thanks to Thomas Cort for discovering this problem and suggesting a fix.
-
-2006-04-09  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c,src/helpers.c,src/conff.h,src/conff.c
-	I have included a patch contributed by Jan-Marek Glogowski, that
-	implements the configuration option "use_nss". With use_nss=off pdnsd
-	will avoid system functions that may use NSS (i.e. initgroups()), which
-	may need DNS for LDAP lookups, which can lead to long timeouts and
-	stalls if pdnsd itself is used for the DNS lookup.
-
-2006-03-26  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Negative caching of RR sets is now also supported with lean_query=off.
-
-2006-03-25  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c,src/conf-parser.c,src/main.c
-	I have implemented a new query method: udp_tcp. With this method a UDP
-	query is tried first and, if the UDP answer is truncated, the query is
-	repeated using TCP. This is the behaviour that seems to be recommended
-	by the DNS standards. However, pdnsd wil not discard the truncated
-	answer if the TCP requery fails.
-
-2006-03-24  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	Previously, pdnsd would add at most one additional A (and AAA) record
-	for each record in the answer and authority sections. At the request of
-	Angel Marin, pdnsd will now add all A and AAA records it can find in the
-	cache for each name that produces additional records.
-
-2006-01-02  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	compose_answer() would leak memory if the query contained
-	an unsupported QTYPE or QCLASS. This has now been fixed.
-
-2005-12-27  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* configure.in
-	TCP-query support is now compiled in by default.
-	It can still be disabled using the configure option
-	--disable-tcp-queries.
-
-2005-12-23  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	Queries received from clients with non-empty answer, authority or
-	additional sections are	now treated as malformed and rejected with
-	rcode 1 (format error).
-
-2005-11-06  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c
-	Time intervals in the configuration files can now be expressed in
-	seconds, minutes, hours, days and weeks, using the suffixes
-	s,m,h,d,and w.
-
-2005-10-14  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/consts.c
-	In the pdnsd configuration file, true/false and yes/no are now accepted
-	as synonyms for the constants on/off.
-
-2005-08-24  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/helpers.c
-	I have fixed a potential buffer overflow problem that could occur with
-	the 'pdnsd-ctl dump' command.
-	In case of the root domain, the function rhn2str() would write 2 bytes
-	to the output buffer even if size==1. Theoretically (under pathological
-	circumstances) this could have allowed the dbuf buffer in the function
-	dump_cent() to overflow by one byte.
-
-2005-08-21  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* acconfig.h,src/cache.c,src/conff.c,src/conf-parser.c,src/dns.c,
-	  src/dns_answer.c,src/dns_query.c,src/error.h,src/helpers.c,src/main.c,
-	  status.c
-
-	It appears the newer versions of gcc won't convert a pointer to char
-	into a pointer to unsigned char and vice versa without complaining.
-	The changes I have made should get rid of these distracting warning
-	messages. Unfortunately I had to introduce casts in some cases,
-	which reduces type safety :-(.
-
-2005-08-16  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns.h
-	Some changes were made to the endianess detection code to
-	address problems on Mac OS X v10.4 Tiger.
-
-2005-08-15  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* configure.in
-	Some changes where made to address the reported problems with the
-	configure script on Mac OS X v10.4 Tiger.
-
-2005-08-05  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/status.c,src/dns_answer.c
-	The output of the 'pdnsd-ctl status' command now includes some
-	statistics on the number of query threads.
-
-2005-07-29  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/main.c
-	It appears that sigwait() can return EINTR under certain conditions.
-	This explains the problems reported by Sanjoy Mahajan with strace
-	and ACPI S3 sleep, which both caused pdnsd to exit prematurely.
-	The return value of sigwait() is now checked and sigwait() is retried
-	if the return value is EINTR.
-
-2005-07-04  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	It appears that some servers that do not support recursive queries
-	answer with "query refused" instead of "not supported". The
-	p_exec_query() function now takes that possibility into account.
-
-2005-07-01  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	In the processing of queries, I will make a distinction between
-	recoverable errors and non-recoverable ones (typically caused by out of
-	memory conditions). In the case of non-recoverable errors, no attempt to
-	query alternative name servers is made.
-
-2005-06-26  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	In p_recursive_query(), as soon as one of the servers in the q list
-	replied "no error" or "name error", only this reply was examined and
-	the other servers in the q list were ignored. Joshua Coombs has brought
-	to my attention that this strategy sometimes fails when this reply is not
-	authoritative and doesn't contain any usable references to name servers
-	in the authority section.
-	I have modified p_recursive_query() to allow pdnsd to continue querying
-	the remaining servers in the q list as long as we haven't received an
-	authoritative answer or usable authority information. This will allow
-	pdnsd to arrive at the correct answer in some cases where it would
-	formerly fail.
-
-2005-06-25  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/status.c
-	The "pdnsd dump" command may now also be given an argument
-	consisting of a name beginning with a dot. This will dump information
-	about all names in the cache ending in the given name. An argument
-	consisting of a name without a leading dot will only give information
-	about the exact name, as it did before.
-
-2005-06-24  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/servers.c,src/status.c
-	All uptests are now conducted by the server status thread. If a retest
-	is requested via a "pdnsd-ctl server", an existing server status thread
-	is signaled or a new server status thread is spawned if the old one has
-	exited. This has the effect that a "pdnsd-ctl server label retest"
-	command will now return immediately without waiting for the tests to
-	finish.
-
-2005-06-20  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c,src/servers.c,src/servers.h
-	At the request of Al-Junaid Walker I have added a new configuration
-	option for the uptest interval. With "interval=ontimeout" the server is
-	not tested at startup/reconfig, or at regular intervals, but only after
-	a DNS query to a server times out. However, once a server is declared
-	dead it is never considered again unless it is revived using a
-	"pdnsd-ctl config" or "pdnsd-ctl server" command.
-
-2005-06-19  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/servers.c,src/dns_query.c,src/icmp.c
-	During an uptest the server configuration data is locked. Especially
-	with ping or query uptests of unresponsive servers this means that the
-	execution of "pdnsd-ctl config" or "pdnsd-ctl server" commands can be
-	delayed for a long time (or even time out). I have made modifications
-	that allow a "pdnsd-ctl config" or "pdnsd-ctl server" commands to
-	interrupt pending uptests to allow these commands to proceed without
-	delay in most cases.
-
-	* src/thread.h
-	Use the POSIX sigaction() instead of signal() to install signal handlers.
-
-2005-06-08  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c,src/dns_query.c
-	I have defined a struct dns_msg_t that includes a message length field.
-	In the case of sending a DNS message over TCP, we no longer need a
-	separate write() call to send the message length. This prevents possible
-	packet fragmentation.
-
-2005-06-07  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	The query_method=tcp_udp option only used to work with cooperative name
-	servers, i.e. servers that either send back a TCP reply or explicitly
-	refuse the TCP connection request. This wasn't sufficiently satisfactory
-	in practice, because some name servers are completely unresponsive to TCP
-	connection requests. I have made modifications to allow pdnsd to try UDP
-	queries in case TCP connections time out. When a short server timeout is
-	combined with a global timeout that is at least twice as long, this may
-	allow a query to a name server that only responds to UDP queries to
-	succeed with query_method=tcp_udp.
-
-2005-04-20  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c,src/hash.c,src/conff.c,src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
-	The "pdnsd-ctl empty-cache" command now accepts additional arguments;
-	these are interpreted as include/exclude names. During execution of the
-	command the name of each cache entry is matched against the names in the
-	include/exclude list. If the name ends in a name to be included, the
-	cache entry is deleted, otherwise not.
-	This feature was added at the request of Joshua Coombs.
-
-2005-04-19  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c, src/hash.c
-	pdnsd will now (temporarily) unlock the cache between emptying hash
-	buckets, this should allow pdnsd to remain responsive while executing
-	the "pdnsd-ctl empty-cache" command. However, this only applies to DNS
-	queries; pdnsd will not accept any new pdnsd-ctl commands while a
-	pdnsd-ctl command is still running.
-
-2005-03-29  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* configure.in, src/hash.h
-	I have added a new configure option --with-hash-buckets=...
-	This makes it possible to specify a different number of
-	hash buckets without editing the source files.
-
-2005-03-17  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/error.c
-	When running in both daemon and debug mode, print warning and
-	error messages to debug file as well as the syslog.
-
-2005-03-15  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	Only call pthread_setspecific() in debug mode, because
-	pthread_getspecific() is also only used in debug mode.
-	If pthread_setspecific() fails, treat this as a non-fatal error.
-
-2005-03-10  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* configure.in
-	On Linux systems the configure script will now try to detect automatically
-	whether the system implements the Native POSIX Thread Library, but
-	the method is not necessarily foolproof.
-
-	* src/dns.c
-	Local PTR records generated for resolving numeric IPv6 addresses back into
-	names, are now based on ip6.arpa instead of ip6.int, because the latter domain
-	will be phased out eventually.
-
-2005-03-06  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* Makefile.am,src/cache.c
-	Create an empty cache-file at install time and don't complain about empty
-	cache files at start up.
-
-2005-02-20  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* acconfig.h,configure.in,src/conf-parser.c,src/conff.h,src/dns.h,
-	  src/dns_answer.c,src/dns_query.c,src/error.h,src/helpers.h,src/icmp.c,
-	  src/ipvers.h
-
-	I have applied some changes to the code proposed by Rodney Brown to improve
-	portability. In particular, pdnsd should now compile on the Darwin platform
-	(Apple Mac OS X).
-	To support some of these changes, the source package is now built with a
-	slightly more modern version of autoconf (2.57) and automake (1.6.3).
-
-2005-01-29  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns.c,src/dns_answer.c,src/dns_query.c
-
-	I have added some extra debug code to make it easier to discover the
-	reason that pdnsd considers a query or reply malformed (format error).
-
-2005-01-12  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns.c,src/dns_answer.c,src/dns_query.c
-
-	I have extended some debug code contributed by Kiyo Kelvin Lee to dump
-	the data received by pdnsd in debug mode (queries from clients, replies
-	from name servers). Because this will give very verbose debug output,
-	I've arranged it so that this data dump only occurs if pdnsd has been
-	configured and compiled with --with-debug=9 and pdnsd has been called
-	with -v9.
-
-	Additionally, in the case that pdnsd rejects a reply from a name server
-	because it is not well formed, I have refined the debug messages to
-	distinguish between format errors due to unexpected truncation and
-	others kinds of format errors.
-
-2004-10-30  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/rr_types.c
-	I have included some changes proposed by Joseph Pecquet to address
-	the compilation problems reported by FreeBSD users.
-
-2004-10-18  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* acconfig.h,configure.in,src/helpers.c,src/helpers.h,src/dns.h
-	I have merged a patch for CYGWIN support by Kiyo Kelvin Lee into
-	my version of the code.
-
-2004-10-15  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	Invalidating local records with the pdnsd-ctl did not work the way the
-	documentation described. An invalidated local record would be always be
-	purged at the next lookup, thus invalidation would practically have the
-	same effect as deletion. An invalidated local record is of no use at all and
-	would occupy space until it is purged during a lookup (but not by purge_cache).
-	The function invalidate_record() now behaves as the documentation describes, i.e.
-	invalidation of local records has no effect.
-
-2004-09-27  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* doc/pdnsd.conf.5.in
-	A new man page describing the format of the pdnsd config file has been
-	added to the pdnsd package. I've used a customized Perl script to generate
-	one automatically from the html documentation.
-
-2004-09-14  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/hash.c
-	The cache entries in a hash chain are now stored in order of increasing long hash
-	value. The advantage is that if an name is looked up that is not present in the
-	cache, this can be done by comparing with only half (on average) of the number
-	of entries in the hash chain. Not a huge speed up, but still worth while, I think.
-	Additionally, the number of hash computations for each add_cache() call has
-	been halved.
-
-2004-09-11  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	insert_rrl() will no longer add local records to the rr_l list, because
-	purge_cache() ignores them anyway.
-
-2004-09-08  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns.h,src/cache.c,src/dns_query.c,src/dns_answer.c,src/conf-parser.c
-	I've started using GETINT16,GETINT32,PUTINT16,PUTINT32 macros, which are based
-	on the NS_GET/NS_PUT macros that can be found in the BIND source, instead of memcpy
-	for fetching and storing non-aligned integer data.
-
-2004-09-08  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c,src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
-	New pdnsd-ctl command: "pdnsd-ctl dump" will print information about all the
-	entries contained in the cache.
-	"pdnsd-ctl dump <name>" will only print entries belonging to <name>.
-	The data fields of the more common rr-types will be printed in human readable
-	form, the remaining ones in a hexadecimal representation.
-	With thanks to Dan Jacobson for suggesting this feature.
-
-2004-08-31  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c
-	At the suggestion of Dan Tihelka, I have expanded to the server_ip= option
-	to allow the name of an interface to be specified instead of an IP address.
-	pdnsd will not bind to the interface name, but will lookup the address the
-	interface has at start up, and listen on that address. If the address
-	of the interface changes while pdnsd is running, pdnsd will not notice that.
-
-2004-08-30  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.h,src/cache.c
-	I've reversed the meaning of the CF_NOAUTH and renamed it CF_AUTH.
-	I've also added a domain level flag DF_AUTH, which is used to
-	mark cache entries obtained from authoritave replies in response to
-	a query of type * (all)..
-
-2004-08-30  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	I've changed the format of the cache file. A typical cache entry has empty
-	sets for most RR types (even more if DNS_NEW_RRS is defined). In the old
-	format, each empty RR set was represented by a zero byte.
-	In the new format only non-empty sets are respresented, leading
-	to a (modest) reduction is size.
-
-2004-08-28  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c
-	New option for "rr" sections in the config file: reverse=on/off.
-	If you want a locally defined name to resolve to a numeric address and vice
-	versa, you can now achieve this by setting reverse=on before defining the
-	A record, making it unnecessary to define a seperate PTR record for the reverse
-	resolving.
-
-2004-08-20  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.h,src/cache.c,src/conf-parser.c,src/dns_query.c
-	At the request of Daniel Black, I have added support for defining local wildcard records
-	in pdnsd. The only type supported presently is records beginning with '*.'.
-
-2004-08-10  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/hash.c,src/cache.c,src/dns_query.c,src/dns_answer.c
-	Sampo Lehtinen has remarked that pdnsd sometimes failed to resolve classless
-	reversed-delegated IP addresses, and that this has something to do with the fact
-	that pdnsd did not accept '/' characters in domain names. After reading Sampo's
-	and Thomas' remarks, and also rfc2317 and some of the rfc's referenced in rfc2317,
-	I decided pdnsd should place no restrictions at all on the types of characters it
-	allows in domain names, only on the lengths of the byte sequences.
-	This led me to make some quite extensive internal changes to pdnsd. Among other
-	things domain names are now stored in transport format (sequences of bytes preceded
-	by length bytes) instead of C strings. This is also more efficient because there
-	is no need any more to convert from one representation to the other, except when
-	reading the config file, interacting with pdnsd-ctl or running in debug mode.
-	Conversion between the two representations isn't always possible, though.
-	For example, domain names in transport format might contain non-printable characters.
-	These are now printed as escape sequences (three octal digits preceded by a back slash).
-	Presently there are still restrictions on the characters in the domain names that can
-	be defined in local records. I doubt this will ever be considered a problem.
-
-2004-08-02  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	The code for handling NXT records was flawed. A response from a remote server
-	containing NXT records (even well-formed ones) could cause pdnsd to crash.
-	The code for handling NAPTR records contained incorrect PDNSD_ASSERT statements,
-	which could cause pdnsd to abort unnecessarily.
-
-2004-07-25  Paul A. Rombouts  <p.a.rombouts at home.nl>
-
-	* src/list.h,src/list.c,src/dns.c,src/dns_query,src/dns_answer.c
-	I've noticed that some of the (dynamic) arrays that pdnsd uses are quite sparse.
-	Instead of using an array structure with elements that are large enough to contain
-	the largest possible domain name, I've implemented a "list" data structure that
-	is more compact. The elements of a list can only be accessed sequentially from
-	beginning to end, but it allows more efficient memory use in case the names are
-	significantly shorter that the maximum.
-
-2004-07-22  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c
-	I've expanded pdnsd's configuration options by adding support in pdnsd for reading
-	/etc/resolv.conf style files. Instead of specifying IP addresses in a server section,
-	the option "file=<filename>" can be used.
-	The IP addresses in the lines beginning with "nameserver" will be added to
-	the list of address for that section, the remaining lines will be ignored.
-	To avoid the possibility that pdnsd will query itself, local addresses are skipped
-	(unless pdnsd is configured to listen on a different port number).
-
-2004-07-21  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.h,src/cache.c,src/dns_query.c,src/conf-parser.c
-	New option for "server" sections in the config file: root_server=on/off.
-	In case a server section contains only addresses of root servers, which
-	usually only give the nameservers of top level domains in their reply,
-	setting root_server=on will enable certain optimizations. This involves using
-	cached information to reduce queries to the root servers, thus speeding up
-	the resolving of new names. This option is also necessary to make the
-	delegation_only option work in combination with root servers.
-
-2004-07-16  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c,src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
-	New pdnsd-ctl command: "pdnsd-ctl empty-cache" will make pdnsd delete its entire
-	cache, freeing all entries. This is useful for debugging purposes, or in situations
-	where you suspect that stale cache entries are causing you problems, but you are not
-	sure which ones.
-
-2004-07-11  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c,src/dns_query.c
-	I've removed the use of the function add_cache_rr_add(), which was used to
-	add additional RR records to the cache one at a time. I've changed the code
-	in dns_query.c such that additional (or off-topic) records are first collected
-	in arrays of dns_cent_t structures, and then added to the cache using add_cache().
-	With this approach only one function, viz. add_cache(), is used for adding
-	new entries to the cache, which I believe leads to a cleaner programming
-	interface. Added benefit is that query serial numbers are no longer
-	necessary.
-
-2004-07-10  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.h,src/cache.c,src/dns_query.c,src/dns_answer.c
-	I've added two new field to the dns_cent_t struct, namely c_ns and c_soa.
-	These will be used to remember references to NS and SOA records in the authority
-	sections of replies from remote name servers.
-	This information can be used by pdnsd to fill in the authority section of its
-	own reply.
-
-2004-06-25  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c,src/servers.c,src/consts.c
-	I've added an new server availability test which can be selected with "uptest=query".
-	This can be useful as an alternative to "uptest=ping" in case the remote server does not
-	respond to ICMP_ECHO requests at all, which unfortunately is quite common these days.
-	"uptest=query" causes pdnsd to send an empty query to remote nameservers. Any well-formed
-	response (apart from SERVFAIL) within the timeout period will be interpreted as a sign that the
-	server is "up".
-	In a sense this new availability test can actually be considered more reliable than the
-	other ones that pdnsd supports.
-	With thanks to Juliusz Chroboczek for suggesting this feature.
-
-2004-06-24  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/helpers.c
-	Don't use getpwnam() while we are multi-threaded, because it returns a pointer to
-	a statically allocated structure. I will use getpwnam_r() instead, which is thread
-	safe. Unfortunately there seem to be some portability problems with getpwnam_r().
-	For those platforms that lack getpwnam_r(), I will keep the old code with getpwnam()
-	as an alternative.
-
-2004-06-23  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/servers.c
-	Check that the number of IP addresses in a server section is nonzero before
-	testing servers for availability. Otherwise pdnsd could crash in debug mode.
-
-2004-06-21  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/conff.c,src/conf-parser.c,src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
-	New pdnsd-ctl command: "pdnsd-ctl config" will make pdnsd re-load its configuration file.
-	In most cases (but there are still some exceptions) this is preferable
-	to restarting pdnsd after making changes to the configuration file.
-	An important advantage is that there should be no perceptible interruption in the dns service
-	when using the reload command.
-	An alternative config file can be specified with "pdnsd-ctl config <filename>".
-
-2004-05-31  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c,src/dns_query.c,src/dns_query.h
-	I've made an adjustment to p_recursive_query() and related functions, so that
-	when pdnsd chases name servers in pursuit of authoritative records, it avoids
-	all the name servers already queried for the same name in the recursive calling
-	chain, not just the servers most recently used.
-	Although the hops counter will already break any possible cycles, this will
-	allow pdnsd to detect pathological cycles earlier and waste less resources.
-
-	* src/cache.c
-	In add_cache(), don't add empty entries to the cache. Empty cache entries
-	waste memory and are more persistent than non-empty ones, because purge_cache()
-	cannot get rid of them.
-
-2004-05-30  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c,src/dns_query.c,src/icmp.c,src/netdev.c
-	I've removed the calls to getprotobyname() and used the constants IPPROTO_TCP
-	and IPPROTO_UDP instead. First of all, it doesn't seem very efficient to call
-	a function repeatedly to look up the same well-known protocol numbers.
-	More importantly, getprotobyname() stores its results in a statically-allocated
-	structure and thus cannot be considered thread safe. (getprotobyname_r()
-	is thread safe, but is not portable.)
-
-2004-05-27  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	I've noticed that when pdnsd is restarted shortly after it has answered a TCP
-	query, it is often not able to bind to the TCP socket again, resulting in a
-	disabled TCP server thread. The solution appears to be to set the SO_REUSEADDR
-	socket option before binding the socket. This allows you to use the same port even
-	if it is busy (in the TIME_WAIT state).
-	I found the code for this in a patch file from an old Debian package.
-
-2004-05-20  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Joseph Pecquet has reported that version 1.1.11 does not compile under FreeBSD v4.x
-	because the macro ENONET is undefined. I've bypassed the problem by surrounding
-	the case line using this value with conditional preprocessor directives.
-
-2004-05-08  Paul  Rombouts  <p.a.rombouts at home.nl>
-
-	* src/rc/Slackware/rc.pdnsd
-	I've included a Slackware start-up script contributed by Nikola Kotur.
-
-2004-05-05  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* doc/pdnsd.8
-	I'm very grateful to Mahesh T. Pai for contributing a pdnsd man page,
-	which was still missing up till now.
-
-2004-04-30  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/servers.c,src/dns_query.c
-	After considering some suggestions made by Juliusz Chroboczek I have made the
-	following changes:
-
-	- After receiving a reply from a remote server mark the server up and update the
-	timestamp so that pdnsd doesn't bother testing this server for availability for a
-	while.
-	- After detecting an error with an send/recv call that indicates a server is
-	unavailable, mark a server down so that pdnsd doesn't bother testing this server
-	for a while.
-	- After server timeouts, uptests are never performed by a query/answer thread,
-	because this may delay the sending of an answer to the client. Instead the
-	timestamp of a server that needs to be tested for availability is set to zero and
-	a condition signal is sent to alert the server status thread, which will carry out
-	the test. Unresponsive servers with uptest=ping will not be marked down
-	immediately any more, but only after the ping test has definitely failed.
-
-	* src/error.c,src/error.h
-	I've moved most of the code previously contained in the DEBUG_MSG macro to a new
-	function debug_msg().
-	The DEBUG_MSG macro now simply expands to "if(debug_p) debug_msg();".
-	This should make the executable a little smaller, and be just as fast when
-	debugging is off. The DEBUG_MSG macro still expands to nothing if pdnsd is built
-	without debugging support.
-
-2004-04-28  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.h,src/dns_query.c
-	I've tried to simplify the finite state machine used for processing parallel
-	queries, by merging the "state" and "nstate" variables used by p_exec_query() and
-	p_query_sm() resp. into one "state" variable.
-	By introducing an extra field "iolen" to keep track of the number of bytes read
-	from or written to a socket, I could also reduce the number of states for TCP
-	queries. The new code has the additional advantage that it can handle situations
-	that require multiple read() calls to receive a response.
-
-2004-04-14  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	I've added an extra check comparing the number if poll/select events actually
-	handled to the return value of poll/select. This should reduce the chance that
-	pdnsd will get caught in a busy spin due to unknown remaining bugs. An error
-	message is logged and an error code is returned when this comparison fails.
-
-2004-04-13  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.h,src/dns_query.c
-	I got rid of the event field in the query_stat_t struct.
-	I think it is redundant, because its value can be quite simply derived from
-	the nstate field.
-
-2004-04-12  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	I appears there was flaw in the code for handling a "Not Implemented" response
-	from a remote server with the RA (recursion available) bit equal to zero. This
-	could cause pdnsd to get into a busy spin. I traced the flaw back to Thomas
-	Moestl's code, so it must be in all the versions of pdnsd I know of. In previous
-	versions of pdnsd the busy spin would eventually time out. Due to some recent
-	changes the loop would no longer time out, making the bug more noticeable.
-	With thanks to Nicolas George for reporting the bug.
-
-	I also discovered a closely related flaw that would cause pdnsd to poll() closed
-	file descriptors. It usually works out OK in practice, but it is definitively not
-	the correct way to do it.
-
-	Additionally, I discovered some opportunities to save memory, e.g. by replacing
-	the nsname buffer in the query_stat_t struct by a pointer to an already existing
-	copy of a name.
-
-2004-04-10  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	Nicolas George remarked that he thought it was strange that subdomains of domains
-	negated with "neg" sections in the config file were not also negated. I thought that
-	he had a point, and I've implemented a change so that negating example.com will
-	now also negate www.example.com, xxx.adserver.example.com, etc.
-
-2004-04-09  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/error.c,src/error.h
-	I noticed that the code for the log_warn() and log_error() functions was almost
-	identical, even to the point that log_warn() called syslog() with LOG_ERR
-	priority. I've merged these two functions into one log_message() function.
-
-2004-04-08  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/main.c,src/conf-parser.c
-	The -4 and -6 command-line options should now work as advertised.
-	This wasn't entirely trivial. The rule is that options on the command line
-	override those in the configuration file. The easiest way to implement this is to
-	process the command-line options after reading the configuration file. But this
-	doesn't work for the -4 and -6 options, because the run_ipv4 flag determines how
-	IP addresses in the config file are parsed. I've inserted some extra tests and
-	warning messages that will hopefully make this setting nearly foolproof.
-
-	I've added two new command-line options, "-a" and "-i <prefix>".
-	With the -a flag pdnsd will try to detect automatically if IPv6 support is
-	available on a system, and fall back to IPv4 if not. The -a flag can be used
-	instead of -4 or -6.
-
-	In IPv6 mode, pdnsd will now automatically convert IPv4 addresses to IPv6-mapped
-	addresses. The -i option can be used to specify a prefix for this mapping. The
-	default is ::ffff.0.0.0.0
-	There is also a corresponding ipv4_6_prefix= option for the config file.
-
-	In IPv4 mode, if IPv6 support is compiled in, pdnsd will now skip IPv6 addresses
-	in the config file (except for the server_ip and ping_ip options) with a warning
-	message. This allows you to have mixed sets of IPv4 and IPv6 address in the same
-	config file, although in IPv4 mode some server sections may become inactive.
-
-	With thanks to Juliusz Chroboczek for suggesting these changes.
-
-2004-04-07  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	I've changed some of the cache-flag definitions to make debugging a little simpler.
-	Unfortunately, this makes the cache files of previous pdnsd versions incompatible
-	with the new one. I've introduced a cache version identifier to be added at the
-	beginning of each cache file. This enables pdnsd to recognize and discard
-	incompatible cache files.
-
-2004-04-05  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.h,src/cache.c
-	I've changed the way CACHE_LAT (cache latency, normally 120 secs) is used to
-	determine whether a cache entry has timed out. Instead of simply adding it to the
-	ttl (time to live), I use CACHE_LAT if the ttl is less then CACHE_LAT, else the
-	ttl itself, making CACHE_LAT the minimum ammount of time a cache entry stays in
-	the cache.
-
-2004-04-02  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	I've introduced a global timeout parameter. This is the minimum period of time
-	pdnsd will wait after sending the first query to a remote server before giving
-	up without having received a reply.
-	The timeout options in the configuration file are now only minimum timeout intervals.
-	Setting the global timeout option makes it possible to specify quite short timeout
-	intervals in the server sections. This will have the effect that pdnsd will start
-	querying additional servers fairly quickly if the first servers are slow to respond
-	(but will still continue to listen for responses from the first ones).
-	This may allow pdnsd to get an answer more quickly in certain situations.
-
-	* src/dns_query.c
-	When receiving a NXDOMAIN (unknown domain) response from a remote name server,
-	I think it is still useful to process the authority and additional sections,
-	so that pdnsd can possibly add a SOA record to its own response.
-
-2004-04-01  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	In p_recursive_query(), I've slightly changed the way pdnsd does parallel
-	queries. Active queries or not canceled until we have received a useful response
-	from a remote name server, or all the queries have failed or timed out.
-	Thus the par_queries parameter is no longer the maximum number of parallel
-	queries, but rather the increment with which the number of parallel queries is
-	increased when the previous set has timed out.
-	In the worst case all the servers in the list of available servers will be queried
-	simultaneously. We may be wasting more system resources this way, but the advantage
-	is that we have a greater chance of catching a reply.
-	After all, if we wait longer anyway, why not for more servers.
-
-2004-03-31  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	I've noticed that in compose_answer() that while adding the name in the query
-	section it was not passed through compress_name(). While it is true that the
-	first name occurrence cannot be compressed, it is still sensible to process the
-	query name with compress_name() so that the offset can be stored and provide
-	additional opportunities for future compressions.
-	I've tested this with dig and the responses of pdnsd are now usually a little
-	smaller	in size or can hold more information within the 512 byte limit.
-
-2004-03-30  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	I've noticed that pdnsd stored rr records (of the same type) in reverse order
-	in the cache.
-	Although I don't see anything inherently wrong with that, I think it's neater to
-	store them in the order they are processed.
-
-2004-03-29  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	I've rearranged the order of the arguments of some of the functions in cache.c
-	to obtain a more consistent calling interface.
-
-	* src/dns_answer.c
-	I've noticed that pdnsd would only add NS records to an authority section if it could
-	find such records matching the queried name (or the last CNAME in the answer) exactly.
-	However, I understand that a server should try to give NS records as close as possible
-	to the target name in the naming hierarchy.
-	I also understand that if a domain name is reported as nonexisting, or no record of
-	the requested type exists, it is customary to provide a SOA record, searching up the
-	name hierarchy if necessary.
-	I've tried to implement this in compose_answer(), although with some limitations.
-	I only look in the cache, I don't search more then three levels up, and stop before
-	the top level.
-
-2004-03-28  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c,src/dns_answer.c
-	There were some issues with add_cache_rr_add().
-
-	First of all, the way it was used in rr_to_cache() (or rather not used) meant
-	that if an "off topic" record was added for a name that lacked an entry in the
-	cache, the rr set would be created with an incorrect serial number (namely zero).
-	I've rewritten add_cache_rr_add so that it can create new cache entries if necessary.
-	This simplifies the code in rr_to_cache() and ensures correct serial numbers.
-
-	Secondly, in add_cache_rr_add() the ttl was compared with that of an existing rrset
-	without adjusting for the min_ttl and max_ttl options. This could lead to all the
-	previous records being deleted, retaining only the last one.
-
-2004-03-27  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	In compose_answer(), if the rd (recursion desired) bit is set in the query
-	and the response contains a CNAME record (while a different type of record was
-	requested), always do a recursive query on the CNAME, even if we have already
-	added a record of the requested type to the response.
-	Failing to honor the rd bit will cause some resolver libraries to complain,
-	even if the answer contains a record of the requested type.
-
-	I've slightly changed the calling interfaces of add_to_response() and add_rrset()
-	to make them more consistent and efficient.
-
-	In add_rrset() I've fixed a memory leak on one of the error paths.
-
-	In add_additional_rr(), the return value of add_rr() was not checked.
-	If add_rr() fails, it will free *ans, and functions higher up the calling
-	chain could be referencing freed memory.
-
-	I've fixed a potential referencing of freed memory or double freeing in add_additional_a().
-	If a call of add_additional_rr() fails, it will free *ans.
-	Previously, add_additional_rr() could be called a second time, in which case
-	the second call would be referencing freed memory or freeing it a second time..
-
-2004-03-23  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* configure.in, src/Makefile.in,src/pdnsd-ctl/Makefile.in,src/test/Makefile.in
-	Frédéric L. W. Meunier has reported that configure --srcdir option (for building
-	in directory separate from the source directory) was broken.
-	Should be fixed now.
-
-2004-03-20  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c,src/dns_query.c,src/helpers.c,src/icmp.c,src/main.c,src/netdev.c,src/ipvers.h,src/test/if_up.c,src/test/is_local_addr.c,src/test/tping.c,src/test/random.c,src/conf-parser.c
-	I've eliminated the global variable run_ipv6 from the code.
-	Enabling both the IPv4 and IPv6 protocols at the same time is not supported
-	in pdnsd, so the value of run_ipv6 (if it is defined) is simply !run_ipv4.
-
-	* src/dns.c,src/test/is_local_addr.c,src/test/tping.c
-	It appears the option to compile pdnsd without IPv4 support (i.e. only IPv6
-	support) was broken. Should be fixed now.
-
-2004-03-19  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	I've discovered an incorrect use of cache locks in lookup_cache().
-	We only read locks in place, it is possible for purge_cent() to delete a cache
-	entry while another thread is trying to read it at the same time, which could
-	lead to	trouble. I've rewritten purge_cent() so that it can be used to test
-	whether something needs to be purged without actually deleting anything.
-	If something needs to be deleted, purge_cent() will be called again with
-	the proper read/write locks in place, excluding access to the cache for all
-	other threads.
-
-2004-03-18  Paul Rombouts  <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	I've added a new function sort_rrl() for sorting the rr_l list using a merge-sort
-	algorithm. Usually the insertion sort used by insert_rrl() is good enough, because
-	new entries belong near the end most of the time. Reading entries from disk forms
-	an exception, though, because the rrsets in the file are completely out of order
-	w.r.t. timestamps, leading to quadratic time complexity of the insertion sort method.
-	In that case it should be faster to simply append items at the end of the rr_l list
-	and sort using a more efficient algorithm afterwords.
-	pdnsd now seems to start up noticeably faster when reading large cache files.
-	I've also considered using a more sophisticated data structure than a doubly linked
-	list, but this will add considerable complexity to the code and use more memory.
-
-2004-03-13  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	Changed a declaration in udp_answer_thread() so that the buffer used for passing
-	control messages on to sendmsg() is exactly the right size, instead of an arbitrary
-	512 bytes.
-	Also initialized the msg_flags of the struct msghdr passed on to sendmsg() to zero,
-	to keep Valgrind from complaining about uninitialized bytes.
-
-2004-03-12  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/icmp.c
-	Fixed an incorrect call to select() in ping4(). A file descriptor set for detecting
-	exceptions was initialized but not passed on to select(). This would lead subsequent
-	code always to behave as if an IO exception had occurred.
-	Valgrind seems to indicate that when a poll() call times out and returns 0,
-	the revents field of the struct pollfd is not necessarily set.
-	I've changed the code to check that the return value is > 0 before examining the
-	revents field.
-
-2004-02-06  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/conf-parser.c,src/conf-parser.h,src/conf-keywords.h
-	I've rewritten the parser for the configuration file in C from scratch.
-	(f)lex and yacc/bison are no longer needed to build pdnsd.
-
-2004-01-16  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/main.c
-	Load the cache from disk without locking cache access because pdnsd
-	is still single-threaded at that point.
-
-2004-01-15  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/cache.c,src/hash.c
-	Moved the responsibility for freeing the cache entries referred by
-	the hash buckets from destroy_cache() to free_dns_hash() (which is called
-	by destroy_cache()). Previously, the cache and hash tables were already
-	completely destroyed by the time free_dns_hash() was called, and there was
-	nothing left for free_dns_hash() to free.
-
-2004-01-14  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/hash.c,src/make_hashconvtable.c
-	The hash conversion table is now generated at build time instead
-	of at run time when pdnsd is started up.
-
-2004-01-13  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns.c
-	In add_host() fixed incorrect generation of IPV6 type of name for PTR record
-	due to use of && instead of & as masking operator.
-
-2004-01-13  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/icmp.c, src/dns_answer.c
-	Use unsigned long instead of int error counters to reduce the danger
-	of wraparound.
-
-2004-01-06  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/main.c,src/thread.c,src/thread.h,src/server.c,src/status.c,src/dns_answer.c
-	Initialize a global thread attribute object in main.c and use it to create all the detached
-	threads, instead of initializing a separate attribute object for each new thread.
-
-2004-01-06  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	Check the return value of pthread_create() in udp_server_thread()
-	and tcp_server_thread() to ensure that a new answer thread has actually
-	been created and free resources if not.
-
-2004-01-04  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/helpers.c,src/cache.c,src/conff.c,src/status.c
-	Stop writing to control socket after an error has been detected.
-
-2004-01-03  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/pdnsd-ctl/pdnsd-ctl.c
-	Tried to make the error messages of pdnsd-ctl more helpful.
-	The complete usage description is now only printed if the 'help' command
-	is used. For problems with other commands a much shorter message is generated
-	specific for that command.
-
-2004-01-02  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/helpers.h
-	Changed the definition of rhnlen(). For valid data this will make no difference,
-	but it may change the behaviour of pdnsd in certain error situations.
-
-2004-01-02  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns.c
-	Optimized compress_name() some more.
-
-2004-01-02  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	Additional code cleanup in compose_answer().
-
-2004-01-01  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* doc/pdnsd-ctl.8
-	Updated the pdnsd-ctl man page.
-
-2003-12-31  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/pdnsd-ctl/pdnsd-ctl.c
-	Cleaned up some code.
-
-2003-12-31  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/status.c,src/conff.h,src/conff.c
-	Some further code cleanup in status.c.
-	Labels for server sections are no longer limited to 32 chars,
-	but can have arbitrary length. The string that is used to specify
-	new DNS-addresses with the "pdnsd-ctl server" command can now also
-	have arbitrary length.
-
-2003-12-30  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* doc/html/doc.html
-	Added information about CNAME and MX resource records, that were
-	previously undocumented.
-
-2003-12-26  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Removed the function p_dns_resolve_from(). This function was essentially
-	a call to p_recursive_query() with a dummy nocache argument.
-	p_recursive_query() can now be called with nocache=NULL instead.
-
-2003-12-26  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Using a variable length array instead of an malloced buffer to hold the struct pollfd array
-	in p_recursive_query(). This has the potential for causing portability problems, but I
-	think that's unlikely because almost all the major C compilers I work with support variable
-	length arrays nowadays.
-
-2003-10-18  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/helpers.h,src/helpers.c
-	Fixed a mistake that caused a compile error when using the --with-random-device
-	configuration option.
-	Thanks to Daniel Black for reporting this bug.
-
-2003-10-02  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* conf-lex.l.in,src/conf-parse.y,src/conff.h,src/conff.c,src/dns_query.c
-	Made the "delegation_only" feature configurable.
-
-2003-09-25  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/helpers.c,src/helpers.h
-	Added alternative implementations of strdup, strndup, stpcpy, getline and asprintf
-	in an effort to make the code more portable.
-
-2003-09-22  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/helpers.c,src/conf-parse.y
-	Made some changes to the parser of the configuration file so that domain names
-	missing a dot at the end will be tolerated.
-
-2003-09-21  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Implemented a first version of the "delegation-only" feature.
-	It has been "hard-coded" to work for "com" and "net" zones,
-	and is not yet configurable.
-
-2003-09-21  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns.c
-	Rewrote domain_match(). Also changed the way it is used.
-	I believe it has a cleaner semantics now.
-
-2003-09-21  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Changed the order of the arguments of p_exec_query() and p_recursive_query()
-	to make it more consistent with the other functions.
-
-2003-09-18  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	Reordered the code in process_query() so that a buffer for an error response is
-	allocated only when it is actually needed.
-
-2003-09-17  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	Added parentheses to correct mistaken operator precedence assumption in cache.c.
-	!cent->flags&DF_NEGATIVE is parsed as (!(cent->flags))&DF_NEGATIVE but I think
-	what Thomas Moestl must have intended was !((cent->flags)&DF_NEGATIVE).
-
-2003-09-12  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Fixed a mistake which caused the effect of the proxy_only option to be reversed.
-	Thanks to Andrew M. Bishop <amb at gedanken.demon.co.uk> for reporting this bug.
-
-2003-09-11  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/helpers.c
-	Rewrote str2rhn() and rhn2str().
-
-2003-09-10  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns.c
-	Rewrote read_hosts(), the function that reads /etc/hosts-style input.
-	I believe the parsing algorithm is more robust now.
-
-2003-09-09  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/status.c,src/pdnsd-ctl/pdnsd-ctl.c
-	Fixed a bug (my fault) that caused improper passing on of flags for the
-	pdnsd-ctl source command.
-	Also reordered some of the code, so that data is validated after all of it
-	has been read from the control socket. This should prevent a "broken pipe"
-	error message if data validation fails.
-	Also fixed the reporting of success or failure of the pdnsd-ctl "neg" command.
-
-2003-09-08  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/list.c
-	Rewrote da_grow1() and da_resize() so that they automatically allocate an array
-	if given a NULL argument. This makes the use of da_create() redundant in most cases.
-
-2003-09-08  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/conf-parse.y,src/servers.c
-	At the suggestion of Greg Norris, I changed the code to allow server sections in the
-	configuration file that don't specify any IP addresses. Such a section will remain
-	inactive until one or more IP addresses are assigned with the control utility pdnsd-ctl.
-
-2003-09-04  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c,src/dns_query.c
-	Oops: in my zeal to declare variables in the smallest possible scope, I ended up
-	using a pointer to a struct that was out of scope. My understanding of compilers tells me
-	it should work out OK in practice, but it is definitely a no-no.
-	Used a union declared in a larger scope instead (which is ugly in another way,
-	but equally efficient).
-	Also removed a section of redundant code in udp_server_thread().
-
-2003-09-01  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Corrected the iteration range of a for loop in p_dns_cached_resolve(), which would
-	otherwise cause an array to be indexed out of bounds in the function set_flags_ttl().
-
-2003-08-31  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_answer.c
-	Added cleanup handlers for freeing the resources passed on to udp_answer_thread() and
-	tcp_answer_thread(). This should ensure the resources are freed even if the threads get
-	canceled.
-
-2003-08-30  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	Revised large portions of code in src/cache.c, used for adding and deleting entries in
-	the cache. In particular, I rewrote purge_cache(), which I believe was incorrect.
-	I wouldn't be surprised if this was the cause of the crashed (defunct) threads that some
-	people were reporting.
-	Also fixed some memory leaks.
-
-2003-08-28  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	Eliminated the overhead of allocation debugging in the case that ALLOC_DEBUG is not defined.
-
-2003-08-24  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/conf-parse.y
-	No longer allow certain settings of the query_method option in the configuration file
-	if pdnsd is not compiled with the necessary support.
-	Thanks to Nikolaus Rath <Nikolaus at rath.org> for reporting the bug.
-
-2003-08-23  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/netdev.c
-	Fixed a bug in is_local_addr() where the result of fgetc(f) is restricted to type char
-	before being compared to EOF, which can result in the comparison always being false.
-	Thanks to Gerhard Tonn <GerhardTonn at gammatau.de> for reporting the bug.
-
-2003-07-28  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* doc/html/index.html,doc/html/doc.html,doc/html/dl.html,doc/pdnsd-ctl.8,contrib/README
-	Revised the documentation.
-
-2003-07-21  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/main.c,src/status.c,src/icmp.c
-	Setting stat_pipe=0 after opening or binding the control socket fails.
-	This should prevent further use of the control socket if a problem with
-	it has been detected previously.
-	Also properly initialized the global variable int ping_isocket in src/icmp.c
-
-2003-07-13  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/main.c
-	Polished the code in main().
-
-2003-07-04  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/helpers.c,src/dns_answer.c,src/dns_query.c
-	Eliminated the use of inet_ntoa() in favor of the more modern inet_ntop().
-	inet_ntop() makes more sense in threaded code and is also recommended in
-	the glibc info pages.
-
-2003-07-03  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_query.c
-	Fixed an allocation size error (not mine) in p_exec_query().
-	The erroneous size is almost always larger than necessary, so in practice this bug
-	just wastes memory. But there is also a possibility that the allocated buffer is too
-	small, which would mean trouble.
-	Also fixed two memory leaks on some of the error paths in p_exec_query().
-
-2003-06-28  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* acconfig.h,configure.in,src/thread.h
-	Extended the configuration option --with-thread-lib.
-	Configuring with --with-thread-lib=linuxthreads2 will cause the alternative
-	definition of THREAD_SIGINIT suggested by Thomas Moestl to be used.
-
-2003-06-27  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/consts.h,src/consts.c,src/conff.c,src/conf-parse.y,src/dns_answer.c
-	Added two new configuration options for policies of inclusion/exclusion lists.
-	The new policies options are "simple_only" and "fqdn_only".
-	This allows me to control to which name servers pdnsd will direct queries for
-	simple host names.
-	I also polished the code a bit in report_conf_stat(), used for reporting the current configuration.
-
-2003-06-20  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* acconfig.h,configure.in,src/thread.h,src/thread.c
-	Added a configuration option --with-thread-lib=nptl.
-	This causes the macro THREAD_SIGINIT to be defined as empty in src/thread.h,
-	and thread_sig() in src/thread.c is never used.
-
-2003-06-11  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/thread.h
-	Undid the change to the definition of THREAD_SIGINIT suggested to me by
-	Thomas Moestl, after receiving a report of a problem with this change
-	from someone running SuSE 7.0.
-
-2003-06-06  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/dns_query.c:
-	Discovered that I failed to preserve the semantics of Thomas Moestl's code
-	when I rewrote a section of code in use_server(). Fixed.
-
-2003-05-19  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/cache.c,src/conf-lex.l.in,src/conf-parse.y,src/conff.h,src/dns_answer.c,src/dns_query.c,src/servers.c:
-	Merged fixes contained in patch file sent to me by Thomas Moestl with my own version.
-	Changing the version to 1.1.8b1 as suggested by the patch file.
-
-2003-02-26  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* pdnsd-1.1.7a-par.diff:
-	Made one big patch file from all the changes I made up till now.
-	Wrote a description of the changes in a file README.par
-	Posted patch file on the web so others can use it.
-
-2003-02-24  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* src/cache.c
-	Changed the code that writes the cache to disk.
-	Data is now written strictly sequentially, eliminating the need for fseek().
-	This seems to have successfully solved the problem I had with corrupt cache files.
-
-2002-05-27  Paul Rombouts <p.a.rombouts at home.nl>
-
-	* ChangeLog:
-	Started experimenting with the source code.
-	Made many changes between 2002-05-27 and 2002-07-13.
-	Too lazy to maintain the ChangeLog.
-
-2002-01-06  Thomas Moestl  <tmoestl at gmx.net>
-
-	* version: Call it 1.1.7.
-
-2002-01-04  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c, src/dns_query.c:
-	Comment and debug message fixes, more assertions.
-
-2002-01-03  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns.c, src/dns_answer.c, src/dns_query.c:
-	More harmless fixes, correct some comments and debug messages, add more
-	assertions.
-
-	* NEWS, version: 1.1.7p2, correct NEWS entry.
-
-	* src/helpers.c:
-	Make sure the calling thread of pdnsd_exit() terminates immediately.
-
-2002-01-02  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c, src/helpers.c, src/icmp.c:
-	Fix a few more harmless bugs, more paranoia.
-
-	* src/status.c: Fix yet more, probably harmless, problems.
-
-2002-01-01  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns.h, src/dns_answer.c, src/dns_query.c:
-	Fix a few more possible buffer size problems, and add a bunch of
-	assertions as last lines of defence.
-
-2001-12-30  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns.c: Build fix (include error.h).
-
-	* NEWS, version: Call it 1.1.7p1, and add a NEWS entry.
-
-	* TODO: Reduce TODO to what actually is still needed.
-
-	* src/dns.c, src/error.h, src/helpers.c:
-	Add a bunch of robustness PDNSD_ASSERT()'s.
-
-	* src/dns_query.c:
-	Fix a bug which may possibly be remotely exploitable to gain access as
-	the user pdnsd runs as.
-	This was caused by a dumb single-character mistake :(
-
-	* doc/Makefile.am, configure.in:
-	Avoid confusing automake 1.5 by not putting a comment into a make rule.
-	Fix CONFDIR passing.
-
-	Submitted by:	GoTaR <gotar at poczta.onet.pl>
-
-	* src/pdnsd-ctl/pdnsd-ctl.c:
-	Avoid crashing when the buffer contents received using the status command
-	are not terminated.
-
-2001-10-14  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/SuSE/pdnsd.in, THANKS:
-	Fix the stop case for the SuSE rc script: killproc requires the full
-	path of the binary as argument (reported by Bernhard Pelz).
-
-2001-09-23  Thomas Moestl  <tmoestl at gmx.net>
-
-	* configure.in:
-	Revamp the OS autodetect test. OpenBSD and (hopefully) NetBSD are no longer
-	unsupported.
-
-	* src/helpers.c, THANKS:
-	Do not try to use arc4random when compiling for NetBSD (submitted by
-	Thomas Stromberg).
-
-2001-09-10  Thomas Moestl  <tmoestl at gmx.net>
-
-	* COPYING.BSD: s/REGENTS/AUTHOR/ in one place.
-
-	* src/cache.c:
-	It is possible no record of the requested type is present after calling
-	cr_add_cent_rr_int() (when the record was marked as being local), so
-	check before dereferencing the pointer to the respective rrset.
-	Leave the record unmodified when cr_check_add() returns 0.x
-
-2001-07-26  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/RedHat/pdnsd.in:
-	Add a workaround for @sysconfdir@ substitutions containing ${prefix}.
-	Spotted by Robert Linden.
-
-2001-07-04  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/RedHat/pdnsd.in:
-	Add a condrestart handler to the Red Hat rc script, and do some general
-	cleanup. Contributed by Christian Engstler.
-
-2001-07-02  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/error.h:
-	Attempt to detect a gcc that cannot yet handle ANSI variadic macros,
-	and work around this by using the old GCC-style variant.
-
-	* src/conff.c:
-	Remove a + at the start of a line that got in when merging a diff by
-	hand.
-
-	* src/servers.c: waitpid() returns a pid_t.
-
-	* src/dns.c:
-	It's sizeof, not sizof. This should unbreak the IPv6 build. Also silence
-	some warnings with appropriate casts.
-
-	* NEWS, version: Call it 1.1.6, and add a NEWS entry.
-
-2001-07-01  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns_query.c, THANKS, version, AUTHORS:
-	Added a modified version of Andreas Steinmetz's code for
-	query_port_start and query_port_range, and added him to AUTHORS and
-	THANKS.
-
-2001-06-23  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/cache.c:
-	Fix a bogon: deleted would not be reset correctly in the first
-	purge_cache loop, which could cause pdnsd to loop forever when a
-	negative record was after a deleted rr.
-
-2001-06-21  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/list.h:
-	Add (currently unused) list macros that are going to be used in future
-	code.
-
-	* src/cache.c:
-	Fix a bogon in the rw lock code: we need to wake up a writer if there
-	are no readers. The old code was a leftover from a time when
-	SUSP_THRESH was just r_pend * x.
-	Fix a typo.
-
-2001-06-13  Thomas Moestl  <tmoestl at gmx.net>
-
-	* AUTHORS: Add mention of FreeBSD code to AUTHORS.
-
-	* src/netdev.c:
-	Add SIZEOF_ADDR_IFREQ (taken from FreeBSD: _SIZEOF_ADDR_IFREQ, net/if.h
-	rev. 1.58.2.1) and add an appropriate copyright notice.
-	The reason for this is that other BSDs don't have it, and we are not
-	supposed to use underscored macros in portable software.
-
-2001-06-12  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/icmp.c: Fix double #inclusion of <netinet/ip.h>.
-	Noticed by Sebastian Stark.
-
-2001-06-08  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_query.c, THANKS:
-	Allow underscores in the query names reported back, as the comment next
-	to the decompress_name call already indicated (but the call gave NULL
-	as the uscore parameter, which disables underscores normally).
-	Add Michael Ströder, who spotted this, to THANKS.
-
-2001-06-06  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/servers.c, THANKS:
-	Fix a bug discovered by Stefan Erhardt (and add him to THANKS): the
-	return value of waitpid was misinterpreted.
-
-2001-06-04  Thomas Moestl  <tmoestl at gmx.net>
-
-	* Makefile.am, file-list.base.in, version:
-	Bump version to 1.1.6p1; wire up COPYING.BSD so that it gets included
-	in RPM's and tarballs.
-
-	* COPYING.BSD:
-	Add the BSD-Style copyright notice so that it can be included in binary
-	distributions.
-
-2001-06-03  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns.c, src/dns_answer.c, src/dns_query.c, src/helpers.c, src/status.c, NEWS, version:
-	Bump version to 1.1.5, and add a NEWS entry for this release.
-
-	Miscellaneous cleanups, mainly in the status.c code; fix a bug that
-	could cause heap corruption (rhncpy always clobbered the whole buffer,
-	but only the needed space was reserved in add_rr). This should solve
-	the crashes some people were seeing (this bug is not an exploitable
-	security hole as far as I know; the respective buffer is on the heap,
-	as mentioned).
-
-	* src/error.c:
-	Paranoia: do not use the argument to crash_msg as a format string
-	(crash_msg  is only used with constant strings, though).
-
-2001-06-02  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns.c, src/dns.h, src/dns_answer.c, src/dns_query.c, src/error.h, src/hash.c, src/helpers.c:
-	Correct underscore handling for SRV records, and a few comment fixes.
-
-	* src/cache.c, src/conff.c, src/dns_query.c, src/error.h, src/helpers.h, src/status.c:
-	Numerous non-critical argument fixes for printf-like functions.
-
-	* src/dns.c: Remove superfluous \n's.
-
-	* src/conf-parse.y, src/dns_answer.c, src/status.c:
-	Correct some DEBUG_MSG nits, and fix two format string bugs. One of
-	them could allow users that are allowed to use pdnsd-ctl with the
-	server (when the status socket is enabled) to gain the privileges of
-	the user that runs (the run_as user or the user that started pdnsd on
-	Linux when strict_setuid is set to off) pdnsd. The status socket is
-	disabled by default, and if it is enabled, it's default permissions
-	are quite restrictive, so this isn't a problem for most.
-
-2001-05-30  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/status.c:
-	Make the status permissions actually work (missed last time).
-
-	* src/dns_answer.c, src/main.c, src/status.c, src/status.h:
-	Move the status socket initialization to a place where it gets executed
-	before any threads are started; this way, we can use umask to set the
-	permissions, and avoid a (in this case harmless, but anyway) race
-	condition.
-	While being there, remove obsoleted comments and places referring to
-	the now-socket as fifo.
-
-2001-05-29  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/cache.c:
-	Replace a misuse of CF_LOCAL with DF_LOCAL. This had no effect, because
-	the values are the same.
-
-2001-05-22  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/hash.c, src/helpers.c, THANKS, acconfig.h, configure.in:
-	Add an option for allowing underscores (_) in domain names. This
-	violates the RFC's if enabled (which it isn't by default).
-	Thanks to Eelco Vriezekolk for an initial patch.
-
-	While being there, clean up configure.in and acconfig.c a bit.
-
-	* src/helpers.c, src/status.c:
-	Add a few comments about security implications.
-
-	* src/cache.c, src/dns_answer.c, src/dns_query.c, src/helpers.c:
-	Change some occurences of strcpy to strncpy. Again, no risk here, the
-	buffer lentgh was carefully chosen, and while the data was partially of
-	remote origin, it was carefully validated before entering the cache (and
-	thus having a chance of being used by us).
-	3 occurences remain: 2 in cache.c, where we allocate a sufficient amount
-	of memory before (mimicking the non-portable strdup) and one where
-	we copy a constant and which is obviously correct.
-
-	* src/dns.c:
-	Change two occurences of strcat to strncat. Again, no risk here, the
-	buffer lentgh was carefully chosen, the data was validated and supplied
-	by the starting user.
-
-	* src/dns.c:
-	Change a sprintf to a snprintf and enlarge a buffer a bit. This is pure
-	paranoia (alrhough makes code review easier for others), because a.) the
-	lengths were carefully chosen so that no overrun could occur and
-	b.) this was locally supplied data.
-
-2001-05-21  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/RedHat/Makefile.am:
-	Add a missing semicolon in  the RedHat rc Makefile.am (discovered by
-	Christian Engstler).
-
-2001-05-19  Thomas Moestl  <tmoestl at gmx.net>
-
-	* HACKING: Remove the mostly outdated HACKING file.
-
-	* src/debug.c:
-	Catch a corner case in the allocation debug helpers: realloc() with a
-	size of 0 is effectively a free operation. To my knowledge, this is
-	not done in the pdnsd sources, however.
-
-	* src/test/test.sh:
-	Use the correct error function, forgotten in last commit.
-
-	* src/test/clnt-test.sh, src/test/srv-test.sh, src/test/test.sh:
-	Misc small improvements in the regression test scripts, mostly
-	adding configuration variables and common error handlers.
-	Comment a little on the tests that are done in clnt-test.sh
-
-	* src/rr_types.c: Fix a typo in a comment.
-
-	* src/cache.c, src/debug.c, src/dns_answer.c, src/dns_query.c, src/error.h, src/hash.c, src/list.c, src/main.c, src/status.c, src/thread.c, src/thread.h:
-	New ANSI variadic debug macros (finally), which print a timestamp and
-	a thread ID now for easier debugging with many parallel queries.
-	It should be considered to make those inline functions instead. However,
-	we have the advantage that we use printf in place here and benefit
-	from parameter checking without specifying obscure function attributes.
-
-	* src/rc/SuSE/.cvsignore, src/test/.cvsignore, src/rc/.cvsignore, src/rc/Debian/.cvsignore, src/rc/RedHat/.cvsignore, contrib/.cvsignore, doc/.cvsignore, src/.cvsignore, src/pdnsd-ctl/.cvsignore, .cvsignore:
-	Brush up the rotten (pre-autoconf!) .cvsignore files and add some where
-	necessary.
-
-2001-05-17  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/RedHat/Makefile.am, src/rc/RedHat/pdnsd.in, configure.in, pdnsd.spec.in:
-	Red Hat rc script and RPM improvements by Christian Engstler.
-
-2001-05-12  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/pdnsd-ctl/pdnsd-ctl.c:
-	Fix a place missed when converting rr_info.
-
-	* version: It's 1.1.4, finally.
-
-	* src/rr_types.c, version:
-	Change some class values in the rr type structure to better values.
-	Bump beta version.
-
-2001-05-10  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/cache.c, src/dns_answer.c, src/dns_query.c:
-	Fix a signedness bug that could cause erraneous 0 ttls to be returned.
-	Add some debug messages, and do some minor fixups.
-
-2001-05-09  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/cache.c, src/rr_types.c:
-	Fix some bugs in the new conflict resolution code and make it more
-	complete.
-
-	* src/cache.c, version:
-	Add conflict resolution code. This needs a bit more checking, and
-	the tables might still need to be tweaked.
-	Bump version.
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/Makefile.am, src/cache.c, src/cache.h, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/consts.c, src/consts.h, src/debug.c, src/dns.c, src/dns_answer.c, src/dns_answer.h, src/dns_query.c, src/dns_query.h, src/error.c, src/error.h, src/hash.c, src/hash.h, src/helpers.c, src/helpers.h, src/icmp.c, src/icmp.h, src/list.c, src/main.c, src/netdev.c, src/netdev.h, src/rr_types.c, src/rr_types.h, src/servers.c, src/servers.h, src/status.c, src/status.h, src/thread.c, src/thread.h, configure.in, version:
-	Remove the old infrastructure that theoretically could have allowed for
-	multiple cache subsystems. This ability was never used, and if it should,
-	the caching should probably be split into two layers, a higher level
-	common one and the actual caching backends.
-	src/cacheing/cache.c and src/cacheing/native/*.[ch] were repo-copied to
-	src/.
-	Substitute "conf.h" with <conf.h> for includes.
-	Purge records a little more often (when adding records, and when
-	retrieving from the cache). Handle cache_size properly when using
-	purge_cent.
-	Introduce some infrastructure in rr_types.[ch] for a record conflict
-	checker which is to be introduced shortly to enforce cache consistency
-	even in the purge_cache=off case.
-
-2001-05-04  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/RedHat/pdnsd.in, src/rc/SuSE/pdnsd.in, src/rc/Debian/pdnsd.in:
-	Revert the last commit. It breaks the rc scripts by spamming them with
-	make style variable expansions.
-
-	* src/rc/SuSE/pdnsd.in, src/rc/RedHat/pdnsd.in, src/rc/Debian/pdnsd.in, AUTHORS, THANKS:
-	Fix a rc script bug spotted by Frank Elsner, and add him to AUTHORS and
-	THANKS.
-
-2001-05-01  Thomas Moestl  <tmoestl at gmx.net>
-
-	* version: Bump version to 1.1.4p2.
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/status.c:
-	Fix some bogons and remove some unneeded code in the pdnsd-ctl
-	interface.
-	Fix spelling and line length bugs.
-
-2001-04-30  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/conf-parse.y, src/status.c:
-	Some corrections for the authrec config file and the pdnsd-ctl noauth
-	support.
-
-	* src/pdnsd-ctl/pdnsd-ctl.c:
-	Fix wrong argv index (using getopt changed the indices).
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns.c, src/dns.h, src/dns_query.c, src/status.c, THANKS, version, AUTHORS:
-	Accumulated changes that should go in before 1.1.4:
-	- merge Andrew M. Bishop's patch that adds a server label option
-	- make local records authoritative for the domain by default, and add
-	  the authrec option to change this
-	- add the auth keyword to the pdnsd-ctl source option to support that
-	- fix a bug in the conf-parse.y grammar causing a shift/reduce conflict
-	- sync up AUTHORS and THANKS: add Andrew M. Bishop, Kevin A. Burton and
-	  Michael Steinl
-	- bump version to 1.1.4p1
-
-	* src/conff.c, src/main.c:
-	Fix two small bugs: the wrong element of argv was used for the pidfile
-	option, which could cause pdnsd to segfault, and C_INCLUDED was always
-	used in slist_add, regardless of the tp parameter.
-
-	* src/helpers.c:
-	Fix a bogon discovered by Michael Steiner:  the fread() return value
-	was tested against bytes, not the number of items.
-
-	* src/hash.c, src/hash.h, src/cache.c:
-	purge_cache used to walk over the cache quite inefficiently when it was
-	called from add_cache. Add a lazy mode for purge_cache which uses the
-	rrset_l to be efficient in this special case.
-	Add some #ifdef'ed-out-by-default code to debug the hash function.
-
-2001-04-12  Thomas Moestl  <tmoestl at gmx.net>
-
-	* NEWS: Add NEWS entry for 1.1.3.
-
-	* src/dns.c, src/helpers.c, src/icmp.c, contrib/Makefile.am, contrib/README, version:
-	IPv6, ICMP and build fixes. It's 1.1.3 now!
-
-	* src/debug.c, src/debug.h: Add the new debug support files.
-
-	* src/test/clnt-test.sh, src/cache.c, src/cache.h, src/error.h, src/list.c, src/list.h, src/main.c, src/status.c, src/status.h, src/Makefile.am, src/conf-parse.y, src/conff.h, src/dns.c, src/dns_answer.c, src/dns_query.c:
-	Add allocation debug support. Some small cleanups before the upcoming
-	1.1.3 release.
-
-	* src/dns_query.h, src/helpers.c, src/list.c, src/conff.c, src/dns.c, src/dns_answer.c, src/dns_query.c:
-	Lots of small bugfixes, cleanups, style and spelling fixes.
-
-	* src/test/clnt-test.sh: Fix nc arguments.
-
-	* src/test/clnt-test.sh, src/test/srv-test.sh, src/test/test.sh:
-	Add regression test scripts.
-
-2001-04-11  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/cache.c, src/servers.c, src/dns_answer.c, src/helpers.c, src/helpers.h, src/icmp.c, src/main.c:
-	Further cleanups and bug, style and spelling fixes.
-
-	* configure.in: Use -g again in the CFLAGS for a while.
-
-	* version: Beta version bump.
-
-	* src/rc/SuSE/pdnsd.in:
-	killproc does not seem to take the full path, but only the process name
-	(which is what one would expect).
-
-	* src/hash.c, src/netdev.c, src/rr_types.c, src/status.c, src/conf-parse.y, src/conff.c, src/helpers.c:
-	Misc. smaller fixes, and fixes on the new features. Also clean up style
-	and spelling in some places.
-
-	* src/dns_answer.c:
-	Bring the glibc pthread_cleanup_push/pthread_cleanup_pop return bug
-	workaround into the main tree.
-	Without this, a return between those two macros would cause pdnsd
-	to crash on system using a glibc between 2.1.2 and 2.2.2 (and possibly
-	others). This could e.g. be cause by a TCP connect() port scan.
-
-2001-04-10  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/pdnsd-ctl/pdnsd-ctl.c:
-	Minor fixes, direct error messages to stderr.
-
-	* src/list.c, src/list.h: Add the new list implementations.
-
-	* src/cache.c, src/cache.h, src/conf-parse.y, src/dns.c, src/dns_answer.c, src/dns_query.c, src/helpers.c, src/helpers.h, src/conf-lex.l.in:
-	Introduce rhnlen and rhncpy and make use of it instead of kluged-up
-	strcpy/strlen in the appropriate places.
-	Check that incoming names contain only legal characters in
-	decompress_name, return RC_FORMAT otherwise (this would result in
-	wrong handling only, but not in a security hole).
-	Reorganzie compose_answer and make it more correct for multiple
-	questions. Get rid of the algorithm that tries to add a higher
-	level name server; this might be readded in another place somewhen.
-	Use some more da_* instead of hand-built lists.
-	Some style cleanups.
-
-	* src/rc/RedHat/Makefile.am:
-	Add K45pdnsd links for rc6.d (reboot) and rc0.d (halt) following a
-	suggestion by Stas Sergeev.
-
-2001-04-06  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/cache.h, src/error.h, src/helpers.c, src/helpers.h, src/main.c, src/servers.c, src/status.c, src/conf-parse.y, src/conff.c, src/conff.h, src/dns.c, src/dns.h, src/dns_answer.c, src/dns_query.c, src/Makefile.am, version:
-	Bump alpha version; introduce a generic dynamic array type and make use
-	of it to ged rid of some ugly casts and redundant code.
-	Minor fixes.
-
-	* src/icmp.h, src/ipvers.h, src/conff.h, src/consts.h, src/dns.h, src/dns_answer.h, src/dns_query.h, src/helpers.h:
-	Use macros without an underscore as first character to protect the
-	headers. Underscores are reserved and should not be used in the
-	application name space.
-
-	* src/error.h: Add PDNSD_ASSERT, change style a little.
-
-2001-04-03  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/hash.c, src/netdev.c, src/servers.c, src/helpers.c, src/icmp.c, src/main.c:
-	Another slew of small bugfixes, minor updates and small fixes.
-
-	* src/rr_types.c, src/consts.c:
-	Update rr_types.c copyright date, consts.c should have a rcsid string.
-
-	* src/rr_types.c: cvs add rr_types.c.
-
-	* src/dns.h, src/helpers.h, src/ipvers.h, src/rr_types.h, src/status.h, src/conf-parse.y, src/conff.h:
-	cvs add rr_types.h that got missed before, update copyright dates,
-	remove some old config cruft, some minor fixups.
-
-	* src/conff.c, src/consts.c, src/dns_answer.c, src/error.c, src/conf-lex.l.in, src/conf-parse.y:
-	Update copyright dates, fix some minor bugs. Update copyright dates.
-	cvs add missed consts.c.
-
-2001-03-28  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/cache.c, src/hash.c, src/error.c, src/servers.c, src/dns_answer.c, version:
-	Bump version to 1.1.3p4
-	Fix some non-critical locking issues (none of them could be fatal).
-	Adjust copyright dates.
-
-	* src/hash.c: Make the hash compare case insensitive.
-
-2001-03-25  Thomas Moestl  <tmoestl at gmx.net>
-
-	* contrib/Makefile.am: Add Id tag to Makefile.am
-
-	* src/cache.c, src/dns_answer.c, src/icmp.c:
-	Some more type fixes overlooked in last commit.
-
-	* src/conf-parse.y, src/conff.h, src/dns.h, src/dns_answer.c, src/dns_query.c, src/icmp.c:
-	More type cleanups. Use time_t for time specifications throughout, and
-	make lengths singed longs. Cast cleanup in icmp.c to fix alpha
-	unalinged access faults.
-
-	* contrib/dhcp2pdnsd, contrib/pdnsd_dhcp.pl, contrib/save_ram.pl, contrib/Makefile.am, contrib/README, configure.in, version, Makefile.am:
-	It's 1.1.3p3 now.
-	Change the contrib infrastructure: there is a Makfile.am in contrib/
-	now. Rename Marko Stolle's pdnsd_update.pl to pdnsd_dhcp.pl and bring
-	it up to date (adding the rc script and save_ram.pl).
-
-	* src/helpers.c, src/dns.c, src/dns_query.c, AUTHORS, THANKS:
-	Bring in Bjoern Fischer's changes to make pdnsd conserve the case of
-	cached names, and add him to AUTHORS and THANKS.
-
-	* configure.in: The gdbm backend is discontinued.
-
-	* src/cache.c, src/hash.c:
-	Cleanup and small bugfixes of the cache code (esp. locking).
-
-	* AUTHORS, THANKS, file-list.base.in, pdnsd.spec.in:
-	SuSE fixes by Christian Engstler.
-	Add him to AUTHORS, THANKS.
-
-2001-03-14  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_query.c:
-	Fix a bug that could cause servers that were not used in the first
-	parallel query not to be used at all (failure would be returned
-	instead).
-
-2001-03-13  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/icmp.c: Add define for ip_p equivalent on Linux.
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/cache.c, src/dns_query.c, src/icmp.c, src/status.c, src/conf-parse.y, src/dns_answer.c, version:
-	Bump alpha version, more alignment fixes. All casts should be correct
-	now.
-
-2001-03-12  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c, src/dns_query.c, AUTHORS, THANKS:
-	Add the alpha fixes by P.J. Bostley, and add him to THANKS and AUTHORS.
-
-2001-03-10  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns.h, src/helpers.h:
-	Remove prototype for removed function strtolower.
-	Use unit16_t and uint32_t instead of unsinged short/long for dns
-	protocol structures.
-
-2001-02-25  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/status.c, src/conf-lex.l.in, src/conf-parse.y, AUTHORS, Makefile.am, version:
-	Add MX and CNAME for rr sections in the config file and MX setting
-	for pdnsd-ctl.
-	Typo fixes.
-
-	* src/netdev.c: Two more fixes.
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/cache.c, src/dns.c, src/main.c:
-	More small robustness fixes.
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/netdev.c, src/status.c, src/status.h, src/conf-parse.y, src/helpers.c, src/main.c, configure.in, version, Makefile.am, NEWS:
-	A batch of robustness fixes. Move the status socket to the cache
-	directory. Various cleanups.
-	It's 1.3 now (hopefully to be released soon).
-
-2001-02-21  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/main.c, src/conf-lex.l.in:
-	Fix breakage of the -mtu option and the query_method option (the parser
-	would not recognize constants that contained underscores).
-
-2001-02-20  Thomas Moestl  <tmoestl at gmx.net>
-
-	* contrib/README, contrib/pdnsd_dhcp.pl, AUTHORS, Makefile.am, THANKS, file-list.base.in:
-	Add Marko Stolle's pdnsd_update.pl DHCP update script, add him to THANKS,
-	and bring a contrib/ directory in place.
-
-2001-02-15  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c, configure.in, version:
-	Some minor build & misc fixes. Bump version to 1.1.2a and release a
-	version with the spec file fixes to get proper Red Hat RPM's.
-
-2001-02-09  Thomas Moestl  <tmoestl at gmx.net>
-
-	* NEWS: Bring NEWS up to date.
-
-	* src/icmp.c: Do not close the socket on error.
-
-	* pdnsd.spec.in: Add spec file fixes for man pages by Sourav K. Mandal
-
-2001-02-07  Thomas Moestl  <tmoestl at gmx.net>
-
-	* version: It is now 1.1.2.
-
-	* src/dns_query.c, src/main.c, Makefile.am, THANKS:
-	Fix a too strict length checking that could cause SERVFAIL to be returned
-	when the server returned NXDOMAIN. Add Markus Storm to THANKS (he has
-	reported this bug and supplied helpful information).
-	Minor tweaking in main.c.
-	Remove emptying of GZIP_ENV in Makefile.am (this normally contains --best).
-
-2001-01-27  Thomas Moestl  <tmoestl at gmx.net>
-
-	* AUTHORS, THANKS:
-	Add Michael Wiedmann to AUTHORS and THANKS for his pdnsd-ctl.8 man page.
-
-	* doc/Makefile.am, doc/pdnsd-ctl.8, configure.in, Makefile.am:
-	Add the pdnsd-ctl man page contributed by Michael Wiedmann. For this to
-	build in a correct way, add doc/Makefile.am and move all doc and
-	pdnsd.conf.sample related stuff in there.
-
-2001-01-25  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/main.c: Removed unneeded for the non-O_NOFOLLOW case.
-
-2001-01-24  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/main.c:
-	Add a fchown and a fchmod to the new non-O_NOFOLLOW case (not yet used).
-
-	* src/conf-parse.y, src/main.c, src/status.c: Misc small fixups.
-
-	* version: It's called 1.1.1 now.
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/status.c, src/main.c:
-	Fix command line parsing. Add code to securely create pid files under
-	OSs that do not support the O_NOFOLLOW flag (those OSs are not supported
-	yet, though).
-	Fix a possible race condition in socket creation/chmod. We now create
-	a directory in /tmp (or whatever TEMPDIR was set) to hold the socket.
-
-	* src/dns.c, src/dns_answer.c, src/icmp.c, src/main.c, src/status.c:
-	Another slew of copyright notice upgrades.
-
-	* version, configure.in:
-	Bump beta revision, fix typo (missing $) in configure.in
-
-	* src/dns.c, src/dns_answer.c, src/status.c:
-	Silence BSD compile time warnings.
-
-	* configure.in:
-	Cleanup, add autoconf code for building pdnsd on FreeBSD-CURRENT with the
-	new additionally-linked libc_r.
-
-2001-01-16  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c, src/icmp.c, version:
-	Bump beta revision, fix a comment. Also, generate ping id's using pdnsd's
-	random wrappers instead of using rand() for paranoia.
-
-2001-01-15  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/helpers.c, configure.in: Improve wording.
-
-	* src/helpers.c: Update copyright year (forgotten in last commit).
-
-	* src/dns_answer.c, src/helpers.c, src/main.c, acconfig.h, configure.in, version:
-	Bump versions. Small fixes (move socket intitializations from
-	udp_server_thread to init_udp_sockets to prevent warning when startup
-	takes long.
-	Make arc4random an option for a query id RNG and make it the default
-	on FreeBSD.
-
-2000-12-07  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/conf-parse.y, src/main.c, version:
-	We are at 1.1.1p1. Removed the exec-uptest security warning printef if no
-	explicit user is given in the strict_setuid case (it is not needed there,
-	and confuses users).
-
-2000-11-28  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/cache.c, src/helpers.c:
-	Converted cache locks to use condition vars and have lock contention
-	prevention. Added comments where not converted.
-
-2000-11-25  Thomas Moestl  <tmoestl at gmx.net>
-
-	* AUTHORS, THANKS, pdnsd.spec.in:
-	Added spec file patches by Bernd Leibing and added him to AUTHORS and
-	THANKS.
-
-2000-11-21  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/SuSE/Makefile.am: Fixed a hopefully last SuSE rpm build bug.
-
-	* src/rc/SuSE/Makefile.am:
-	Another one: allow rc.conf manipulation to fail for a clean
-	rpm build (SuSE only).
-
-	* file-list.base.in:
-	Last-minute fix: correct filelist for rpm build to reflect the new name
-	for the sample configuration.
-
-	* version: It's 1.1.0 now.
-
-2000-11-18  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/cache.c, src/dns_query.c, version:
-	Fixed a condition where the cache code did not give up a lock.
-	Made the udp code use connect().
-	Some small changes.
-
-2000-11-16  Thomas Moestl  <tmoestl at gmx.net>
-
-	* version: Calling it 1.1.0b3.
-
-2000-11-15  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/test/Makefile.am, src/pdnsd-ctl/Makefile.am, src/cache.c, src/Makefile.am, src/dns_answer.c, src/error.h, src/icmp.c, src/icmp.h, src/main.c, src/netdev.c, src/servers.c, src/thread.c, Makefile.am, configure.in, version:
-	Enabled new rr support by default (some resolvers don't seem to like not
-	supported answers - not our bug, but well).
-	Made some globals volatile to avoid being bitten by optimisations.
-
-2000-11-12  Thomas Moestl  <tmoestl at gmx.net>
-
-	* TODO, version: Called it the first beta.
-
-2000-11-11  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/cache.c, src/conf-lex.l.in, src/conf-parse.y, doc/pdnsd.conf.in:
-	renanmed rrneg to neg in the config file.
-	Misc small fixes.
-	pdnsd-ctl record xxx inval will now also invalidate local records.
-
-	* src/conf-lex.l.in, src/conf-parse.y, src/dns_answer.c, src/status.c, pdnsd.spec.in:
-	Added --sysconfdir=/etc as argument to configure in the spec file.
-	Implemented the new rrneg config file section.
-
-	* src/test/Makefile.am, src/pdnsd-ctl/Makefile.am, src/pdnsd-ctl/pdnsd-ctl.c, src/cache.c, src/cache.h, src/status.c, src/status.h, TODO:
-	Added the neg option to pdnsd-ctl.
-
-	* src/cache.c, src/Makefile.am, src/conf-lex.l.in, src/consts.h, src/dns.c, src/dns.h, src/dns_answer.c, src/dns_query.c, src/helpers.c, src/main.c, configure.in:
-	Assorted fixes. The new features should be stabilized by now, will
-	integrate the missing few features now.
-	Also actived the tcp server by default.
-
-2000-11-07  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c, src/dns_query.c, src/icmp.c, src/ipvers.h, THANKS, TODO:
-	Fixed a possible memory and socket leak reported by Erich Reitz.
-	Implemented udp source address discovery for FreeBSD.
-
-	* src/dns_query.c: Part 2 of yesterdays fix.
-
-2000-11-06  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_query.c, version:
-	Fixed a bug reported by Erich Reitz: pdnsd could leak fd's and memory if
-	queries timed out.
-
-	* src/cache.c, src/cache.h, src/Makefile.am, src/dns_answer.c, src/dns_query.c, TODO, configure.in:
-	Sorted out some bugs for the new neg cacheing.
-
-2000-11-05  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/cache.c, src/dns_query.c, TODO:
-	Negative cacheing support is now present, but largely untested.
-
-	* src/conff.c, TODO:
-	The output of pdnsd-ctl status is now complete with all currently
-	supported options.
-
-	* src/conf-parse.y, src/conff.c, src/conff.h, src/consts.h, src/conf-lex.l.in:
-	Added the config file options for the nefative cacheing support.
-
-2000-11-04  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/cache.c, src/cache.h, src/conf-parse.y, src/dns.c, src/dns_query.c, src/status.c, version:
-	The new cache infrastructure for negative cacheing is in place.
-	Using and testing it remains.
-
-	* src/cache.c, src/cache.h:
-	First changes to support negative cacheing. This should not break
-	anything, but the cache file format will be incompatible.
-
-	* src/main.c, src/dns_answer.c:
-	init_udp_socket() and init_tcp_socket() are now called after
-	daemonizing on FreeBSD, as bind wants to lock the fd which
-	can cause later calls to fail after an exit.
-
-2000-11-03  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_query.c, src/icmp.c, src/servers.c:
-	Minor bugfixes and repository cleanup.
-
-2000-11-02  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/icmp.c, TODO, version:
-	Called it 1.0.16p4. Fixed some compatability problems with the new code;
-	the ipv4 implementation seems to be fairly stable, the ipv6 one needs
-	some testing with dest unreach messages.
-
-	* src/icmp.c, src/main.c:
-	Rewrote large parts of the ping implementation to be more portable.
-
-2000-11-01  Thomas Moestl  <tmoestl at gmx.net>
-
-	* acconfig.h, configure.in, version:
-	Some config fixes, version to 1.0.16p3. SOCKET_LOCKING should be
-	off by default, as sendmsg can block.
-
-	* src/pdnsd-ctl/pdnsd-ctl.c, src/error.h, configure.in:
-	Removed -W* arguments from CFLAGS that were implied by -Wall.
-
-	* src/thread.c, configure.in:
-	Added some more safety tests to configure.in, and made it give
-	an error on some conditions. Also made configure do poll and usleep
-	detectione.
-
-	* src/cache.h, src/test/Makefile.am, src/dns_answer.c, src/error.c, src/error.h, src/helpers.c, src/main.c, src/servers.c, src/status.c, src/thread.c, src/thread.h, src/Makefile.am:
-	Code cleanup. Beautified some macros, and moved the thread
-	specific things from error.[ch] over to the new thread.[ch].
-	Also introduced usleep_r which tries to be thread safe for
-	different Unices.
-
-2000-10-31  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/pdnsd-ctl/pdnsd-ctl, src/pdnsd-ctl/pdnsd-ctl.c:
-	The pdnsd-ctl binary got into cvs. Fixed that.
-
-	* src/pdnsd-ctl/pdnsd-ctl, src/cache.c, src/cache.h, src/error.c, src/helpers.c, src/main.c, version:
-	Another set of FreeBSD compatability patches. This seems to catch
-	most of the problems, and pdnsd should be useable with libc_r now.
-
-2000-10-30  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/pdnsd-ctl/pdnsd-ctl, src/conff.c, src/dns_answer.c, src/dns_query.c, src/helpers.c, src/icmp.c, src/main.c, AUTHORS, Makefile.am, THANKS, configure.in, version:
-	FreeBSD fixes, mostly contributed by Roman Shterenzon.
-
-2000-10-25  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/pdnsd-ctl/Makefile.am, src/pdnsd-ctl/pdnsd-ctl:
-	pdnsd-ctl was not in cvs.
-
-	* src/dns_query.c, src/error.h, configure.in: Some fixups for 1.0.15.
-
-2000-10-23  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c, src/dns_query.c, configure.in:
-	Several fixes for pdnsd to work better when it receives error replys.
-
-	* src/dns.c, src/dns_answer.c:
-	Fixed another memory leak on an error path in dns_answer.c and did
-	a pointer signedness fixup in dns.c
-
-2000-10-21  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c, AUTHORS:
-	Applied a patch by Paul Wagland that fixes some spelling mistakes
-	and some memory leaks on error paths.
-
-	* src/dns_query.c, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns_answer.c, NEWS, version:
-	Bug fixes. Added the randomize_recs option and turned it on
-	by default.
-
-2000-10-20  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/helpers.c, src/dns.c, src/dns_query.c:
-	Fixes for the paranoid option to work with root servers
-	properly.
-
-	* src/dns_query.c, src/dns.h, src/dns_answer.c, AUTHORS, THANKS:
-	Applied a patch by Paul Wagland for bind9-compatability and added
-	him to AUTHORS and THANKS.
-
-2000-10-19  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c, NEWS, version:
-	Another POLL_* fix. It is now called 1.0.14.
-
-	* src/dns_answer.c, src/dns_query.c, src/icmp.c: BSD build fixes.
-
-	* src/dns_query.c:
-	Made p_recurdive_query return immediately if a query returns
-	NXDOMAIN.
-
-	* src/dns_query.c, Makefile.am:
-	Some bugifixes. It is now called 1.0.13. Releasing.
-
-	* src/cache.c, src/dns_query.c, AUTHORS, NEWS:
-	Updated AUTHORS and NEWS. Made destroy_cache() lock the cache so
-	that no thread can access the cache afterwards (could lead to
-	crashes).
-
-	* src/helpers.c, NEWS, THANKS:
-	Integrated a security fix contributed by Olaf Kirch: when
-	changing user IDs, pdnsd did not reinitialize the supplementary
-	group list, meaning that the process still had the privileges
-	of the supplementary groups the original user was member of.
-
-	* src/conf-lex.l.in, src/conf-parse.y, Makefile.am, TODO, version:
-	Introduced the par_queries option.
-
-	* src/dns_answer.c, src/dns_query.c, TODO:
-	Updated TODO, did some fixups for string handling.
-
-	* HACKING: Added HACKING with some comments about coding style.
-
-2000-10-18  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c, src/dns_query.c, src/error.h, src/main.c, TODO:
-	Revieved and fixed the new dns_query.c-poll/select loops.
-
-	* src/test/tping.c, src/dns_query.c, src/icmp.c:
-	Fixed the new poll/select ping support.
-
-2000-10-17  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_query.c, src/icmp.c, TODO:
-	Got rid of the O_NONBLOCK loop in the icmp.c ping implementation.
-	Beta tesing pending.
-
-	* src/rc/Debian/Makefile.am, src/conff.c, src/conff.h, src/dns_query.c, src/dns_query.h, THANKS, TODO, acconfig.h, configure.in:
-	Corrected the Debian rc script (bug reported by Michael Müller).
-	Got rid of the nonblocking socket things in dns_query.c, and
-	using poll/select now.
-	Testing (esp. --no-poll) remains.
-
-	* src/dns_answer.c:
-	Got rid of O_NONBLOCK read loops in dns_answer.c, using poll/select
-	now instead (after one issue about boundaries was cleared up).
-
-2000-10-16  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/SuSE/Makefile.am, src/rc/RedHat/Makefile.am, src/rc/Debian/Makefile.am:
-	The generated rc scripts do not need to be in the distribution.
-
-	* src/conff.c, src/main.c:
-	Fixed a server structure members in conff.c. Only delete the socket
-	if we are in status pipe mode now.
-
-	* src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns_answer.c, src/dns_query.c, acconfig.h, configure.in:
-	Added the --enable-tcp-subseq and --with-tcp-qtimeout configure
-	options, added the tcp_qtimeout conf file option, tested things.
-	1.0.12 is ready for release.
-
-2000-10-15  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c, TODO, acconfig.h:
-	Added TCP timeouts to the answer code. Still need an option in the
-	conf file and documentation for that (besides beta testing).
-
-	* src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/consts.h, src/dns_query.c, src/helpers.c, src/helpers.h, NEWS, TODO:
-	Introduced domain inclusion/exclusion lists in the server section
-	(new options include=, exclude=, policy=).
-
-2000-10-14  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns_answer.c, src/main.c, NEWS, TODO, version:
-	Upped version, updated NEWS and TODO and implemented a process
-	count limit.
-
-2000-10-13  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/Debian/pdnsd.in, src/main.c:
-	Added the --pdnsd-user option, and made the Debian rc script
-	use it rather than trying to parse the config file itself.
-
-2000-10-11  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/SuSE/pdnsd, src/rc/SuSE/pdnsd.in, src/rc/RedHat/pdnsd, src/rc/RedHat/pdnsd.in, src/rc/Debian/pdnsd, src/rc/Debian/pdnsd.in, AUTHORS, THANKS, configure.in:
-	Added the 'configure'-able rc scripts contributed by Carsten Block
-	and added him to THANKS and AUTHORS.
-
-	* src/main.c:
-	Added O_NOFOLLOW to the pidfile open() call (if it is defined)
-	to prevent users creating files as the pdnsd user (using links)
-	if the admin put the pidfile in a world-writeable directory
-	against all good advice.
-	This is not a bug fix! Admins were not, and are still not supposed
-	to put the pidfile in a directory that is writeable for untrusted
-	users!
-
-2000-10-10  Thomas Moestl  <tmoestl at gmx.net>
-
-	* THANKS: Added Milan P. Stanic to THANKS.
-
-	* src/main.c:
-	Fixed a missing O_WRONLY in the open() call for pidfile operation.
-
-2000-10-08  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/Makefile.am, src/dns.c, src/dns_answer.c, configure.in, version, acconfig.h:
-	Released 1.0.11.
-	Two security fixes in dns.c and dns_answer.c, and misc. smaller issues.
-
-	* src/Makefile.am, src/conf-parse.y, src/dns_answer.c, src/dns_query.c, src/icmp.c, src/servers.c, AUTHORS, THANKS, TODO, acconfig.h, configure.in, version:
-	1.0.10 was released some time ago ;-)
-	This had some IPv6 fixes.
-	Also fixed minor bug when using SOCKET_LOCKING.
-
-2000-08-28  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/dns_answer.c: Fixed a parameter mismatch in getsockopt()
-
-	* Makefile.am:
-	Applied Sourav K. Mandal's rpm build patch to the toplevel
-	Makefile.am
-
-2000-08-27  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/conf-lex.l.in, src/conf-parse.y, src/consts.h, src/servers.c, version:
-	Added diald support. It's now called 1.0.9.
-
-	* src/conf-parse.y, src/conff.c, src/netdev.c, pdnsd.spec.in:
-	Fixed some ugly typos in conf-parse.y and netdev.c.
-	Since I have no further bug reports and these bugs make some
-	things inconvenient, I will release 1.0.9 immediately.
-
-2000-08-26  Thomas Moestl  <tmoestl at gmx.net>
-
-	* pdnsd.spec.in: small spec fix.
-
-	* NEWS, configure.in: Last fixups for 1.0.8. Released it.
-
-	* Makefile.am: Set mode and owner for cache file.
-
-	* src/conf-parse.y, src/dns_answer.c, src/netdev.c, acconfig.h, configure.in, version:
-	Misc fixes. Hopefully fixed the UDP socket problems under Linux SMP.
-
-2000-08-20  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/cache.c, src/dns_answer.c, AUTHORS, THANKS, configure.in, pdnsd.spec.in, version:
-	Build fixes by Alexandre Nunes, spec fixes (does now set distro for
-	configure), first attempt at an "error in udp send"-fix, and fix
-	for a problem with having records for the root domain in the disk
-	cache file.
-
-2000-08-13  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/netdev.h, src/servers.c, src/status.c, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/consts.h, src/dns.c, src/dns.h, src/main.c, src/netdev.c, AUTHORS, THANKS:
-	Some minor fixes. Integrated the ppp device patch by Ron Yorston.
-
-2000-08-12  Thomas Moestl  <tmoestl at gmx.net>
-
-	* configure.in:
-	configure.in was missing in repository. Also removed debugging
-	flag for build.
-
-	* src/main.c: Made the pid file handling safe for directories.
-
-	* src/dns.c: Part II of the last fix.
-
-	* src/dns.c:
-	Fixed a nasty bug in decompress_name which would produce errors very
-	rarely. That was a off-by-one bug, but on the safe side (no overflow,
-	stopping one by too early).
-
-	* src/main.c:
-	Fixed several possible problems with strncat(). None of these was
-	critical or involved remote data.
-
-2000-08-08  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/main.c: Changed FreeBSD signal latency to 250 ms.
-
-	* src/main.c, acconfig.h:
-	A set of last-minute FreeBSD fixes. pdnsd does now NEED linuxthreads on
-	BSD.
-
-2000-08-07  Thomas Moestl  <tmoestl at gmx.net>
-
-	* version: It's now called 1.0.7.
-
-	* src/main.c, doc/pdnsd.conf.in, Makefile.am: Misc build&BSD fixes.
-
-	* src/conff.c, src/conf-parse.y, version:
-	Version set to the hopefully last beta. Fixed the proxy_only option.
-
-2000-08-05  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/SuSE/Makefile.am, src/rc/RedHat/Makefile.am, src/rc/Debian/Makefile.am, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns_query.c, src/status.c, doc/pdnsd.conf.in, Makefile.am, TODO:
-	Added the proxy_only options. Some build fixups.
-
-2000-07-30  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/SuSE/Makefile.am, src/rc/RedHat/Makefile.am, src/rc/Debian/Makefile.am, src/rc/Makefile.am, src/main.c, src/status.h, AUTHORS, INSTALL, Makefile.am, TODO, version:
-	Many small fixups for 1.0.7.
-
-2000-07-29  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/SuSE/Makefile.am, src/rc/RedHat/Makefile.am, src/rc/Debian/Makefile.am, src/rc/README, src/status.c, src/servers.c, Makefile.am, TODO, acconfig.h:
-	Assorted fixes.
-
-	* src/cache.c, src/hash.c, src/dns.h, src/dns_answer.c, src/dns_query.c, src/icmp.c, src/ipvers.h, src/servers.c, src/servers.h, src/status.c, src/status.h, src/Makefile.am, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns.c, AUTHORS, Makefile.am, THANKS:
-	Big heap of updates and fixes. Incorporated build changes from Sourav
-	K. Mandal and pcmcia SCHEME support by Stephan Boettcher.
-
-2000-07-22  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/rc/Debian/pdnsd:
-	Applied a patch by Markus Mohr to his debian rc script, which I had
-	broken in some way.
-
-2000-07-21  Thomas Moestl  <tmoestl at gmx.net>
-
-	* src/cache.c, src/main.c, src/status.c, src/status.h:
-	Worked on the new status socket (pdnsd-ctl) option.
-
-	* src/Makefile.am, version: Upped version, fixed Makefile.am
-
-	* src/cache.c, src/hash.c, src/hash.h, src/cache.h, src/Makefile.am, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/dns.c, src/dns.h, src/dns_answer.c, src/dns_query.c, src/dns_query.h, src/helpers.c, src/helpers.h, src/ipvers.h, src/main.c, src/status.c, src/status.h, AUTHORS, Makefile.am, THANKS, acconfig.h:
-	Updated AUTHORS and THANKS. Merged in patches by Sourav K. Mandal
-	and Lyonel Vincent.
-
-2000-07-20  Thomas Moestl  <tmoestl at gmx.net>
-
-	* doc/pdnsd.conf: Added pdnsd.conf. Well...
-
-	* src/dns_query.c, src/dns_query.h, doc/pdnsd.conf:
-	Added some ommited files.
-
-	* src/test/Makefile.am, src/test/if_up.c, src/test/is_local_addr.c, src/test/random.c, src/test/tping.c, src/rc/SuSE/Makefile.am, src/rc/SuSE/pdnsd, src/rc/RedHat/Makefile.am, src/rc/RedHat/pdnsd, src/rc/Debian/pdnsd, src/rc/Makefile.am, src/rc/README, src/Makefile.am, src/conf-lex.l.in, src/conf-parse.y, src/conff.c, src/conff.h, src/consts.h, src/dns.c, src/dns.h, src/dns_answer.c, src/dns_answer.h, src/error.c, src/error.h, src/helpers.c, src/helpers.h, src/icmp.c, src/icmp.h, src/ipvers.h, src/main.c, src/netdev.c, src/netdev.h, src/servers.c, src/servers.h, src/status.c, src/status.h, doc/pdnsd.conf.in, Makefile.am, acconfig.h, file-list.base.in, pdnsd.spec.in:
-	Checked in the pdnsd files at their new locations.
-
-	* doc/pdnsd.conf, Makefile, a-conf.sh, cache.c, cache.h, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, consts.h, dns.c, dns.h, dns_answer.c, dns_answer.h, dns_query.c, dns_query.h, error.c, error.h, exec-flex.sh, hash.c, hash.h, helpers.c, helpers.h, icmp.c, icmp.h, ipvers.h, main.c, netdev.c, netdev.h, pdnsd-redhat.spec.templ, pdnsd-suse.spec.templ, servers.c, servers.h, status.c, status.h, version:
-	Removed the moved files. Will add the new ones soon.
-
-2000-07-16  Thomas Moestl  <tmoestl at gmx.net>
-
-	* TODO: New tasks in TODO.
-
-2000-07-15  Thomas Moestl  <tmoestl at gmx.net>
-
-	* TODO:
-	Updated TODO: Autoconf support was contributed by Sourav K. Mandal
-
-	* conff.h, dns_query.c, ipvers.h, cache.c:
-	Fixed some minor bugs and a showstopper in cache.c that caused
-	crashes in some situations.
-
-2000-07-12  Thomas Moestl  <tmoestl at gmx.net>
-
-	* dns_query.c, error.c, error.h, main.c:
-	Made pdnsd ignore SIGPIPE, which seemed to be responsible for some
-	crashes.
-	Accept (grudgingly) SOA rr's where NS ones would be The Right Thing.
-
-2000-07-10  Thomas Moestl  <tmoestl at gmx.net>
-
-	* AUTHORS, THANKS, conff.c:
-	Updated AUTHORS, THANKS, and the fprintfs for the status pipe in
-	conff.c
-
-	* TODO, config.h.templ, dns.h, dns_answer.c, dns_query.c, dns_query.h, main.c, version:
-	Added UDP queries and gave the user the choice between TCP and UDP
-	queries (UDP is the default now). Made the TCP server optional.
-	Fixed a authoritative record handling bug. Added pidfile support.
-
-2000-07-07  Thomas Moestl  <tmoestl at gmx.net>
-
-	* doc/pdnsd.conf:
-	Inserted run_as="nobody"; again, it is The Right Thing and people
-	should use it.
-
-	* Makefile:
-	The pdnsd cache directory is now created as nobody, since the
-	default run_as in the example pdnsd.conf is also nobody.
-
-	* doc/pdnsd.conf:
-	Commented the run_as option out (people may run into permission
-	problems).
-
-	* version: Upped version to 1.0.5
-
-	* AUTHORS, THANKS, conf.l.templ, conf.y, conff.c, conff.h, dns_answer.c, icmp.c, icmp.h, main.c, version:
-	Folded in the server_ip option code as contributed by Wolfgang Ocker
-	and extended it to IPv6. Fixed a bug in IPv4 ping in IPv6 mode.
-
-2000-07-06  Thomas Moestl  <tmoestl at gmx.net>
-
-	* cache.c, dns_query.c:
-	Killed a bug which could cause crashes with more than 2 servers.
-
-	* cache.c: Fixed a bug reported by Bert Frederiks that would break the
-	serve_aliases option when only one character was between official
-	name and alias in the /etc/hosts-style file.
-
-2000-07-04  Thomas Moestl  <tmoestl at gmx.net>
-
-	* pdnsd-suse.spec.templ: The SuSE spec now uses the new makefile rule.
-
-	* Makefile, THANKS, dns_query.c, helpers.c, version:
-	Added people to THANKS, fixed a bug that caused uppercase hosts/
-	rr-section entries to be ignored in the cache, fixed the SuSE
-	makefile for pdnsd to run_as nobody, and other small fixups.
-
-2000-07-03  Thomas Moestl  <tmoestl at gmx.net>
-
-	* dns_answer.c:
-	First change after release of 1.0.4: The questions received
-	are now properly written into the debug file when starting
-	with -g -d.
-
-	* config.h.templ, dns_query.c:
-	Fixed a possible way to get around paranoid restrictions.
-
-	* version: Set version to 1.0.4
-
-	* doc/pdnsd.conf: Added an entry for the paranoid option.
-
-	* cache.c, config.h.templ, dns_answer.c, dns_query.c, ipvers.h:
-	Revisions and fixups. The complete code revision is now complete.
-
-2000-06-29  Thomas Moestl  <tmoestl at gmx.net>
-
-	* dns_query.c: Overhaul.
-
-	* dns_answer.c, dns_query.c, config.h.templ:
-	Code overhault continued. dns_answer.c is finished.
-
-2000-06-27  Thomas Moestl  <tmoestl at gmx.net>
-
-	* conff.c, dns_answer.c, icmp.c, netdev.c, servers.c, status.c:
-	Continued code overhaul. Fixed several bugs, and simplified some
-	code.
-
-	* conf.l.templ, conf.y, conff.c, ipvers.h, version: Fixups.
-
-2000-06-26  Thomas Moestl  <tmoestl at gmx.net>
-
-	* hash.c: Revised; fixed a minor bug.
-
-	* cache.c: Overhauled.
-
-	* dns_query.c, error.c, helpers.c, helpers.h, ipvers.h, main.c, version, dns.c:
-	Manual code overhaul. Numerous small patches, greatly simplified
-	decompress_name().
-
-2000-06-25  Thomas Moestl  <tmoestl at gmx.net>
-
-	* config.h.templ:
-	Made the C random() RNG the default (using /dev/urandom, we suck up
-	too much randomness on high load).
-
-	* error.c, error.h, icmp.c, icmp.h, main.c:
-	Small cleanups. Makes the testsuite compilation easier.
-
-	* Makefile, config.h.templ: Preparing for release of 1.0.4.
-
-2000-06-24  Thomas Moestl  <tmoestl at gmx.net>
-
-	* Makefile, THANKS, a-conf.sh, dns_answer.c, dns_query.c, error.c, version:
-	Fixed bugs with the paranoid option, connect() timeout handling, and
-	a incompatability in response handling that caused the glibc
-	resolver to misunderstand error messages pdnsd generated on unknown
-	query types. This bug, that was reported by James MacLean, could
-	for example cause ssh to hang some time.
-
-	* Makefile, NEWS, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, dns.c, dns_query.c, dns_query.h, helpers.c, helpers.h, icmp.c, icmp.h, main.c:
-	Added the paranoid option, and modified the ping uptest so that it
-	works with strict_setuid. Also made strict_setuid=on the default.
-	1.0.4 should be out soon.
-
-2000-06-23  Thomas Moestl  <tmoestl at gmx.net>
-
-	* doc/pdnsd.conf: Added a run_as= line, which is sensible normally.
-
-	* Makefile, conf.l.templ, conf.y, conff.c, conff.h, dns_answer.c, dns_answer.h, helpers.c, helpers.h, main.c, servers.c, status.c, version:
-	Some fixups, added the run_as and strict_setuid security options.
-
-	* THANKS: Updated.
-
-	* AUTHORS, ipvers.h, main.c, netdev.c, version:
-	Fixed some definitions for glibc2.0-users. Repaced the return at the
-	end of main() with _exit(). Should not build and run OK on glibc 2.0
-	boxen.
-	Fixed a typo in netdev.c
-
-	* ipvers.h:
-	Fixed a typo in ipvers.h to fix compile problems on systems without
-	an IPv6-supporting C library, and possible IPv6 problems using the
-	status pipe.
-
-	* error.c, version:
-	Fixed a bug that could cause signals to be delivered to the wrong
-	process.
-
-2000-06-22  Thomas Moestl  <tmoestl at gmx.net>
-
-	* version: Set version to 1.0.1.
-
-	* cache.c, dns_answer.c, error.c, error.h, main.c, pdnsd-suse.spec.templ:
-	Fixed misc issues reported by Jonathan Hudson and Joachim Dorner, one
-	of them a real showstopper in cache.c.
-
-	* Makefile, NEWS, README, cache.h, config.h.templ, version:
-	Updated things for 1.0.0 and released it finally.
-
-	* AUTHORS, THANKS: Updated THANKS and AUTHORS
-
-	* NEWS, a-conf.sh, cache.c, conf.l.templ, conf.y, conff.c, conff.h, dns_answer.c, dns_query.c, error.c, error.h, main.c, servers.c, status.c:
-	Fixed a-conf.sh and cleaned up signal handling as far as it can be
-	done ;-). Added the max_ttl option.
-
-2000-06-21  Thomas Moestl  <tmoestl at gmx.net>
-
-	* dns_answer.c, error.c, error.h, main.c, servers.c, status.c:
-	More signal fixes. This is a real pain with LinuxThreads.
-
-	* NEWS, cache.c, dns_answer.c, error.c, error.h, helpers.c, helpers.h, main.c, servers.c, status.c, version:
-	Fixups for signal handling. This is more than only a little tricky
-	using the linuxthreads library. This hopefully fixes the deadlocks
-	we had on signals.
-
-2000-06-13  Thomas Moestl  <tmoestl at gmx.net>
-
-	* AUTHORS, THANKS: Updated credits.
-
-	* a-conf.sh:
-	A primitive configure-like script intended as drop-in replacement
-	until autoconf support finally comes.
-
-	* .cvsignore, Makefile, cache.c, dns_query.c, ipvers.h, servers.c, version:
-	Added a primitive configuration script as drop-in. Killed some bugs
-	and changed the recently added linkdown_kluge option following
-	suggestions from Daniel Smolik.
-
-2000-06-12  Thomas Moestl  <tmoestl at gmx.net>
-
-	* dns_query.h, exec-flex.sh, Makefile, cache.c, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, dns_query.c:
-	Numerous cleanups and fixes. Implemented the linkdown_kluge option
-	as proposed by Daniel Smolik. Hope to get ready for 1.0.0 know.
-
-2000-06-10  Thomas Moestl  <tmoestl at gmx.net>
-
-	* Makefile, NEWS, TODO, dns_answer.c:
-	Modified some stuff in dns_answer.c (if no nameserver for a knot in
-	the dns namespace is found now, its predecessors are tried now in
-	order to return accurate authority results). This will be paid with a
-	little more beta time, so the Makefile has developer switches again.
-	Corrected NEWS and TODO.
-
-	* Makefile, config.h.templ, dns_answer.c, dns_query.c, dns_query.h, hash.h, helpers.c, version:
-	Removed some dead code, fixed some really minor bugs. Version is up
-	to 1.0.0p7, which is hopefully the last beta.
-
-	* Makefile, config.h.templ:
-	Fixed things up for the 1.0.0 distribution version
-
-2000-06-06  Thomas Moestl  <tmoestl at gmx.net>
-
-	* Makefile, config.h.templ, icmp.c, netdev.c:
-	Some minor comment fixes.
-
-	* Makefile, TODO, main.c, version:
-	BSD fix in Makefile and help update. It is now called 1.0.0p6. TODO
-	was updated to reflect the project status.
-
-	* dns_answer.c:
-	BSD & misc fixes. pdnsd runs now nicely on my FreeBSD 4.0 box.
-
-	* dns_answer.c, ipvers.h:
-	Fixed IPv6 UDP dest address recovery. Also fixed a real stupid bug in
-	ipvers.h.
-
-	* cache.h, dns_query.c, error.h:
-	Added DEBUG_MSG6 macros. Cleaned up requery handling.
-
-	* dns.c, dns_answer.c, dns_query.c, dns_query.h:
-	Fixed another heap of bugs, introduced some sanity checks, no requery
-	on answers that have ra not set now.
-
-2000-06-05  Thomas Moestl  <tmoestl at gmx.net>
-
-	* cache.c:
-	Fixed write_disk_cache.
-
-	* cache.c, cache.h:
-	Fixes for rr handling.
-
-2000-06-04  Thomas Moestl  <tmoestl at gmx.net>
-
-	* cache.c, dns_answer.c, dns_query.c:
-	Fixes again: some missing checks for rrset existence added.
-
-	* cache.c, dns_answer.c, helpers.c, icmp.c:
-	Fixes for the new/modified code and its side effects on old code ;-)
-
-	* ChangeLog.old, NEWS, cache.c, conf.l.templ, conf.y, conff.c, config.h.templ, dns.c, dns_answer.c, dns_query.c, error.c, hash.c, helpers.c, icmp.c, main.c, netdev.c, servers.c, status.c:
-	Folded the ChangeLog and NEWS of the 0.9.x tree back in and added NEWS for the
-	upcoming 1.0.0 release. Some compile fixes. Reorganized config.h.templ. Made
-	the inclusion of the rcsid strings into the executable optional.
-
-	* cache.c, dns_answer.c:
-	Pile of fixes on recently added/modified code.
-
-2000-06-03  Thomas Moestl  <tmoestl at gmx.net>
-
-	* .cvsignore, Makefile, lex.inc.h:
-	lex.inc.h should not be in CVS (it is automatically generated by
-	exec-flex.sh). It should also be deleted by 'make mclean'.
-
-	* TODO, cache.c, dns_answer.c, dns_query.c, lex.inc.h:
-	rfc2181 conformance should be reached by now. Updated TODO. Bugfixing
-	remains.
-
-	* doc/html/.cvsignore, doc/html/dl.html, doc/html/doc.html, doc/html/faq.html, doc/html/index.html:
-	Removed the html documentation from CVS. It is maintained separately.
-
-	* doc/pdnsd.conf:
-	Added CVS/RCS $Id$ tag.
-
-	* cache.h, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, consts.h, dns.c, dns.h, dns_answer.c, dns_answer.h, dns_query.c, dns_query.h, error.c, error.h, exec-flex.sh, hash.c, hash.h, helpers.c, helpers.h, icmp.c, icmp.h, ipvers.h, main.c, netdev.c, netdev.h, pdnsd-redhat.spec.templ, pdnsd-suse.spec.templ, servers.c, servers.h, status.c, status.h, version, AUTHORS, INSTALL, Makefile, NEWS, README, THANKS, TODO, cache.c:
-	Added CVS/RCS $Id$ tags to most files, did some cleanups, introduced
-	the new rrset granularity caching. The new code is still much of beta,
-	use with care.
-
-2000-06-01  Thomas Moestl  <tmoestl at gmx.net>
-
-	* Makefile, cache.c, hash.c, helpers.c, icmp.c, netdev.c:
-	Yet another set of BSD fixes (test programs do now work for me
-	under FreeBSD). Some other minor fixes.
-
-	* Makefile, error.c, error.h, helpers.c, helpers.h:
-	Transplanted kill_pdnsd from error.c to helpers.c in order to get the
-	tests compiled without the thread library.
-
-2000-05-31  Thomas Moestl  <tmoestl at gmx.net>
-
-	* pdnsd:
-	Ooops, executable got in.
-
-	* Makefile, pdnsd:
-	Added test suite programs.
-
-	* icmp.c, netdev.c:
-	All basic BSD patches have been folded in. pdnsd will now compile on
-	FreeBSD with (hopefully) all features.
-
-	* dns_answer.c, Makefile:
-	Disabled udp targed address discovery for BSD builds (this sadly ist
-	OS specific at least for IPv4. Must be rewritten under BSD as it is
-	an RFC compatability issue under some circumstances)
-
-	* cache.c, cache.h, conf.y, conff.c, conff.h, config.h.templ, dns_answer.c, helpers.c, icmp.c, ipvers.h, netdev.c, Makefile:
-	BSD include & misc build fixes. More to follow...
-
-	* Makefile, cache.h:
-	BSD Fixes: Makefile should work with BSD make, sed command line,
-	sorted out naming clash in cache.h
-
-	* .cvsignore:
-	Added ChangeLog to .cvsignore
-
-	* THANKS, conff.c:
-	Fixed a bug reported by Jonathan Hudson and added him to THANKS
-
-	* ChangeLog.old:
-	Added the pre-CVS ChangeLog.
-
-	* .cvsignore, AUTHORS, COPYING, INSTALL, Makefile, NEWS, README, THANKS, TODO, cache.c, cache.h, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, consts.h, dns.c, dns.h, dns_answer.c, dns_answer.h, dns_query.c, dns_query.h, doc/.cvsignore, doc/html/dl.html, doc/html/doc.html, doc/html/faq.html, doc/html/index.html, doc/pdnsd.conf, doc/txt/.cvsignore, error.c, error.h, exec-flex.sh, hash.c, hash.h, helpers.c, helpers.h, icmp.c, icmp.h, ipvers.h, lex.inc.h, main.c, netdev.c, netdev.h, pdnsd-redhat.spec.templ, pdnsd-suse.spec.templ, servers.c, servers.h, status.c, status.h, version:
-	Initial import of pdnsd-1.0.0p3 source tree into CVS.
-
-
-	* .cvsignore, AUTHORS, COPYING, INSTALL, Makefile, NEWS, README, THANKS, TODO, cache.c, cache.h, conf.l.templ, conf.y, conff.c, conff.h, config.h.templ, consts.h, dns.c, dns.h, dns_answer.c, dns_answer.h, dns_query.c, dns_query.h, doc/.cvsignore, doc/html/dl.html, doc/html/doc.html, doc/html/faq.html, doc/html/index.html, doc/pdnsd.conf, doc/txt/.cvsignore, error.c, error.h, exec-flex.sh, hash.c, hash.h, helpers.c, helpers.h, icmp.c, icmp.h, ipvers.h, lex.inc.h, main.c, netdev.c, netdev.h, pdnsd-redhat.spec.templ, pdnsd-suse.spec.templ, servers.c, servers.h, status.c, status.h, version:
-	New file.
-
diff --git a/jni/pdnsd/ChangeLog.old b/jni/pdnsd/ChangeLog.old
deleted file mode 100644
index 0b3553e..0000000
--- a/jni/pdnsd/ChangeLog.old
+++ /dev/null
@@ -1,161 +0,0 @@
-2000-02-15
-	Version 0.2. First working alpha with the extended feature set.
-
-2000-02-16
-	Version 0.3 with many bugfixes, better standard conformity and
-	some new features.
-
-2000-02-17
-	Did a lint on the code, implemented soft timeouts, again bugfixes,
-	drastically reduced cache memory requirements, implemented local 
-	records.
-	Version 0.4 released.
-
-2000-02-19
-	Recursive query finally implemented. Version 0.5 out.
-
-2000-02-20
-	Various bugfixes. The server now always tries to get an AA answer
-	if possible; this implies recursion. This is to deal better with
-	caching servers that may return incomplete results on * queries.
-	This may be a little sub-optimal since it may not take the full
-	effect of caching, but it is the only real possibility of getting
-	complete records.
-	Redid the deps in the makefile for now.
-	Version is now 0.6.
-
-2000-02-21
-	Another set of bugfixes. Version is 0.6.1.
-
-2000-02-22
-	Another set of bugfixes. It should stabilize by now. Answer compression
-	is there finally. Version is therefore up again, 0.7 by now.
-
-2000-02-23
-	Minor bugfixes, isdn interface uptest added. The new record types as of
-	rfc1700 are implemented, but as a compile-time option, since normally
-	there is no need to waste space for them.
-	Version is 0.7.1.
-
-2000-02-24
-	Version 0.7.2 with all rrs up to KX (36). #define DNS_NEW_RRS in 
-	config.h and (re)compile if you want to use them. Delete the cache
-	file before using a version with this option changed!  
-	NSAP-PTR does NOT WORK (any incoming answer containing it may cause 
-	a format error) because it is ill-designed (see	TODO). Never mind, it 
-	is officially deprecated anyway.
-	The secure DNS extension record types defined in RFC 2065 (KEY, SIG,
-	NXT) are cached only and therefore useless.
-
-2000-02-26
-	Version 0.8 with parallel query (and probably new bugs) introduced.
-
-2000-02-27
-	Version 0.8.1 with minor bugfixes on the new features.
-
-2000-02-27
-	Version 0.8.5 with authority support and the usual bugifxes. Some issues
-	with standard conformity were also fixed (wow, two versions a day).
-
-2000-02-28
-	Implemented caching of non-authoritative records. This allows better 
-	usage of other caching name servers. This may return non-authoritative
-	records to any non-wildcard query. If a wildcard query arrives, we 
-	always look for authoritative records, so we do if the non-authoritative
-	answer does not contain at least one answering record to the query.
-	This fixes the sub-optimal behaviour since 0.6.
-	Version is therefore up to 0.8.7 (0.8.6 was also released today 
-	containing bugfixes)
-
-2000-02-29
-	Better thread support, avoiding deadlocks in signal handling. The cost 
-	is unfortunately one more thread.
-	New option server_port in config file.
-	Version is 0.8.8.
-
-2000-03-01
-	Nailed a renitent memory leak bug to the wall (shame, what a trivial 
-	mistake). Also improved handling of error conditions slightly.
-	Version is 0.8.9.
-
-2000-03-01
-	Cache code cleanup. The development of the non-parallel query code
-	is discontinued, although it still works. If you want serial query,
-	just set PAR_QUERIES to 1.
-	Additional information finally implemented.
-	We are up to 0.9.
-
-2000-03-02
-	Fixed a DoS possibility.
-	More rfc compatability fixups and a smarter resolver logic.
-	Version 0.9.1
-
-2000-03-02
-	Added the source section to the config file handling. This allows to 
-	source your /etc/hosts file. Version 0.9.2.
-
-2000-03-02
-	Avoiding double additional records now. Version 0.9.3.
-
-2000-03-09
-	Fixed some REALLY STUPID bugs. Uuummph, thought it was finished. 
-	However, the number of bugs remaining is always n+1...
-	Anyway, we are up to 0.9.4. Hope that there are no mean bugs left.
-
-2000-03-14
-	Added another uptest, exec. See README for details. Also grained the 
-	cache size finer (it's now specified in kB). Version 0.9.5
-
-2000-04-07
-	Fixed some really stupid bugs, what else? Version is 0.9.6
-	To be more exact: fixed misc bugs, cleaned up hash.c and cache.c
-
-2000-04-20
-	Again fixed some bugs, version is now 0.9.7.
-
-2000-04-29
-	Fixed a build problem caused by some missing #defines in glibc2.0 and a
-	minor bug.
-	Version is up to 0.9.8
-
-2000-04-30
-	Fixed some unclean C code and did a general C lint. Thanks to Byrial 
-	Jensen for pointing out some issues. Now using stricter compiler flags.
-	Also replaced the daemon() call in main.c for improved portability.
-	Pre-Released 0.9.9p1
-
-2000-05-03
-	Released 0.9.9p2 with the changes of 0.9.9p1, Documentation updates, 
-	bugfixes, and the Red Hat rc scripts contributed by Torben Janssen.
-	Also, the meaning of the command line option -v has changed.
-	There is a new config file option "lean_query" that is on by
-	default. It is an optimization, so please look in the docs when
-	updating whether you want it switched on or not.
-	Removed the long-dead serial query code from the distribution tree.
-	Some resolvers seem to be broken somehow in a respect that it cares 
-	about order in which the records appear. In particular, it wants 
-	cname to appear before other records. Ok, so it be...
-
-
-2000-05-04
-	Save all names in lower case in the rrs.
-	Tidying up the source tree.
-	The long-awaited cache structure changes have been started. Please
-	delete you cache files before using this new release.
-
-2000-05-05
-	Fixed several bugs in the old and in the new source tree.
-	Use time_t instead of long for internal time storage for compatibility.
-
-
-2000-05-06
-	Version 0.9.10.
-	This fixes a bug in uptest=if. Red Hat and configuration fixes 
-	suggested by Soeren J. Peters were included.
-
-2000-05-08
-	Version 0.9.11
-	This fixes a locally exploitable security problem (pdnsd.cache was 
-	world-writeable). This is actually a one-line fix; for a description of
-	possible dangers, please refer to the html documentation.
-	Thanks to Alan Swanson for reporting.
diff --git a/jni/pdnsd/INSTALL b/jni/pdnsd/INSTALL
deleted file mode 100644
index 0399189..0000000
--- a/jni/pdnsd/INSTALL
+++ /dev/null
@@ -1,190 +0,0 @@
-The installation instructions are in doc/html/doc.html and doc/txt/manual.txt.
-The system requirements are listed in doc/html/index.html and doc/txt/intro.txt.
-I recommend using the html version.
-Following are generic installation instructions for autoconf programs.
-I strongly recommend to read the Installation section in the docs!
-
-
-Basic Installation
-==================
-
-   These are generic installation instructions.
-
-   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, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
-
-   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 at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-
-   The file `configure.in' is used to create `configure' by a program
-called `autoconf'.  You only need `configure.in' 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.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
-
-     Running `configure' takes awhile.  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.
-
-Compilers and Options
-=====================
-
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  You can give `configure'
-initial values for variables by setting them in the environment.  Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
-     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
-     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-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 must use a version of `make' that
-supports the `VPATH' variable, such as 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 `..'.
-
-   If you have to use a `make' that does not supports the `VPATH'
-variable, you have 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' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc.  You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
-   In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' 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' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on.  Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
-     CPU-COMPANY-SYSTEM
-
-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 host type.
-
-   If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
-
-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.
-
-Operation Controls
-==================
-
-   `configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
-     Use and save the results of the tests in FILE instead of
-     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
-     debugging `configure'.
-
-`--help'
-     Print a summary of the options to `configure', and exit.
-
-`--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.
-
-`--version'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
-
diff --git a/jni/pdnsd/Makefile.am b/jni/pdnsd/Makefile.am
deleted file mode 100644
index 146c32a..0000000
--- a/jni/pdnsd/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-
-SUBDIRS = src doc contrib
-
-EXTRA_DIST = version ChangeLog.old COPYING.BSD README.par README.par.old PKGBUILD
-
-# The sample configuration is handled in doc/Makefile.am
-install-data-hook:
-	$(mkinstalldirs) "$(DESTDIR)$(cachedir)"
-	test -f "$(DESTDIR)$(cachedir)/pdnsd.cache" || \
-	  touch "$(DESTDIR)$(cachedir)/pdnsd.cache"
-	if test `whoami` = "root"; then \
-	  chown $(def_id) "$(DESTDIR)$(cachedir)/pdnsd.cache"; \
-	  chown $(def_id) "$(DESTDIR)$(cachedir)"; \
-	fi
-	chmod 0640 "$(DESTDIR)$(cachedir)/pdnsd.cache"
-	chmod 0750 "$(DESTDIR)$(cachedir)"
-
-dist-hook: $(PACKAGE).spec.in
-	sed -e '/^%{!?distro: %define distro /c\
-	%if 0%{!?distro:1}\
-	%if "%{_vendor}" == "redhat"\
-	%define distro RedHat\
-	%else\
-	%if "%{_vendor}" == "suse"\
-	%define distro SuSE\
-	%else\
-	%if "%{_vendor}" == "SuSE"\
-	%define distro SuSE\
-	%endif\
-	%endif\
-	%endif\
-	%endif' \
-	-e 's:[@]PACKAGE[@]:$(PACKAGE):g' \
-	-e 's:[@]VERSION[@]:$(VERSION):g' \
-	-e 's:[@]fullversion[@]:$(fullversion):g' \
-	-e 's:[@]packagerelease[@]:$(packagerelease):g' \
-	-e 's:[@]cachedir[@]:/var/cache/$(PACKAGE):g' \
-	-e 's:[@]def_id[@]:$(PACKAGE):g' \
-	$(PACKAGE).spec.in > $(distdir)/$(PACKAGE).spec
-
diff --git a/jni/pdnsd/Makefile.in b/jni/pdnsd/Makefile.in
deleted file mode 100644
index a865d54..0000000
--- a/jni/pdnsd/Makefile.in
+++ /dev/null
@@ -1,734 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-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 = :
-subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/PKGBUILD.in \
-	$(srcdir)/config.h.in $(srcdir)/file-list.base.in \
-	$(srcdir)/pdnsd.spec.in $(top_srcdir)/configure AUTHORS \
-	COPYING ChangeLog INSTALL NEWS THANKS TODO acconfig.h compile \
-	depcomp install-sh missing
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-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 = pdnsd.spec file-list.base PKGBUILD
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir dist dist-all distcheck
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  { test ! -d "$(distdir)" \
-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr "$(distdir)"; }; }
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = src doc contrib
-EXTRA_DIST = version ChangeLog.old COPYING.BSD README.par README.par.old PKGBUILD
-all: config.h
-	$(MAKE) $(AM_MAKEFLAGS) all-recursive
-
-.SUFFIXES:
-am--refresh:
-	@:
-$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
-	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	$(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-config.h: stamp-h1
-	@if test ! -f $@; then \
-	  rm -f stamp-h1; \
-	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-	else :; fi
-
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
-	@rm -f stamp-h1
-	cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in:  $(am__configure_deps) $(top_srcdir)/acconfig.h
-	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
-	rm -f stamp-h1
-	touch $@
-
-distclean-hdr:
-	-rm -f config.h stamp-h1
-pdnsd.spec: $(top_builddir)/config.status $(srcdir)/pdnsd.spec.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-file-list.base: $(top_builddir)/config.status $(srcdir)/file-list.base.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-PKGBUILD: $(top_builddir)/config.status $(srcdir)/PKGBUILD.in
-	cd $(top_builddir) && $(SHELL) ./config.status $@
-
-# 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.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; 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"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	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; \
-	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	$(am__remove_distdir)
-	test -d "$(distdir)" || mkdir "$(distdir)"
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-	$(MAKE) $(AM_MAKEFLAGS) \
-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
-	  dist-hook
-	-test -n "$(am__skip_mode_fix)" \
-	|| find "$(distdir)" -type d ! -perm -755 \
-		-exec chmod u+rwx,go+rx {} \; -o \
-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-	|| chmod -R a+r "$(distdir)"
-dist-gzip: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
-
-dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
-
-dist-lzma: distdir
-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-	$(am__remove_distdir)
-
-dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
-	$(am__remove_distdir)
-
-dist-tarZ: distdir
-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
-
-dist-shar: distdir
-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__remove_distdir)
-
-dist-zip: distdir
-	-rm -f $(distdir).zip
-	zip -rq $(distdir).zip $(distdir)
-	$(am__remove_distdir)
-
-dist dist-all: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-	case '$(DIST_ARCHIVES)' in \
-	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
-	*.tar.bz2*) \
-	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.lzma*) \
-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
-	*.tar.xz*) \
-	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
-	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
-	*.zip*) \
-	  unzip $(distdir).zip ;;\
-	esac
-	chmod -R a-w $(distdir); chmod a+w $(distdir)
-	mkdir $(distdir)/_build
-	mkdir $(distdir)/_inst
-	chmod a-w $(distdir)
-	test -d $(distdir)/_build || exit 0; \
-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-	  && am__cwd=`pwd` \
-	  && $(am__cd) $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
-	    $(DISTCHECK_CONFIGURE_FLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
-	  && $(MAKE) $(AM_MAKEFLAGS) check \
-	  && $(MAKE) $(AM_MAKEFLAGS) install \
-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-	        distuninstallcheck \
-	  && chmod -R a-w "$$dc_install_base" \
-	  && ({ \
-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
-	  && rm -rf "$$dc_destdir" \
-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
-	  && rm -rf $(DIST_ARCHIVES) \
-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
-	  && cd "$$am__cwd" \
-	  || exit 1
-	$(am__remove_distdir)
-	@(echo "$(distdir) archives ready for distribution: "; \
-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
-	@$(am__cd) '$(distuninstallcheck_dir)' \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
-	   || { echo "ERROR: files left after uninstall:" ; \
-	        if test -n "$(DESTDIR)"; then \
-	          echo "  (check DESTDIR support)"; \
-	        fi ; \
-	        $(distuninstallcheck_listfiles) ; \
-	        exit 1; } >&2
-distcleancheck: distclean
-	@if test '$(srcdir)' = . ; then \
-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-	  exit 1 ; \
-	fi
-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-	  || { echo "ERROR: files left in build directory after distclean:" ; \
-	       $(distcleancheck_listfiles) ; \
-	       exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile config.h
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-recursive
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr 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 $(am__CONFIG_DISTCLEAN_FILES)
-	-rm -rf $(top_srcdir)/autom4te.cache
-	-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:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
-	ctags-recursive install-am install-data-am install-strip \
-	tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am am--refresh check check-am clean clean-generic \
-	ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
-	dist-hook dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
-	distcheck distclean distclean-generic distclean-hdr \
-	distclean-tags distcleancheck distdir distuninstallcheck 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-recursive uninstall uninstall-am
-
-
-# The sample configuration is handled in doc/Makefile.am
-install-data-hook:
-	$(mkinstalldirs) "$(DESTDIR)$(cachedir)"
-	test -f "$(DESTDIR)$(cachedir)/pdnsd.cache" || \
-	  touch "$(DESTDIR)$(cachedir)/pdnsd.cache"
-	if test `whoami` = "root"; then \
-	  chown $(def_id) "$(DESTDIR)$(cachedir)/pdnsd.cache"; \
-	  chown $(def_id) "$(DESTDIR)$(cachedir)"; \
-	fi
-	chmod 0640 "$(DESTDIR)$(cachedir)/pdnsd.cache"
-	chmod 0750 "$(DESTDIR)$(cachedir)"
-
-dist-hook: $(PACKAGE).spec.in
-	sed -e '/^%{!?distro: %define distro /c\
-	%if 0%{!?distro:1}\
-	%if "%{_vendor}" == "redhat"\
-	%define distro RedHat\
-	%else\
-	%if "%{_vendor}" == "suse"\
-	%define distro SuSE\
-	%else\
-	%if "%{_vendor}" == "SuSE"\
-	%define distro SuSE\
-	%endif\
-	%endif\
-	%endif\
-	%endif' \
-	-e 's:[@]PACKAGE[@]:$(PACKAGE):g' \
-	-e 's:[@]VERSION[@]:$(VERSION):g' \
-	-e 's:[@]fullversion[@]:$(fullversion):g' \
-	-e 's:[@]packagerelease[@]:$(packagerelease):g' \
-	-e 's:[@]cachedir[@]:/var/cache/$(PACKAGE):g' \
-	-e 's:[@]def_id[@]:$(PACKAGE):g' \
-	$(PACKAGE).spec.in > $(distdir)/$(PACKAGE).spec
-
-# 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:
diff --git a/jni/pdnsd/NEWS b/jni/pdnsd/NEWS
deleted file mode 100644
index 9a83bba..0000000
--- a/jni/pdnsd/NEWS
+++ /dev/null
@@ -1,324 +0,0 @@
-Version 1.2.9a fixes a bug in the 1.2.9 release that causes a build failure when
-pdnsd is configured with --enable-strict-rfc2181. Unless you use this option to
-compile pdnsd, there is no need to upgrade from 1.2.9 to 1.2.9a.
-
-Version 1.2.9 has support for many additional RR types, in particular those
-needed for DNSSEC (though no support for the DNSSEC protocol itself yet in
-pdnsd). Caching data structures are now more efficient when they only store the
-most commonly used RR types. Fine-grained configurability over which RR-types
-are cache-able. Pdnsd now has support for EDNS (Extension mechanisms for DNS),
-although its usefulness is currently limited to enabling UDP messages larger
-than 512 bytes. Defining local TXT records in the configuration file is now
-supported.  A new configuration option provides a fix in case the query uptest
-fails due to remote servers ignoring empty queries. Several bugs have been fixed
-including a UDP socket descriptor leak that affected the FreeBSD platform, and
-an IPv6 port binding bug.
-
-Version 1.2.8 implements support for automatic discovery of root servers.
-There are also some improvements in the resolver and a new default setting for
-the neg_rrs_pol configuration option.
-
-Version 1.2.7-par fixes some security problems. It contains a fix for a
-"dangling pointer" bug that could cause pdnsd to crash when it received a long
-reply. It also addresses some of the issues raised in the CERT vulnerability
-note VU#800113 by making the default of query_port_start equal to 1024, thereby
-ensuring that source ports are randomly selected by the pdnsd resolver in the
-range 1024-65535. This release also fixes problems with compiling pdnsd for the
-ARM architecture and for the Darwin platform (Max OS X).  There are a number of
-(minor) new features. pdnsd now supports "include" files, essentially
-configuration files that only contain definitions for local records. It is now
-possible to define interactively, using pdnsd-ctl, any local record that can be
-defined in a configuration file.
-
-Version 1.2.6-par has an upgraded license: GPL version 3.
-A bug has been fixed which which caused pdnsd to handle NXDOMAIN replies
-inefficiently when configured with neg_domain_pol=on.  Also the code for the
-ping test has been fixed, which was broken for 64-bit systems.  A new option
-randomize_servers can be used to give each server in a section of the
-configuration file an equal chance of being queried.  The new options reject,
-reject_policy and reject_recursively make it possible to check for the presence
-of certain IP addresses in the replies of name servers and to correct some types
-of unwanted replies or to censor these IP addresses.
-The pdnsd-ctl 'add a' and 'add aaaa' commands now allow multiple IP addresses to
-be specified for the same name. There are some further improvements to pdnsd's
-recursive resolver.
-
-Version 1.2.5-par introduces a new query method: udp_tcp. With this method a UDP
-query is tried first and, if the UDP answer is truncated, the query is repeated
-using TCP, which is the behaviour that seems to be recommended by the DNS
-standards. There is a new configuration option use_nss, which can be turned off
-to prevent lengthy timeouts and stalls in certain situations. A bug has been
-fixed which could cause pdnsd to crash if debug output was generated before the
-debug output stream was properly initialized.
-
-In version 1.2.4-par a memory leak and a minor buffer-overflow problem have been
-fixed. There is now a fix for some situations that would previously cause pdnsd
-to exit prematurely (such as ACPI S3 sleep or trying to attach strace to pdnsd).
-Time intervals specified in the configuration file can now be expressed in
-minutes, hours, days and weeks as well as seconds. Support for Apple Mac OS X
-v10.4 Tiger has been improved. The "pdnsd-ctl status" command now also provides
-some information about the status of the running threads. There are some further
-improvements in the debugging information provided by pdnsd.
-TCP-query support is now compiled in by default (but can still be disabled using
-the configure option --disable-tcp-queries).
-
-In version 1.2.3-par the "pdnsd-ctl empty-cache" command can be provided with an
-include/exclude list, allowing the user to specify a selection of names to be
-removed, instead of emptying the cache completely.
-Additional improvements: pdnsd should now remain responsive while executing the
-"pdnsd-ctl empty-cache" command. With the query_method=tcp_udp option pdnsd will
-now also try a UDP query after a TCP connection times out, which should allow
-pdnsd to resolve the same names with query_method=tcp_udp as with
-query_method=udp_only, although perhaps with an occasional delay.
-"pdnsd-ctl config" or "pdnsd-ctl server" commands should now run without delays,
-even if pdnsd is performing ping or query uptests at the time. A problem with
-resolving certain names using root servers has been fixed.
-
-Version 1.2.2-par has a number of important portability improvements. A bug has
-been fixed that prevented pdnsd from compiling successfully on some 64 bit
-architectures. The code for determining endianness (most significant or least
-significant byte first) should now be more portable. This release has
-(experimental) support for the Darwin (Apple Mac OS X) platform. On Linux
-systems, the configure script will now try to detect automatically whether the
-system implements the Native POSIX Thread Library, but the method used may not
-necessarily be foolproof. In addition, the debug features have been improved and
-should make it easier to find out why pdnsd considers some queries or replies
-malformed.
-
-Version 1.2.1-par has improved support for non-Linux platforms. This release has
-(experimental) support for the Cygwin platform, and should also fix some
-compilation glitches that have been reported by FreeBSD users.
-
-Version 1.2-par is a new and improved version of pdnsd! Most of the changes
-effect the internal workings of pdnsd, but there are also a number of
-interesting new features (well, I think they are interesting). Among the bugs
-fixed are two rather nasty ones which involve the handling of NXT and NAPTR
-records and which can cause pdnsd to crash or abort. The new features include a
-new server availability test which can be specified with uptest=query, support
-for reading the DNS configuration from resolv.conf files, a new option for
-optimizing the use of root servers, a new option that makes defining local
-records for reverse resolving easier, support for defining wildcard records, a
-new pdnsd-ctl command for reloading the config file without restarting pdnsd,
-and a new pdnsd-ctl command for dumping information about the names stored in
-the cache.
-The documentation has also been updated: there is now a pdnsd.conf man page. For
-a more complete list of the changes I'll have to refer you to README.par and the
-ChangeLog.
-
-Version 1.1.11a-par contains a fix for FreeBSD users that bypasses a problem
-with the macro ENONET, which can cause a compilation failure when it is
-undefined. Linux users will notice no difference between 1.1.11a-par and
-1.1.11-par.
-
-Version 1.1.11-par has a rather large number of small changes, which are rather
-difficult to summarize. Among the bugs fixed are a race condition in the cache
-lookup code, a flaw in the code that caused a busy spin when a remote server
-answered with "Not Implemented", and problems with the -4 and -6 command-line
-options. Among the improvements are an alternative sorting algorithm which
-should allow pdnsd to start up faster when reading a large cache file from disk,
-automatic mapping of IPv4 to IPv6 addresses when running in IPv6 mode, somewhat
-more efficient memory use, better compression of the replies and changes in the
-parallel querying algorithm that should improve the chances of catching a reply
-from a remote server.  For a more complete list of the changes I'll have to
-refer you to README.par and the ChangeLog.
-
-Version 1.1.10-par has a new parser for configuration files, completely
-rewritten from scratch in C. The main advantages are: (f)lex and yacc/bison are
-no longer needed to build pdnsd, more informative error messages instead of
-merely "parse error", and string literals no longer need to be enclosed in
-quotes in most cases.  Furthermore, a bug has been fixed that caused incorrect
-IPV6-type PTR records to be generated when sourcing /etc/hosts like files.
-There have been other small changes, more details can be found in the ChangeLog.
-
-Version 1.1.9-par adds some missing pieces to the documentation (the pdnsd
-manual and the man page for pdnsd-ctl). The changes to the code consist mostly
-of optimizations, removal of some size limits due to fixed-size buffers, and
-some cleaning up. I've also tried to make the error responses of pdnsd-ctl more
-helpful.  More details can be found in the ChangeLog.
-
-Version 1.1.8b1-par8 introduces a "delegation-only" feature that may be useful
-for blocking Verisign's Sitefinder. The parser for the configuration file now
-tolerates domain names missing a dot at the end. I have provided alternative
-implementations for some GNU extensions that I used in an effort to make the
-code more portable. In particular, the code should build on FreeBSD again. More
-details can be found in the README.par file.
-
-Version 1.1.8b1-par7 fixing a number of bugs. I have also reworked some of the
-code for adding and removing entries in the cache in an effort to improve
-efficiency and stability. More details can be found in the ChangeLog.
-
-Version 1.1.8b1-par6 introduces some further code cleanup. In addition the
-documentation has been revised.
-
-Version 1.1.8b1-par5 fixes a troublesome allocation size error that has been
-discovered in Thomas Moestl's code. In practice this bug only wastes memory but
-it could also potentially lead to memory corruption. Upgrading is
-recommended. More details can be found in the ChangeLog.
-
-Version 1.1.8b1-par4 has been released.  Due to incompatibilities between
-various implementations of the pthread library on Linux systems, problems can
-occur with signal handling in pdnsd. The usual symptom is failure by pdnsd to
-save the cache to disk, and /var/cache/pdnsd/pdnsd.cache remaining empty. If you
-experience this kind of trouble, try reconfiguring with different values for the
-new --with-thread-lib option. The allowable values are described in the
-documentation.
-
-pdnsd is no longer maintained by Thomas Moestl: I have not had time to maintain
-pdnsd for quite a while now, and have been very slow to respond to issues, or
-did not respond at all. It is time that I officially announce that pdnsd is no
-longer actively maintained; I apologize to all those who reported bugs or asked
-questions without receiving any reply. However, Paul A. Rombouts has published a
-patch set against the last released version at
-http://www.phys.uu.nl/~rombouts/pdnsd.html, which cleans up a lot of code fixes
-many bugs.
-
-Version 1.1.7a fixes a reversed assertion that would cause pdnsd to terminate
-if used with the ping uptest. No other changes were made.
-
-Version 1.1.7 fixes some problems that might be remotely exploitable to
-gain access as the user pdnsd runs as (an unprivileged user by default). To do
-this, an attacker needs to control a name server that is queried by pdnsd, and
-send a malicious reply to such a query. Upgrading is strongly recommended!
-There are also minor bug fixes and stability improvements.
-
-Version 1.1.6 adds the query_port_start and query_port_end options (contributed
-by Andreas Steinmetz), that allow confining the ports pdnsd uses for outgoing
-queries to a certain range. It also fixes numerous bugs, one of which could
-cause pdnsd to hang; update is therefore recommended.
-
-Version 1.1.5 contains a fix for a security bug that would allow local users
-that are allowed to use pdnsd-ctl on a running pdnsd server to execute
-arbitrary code as the user that pdnsd runs as (or on Linux, when strict_setuid
-is not enabled, as the user that started pdnsd). The danger of this is usually
-quite limited; the status socket is not enabled by default, it's default
-permissions do only allow the user pdnsd runs as to use the socket,
-strict_setuid is enabled by default and pdnsd runs as an unprivileged user.
-There is also a new configure option, --enable-underscores, that will make
-pdnsd allow underscores in domain names. Furthermore, the SRV record handling
-has been fixed to allow underscores in any case (this was not allowed
-previously, but is required by the RFC). SOA records are not put in the
-answer section any more if no answers are found (this violates the RFC's).
-It may be put in the authority section in a later version.
-There are also various bugfixes in this release.
-Upgrade is recommended.
-
-Version 1.1.4 fixes various smaller bugs, and should also improve the cache
-write performance especially for larger caches.	There are also two new
-features: servers can now be given a label (using the label server option)
-which can be used to identify them for the pdnsd-ctl server command
-(contributed by Andrew M. Bishop), and local records can be marked to make
-the domain record authoritative in pdnsd's cache (which means that pdnsd will
-assume that records that are not present in the cache for that domain are
-non-existent); this is on by default now, and can be controlled using the new
-authrec server option).
-
-Version 1.1.3 added contrib/ and had a lot of robustness fixes.
-This release addresses a security hole that affects only Linux systems. Due to
-a bug in glibc, pdnsd could crash during a port scan. This release contains
-a workaround for this, as well as a fix for a deadlock under heavy load 
-conditions. It also fixes a possible problem that could be triggered by 
-malicious servers, and contains numerous bug fixes.
-A script, contributed by Marko Stolle, makes pdnsd useful in a DHCP setup.
-pdnsd also preservers the case of names in the cache, and should work much
-better on alpha machines (thanks for the contributions by Bjoern Fischer 
-and P.J. Bostley that made this possible). New types were dded for rr 
-sections and pdnsd-ctl.
-Upgrade is recommended.
-
-Version 1.1.2 has a fix for a bug that could cause SERVFAIL to be 
-returned when NXDOMAIN would be appropriate. The bug surfaced only when
-pdnsd queried name servers with a behaviour different from BIND's in the
-NXDOMAIN case, e.g. pdnsd querying another pdnsd or e.g. djbdns. 
-
-Version 1.1.1 fixes a possible race condition in status socket creation.
-This race might be used by a local attacker to change the access 
-permissions of a certain file in /tmp. The risk of this is probably 
-negligible. The default setup uses a non-privileged user, default mode 
-0600, and the status socket is disabled normally, so this should be 
-relatively safe. I don't see any possibility to exploit this, it is
-more of a paranoia fix.
-There are also some other minor fixes and documentation improvements. 
-Upgrade is recommended. 
-
-Version 1.1.0 introduces negative cacheing, pdnsd-ctl enhancements and
-a much improved FreeBSD support. The cache file format has changed from
-prior releases. Some configuration defaults have changed, too.
-
-Version 1.0.15 is mostly a bugfix release. It also has a new option:
-randomize_recs in the global section.
-
-Version 1.0.14 has a fix in icmp.c that will make it build properly
-on FreeBSD and older Linux systems.
-
-Version 1.0.13 has some code cleanup, a fix for the Debian rc install,
-and a security fix (contributed by Olaf Kirch): when changing
-user and group id, pdnsd did not drop supplementary group IDs that
-the original user was member of.
-
-Version 1.0.12 is a bugfix release and contains some security
-enhancements. There are also inclusion/exclusion lists for servers
-(new options include=, exclude=, policy= in the server
-section).
-
-Version 1.0.11 fixes two bugs that might be used for denial-of-service
-attacks, upgrading is recommended.
-
-Versions 1.0.9 and 1.0.10 are bugfix releases.
-
-Version 1.0.8 introduces special linux ppp device support contributed
-by Ron Yorston, and has some bugfixes.
-
-Version 1.0.7 introduces autoconf support, many new config file options and
-the new pdnsd-ctl run-time configuration program.
-
-Version 1.0.6 has another set of bugfixes, in addition to higher compile-
-time configurability and UDP query support. It also contains Debian rc
-scripts contributed by Markus Mohr.
-
-Version 1.0.5 has some bugfixes and the new "server_ip" option 
-contributed by Wolfgang Ocker.
-
-Version 1.0.4 introduces the new options run_as, strict_setuid and
-paranoid. These new options are optional security enhancements.
-
-Versions 1.0.1, 1.0.2 and 1.0.3 are bugfix releases.
-
-Version 1.0.0 has a lot of changes compared to the 0.9.x tree, but much of 
-them "under the hood":
-- IPv6 support (experimental; compile- and run-time configurable)
-- FreeBSD (and such hopefully *BSD) support
-- better rfc2181 compatability
-- new options:
-  - serve_aliases in source section
-  - linkdown_kluge in global section 
-  - max_ttl in global section 
-- cache-code reorganization, only one unified hash (of variable depth)
-- Optimizations & cleanups
-- Automatic deps (only interesting for developers ;-)
-
-Version 0.9.11 fixes a locally exploitable security hole (the cache file was
-world writeable by default). Please see ChangeLog.old for details.
-
-Version 0.9.10 fixes some bugs and improves build on Red Hat.
-
-Version 0.9.9 contains the rc scripts for Red Hat Linux contributed by Torben 
-Janssen, in addition to code cleanups and bugfixes.
-The meaning of the option -v has changed in this release.
-There is also a new config file option "lean_query" that is on by default. It 
-is an optimization, so please look in the docs when updating whether you want 
-it switched on or not.
-
-When compiling versions after 0.9.8, you will probably get more
-compiler warningsthan before. This is because the C compiler settings
-have been made stricter.
-
-Version 0.9.8 fixes a minor bug some build problems with glibc2.0 systems.
-
-The versions 0.9.6 and 0.9.7 are bugfix releases.
-
-Version 0.9.5 introduces uptest=exec, and a modified config file syntax (cache
-sizes are now specified in kB).
-
-Version 0.9.4 was the first to be released to the public. For information on 
-changes, see ChangeLog.
-
diff --git a/jni/pdnsd/PKGBUILD.in b/jni/pdnsd/PKGBUILD.in
deleted file mode 100644
index 3d61765..0000000
--- a/jni/pdnsd/PKGBUILD.in
+++ /dev/null
@@ -1,24 +0,0 @@
-# Package build script for Arch Linux,
-# contributed by Alexander Drozdov.
-
-pkgname=@PACKAGE@
-pkgver=@VERSION@
-pkgrel=@packagerelease@
-pkgdesc="pdnsd is a proxy DNS server with permanent caching (the cache contents are written to hard disk on exit) that is designed to cope with unreachable or down DNS servers."
-url="http://members.home.nl/p.a.rombouts/pdnsd.html"
-license="GPLv3"
-depends=()
-makedepends=(glibc)
-conflicts=()
-replaces=()
-backup=()
-install=
-source=(http://members.home.nl/p.a.rombouts/pdnsd/releases/$pkgname-$pkgver-$pkgrel.tar.gz)
-md5sums=()
-
-build() {
-  cd $startdir/src/$pkgname-$pkgver
-  ./configure --prefix=/usr --enable-ipv6 --sysconfdir=/etc --with-distribution=ArchLinux
-  make || return 1
-  make DESTDIR=$startdir/pkg install
-}
diff --git a/jni/pdnsd/README b/jni/pdnsd/README
deleted file mode 100644
index 7042e93..0000000
--- a/jni/pdnsd/README
+++ /dev/null
@@ -1,22 +0,0 @@
-You can find the documentation for pdnsd in the doc/ directory. The html
-documentation (which I recommend) is in the doc/html/ subdirectory.
-The pure text documentation (which is generated automatically from the 
-html documentation) is in doc/txt/.
-The following documents are available:
-
-index.html / intro.txt		Overview, system requirements
-doc.html / manual.txt		Building, installation and usage instructions
-faq.html / faq.txt		The FAQ
-
-Share and enjoy!
-	Thomas <tmoestl at gmx.net>
-
-
-For news about recent changes in pdnsd the following files may be of
-interest to you:
-
-	README.par
-	ChangeLog
-	NEWS
-
-Last revised: 08 July 2007 by Paul Rombouts
diff --git a/jni/pdnsd/README.par b/jni/pdnsd/README.par
deleted file mode 100644
index ea181bc..0000000
--- a/jni/pdnsd/README.par
+++ /dev/null
@@ -1,216 +0,0 @@
-	        pdnsd version 1.2.9a by Paul Rombouts
-                =====================================
-
-This file describes the version of pdnsd that I maintain personally and am
-making available so other people can enjoy the latest features and fixes. Thomas
-Moestl no longer maintains pdnsd himself, so I am effectively the new
-maintainer. This README describes the new features in version 1.2. This version
-has a rather large number of internal changes and also some new features, which
-I am rather pleased with, even if I say so myself. I think the changes are
-significant enough to warrant increasing the minor version number from 1.1 to
-1.2. The differences between my previous "official" release 1.1.11 and Thomas'
-last release 1.1.7a are described in my previous README, which I have renamed
-REAME.par.old. In this README I restrict myself to describing changes between
-1.1.11 and 1.2.
-The main difference between versions 1.2 and 1.2.1, aside from some minor
-changes, is that 1.2.1 has (experimental) support for the Cygwin platform.
-Version 1.2.2 has further improvements in portability and should in
-particular now also compile on the Darwin (Apple Mac OS X) platform.
-Version 1.2.4 has some important fixes for a memory leak, a minor buffer-
-overflow problem and some situations which could cause pdnsd to exit
-prematurely. Note that TCP-query support is now compiled in by default, but can
-still be disabled using a configure option.
-The main new feature of version 1.2.5 is the new query method "udp_tcp".
-Version 1.2.6 has an updated license: GPL version 3. The main new feature of
-version 1.2.6 is the "reject" option, which makes it possible to censor or
-correct for unwanted IP addresses in replies.
-Version 1.2.7 contains an important fix for a "dangling pointer" bug and
-attempts to make pdnsd less vulnerable to the issues raised in CERT
-vulnerability note VU#800113. It also contains some improvements for defining
-local records interactively using the pdnsd-ctl utility.
-The main new feature of version 1.2.8 is automatic discovery of root servers,
-as well as some minor improvements in the resolver.
-Version 1.2.9 among other things supports many addtional RR types, uses data
-structures that should be more slightly more memory efficient and has support
-for EDNS, which allows DNS UDP messages to be larger than 512 bytes.
-Version 1.2.9a is a simple bugfix release that fixes a problem with compiling
-1.2.9 after configuring with --enable-strict-rfc2181. Unless you use this option
-to compile pdnsd, there is no need to upgrade from 1.2.9 to 1.2.9a.
-
-For instructions how to compile and install pdnsd see doc/html/doc.html or
-doc/txt/manual.txt. Note that I am no longer distributing a patch w.r.t. Thomas'
-version because the (compressed) patch file is barely smaller than the
-(compressed) tar archive.
-
-Here follows a list of some of changes in version 1.2 from a user's perspective.
-For a more technical description of some of the changes in the code see the ChangeLog.
-For a short history about recent releases have a look at NEWS or doc/html/index.html.
-
-- First of all, two potentially rather nasty bugs have been fixed in the code
-  for the handling of NXT and NAPTR records. A response from a remote server
-  containing NXT records (even well-formed ones) will very likely cause pdnsd to
-  crash. The code for handling NAPTR records contained incorrect ASSERT
-  statements, which could cause pdnsd to abort in a controlled fashion, but
-  completely unnecessarily.
-
-- Sampo Lehtinen has remarked that pdnsd sometimes failed to resolve classless
-  reversed-delegated IP addresses, and that this has something to do with the
-  fact that pdnsd didn't accept '/' characters in domain names. After reading
-  some of the relevant RFCs I decided to remove all restrictions on the types
-  of characters that pdnsd accepts in domain names. Of course for most
-  applications, there are many characters which don't make sense in domain
-  names, but I feel that it is the responsibility of the client application to
-  reject these, not the proxy server.
-
-- At the suggestion of Dan Tihelka, I have expanded to the server_ip= option to
-  allow the name of an interface to be specified instead of an IP address.
-  Presently this has been tested on Linux only. Can someone running pdnsd on
-  *BSD tell me if the code for getting the address of an interface is different
-  for Linux and BSD-type systems?
-
-- At the suggestion of Juliusz Chroboczek I've added an new server availability
-  test which can be specified with uptest=query. This can be useful as an
-  alternative to "uptest=ping" in case the remote server does not respond to
-  ICMP_ECHO requests at all, which unfortunately is quite common these days.
-  "uptest=query" causes pdnsd to send an empty query to remote name servers. Any
-  well-formed response (apart from SERVFAIL) within the timeout period will be
-  interpreted as a sign that the server is "up".
-
-- Instead of specifying the IP addresses of the name servers that pdnsd should
-  query in a server section of the config file, you may also specify a
-  resolv.conf-style file. Preferably this should not be /etc/resolv.conf. If the
-  contents of the resolv.conf type file changes while pdnsd is running, you can
-  make pdnsd aware of the changes with the "pdnsd-ctl config" command, see
-  below. Example:
-
-    server {
-	label=myisp;
-	file=/etc/ppp/resolv.conf;
-	timeout=10;
-    }
-
-- There is a new option for "server" sections in the config file:
-  root_server=on/off.
-  In case a server section contains only addresses of root servers, which
-  usually only give the name servers of top level domains in their reply,
-  setting root_server=on will enable certain optimizations. This involves using
-  cached information to reduce queries to the root servers, thus speeding up the
-  resolving of new names.
-
-- New option for "rr" sections in the config file: reverse=on/off.
-  If you want a locally defined name to resolve to a numeric address and vice
-  versa, you can now achieve this by setting reverse=on before defining the A
-  record, making it unnecessary to define a separate PTR record for the reverse
-  resolving.
-  Example:
-
-    rr {
-	name = localhost;
-	reverse = on;
-	a = 127.0.0.1;
-    }
-
-  has the same effect as:
-
-    rr {
-	name = localhost;
-	a = 127.0.0.1;
-    }
-    rr {
-	name = 1.0.0.127.in-addr.arpa;
-	ptr = localhost;
-    }
-
-- In rr sections it is now possible to specify a wildcard name, i.e. a name
-  starting with the label *. The * in a wildcard can match one or more labels in
-  a queried name, but only whole labels. For example, *.mydomain will match
-  a.mydomain or www.a.mydomain, but not mydomain. Before you can specify an rr
-  section with name=*.mydomain you must define some records for mydomain,
-  typically NS and/or SOA records.
-  Example:
-
-    rr {
-	name = mydomain;
-	ns = localhost;
-	soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
-    }
-    rr {
-	name = *.mydomain;
-	a = 192.168.1.10;
-    }
-
-- There is a slight backwards compatibility problem which involves the name= and
-  owner= options in rr sections. The new version does not allow you to place
-  owner= before name=. On the other hand, you may now freely mix the owner
-  option with the a,ptr,cname,mx and soa options and define as many records of
-  this type as you like (including zero).
-
-- pdnsd-ctl has three new commands:
-
-  config: Reloads pdnsd's configuration file. This is more efficient than
-  restarting pdnsd, and should not cause only noticeable interruption in DNS
-  service. However, some types of configuration changes cannot be put into
-  effect this way, and you will be prompted to restart pdnsd instead.
-
-  empty-cache: Empties the cache completely, freeing all existing entries.
-  In version 1.2.3 you can specify a selection of entries to delete by providing
-  a list of include/exclude patterns.
-
-  dump: Prints information about all the names stored in the cached. This is
-  mainly useful for diagnostic purposes.
-
-- There is now a pdnsd.conf(5) man page, describing pdnsd's configuration file.
-  The man page has been generated from the html documentation using a customized
-  Perl script.
-
-- New in version 1.2.4: Time intervals in the configuration files can now be
-  expressed in seconds, minutes, hours, days and weeks, using the suffixes
-  s,m,h,d,and w.
-  Example: 2h30m is interpreted as 2*60*60 + 30*60 = 9000 seconds.
-
-- Version 1.2.5 introduces a new configuration option, contributed by Jan-Marek
-  Glogowski, called "use_nss" which can be turned off to prevent nasty delays in
-  certain situations.
-  Besides the query methods "udp_only", "tcp_only" and "tcp_udp" you can now
-  also specify "udp_tcp", which more closely adheres to the behaviour
-  recommended by DNS standards.
-
-- Version 1.2.6 introduces the "randomize_servers" and "reject" options. By
-  setting "randomize_servers" on you can give each server in a server section an
-  equal chance of being queried, which is useful when resolving from root
-  servers, for instance. The "reject" option can be used to censor certain IP
-  addresses or correct for unwanted replies from servers you don't completely
-  trust.
-
-- Version 1.2.7 contains support for "include" files which can be referenced
-  from configuration files or read interactively using pdnsd-ctl. These files
-  can be used to add local definitions to the cache without reconfiguring pdnsd.
-  The new "pdnsd-ctl eval" command can be used to interactively define local
-  records that could previously only be defined in configuration files but not
-  with the "pdnsd-ctl add" command.
-
-- Version 1.2.8 contains support for automatic discovery of root servers.
-  Instead of supplying a complete list of IP addresses of root servers in a
-  server section of the configuration file, you need only enter one or two
-  addresses of name servers which know the names and addresses of the root
-  servers and set "root_server=discover".
-  The "neg_rrs_pol" option has a new default setting, which should allow
-  sensible negative caching of RRs in most situations, even if "proxy_only=on".
-
-- Version 1.2.9 contains support for EDNS (Extension mechanisms for DNS), which
-  allows UDP messages to be larger than 512 bytes. Whether pdnsd uses EDNS in
-  outgoing queries is determined by the configuration option "edns_query". If
-  pdnsd receives a query using EDNS, it will reply using EDNS regardless of the
-  configuration settings.
-  Local TXT records can now be defined in the configuration file.
-  If the query uptest fails due to remote servers ignoring empty queries, this
-  can now be remedied using the new "query_test_name" config option.
-
-The new features are described in greater detail in the manual doc/html/doc.html
-or doc/txt/manual.txt.
-
-Enjoy!
-
-If you have any questions about my version of pdnsd, you can send these
-to <p.a.rombouts at home.nl>. Questions about the original (unmaintained) pdnsd
-version should be sent to <tmoestl at gmx.net> or <t.moestl at tu-bs.de>.
diff --git a/jni/pdnsd/README.par.old b/jni/pdnsd/README.par.old
deleted file mode 100644
index 4bf0eda..0000000
--- a/jni/pdnsd/README.par.old
+++ /dev/null
@@ -1,249 +0,0 @@
-	  pdnsd maintenance version 1.1.11-par by Paul Rombouts
-	  =======================================================
-
-This file describes the version of pdnsd that I maintain personally and am
-making available so other people can enjoy the latest features and fixes.
-Thomas Moestl no longer maintains pdnsd himself, so I am effectively the new
-maintainer. The current version is 1.1.11-par, which has a rather large number
-of small changes. Among the bugs fixed are a race condition in the cache lookup
-code, a flaw in the code that caused a busy spin when a remote server answered
-with "Not Implemented", and problems with the -4 and -6 command-line options.
-Among the improvements are an alternative sorting algorithm which should allow
-pdnsd to start up faster when reading a large cache file from disk, automatic
-mapping of IPv4 to IPv6 addresses when running in IPv6 mode, somewhat more
-efficient memory use, and better compression of the replies. Some of the new
-features are described in the second half of this file (look for "new in version
-1.1.11"). For the rest of the changes I will have to refer you to the ChangeLog.
-For a short history about recent releases have a look at doc/html/index.html.
-
-Since version 1.1.9 I've added some missing pieces to the documentation (the
-manual doc/html/doc.html,doc/txt/manual.txt and the man page doc/pdnsd-ctl.8).
-Version 1.1.11 finally has a man page doc/pdnsd.8, thanks to a contribution by
-Mahesh T. Pai.
-
-The first part of this file describes how to patch, compile, install and run
-pdnsd. The second part describes some of the changes I've made to Thomas
-Moestl's code.
-
-Unless you're using the pre-patched source archive pdnsd-1.1.11-par.tar.gz you
-must first apply my patch file pdnsd-1.1.11-par.diff.gz before compiling and
-installing pdnsd according to Thomas Moestl's instructions described in the the
-documentation. Use a freshly untarred copy of Thomas Moestl's original version
-1.1.7a source, cd into the source directory pdnsd-1.1.7a and apply the command:
-
-gzip -cd <path_to_patch>/pdnsd-1.1.11-par.diff.gz | patch -p2 -N -Z
-
-Note: I have used GNU extensions so there may be some portability issues. I have
-supplied alternatives for some of the less portable functions. There should be no
-problem with most Linux distributions.
-
-That's it! You should now be able to compile, install and run pdnsd. See the
-documentation in doc/html/doc.html or doc/txt/manual.txt for more detailed
-instructions.
-
-Some people may want change the compiler optimization flag. I use the -O2 flag,
-but it might be safer to use a lower level of optimization or no optimization at
-all. In that case prefix the configure command with the desired compiler flags
-like this (assuming you're using a bash shell):
-
-    CFLAGS="-O1 -g -Wall" ./configure ...
-
-I have added a new configuration option "--with-thread-lib=<lib>", which you
-should use if you experience problems with signal handling under Linux. The
-usual symptom is failure by pdnsd to save the cache to disk, and
-/var/cache/pdnsd/pdnsd.cache remaining empty. If you experience this kind of
-trouble, try reconfiguring with different values for the --with-thread-lib
-option. The allowable values are "linuxthreads" (the default), "linuxthreads2"
-(or "lt2" for short), and "nptl". I recommend that you first configure and
-compile without the --with-thread-lib option, then if you experience trouble try
-again with --with-thread-lib=lt2 and recompile.
-If your Linux system has an implementation of the Native POSIX Thread Library,
-which is the case with Red Hat 9 for instance, you should use
---with-thread-lib=nptl .
-Ideally, I would like to write a configure script which automatically detects
-which kind of thread library is being used on a Linux system, but I don't have a
-clue yet how to do this. If you can help me with this please write to me at the
-email address listed at the end of this file.
-
-The rest of this file describes some of the modifications I've made, but you
-don't have to read it if you simply want to run pdnsd as you're used to.
-
-
-- The main new feature I've added enables you to change the server addresses
-  that pdnsd uses at run-time using pdnsd-ctl. I've done this because the ISPs I
-  use do not specify fixed DNS server addresses, but expect their clients to use
-  dynamic DNS configuration (DHCP in the case of the cable connection, RFC1877
-  in case of isdn). I've extended the options that can be given with the
-  "server" command to pdnsd-ctl, to allow IP addresses to be specified as an
-  additional argument after "up|down|retest". This allows me to put something
-  like this in my ifup-local script:
-
-  pdnsd-ctl server isp-label up "$DNS1 $DNS2"
-
-  For more details how to use pdnsd-ctl read the updated documentation in
-  the doc/html directory. There is also a manpage for pdnsd-ctl.
-  This was quite tricky to implement because there might be pending queries
-  while the addresses are being changed. It certainly was an interesting
-  exercise in writing multi-threaded code for me.
-
-
-- I've implemented a feature which allowed me to specify multiple IP addresses
-  per server section in the configuration file. This allowed for a much more
-  compact configuration file (3 server sections instead of 7 in my case),
-  because most configuration options are identical for servers belonging to the
-  same ISP. It also made the output of "pdnsd-ctl status" more compact. And it
-  was necessary to enable a satisfactory implementation of the previous feature.
-  Example of the new syntax:
-
-	ip = 123.456.789.001, 123.456.789.002, 123.456.789.003;
-
-  At the suggestion of Greg Norris server sections no longer have to specify IP
-  addresses. A server section without IP addresses will remain inactive until it
-  is assigned one more addresses at run-time with pdnsd-ctl.
-
-- I've changed the implementation of dynamic arrays to make it slightly more
-  efficient, and improve type safety. I also got rid of several arrays of fixed
-  size in favor of dynamically allocated arrays. In particular, I got rid of
-  all occurrences of MAXPATH. I also made several static variables "automatic".
-
-- The output of the "status" command of pdnsd-ctl now gives more meaningful
-  constant names "ping|none|if|exec" instead of numbers for the "uptest" option.
-  I've also added some information that was previously missing.
-
-- I've fixed I a problem that caused pdnsd to use up a lot of CPU time and slow
-  down my system considerably when it received a query that took a long time to
-  resolve. It turned out that pdnsd can get into a "busy spin" when one of the
-  DNS servers pdnsd is querying refuses the connection. Apart from fixing this
-  bug, to speed things up additionally, I thought it would be a good idea to
-  mark a server down (without retesting it) after detecting errno==ECONNREFUSED.
-  This gives me very satisfactory performance, with the problematic server being
-  tried only once during every testing interval.
-
-  New in version 1.1.11: An additional busy spin condition, triggered when a
-  remote server answers with "Not Implemented", has been discovered and fixed.
-  In case there are remaining bugs in the multiplexing code, I've added a test
-  that checks if the number of events reported by poll/select matches the number
-  of events handled by pdnsd. If not, pdnsd will log an error message and give
-  up. Although the bugs still need to be reported and fixed, at least this
-  should prevent pdnsd from wasting CPU cycles.
-
-- Due to a bug in Thomas' code, pdnsd tries, but fails, to remove the control
-  socket "pdnsd.status" before exiting. This has also been fixed. In version
-  1.1.8b1-par6 I have cleaned this up some more so that pdnsd will handle
-  situations where it can't open or bind the control socket more gracefully.
-
-- I've rewritten some of the code that saves the contents of the cache to the
-  file "pdnsd.cache" just before pdnsd exits. This is because I noticed in my
-  logfiles that pdnsd occasionally had problems reading this file back at
-  startup. I eliminated the use of fseek() in Thomas' code. I could not find
-  anything that was demonstrably incorrect about his use of fseek(), but it
-  seemed better to me to do without it and write the file in a strictly
-  sequential order. Anyway, it turned out my hunch paid off: no more error
-  messages about "pdnsd.cache" in my logfile.
-
-  New in version 1.1.11: I've added some new code for sorting the queue used for
-  purging stale cache entries. This should allow pdnsd to start up faster when
-  reading large cache files from disk.
-
-- I've extended the configuration options for policies of inclusion/exclusion
-  lists in server sections. The new policies options are "simple_only" and
-  "fqdn_only". Setting policy=simple_only will cause the server to used only for
-  simple hostnames if no other rule matches. On the other hand, setting
-  policy=fqdn_only will cause the server to be used only for fully qualified
-  domain names (i.e. the name has at least one dot in-between). I find these
-  options useful for controlling which name servers (if any) will be used by
-  pdnsd for simple host names.
-
-- I've added a new "delegation_only" option that can be used to undo the
-  unwanted effects of DNS "wildcards". It works roughly as the feature by the
-  same name in BIND. It is turned off by default. To block Verisign's
-  Sitefinder, add the following line to the global section of the configuration
-  file:
-
-	delegation_only= com, net;
-
-  If you find that this feature blocks some legitimate domain names, you will
-  probably need to add the address of a nameserver that provides good authority
-  information. More information can be found at
-  http://www.phys.uu.nl/~rombouts/pdnsd/delegationonly.html
-
-- It is no longer mandatory that domain names in the configuration file end in a
-  dot.
-
-- The parser for configuration files has been rewritten purely in C, so (f)lex
-  and yacc/bison are no longer needed to build pdnsd.
-  It is no longer necessary to place strings between quotes in the configuration
-  file, unless a string contains a special character such as whitespace, a token
-  that normally starts a comment, or one of the characters ",;{}". Note that
-  these special characters are illegal in domain names anyway.
-
-- New in version 1.1.11: Negating whole domains with a neg section in the
-  config file will result in all the subdomains being negated as well.
-  For example, adding the lines
-
-	neg {name=doubleclick.com; types=domain;}
-	neg {name=doubleclick.net; types=domain;}
-
-  will also negate ad.doubleclick.com, ad.fr.doubleclick.net, etc.
-
-- New in version 1.1.11: When running in IPv6 mode, pdnsd will now automatically
-  map any IPv4 addresses it reads in the config file to IPv6 addresses.
-  When pdnsd has been compiled with IPv6 support and runs in IPv4 mode, it will
-  skip IPv6 addresses with a warning message. This may result in certain server
-  sections becoming inactive, though.
-
-  The -4 and -6 options should now work as advertised.
-  I've added two new command-line options, "-a" and "-i <prefix>".
-  With the -a flag pdnsd will try to detect automatically if IPv6 support is
-  available on a system, and fall back to IPv4 if not. The -a flag can be used
-  instead of -4 or -6.
-  The -i option can be used to specify a prefix for mapping IPv4 to IPv6
-  address. The default is ::ffff.0.0.0.0. There is also a corresponding
-  ipv4_6_prefix= option for the config file.
-
-- New in version 1.1.11: I've slightly changed the way pdnsd does parallel
-  queries. Active queries or not canceled until we have received a useful
-  response from a remote name server, or all the queries have failed or timed
-  out. Thus the par_queries parameter is no longer the maximum number of
-  parallel queries, but rather the increment with which the number of parallel
-  queries is increased when the previous set has timed out. In the worst case
-  there will be pending queries to all the servers in the list of available
-  servers simultaneously. We may be wasting more system resources this way, but
-  the advantage is that we have a greater chance of catching a reply. After all,
-  if we wait longer anyway, why not for more servers.
-  I've also introduced a global timeout parameter. This is the minimum period of
-  time pdnsd will wait after sending the first query to a remote server before
-  giving up without having received a reply. The timeout options in the
-  configuration file are now only minimum timeout intervals. Setting the global
-  timeout option makes it possible to specify quite short timeout intervals in
-  the server sections. This will have the effect that pdnsd will start querying
-  additional servers fairly quickly if the first servers are slow to respond
-  (but will still continue to listen for responses from the first ones). This
-  may allow pdnsd to get an answer more quickly in certain situations.
-
-  After receiving a reply from a remote server the server is marked up and its
-  time stamp is updated. This will have the effect that pdnsd doesn't bother
-  testing this server for availability for a period of time, and thus the
-  overhead caused by testing is reduced. After server timeouts, uptests are
-  performed by the separate server status thread, not by threads that have to
-  answer queries. Unresponsive servers with uptest=ping will not be marked down
-  immediately any more, but only after the ping test has definitely failed.
-
-I've also included a number of bug-fixes contained in a patch file supplied to
-me by Thomas Moestl. In addition to the things I had already fixed, the
-following issues are addressed: some memory leaks, dropping of root privileges
-before calling uptest scripts in case pdnsd was started setuid root (which is a
-bad idea anyway), passing on open fd's to uptests, integer overruns in the
-status reporting code, fixing string passing from the lexer, more consistent
-treatment of underscores in domain names.
-
-In addition to the things I've listed above, I've made various little changes to
-fix minor bugs, improve efficiency or elegance, or simply to suit my my own
-coding style. These changes are too numerous to list here, but some of them are
-listed in the ChangeLog. Of course if you are really interested in the
-nitty-gritty you can always compare the source of my version with Thomas'
-original code.
-
-If you have any questions about the modifications I've made, you can send these
-to <p.a.rombouts at home.nl>. Questions about the original pdnsd version should
-be sent to <tmoestl at gmx.net> or <t.moestl at tu-bs.de>.
diff --git a/jni/pdnsd/THANKS b/jni/pdnsd/THANKS
deleted file mode 100644
index 9c7e3bb..0000000
--- a/jni/pdnsd/THANKS
+++ /dev/null
@@ -1,66 +0,0 @@
-This is a (hopefully complete) list of people I have to thank for helping me
-develop and improve pdnsd:
-
-David G. Andersen
-Andrew M. Bishop
-Daniel Black
-Carsten Block
-Stephan Boettcher
-P.J. Bostley
-Rodney Brown
-Kevin A. Burton
-Juliusz Chroboczek
-Joachim Dorner
-Frank Elsner
-Christian Engstler
-Stefan Erhardt
-Bjoern Fischer
-Stefan Förster
-Bert Frederiks
-Mike Hammer
-Jonathan Hudson
-Torben Janssen
-Byrial Jensen
-Olaf Kirch
-Nikola Kotur
-Kiyo Kelvin Lee
-Bernd Leibing
-Patrick Loschmidt
-James MacLean
-Sourav K. Mandal
-Fraser McCrossan
-Markus Mohr
-Michael Müller
-Gustavo Niemeyer
-Alexandre Nunes
-Wolfgang Ocker
-Mahesh T. Pai
-Bernhard Pelz
-Soenke J. Peters
-Erich Reitz
-Paul A. Rombouts
-Brian Schroeder
-Roman Shterenzon
-Daniel Smolik
-Milan P. Stanic
-Michael Steiner
-Norbert Steinl
-Andreas Steinmetz	
-Marko Stolle
-Markus Storm
-Michael Ströder
-Thomas Stromberg
-Alan Swanson
-Lyonel Vincent
-Eelco Vriezekolk
-Paul Wagland
-Sverker Wiberg
-Michael Wiedmann
-Ron Yorston
-Nikita V. Youshchenko
-Jan-Marek Glogowski
-Thomas Cort
-Pierre Habouzit
-Dirk Armbrust
-Georg Schwarz
-Ashish Shukla
diff --git a/jni/pdnsd/TODO b/jni/pdnsd/TODO
deleted file mode 100644
index f6a1650..0000000
--- a/jni/pdnsd/TODO
+++ /dev/null
@@ -1,20 +0,0 @@
-- Implement a reference counter to ensure that newly entered records are not
-  purged immediately (really needed?)
-- Perhaps do a two-step form of recursive query: first query those servers we
-  have got cached, then (if unsuccessful) look the others up and query again.
-  The impact of this optimisation may not be very big, because all sane servers
-  give A records for NS records if possible.
-- Test for compatibility on other Unix-like Systems other than the BSDs and
-  Linux; rewrite the functions in netdev.c and icmp.c for those OSs if
-  necessary. Also try to get compatibility for other compilers than gcc.
-- Write an install rule for the Slackware start-up script.
-- Update the FAQ.
-- Implement DNSSEC support. Since version 1.2.9, pdnsd is able to cache the RR
-  types necessary for DNSSEC, but the resolver is not yet security aware.
-- Implement a lookup table (hash table) for queries in progress. This would
-  enable a thread that is resolving a query that is already being handled by
-  another thread to wait for that other thread to finish and copy its result
-  rather than independently query remote servers. It is very common for
-  resolvers to resend UDP queries if they don't get a reply within a timeout
-  period and if the answer is not yet cached, this will result in multiple
-  threads duplicating each others work in the current implementation.
diff --git a/jni/pdnsd/acconfig.h b/jni/pdnsd/acconfig.h
deleted file mode 100644
index c864071..0000000
--- a/jni/pdnsd/acconfig.h
+++ /dev/null
@@ -1,191 +0,0 @@
-#ifndef _CONFIG_H_
-#define _CONFIG_H_
-
-/* ONLY EDIT acconfig.h, NEVER config.h or config.h.in!
- * config.h MAY BE OVERWRITTEN BY make, config.h.in by autoheader! */
-
-/* Define your Target here. Currently defined are TARGET_LINUX (any
- * architecture), TARGET_BSD (experimental; tested on FreeBSD, hopefully
- * works for other BSD variants) and TARGET_CYGWIN. */
-#define TARGET TARGET_LINUX
-
-/* change the #undef to #define if you do not want to compile with special
- * ISDN support for Linux. Note that the ISDN support will not compile ok on
- * unpatched kernerls earlier than 2.2.12 (if you did apply newer isdn patches,
- * it may work fine). This is not on by default because it will cause compile
- * problems on some systems */
-#undef ISDN_SUPPORT
-
-/* The following regulates the IP Protocol support. Supported types are IPv4
- * and IPv6 (aka IPng). You may enable either or both of these protocols.
- * Enabling in this context means that support for the respective protocol
- * will be in the binary. When running the binary, one of the protocols may
- * be activated via command line switches. Note that activating both IPv4 and
- * IPv6 is pointless (and will not work because two UDP and two TCP threads
- * will be started that concur for ports). Because of that, it is not allowed.
- * When pdnsd runs with IPv6 activated it should be able to service queries
- * from IPv6 as well as from IPv4 hosts, provided that you host is configured
- * properly.
- * For each of the protocols there are two options: ENABLE_IPV4 and ENABLE_IPV6
- * control whether support for the respective protocol is available in the
- * binary. DEFAULT_IPV4 selects which protocol is enabled on pdnsd
- * startup by default. 1 means IPv4, while 0 means IPv6. If support for
- * a protocol was included in the executable, you can specify command line
- * parameters to activate or deactivate that protocol (the options are -4 and
- * -6), but it makes more sense to use the run_ipv4=on/off option in the
- * configuration file.
- * Make your choice. Note that IPv6 support is experimental in pdnsd.
- * In normal operation, you will currently only need IPv4. */
-#undef ENABLE_IPV4
-#define DEFAULT_IPV4 1
-#undef ENABLE_IPV6
-
-/* In all pdnsd versions before 1.0.6, DNS queries were always done over
- * TCP. Now, you have the choice. You can control that behaviour using
- * the -m command line switch, and you can give a preset here. There
- * are 3 different modes:
- * UDP_ONLY: This is undoubtedly the fastest query method, because
- *       no TCP negotiation needs to be done.
- * TCP_ONLY: This is slower than uo, but generally more secure
- *       against DNS spoofing. Note that some name servers on the
- *       internet do not support TCP queries, notably dnscache.
- * TCP_UDP: TCP, then UDP. If the TCP query fails with a "connection refused"-
- *       error or times out, the query is retried using UDP.
- * UDP_TCP: UDP, then TCP. If the UDP reply is truncated (i.e. the tc flag is set),
- *       the query is retried using TCP. */
-#define M_PRESET UDP_ONLY
-
-/* In addition to choosing the presets, you may also completely disable
- * one of the protocols (TCP for preset UDP_ONLY and UDP for preset TCP_ONLY).
- * This saves some executable space. */
-#undef NO_UDP_QUERIES
-#undef NO_TCP_QUERIES
-
-/* With the following option, you can disable the TCP server functionality
- * of pdnsd. Nearly no program does TCP queries, so you probably can do
- * this safely and save some executable space and one thread.
- * You also can turn off the TCP server at runtime with the --notcp option. */
-#undef NO_TCP_SERVER
-
-/* By undefining the following, you can disable the UDP source address
- * discovery code. This is not recommended, but you may need it when
- * running into compilation problems. */
-#undef SRC_ADDR_DISC
-
-/* NO_POLL specifies not to use poll(2), but select(2) instead. If you are
- * unsure about what this means, just leave this as it is.*/
-#undef NO_POLL
-
-/* Define this for "hard" RFC 2181 compliance: this RFC states that
- * implementations should discard answers whose RR sets have multiple
- * different time stamps. While correct answers are generated, incorrect
- * ones are normally tolerated and corrected. Full RFC compliance is
- * however only achieved by deactivating this behaviour and thus being
- * intolerant. */
-#undef RFC2181_ME_HARDER
-
-/* Define this to the device you want to use for getting random numbers.
- * Leave this undefined if you wand to use the standard C library random
- * function, which basically should be sufficient.
- * Linux and FreeBSD have two random number devices: /dev/random and
- * /dev/urandom. /dev/urandom might be less secure in some cases, but
- * should still be more than sufficient. The use of /dev/random is
- * discouraged, as reading from this device blocks when new random bits
- * need to be gathered. */
-#undef RANDOM_DEVICE
-#undef R_DEFAULT
-#undef R_RANDOM
-#undef R_ARC4RANDOM
-/*#define RANDOM_DEVICE "/dev/urandom"*/
-
-/* Designate which database manager to use for cacheing.
- * default: native; others: gdbm */
-#define CACHE_DBM DBM_NATIVE
-
-#define CACHEDIR "/var/cache/pdnsd"
-
-#define TEMPDIR "/tmp";
-
-/* This is for various debugging facilities that produce debug output and
- * double-check some values. You can enable debug messages with the -g option.
- * Normally, you can switch this off safely by setting the number after DEBUG
- * to 0. This will increase speed (although only marginally), save space
- * in the executable (only about 12kB) and some stack space per thread
- * (which may be significant if you have many threads running simultaneously).
- * However, it may be an aid when debugging config files.
- * The only defined debug levels by now are in the range 0 - 9.
- * Define this to 9 if you want hex dumps of all the queries and replies pdnsd
- * receives (you must also call pdnsd with -v9 to actually see the hex dumps).
- * When in doubt, leave it defined to 1. */
-#define DEBUG 1
-
-/* This defines the default verbosity of informational messages you will get.
-   This has nothing to to with the debug option (-g), but may be set with -v
-   option. 0 is for normal operation, up to 3 for debugging.
-   Unlike the debug messages, these messages will also be written to the syslog.*/
-#define VERBOSITY 0
-
-/* Redefine this if you want another hash size.
- * The number of hash buckets is computed as power of two (1<<HASH_SZ);
- * so e.g. HASH_SZ set to 10 yields 1024 hash rows.
- * HASH_SZ may not be bigger than 32 (if you set it even close to that value,
- * you are nuts.) */
-#define HASH_SZ 10
-
-/* Set this to debug the hash tables. Turn this off normally, or you will get
- * flooded with diagnostic messages */
-#undef DEBUG_HASH
-
-/* Define if you have working C99 Variadic macro support */
-#undef CPP_C99_VARIADIC_MACROS
-
-/* Define as int if socklen_t typedef is missing */
-#undef socklen_t
-
-/* Lock the UDP socket before using it? */
-#undef SOCKET_LOCKING
-
-/* Default TCP timeout when receiving queries */
-#define TCP_TIMEOUT 30
-
-/* Allow subsequent TCP queries on one connection? */
-#undef TCP_SUBSEQ
-
-/* Default value for parallel query number */
-#define PAR_QUERIES   2
-
-/* Maximum number of IP addresses used per nameserver obtained from NS records. */
-#define MAXNAMESERVIPS 3
-
-/* These are the possible targets. Normally no need to touch these
- * definitions. */
-#define TARGET_LINUX  0
-#define TARGET_BSD    1
-#define TARGET_CYGWIN 2
-
-/* Assume the Native POSIX Thread Library instead of LinuxThreads ? */
-#undef THREADLIB_NPTL
-
-/* If we are using LinuxThreads, implement the fix needed for newer glibcs ? */
-#undef THREADLIB_LINUXTHREADS2
-
-/* The following is needed for using LinuxThreads. Better don't touch. */
-#define _REENTRANT 1
-#define _THREAD_SAFE 1
-
-/* It appears the newer versions of gcc won't convert a pointer to char into
-   a pointer to unsigned char and vice versa without complaining.
-   By using casts these warning messages can be suppressed, but at the cost
-   of losing some type safety.
-   Define charp and ucharp to be empty if you are a developer and find type
-   safety more important.
-   Leave the definitions unchanged to avoid distracting warning messages. */
-#define charp (char *)
-#define ucharp (unsigned char *)
-
-
-/* pdnsd version. DO NOT TOUCH THIS! It is replaced automatically by the
- * contents of ./version */
-#define VERSION "@VERSION@"
-
-#endif
diff --git a/jni/pdnsd/aclocal.m4 b/jni/pdnsd/aclocal.m4
deleted file mode 100644
index 7224f6c..0000000
--- a/jni/pdnsd/aclocal.m4
+++ /dev/null
@@ -1,1021 +0,0 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009  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_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
-[m4_warning([this file was generated for autoconf 2.63.
-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, 2003, 2005, 2006, 2007, 2008  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.11'
-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.11.1], [],
-      [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.11.1])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, 2003, 2005  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],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2005
-# 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.
-
-# serial 4
-
-# This was merged into AC_PROG_CC in Autoconf.
-
-AU_DEFUN([AM_PROG_CC_STDC],
-[AC_PROG_CC
-AC_DIAGNOSE([obsolete], [$0:
-	your code should no longer depend upon `am_cv_prog_cc_stdc', but upon
-	`ac_cv_prog_cc_stdc'.  Remove this warning and the assignment when
-	you adjust the code.  You can also remove the above call to
-	AC_PROG_CC if you already called it elsewhere.])
-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
-])
-AU_DEFUN([fp_PROG_CC_STDC])
-
-# AM_CONDITIONAL                                            -*- Autoconf -*-
-
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# 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.
-
-# serial 9
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$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, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# 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.
-
-# serial 10
-
-# 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", "GCJ", or "OBJC".
-# 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
-
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" 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'.
-  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 8's {/usr,}/bin/sh.
-      touch 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
-      ;;
-    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,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-])
-
-# Generate code to set up dependency tracking.              -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# 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.
-
-#serial 5
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
-  # Autoconf 2.62 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"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/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"])
-])
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# 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.
-
-# serial 8
-
-# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
-
-# Do all the work for Automake.                             -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 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.
-
-# serial 16
-
-# 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.
-
-# 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.62])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],
-[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], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
-  [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([AM_PROG_MKDIR_P])dnl
-# We need awk for the "check" target.  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)],
-		  [define([AC_PROG_CC],
-			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES(CXX)],
-		  [define([AC_PROG_CXX],
-			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES(OBJC)],
-		  [define([AC_PROG_OBJC],
-			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
-])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
-dnl 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
-])
-
-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, 2003, 2005, 2008  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}" != 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, 2005  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.
-
-# serial 2
-
-# 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])])
-
-# Check to see how 'make' treats includes.	            -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2009  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.
-
-# serial 4
-
-# 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
-])
-
-# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# 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.
-
-# serial 6
-
-# AM_PROG_CC_C_O
-# --------------
-# Like AC_PROG_CC_C_O, but changed for automake.
-AC_DEFUN([AM_PROG_CC_C_O],
-[AC_REQUIRE([AC_PROG_CC_C_O])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != 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
-dnl Make sure AC_PROG_CC is never called again, or it will override our
-dnl setting of CC.
-m4_define([AC_PROG_CC],
-          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
-])
-
-# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
-
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# 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.
-
-# serial 6
-
-# 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 supports --run.
-# If it does, 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 --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-# Copyright (C) 2003, 2004, 2005, 2006  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_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 2003, 2005, 2008  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.
-
-# serial 4
-
-# _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])])
-
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# 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.
-
-# serial 5
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# 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 (
-   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
-   rm -f conftest.file
-   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
-
-   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)])
-
-# Copyright (C) 2001, 2003, 2005  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, 2008  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.
-
-# serial 2
-
-# _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, 2005  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.
-
-# serial 2
-
-# _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.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-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 <conftest.tar])
-    grep GrepMe conftest.dir/file >/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
-
diff --git a/jni/pdnsd/compile b/jni/pdnsd/compile
deleted file mode 100644
index 1b1d232..0000000
--- a/jni/pdnsd/compile
+++ /dev/null
@@ -1,142 +0,0 @@
-#! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
-
-scriptversion=2005-05-14.22
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey at cygnus.com>.
-#
-# 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# 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 <bug-automake at gnu.org> or send patches to
-# <automake-patches at gnu.org>.
-
-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 <bug-automake at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "compile $scriptversion"
-    exit $?
-    ;;
-esac
-
-ofile=
-cfile=
-eat=
-
-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 -e 's|^.*/||' -e '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
-  mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
-  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-end: "$"
-# End:
diff --git a/jni/pdnsd/config.h b/jni/pdnsd/config.h
deleted file mode 100644
index 2bfa268..0000000
--- a/jni/pdnsd/config.h
+++ /dev/null
@@ -1,437 +0,0 @@
-/* config.h.  Generated from config.h.in by configure.  */
-/* config.h.in.  Generated from configure.in by autoheader.  */
-#ifndef _CONFIG_H_
-#define _CONFIG_H_
-
-/* ONLY EDIT acconfig.h, NEVER config.h or config.h.in!
- * config.h MAY BE OVERWRITTEN BY make, config.h.in by autoheader! */
-
-/* Define your Target here. Currently defined are TARGET_LINUX (any
- * architecture), TARGET_BSD (experimental; tested on FreeBSD, hopefully
- * works for other BSD variants) and TARGET_CYGWIN. */
-#define TARGET TARGET_LINUX
-
-/* change the #undef to #define if you do not want to compile with special
- * ISDN support for Linux. Note that the ISDN support will not compile ok on
- * unpatched kernerls earlier than 2.2.12 (if you did apply newer isdn patches,
- * it may work fine). This is not on by default because it will cause compile
- * problems on some systems */
-/* #undef ISDN_SUPPORT */
-
-/* The following regulates the IP Protocol support. Supported types are IPv4
- * and IPv6 (aka IPng). You may enable either or both of these protocols.
- * Enabling in this context means that support for the respective protocol
- * will be in the binary. When running the binary, one of the protocols may
- * be activated via command line switches. Note that activating both IPv4 and
- * IPv6 is pointless (and will not work because two UDP and two TCP threads
- * will be started that concur for ports). Because of that, it is not allowed.
- * When pdnsd runs with IPv6 activated it should be able to service queries
- * from IPv6 as well as from IPv4 hosts, provided that you host is configured
- * properly.
- * For each of the protocols there are two options: ENABLE_IPV4 and ENABLE_IPV6
- * control whether support for the respective protocol is available in the
- * binary. DEFAULT_IPV4 selects which protocol is enabled on pdnsd
- * startup by default. 1 means IPv4, while 0 means IPv6. If support for
- * a protocol was included in the executable, you can specify command line
- * parameters to activate or deactivate that protocol (the options are -4 and
- * -6), but it makes more sense to use the run_ipv4=on/off option in the
- * configuration file.
- * Make your choice. Note that IPv6 support is experimental in pdnsd.
- * In normal operation, you will currently only need IPv4. */
-#define ENABLE_IPV4 1
-#define DEFAULT_IPV4 1
-#undef ENABLE_IPV6 
-
-/* In all pdnsd versions before 1.0.6, DNS queries were always done over
- * TCP. Now, you have the choice. You can control that behaviour using
- * the -m command line switch, and you can give a preset here. There
- * are 3 different modes:
- * UDP_ONLY: This is undoubtedly the fastest query method, because
- *       no TCP negotiation needs to be done.
- * TCP_ONLY: This is slower than uo, but generally more secure
- *       against DNS spoofing. Note that some name servers on the
- *       internet do not support TCP queries, notably dnscache.
- * TCP_UDP: TCP, then UDP. If the TCP query fails with a "connection refused"-
- *       error or times out, the query is retried using UDP.
- * UDP_TCP: UDP, then TCP. If the UDP reply is truncated (i.e. the tc flag is set),
- *       the query is retried using TCP. */
-#define M_PRESET TCP_ONLY
-
-/* In addition to choosing the presets, you may also completely disable
- * one of the protocols (TCP for preset UDP_ONLY and UDP for preset TCP_ONLY).
- * This saves some executable space. */
-/* #undef NO_UDP_QUERIES */
-/* #undef NO_TCP_QUERIES */
-
-/* With the following option, you can disable the TCP server functionality
- * of pdnsd. Nearly no program does TCP queries, so you probably can do
- * this safely and save some executable space and one thread.
- * You also can turn off the TCP server at runtime with the --notcp option. */
-/* #undef NO_TCP_SERVER */
-
-/* By undefining the following, you can disable the UDP source address
- * discovery code. This is not recommended, but you may need it when
- * running into compilation problems. */
-#define SRC_ADDR_DISC 1
-
-/* NO_POLL specifies not to use poll(2), but select(2) instead. If you are
- * unsure about what this means, just leave this as it is.*/
-/* #undef NO_POLL */
-
-/* Define this for "hard" RFC 2181 compliance: this RFC states that
- * implementations should discard answers whose RR sets have multiple
- * different time stamps. While correct answers are generated, incorrect
- * ones are normally tolerated and corrected. Full RFC compliance is
- * however only achieved by deactivating this behaviour and thus being
- * intolerant. */
-/* #undef RFC2181_ME_HARDER */
-
-/* Define this to the device you want to use for getting random numbers.
- * Leave this undefined if you wand to use the standard C library random
- * function, which basically should be sufficient.
- * Linux and FreeBSD have two random number devices: /dev/random and
- * /dev/urandom. /dev/urandom might be less secure in some cases, but
- * should still be more than sufficient. The use of /dev/random is
- * discouraged, as reading from this device blocks when new random bits
- * need to be gathered. */
-/* #undef RANDOM_DEVICE */
-#define R_DEFAULT 1
-/* #undef R_RANDOM */
-/* #undef R_ARC4RANDOM */
-/*#define RANDOM_DEVICE "/dev/urandom"*/
-
-/* Designate which database manager to use for cacheing.
- * default: native; others: gdbm */
-#define CACHE_DBM DBM_NATIVE
-
-#define CONFDIR "/data/data/net.typeblog.socks"
-
-#define CACHEDIR "/data/data/net.typeblog.socks"
-
-#define TEMPDIR "/data/data/net.typeblog.socks/cache";
-
-/* This is for various debugging facilities that produce debug output and
- * double-check some values. You can enable debug messages with the -g option.
- * Normally, you can switch this off safely by setting the number after DEBUG
- * to 0. This will increase speed (although only marginally), save space
- * in the executable (only about 12kB) and some stack space per thread
- * (which may be significant if you have many threads running simultaneously).
- * However, it may be an aid when debugging config files.
- * The only defined debug levels by now are in the range 0 - 9.
- * Define this to 9 if you want hex dumps of all the queries and replies pdnsd
- * receives (you must also call pdnsd with -v9 to actually see the hex dumps).
- * When in doubt, leave it defined to 1. */
-#define DEBUG 1
-
-/* This defines the default verbosity of informational messages you will get.
-   This has nothing to to with the debug option (-g), but may be set with -v
-   option. 0 is for normal operation, up to 3 for debugging.
-   Unlike the debug messages, these messages will also be written to the syslog.*/
-#define VERBOSITY 0
-
-/* Redefine this if you want another hash size.
- * The number of hash buckets is computed as power of two (1<<HASH_SZ);
- * so e.g. HASH_SZ set to 10 yields 1024 hash rows.
- * HASH_SZ may not be bigger than 32 (if you set it even close to that value,
- * you are nuts.) */
-#define HASH_SZ 10
-
-/* Set this to debug the hash tables. Turn this off normally, or you will get
- * flooded with diagnostic messages */
-/* #undef DEBUG_HASH */
-
-/* Define if you have working C99 Variadic macro support */
-#define CPP_C99_VARIADIC_MACROS 1
-
-/* Define as int if socklen_t typedef is missing */
-/* #undef socklen_t */
-
-/* Lock the UDP socket before using it? */
-/* #undef SOCKET_LOCKING */
-
-/* Default TCP timeout when receiving queries */
-#define TCP_TIMEOUT 5
-
-/* Allow subsequent TCP queries on one connection? */
-/* #undef TCP_SUBSEQ */
-
-/* Default value for parallel query number */
-#define PAR_QUERIES   4
-
-/* Maximum number of IP addresses used per nameserver obtained from NS records. */
-#define MAXNAMESERVIPS 3
-
-/* These are the possible targets. Normally no need to touch these
- * definitions. */
-#define TARGET_LINUX  0
-#define TARGET_BSD    1
-#define TARGET_CYGWIN 2
-
-/* Assume the Native POSIX Thread Library instead of LinuxThreads ? */
-#define THREADLIB_NPTL 1
-
-/* If we are using LinuxThreads, implement the fix needed for newer glibcs ? */
-/* #undef THREADLIB_LINUXTHREADS2 */
-
-/* The following is needed for using LinuxThreads. Better don't touch. */
-#define _REENTRANT 1
-#define _THREAD_SAFE 1
-
-/* It appears the newer versions of gcc won't convert a pointer to char into
-   a pointer to unsigned char and vice versa without complaining.
-   By using casts these warning messages can be suppressed, but at the cost
-   of losing some type safety.
-   Define charp and ucharp to be empty if you are a developer and find type
-   safety more important.
-   Leave the definitions unchanged to avoid distracting warning messages. */
-#define charp (char *)
-#define ucharp (unsigned char *)
-
-
-/* pdnsd version. DO NOT TOUCH THIS! It is replaced automatically by the
- * contents of ./version */
-#define VERSION "1.2.9a-par"
-
-#endif
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-/* #undef CRAY_STACKSEG_END */
-
-/* Define to 1 if using `alloca.c'. */
-/* #undef C_ALLOCA */
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#define HAVE_ALLOCA 1
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#define HAVE_ALLOCA_H 1
-
-/* Define to 1 if you have the `asprintf' function. */
-#define HAVE_ASPRINTF 1
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-/* #undef HAVE_DOPRNT */
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the `getline' function. */
-#if defined(__aarch64__) || defined(__x86_64__)
-#define HAVE_GETLINE 1
-#endif
-
-/* Define to 1 if you have the `getpwnam_r' function. */
-//#define HAVE_GETPWNAM_R 1
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#define HAVE_GETTIMEOFDAY 1
-
-/* Define to 1 if you have the `inet_ntop' function. */
-#define HAVE_INET_NTOP 1
-
-/* Define to 1 if you have the `inet_pton' function. */
-#define HAVE_INET_PTON 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the `pthread' library (-lpthread). */
-#define HAVE_LIBPTHREAD 1
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#define HAVE_MALLOC_H 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `mempcpy' function. */
-//#define HAVE_MEMPCPY 1
-
-/* Define to 1 if you have the `mkfifo' function. */
-#define HAVE_MKFIFO 1
-
-/* Define to 1 if you have the `nanosleep' function. */
-#define HAVE_NANOSLEEP 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#define HAVE_NETINET_IN_H 1
-
-/* Define to 1 if you have the <net/if.h> header file. */
-#define HAVE_NET_IF_H 1
-
-/* Define to 1 if you have the `poll' function. */
-#define HAVE_POLL 1
-
-/* Define to 1 if you have the `select' function. */
-#define HAVE_SELECT 1
-
-/* Define to 1 if you have the `snprintf' function. */
-#define HAVE_SNPRINTF 1
-
-/* Define to 1 if you have the `socket' function. */
-#define HAVE_SOCKET 1
-
-/* Define to 1 if the system has the type `socklen_t'. */
-#define HAVE_SOCKLEN_T 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `stpcpy' function. */
-#if defined(__aarch64__) || defined(__x86_64__)
-#define HAVE_STPCPY 1
-#endif
-
-/* Define to 1 if you have the `stpncpy' function. */
-//#define HAVE_STPNCPY 1
-
-/* Define to 1 if you have the `strdup' function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the `strerror' function. */
-#define HAVE_STRERROR 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strlcpy' function. */
-/* #undef HAVE_STRLCPY */
-
-/* Define to 1 if you have the `strndup' function. */
-#define HAVE_STRNDUP 1
-
-/* Define to 1 if the system has the type `struct ifreq'. */
-#define HAVE_STRUCT_IFREQ 1
-
-/* Define to 1 if the system has the type `struct in6_addr'. */
-#define HAVE_STRUCT_IN6_ADDR 1
-
-/* Define to 1 if the system has the type `struct in_pktinfo'. */
-#define HAVE_STRUCT_IN_PKTINFO 1
-
-/* Define to 1 if you have the <syslog.h> header file. */
-#define HAVE_SYSLOG_H 1
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-#define HAVE_SYS_POLL_H 1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#define HAVE_SYS_WAIT_H 1
-
-/* Define to 1 if you have the `uname' function. */
-#define HAVE_UNAME 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the `vasprintf' function. */
-#define HAVE_VASPRINTF 1
-
-/* Define to 1 if you have the `vprintf' function. */
-#define HAVE_VPRINTF 1
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#define HAVE_VSNPRINTF 1
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT ""
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME ""
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING ""
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION ""
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#define RETSIGTYPE void
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at runtime.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
-/* #undef STACK_DIRECTION */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-/* #undef TM_IN_SYS_TIME */
-
-/* Enable extensions on AIX 3, Interix.  */
-#ifndef _ALL_SOURCE
-# define _ALL_SOURCE 1
-#endif
-/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# define _POSIX_PTHREAD_SEMANTICS 1
-#endif
-/* Enable extensions on HP NonStop.  */
-#ifndef _TANDEM_SOURCE
-# define _TANDEM_SOURCE 1
-#endif
-/* Enable general extensions on Solaris.  */
-#ifndef __EXTENSIONS__
-# define __EXTENSIONS__ 1
-#endif
-
-
-/* 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 */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Define to `int' if <sys/types.h> does not define. */
-/* #undef pid_t */
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
diff --git a/jni/pdnsd/config.h.in b/jni/pdnsd/config.h.in
deleted file mode 100644
index c4ac994..0000000
--- a/jni/pdnsd/config.h.in
+++ /dev/null
@@ -1,430 +0,0 @@
-/* config.h.in.  Generated from configure.in by autoheader.  */
-#ifndef _CONFIG_H_
-#define _CONFIG_H_
-
-/* ONLY EDIT acconfig.h, NEVER config.h or config.h.in!
- * config.h MAY BE OVERWRITTEN BY make, config.h.in by autoheader! */
-
-/* Define your Target here. Currently defined are TARGET_LINUX (any
- * architecture), TARGET_BSD (experimental; tested on FreeBSD, hopefully
- * works for other BSD variants) and TARGET_CYGWIN. */
-#define TARGET TARGET_LINUX
-
-/* change the #undef to #define if you do not want to compile with special
- * ISDN support for Linux. Note that the ISDN support will not compile ok on
- * unpatched kernerls earlier than 2.2.12 (if you did apply newer isdn patches,
- * it may work fine). This is not on by default because it will cause compile
- * problems on some systems */
-#undef ISDN_SUPPORT
-
-/* The following regulates the IP Protocol support. Supported types are IPv4
- * and IPv6 (aka IPng). You may enable either or both of these protocols.
- * Enabling in this context means that support for the respective protocol
- * will be in the binary. When running the binary, one of the protocols may
- * be activated via command line switches. Note that activating both IPv4 and
- * IPv6 is pointless (and will not work because two UDP and two TCP threads
- * will be started that concur for ports). Because of that, it is not allowed.
- * When pdnsd runs with IPv6 activated it should be able to service queries
- * from IPv6 as well as from IPv4 hosts, provided that you host is configured
- * properly.
- * For each of the protocols there are two options: ENABLE_IPV4 and ENABLE_IPV6
- * control whether support for the respective protocol is available in the
- * binary. DEFAULT_IPV4 selects which protocol is enabled on pdnsd
- * startup by default. 1 means IPv4, while 0 means IPv6. If support for
- * a protocol was included in the executable, you can specify command line
- * parameters to activate or deactivate that protocol (the options are -4 and
- * -6), but it makes more sense to use the run_ipv4=on/off option in the
- * configuration file.
- * Make your choice. Note that IPv6 support is experimental in pdnsd.
- * In normal operation, you will currently only need IPv4. */
-#undef ENABLE_IPV4
-#define DEFAULT_IPV4 1
-#undef ENABLE_IPV6
-
-/* In all pdnsd versions before 1.0.6, DNS queries were always done over
- * TCP. Now, you have the choice. You can control that behaviour using
- * the -m command line switch, and you can give a preset here. There
- * are 3 different modes:
- * UDP_ONLY: This is undoubtedly the fastest query method, because
- *       no TCP negotiation needs to be done.
- * TCP_ONLY: This is slower than uo, but generally more secure
- *       against DNS spoofing. Note that some name servers on the
- *       internet do not support TCP queries, notably dnscache.
- * TCP_UDP: TCP, then UDP. If the TCP query fails with a "connection refused"-
- *       error or times out, the query is retried using UDP.
- * UDP_TCP: UDP, then TCP. If the UDP reply is truncated (i.e. the tc flag is set),
- *       the query is retried using TCP. */
-#define M_PRESET UDP_ONLY
-
-/* In addition to choosing the presets, you may also completely disable
- * one of the protocols (TCP for preset UDP_ONLY and UDP for preset TCP_ONLY).
- * This saves some executable space. */
-#undef NO_UDP_QUERIES
-#undef NO_TCP_QUERIES
-
-/* With the following option, you can disable the TCP server functionality
- * of pdnsd. Nearly no program does TCP queries, so you probably can do
- * this safely and save some executable space and one thread.
- * You also can turn off the TCP server at runtime with the --notcp option. */
-#undef NO_TCP_SERVER
-
-/* By undefining the following, you can disable the UDP source address
- * discovery code. This is not recommended, but you may need it when
- * running into compilation problems. */
-#undef SRC_ADDR_DISC
-
-/* NO_POLL specifies not to use poll(2), but select(2) instead. If you are
- * unsure about what this means, just leave this as it is.*/
-#undef NO_POLL
-
-/* Define this for "hard" RFC 2181 compliance: this RFC states that
- * implementations should discard answers whose RR sets have multiple
- * different time stamps. While correct answers are generated, incorrect
- * ones are normally tolerated and corrected. Full RFC compliance is
- * however only achieved by deactivating this behaviour and thus being
- * intolerant. */
-#undef RFC2181_ME_HARDER
-
-/* Define this to the device you want to use for getting random numbers.
- * Leave this undefined if you wand to use the standard C library random
- * function, which basically should be sufficient.
- * Linux and FreeBSD have two random number devices: /dev/random and
- * /dev/urandom. /dev/urandom might be less secure in some cases, but
- * should still be more than sufficient. The use of /dev/random is
- * discouraged, as reading from this device blocks when new random bits
- * need to be gathered. */
-#undef RANDOM_DEVICE
-#undef R_DEFAULT
-#undef R_RANDOM
-#undef R_ARC4RANDOM
-/*#define RANDOM_DEVICE "/dev/urandom"*/
-
-/* Designate which database manager to use for cacheing.
- * default: native; others: gdbm */
-#define CACHE_DBM DBM_NATIVE
-
-#define CACHEDIR "/var/cache/pdnsd"
-
-#define TEMPDIR "/tmp";
-
-/* This is for various debugging facilities that produce debug output and
- * double-check some values. You can enable debug messages with the -g option.
- * Normally, you can switch this off safely by setting the number after DEBUG
- * to 0. This will increase speed (although only marginally), save space
- * in the executable (only about 12kB) and some stack space per thread
- * (which may be significant if you have many threads running simultaneously).
- * However, it may be an aid when debugging config files.
- * The only defined debug levels by now are in the range 0 - 9.
- * Define this to 9 if you want hex dumps of all the queries and replies pdnsd
- * receives (you must also call pdnsd with -v9 to actually see the hex dumps).
- * When in doubt, leave it defined to 1. */
-#define DEBUG 1
-
-/* This defines the default verbosity of informational messages you will get.
-   This has nothing to to with the debug option (-g), but may be set with -v
-   option. 0 is for normal operation, up to 3 for debugging.
-   Unlike the debug messages, these messages will also be written to the syslog.*/
-#define VERBOSITY 0
-
-/* Redefine this if you want another hash size.
- * The number of hash buckets is computed as power of two (1<<HASH_SZ);
- * so e.g. HASH_SZ set to 10 yields 1024 hash rows.
- * HASH_SZ may not be bigger than 32 (if you set it even close to that value,
- * you are nuts.) */
-#define HASH_SZ 10
-
-/* Set this to debug the hash tables. Turn this off normally, or you will get
- * flooded with diagnostic messages */
-#undef DEBUG_HASH
-
-/* Define if you have working C99 Variadic macro support */
-#undef CPP_C99_VARIADIC_MACROS
-
-/* Define as int if socklen_t typedef is missing */
-#undef socklen_t
-
-/* Lock the UDP socket before using it? */
-#undef SOCKET_LOCKING
-
-/* Default TCP timeout when receiving queries */
-#define TCP_TIMEOUT 30
-
-/* Allow subsequent TCP queries on one connection? */
-#undef TCP_SUBSEQ
-
-/* Default value for parallel query number */
-#define PAR_QUERIES   2
-
-/* Maximum number of IP addresses used per nameserver obtained from NS records. */
-#define MAXNAMESERVIPS 3
-
-/* These are the possible targets. Normally no need to touch these
- * definitions. */
-#define TARGET_LINUX  0
-#define TARGET_BSD    1
-#define TARGET_CYGWIN 2
-
-/* Assume the Native POSIX Thread Library instead of LinuxThreads ? */
-#undef THREADLIB_NPTL
-
-/* If we are using LinuxThreads, implement the fix needed for newer glibcs ? */
-#undef THREADLIB_LINUXTHREADS2
-
-/* The following is needed for using LinuxThreads. Better don't touch. */
-#define _REENTRANT 1
-#define _THREAD_SAFE 1
-
-/* It appears the newer versions of gcc won't convert a pointer to char into
-   a pointer to unsigned char and vice versa without complaining.
-   By using casts these warning messages can be suppressed, but at the cost
-   of losing some type safety.
-   Define charp and ucharp to be empty if you are a developer and find type
-   safety more important.
-   Leave the definitions unchanged to avoid distracting warning messages. */
-#define charp (char *)
-#define ucharp (unsigned char *)
-
-
-/* pdnsd version. DO NOT TOUCH THIS! It is replaced automatically by the
- * contents of ./version */
-#define VERSION "@VERSION@"
-
-#endif
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#undef C_ALLOCA
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the `asprintf' function. */
-#undef HAVE_ASPRINTF
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-#undef HAVE_DOPRNT
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `getline' function. */
-#undef HAVE_GETLINE
-
-/* Define to 1 if you have the `getpwnam_r' function. */
-#undef HAVE_GETPWNAM_R
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the `inet_ntop' function. */
-#undef HAVE_INET_NTOP
-
-/* Define to 1 if you have the `inet_pton' function. */
-#undef HAVE_INET_PTON
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `pthread' library (-lpthread). */
-#undef HAVE_LIBPTHREAD
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#undef HAVE_MALLOC_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `mempcpy' function. */
-#undef HAVE_MEMPCPY
-
-/* Define to 1 if you have the `mkfifo' function. */
-#undef HAVE_MKFIFO
-
-/* Define to 1 if you have the `nanosleep' function. */
-#undef HAVE_NANOSLEEP
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#undef HAVE_NETINET_IN_H
-
-/* Define to 1 if you have the <net/if.h> header file. */
-#undef HAVE_NET_IF_H
-
-/* Define to 1 if you have the `poll' function. */
-#undef HAVE_POLL
-
-/* Define to 1 if you have the `select' function. */
-#undef HAVE_SELECT
-
-/* Define to 1 if you have the `snprintf' function. */
-#undef HAVE_SNPRINTF
-
-/* Define to 1 if you have the `socket' function. */
-#undef HAVE_SOCKET
-
-/* Define to 1 if the system has the type `socklen_t'. */
-#undef HAVE_SOCKLEN_T
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `stpcpy' function. */
-#undef HAVE_STPCPY
-
-/* Define to 1 if you have the `stpncpy' function. */
-#undef HAVE_STPNCPY
-
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
-
-/* Define to 1 if you have the `strerror' function. */
-#undef HAVE_STRERROR
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strlcpy' function. */
-#undef HAVE_STRLCPY
-
-/* Define to 1 if you have the `strndup' function. */
-#undef HAVE_STRNDUP
-
-/* Define to 1 if the system has the type `struct ifreq'. */
-#undef HAVE_STRUCT_IFREQ
-
-/* Define to 1 if the system has the type `struct in6_addr'. */
-#undef HAVE_STRUCT_IN6_ADDR
-
-/* Define to 1 if the system has the type `struct in_pktinfo'. */
-#undef HAVE_STRUCT_IN_PKTINFO
-
-/* Define to 1 if you have the <syslog.h> header file. */
-#undef HAVE_SYSLOG_H
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#undef HAVE_SYS_IOCTL_H
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-#undef HAVE_SYS_POLL_H
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define to 1 if you have the `uname' function. */
-#undef HAVE_UNAME
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `vasprintf' function. */
-#undef HAVE_VASPRINTF
-
-/* Define to 1 if you have the `vprintf' function. */
-#undef HAVE_VPRINTF
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#undef HAVE_VSNPRINTF
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* 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 version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#undef RETSIGTYPE
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at runtime.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-#undef TM_IN_SYS_TIME
-
-/* 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
-
-
-/* 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
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef pid_t
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
diff --git a/jni/pdnsd/configure b/jni/pdnsd/configure
deleted file mode 100644
index a3b7822..0000000
--- a/jni/pdnsd/configure
+++ /dev/null
@@ -1,11389 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63.
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008 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
-
-
-
-
-# PATH needs CR
-# 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_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
-if (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
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-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.
-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); exit 1; }
-fi
-
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# Required to use basename.
-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
-
-
-# Name of the executable.
-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'`
-
-# CDPATH.
-$as_unset CDPATH
-
-
-if test "x$CONFIG_SHELL" = x; then
-  if (eval ":") 2>/dev/null; then
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-
-  if test $as_have_required = yes &&	 (eval ":
-(as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=\$LINENO
-  as_lineno_2=\$LINENO
-  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
-  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
-  :
-else
-  as_candidate_shells=
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  case $as_dir in
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
-	   done;;
-       esac
-done
-IFS=$as_save_IFS
-
-
-      for as_shell in $as_candidate_shells $SHELL; do
-	 # Try only shells that exist, to save several forks.
-	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		{ ("$as_shell") 2> /dev/null <<\_ASEOF
-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
-
-
-:
-_ASEOF
-}; then
-  CONFIG_SHELL=$as_shell
-	       as_have_required=yes
-	       if { "$as_shell" 2> /dev/null <<\_ASEOF
-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_func_return () {
-  (exit $1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
-  break
-fi
-
-fi
-
-      done
-
-      if test "x$CONFIG_SHELL" != x; then
-  for as_var in BASH_ENV ENV
-	do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-	done
-	export CONFIG_SHELL
-	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
-    if test $as_have_required = no; then
-  echo This script requires a shell more modern than all the
-      echo shells that I found on your system.  Please install a
-      echo modern shell, or manually run the script under such a
-      echo shell if you do have one.
-      { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
-
-
-(eval "as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0") || {
-  echo No shell found that supports shell functions.
-  echo Please tell bug-autoconf at gnu.org about your system,
-  echo including any error possibly output before this message.
-  echo This can help us improve future autoconf versions.
-  echo Configuration will now proceed without shell functions.
-}
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  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
-   { (exit 1); exit 1; }; }
-
-  # 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
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
-  case `echo 'x\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-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 -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-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=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# 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 7<&0 </dev/null 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, 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=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-
-ac_unique_file="src"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-LIBOBJS
-ALLOCA
-thread_CFLAGS
-RANLIB
-threadlib
-specbuild
-def_id
-cachedir
-distribution
-packagerelease
-fullversion
-EGREP
-GREP
-CPP
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-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_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_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_dependency_tracking
-with_distribution
-with_target
-with_cachedir
-enable_isdn
-enable_ipv4
-enable_ipv6
-enable_ipv4_startup
-enable_ipv6_startup
-enable_udp_queries
-enable_tcp_queries
-with_query_method
-enable_tcp_server
-enable_src_addr_disc
-enable_socket_locking
-enable_poll
-enable_new_rrs
-enable_strict_rfc2181
-with_random_device
-enable_underscores
-with_default_id
-with_debug
-with_verbosity
-with_hash_buckets
-enable_hash_debug
-enable_rcsids
-with_tcp_qtimeout
-enable_tcp_subseq
-with_par_queries
-with_max_nameserver_ips
-enable_specbuild
-with_thread_lib
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP'
-
-
-# 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}'
-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=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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
-    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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
-    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_echo "$as_me: error: invalid package name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
-    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_echo "$as_me: error: invalid package name: $ac_useropt" >&2
-   { (exit 1); exit 1; }; }
-    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_echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
-    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_echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
-   { (exit 1); exit 1; }; } ;;
-    *)     $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_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; }
-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
-    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
-  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_echo "$as_me: error: working directory cannot be determined" >&2
-   { (exit 1); exit 1; }; }
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
-   { (exit 1); exit 1; }; }
-
-
-# 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_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
-   { (exit 1); exit 1; }; }
-	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 this package 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/PACKAGE]
-  --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
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-
-  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]
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
-  --enable-isdn               Enable ISDN support (may cause problems on
-                              some systems; only for Linux)
-  --disable-ipv4              Disable IPv4 networking support
-                              (default=enabled)
-  --enable-ipv6               Enable IPv6 networking support
-  --disable-ipv4-startup      Disable IPv4 on pdnsd startup by default
-                              (default=enabled)
-  --enable-ipv6-startup       Enable IPV6 on pdnsd startup by default
-                              (default=IPv4)
-  --disable-udp-queries       Disable udp as query method.
-  --disable-tcp-queries       Disable tcp as query method.
-  --disable-tcp-server        Disable the TCP serving ability of pdnsd
-  --disable-src-addr-disc     Disable the UDP source address discovery
-  --enable-socket-locking     Enable the UDP socket locking
-  --disable-poll              Disable poll(2) and use select(2)
-                              (default=enabled)
-  --disable-new-rrs           Disable new DNS RR types (obsolete, currently ignored)
-  --enable-strict-rfc2181     Enforce strict RFC 2181 compliance
-  --enable-underscores        Allow _ in domain names (obsolete, currently ignored)
-  --enable-hash-debug         Debug hash tables (warning: massive output)
-  --enable-rcsids             Enable RCS IDs in executables (obsolete, currently ignored)
-  --enable-tcp-subseq         Enable multiple dns querys using one
-                              tcp connection
-  --enable-specbuild          Only used when building pdnsd from spec files
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-distribution=distro  Specify target distribution (default=Generic;
-                              others: RedHat, SuSE, Debian, ArchLinux)
-  --with-target=platform      Change compilation target platform (default:
-                              autodetect; others: Linux, BSD, Cygwin)
-  --with-cachedir=dir         Default directory for pdnsd cache
-                              (default=/var/cache/pdnsd)
-  --with-query-method=qm      Specify the query method (default=udponly;
-                              others: tcponly, tcpudp, udptcp)
-  --with-random-device=device Specify random device other than
-                              /dev/random; default: C Library random() PRNG;
-                              special value arc4random for BSD C Library
-                              arc4random function (default on FreeBSD)
-  --with-default-id=id        Specify default uid/gid for pdnsd
-                              (default=nobody)
-  --with-debug=level          Specify debugging level (0 means no debug support)
-  --with-verbosity=level      Specify default message verbosity
-  --with-hash-buckets=num     Number of hash buckets to use (default=1024).
-                              The number actually used is the smallest power of two
-                              greater or equal to the number specified here.
-  --with-tcp-qtimeout=secs    Specify default tcp query timeout (default=30)
-  --with-par-queries=num      Specify default parallel query number (default=2)
-  --with-max-nameserver-ips=num      Specify maximum number of IP addresses used per nameserver obtained from NS records (default=3)
-  --with-thread-lib=lib       Specify thread library, overriding automatic detection (for Linux only).
-                              Possible values: LinuxThreads,
-                              LinuxThreads2 (implements a fix for newer glibcs)
-                              or NPTL (Native POSIX Thread Library)
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-_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
-configure
-generated by GNU Autoconf 2.63
-
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 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
-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 $as_me, which was
-generated by GNU Autoconf 2.63.  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) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
-    2)
-      ac_configure_args1="$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
-      ac_configure_args="$ac_configure_args '$ac_arg'"
-      ;;
-    esac
-  done
-done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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
-
-    cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
-    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:$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= ;; #(
-      *) $as_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
-
-    cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
-    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
-      cat <<\_ASBOX
-## ------------------- ##
-## File substitutions. ##
-## ------------------- ##
-_ASBOX
-      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
-      cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
-      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'; { (exit 1); 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
-
-# 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
-
-
-# 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
-  ac_site_file1=$CONFIG_SITE
-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 -r "$ac_site_file"; then
-    { $as_echo "$as_me:$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"
-  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.
-  if test -f "$cache_file"; then
-    { $as_echo "$as_me:$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:$LINENO: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# 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:$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:$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:$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:$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:$LINENO:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:$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.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:$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_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
-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
-
-
-
-package="pdnsd"
-version=`cut -d - -f 1  "$srcdir"/version`
-fullversion=`cat "$srcdir"/version`
-packagerelease=`cut -d - -f 2- "$srcdir"/version`
-
-distribution="Generic"
-target="autodetect"
-cachedir="/var/cache/$package"
-ipv4_default=1
-have_ipv4="yes"
-#newrrs="yes"
-query_m="udponly"
-have_tcp_server="yes"
-adisc="default"
-slock="no";
-def_id="nobody"
-#have_rcsids="no"
-udp_queries="yes"
-tcp_queries="yes"
-tempdir="/tmp"
-randomdev=default
-freebsd_pthread="4"
-specbuild=no
-threadlib=default
-
-am__api_version='1.11'
-
-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_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
-$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
-   { (exit 1); exit 1; }; }
-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.
-
-
-# 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:$LINENO: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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:$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:$LINENO: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# 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_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5
-$as_echo "$as_me: error: unsafe absolute working directory name" >&2;}
-   { (exit 1); exit 1; }; };;
-esac
-case $srcdir in
-  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5
-$as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;}
-   { (exit 1); exit 1; }; };;
-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 (
-   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
-   rm -f conftest.file
-   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_echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&5
-$as_echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&2;}
-   { (exit 1); exit 1; }; }
-   fi
-
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-$as_echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-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 --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  { $as_echo "$as_me:$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}" != 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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:$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:$LINENO: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:$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:$LINENO: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:$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:$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:$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 test "${ac_cv_path_mkdir+set}" = set; 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
-	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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
-
-  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.
-    test -d ./--version && rmdir ./--version
-    MKDIR_P="$ac_install_sh -d"
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
-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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:$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:$LINENO: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:$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 { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; 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:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:$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
-
-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_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-   { (exit 1); exit 1; }; }
-  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=$package
- VERSION=$version
-
-
-# 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"}
-
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility.
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
-
-
-
-
-
-ac_config_headers="$ac_config_headers config.h"
-
-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:$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:$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='\'
-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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$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:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* 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:$LINENO: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; 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
-
-{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-if test -z "$ac_file"; then
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-{ $as_echo "$as_me:$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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; 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:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-fi
-
-rm -f conftest$ac_cv_exeext
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* 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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; 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:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:$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 test "${ac_cv_c_compiler_gnu+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_compiler_gnu=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	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:$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:$LINENO: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; 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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-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:$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:$LINENO: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* 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"
-  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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_c89=$ac_arg
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-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:$LINENO: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-
-
-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:$LINENO: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; 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'.
-  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 8's {/usr,}/bin/sh.
-      touch 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
-      ;;
-    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:$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:$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 test "${ac_cv_prog_CPP+set}" = set; 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> 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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  # Broken: success on invalid input.
-continue
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f 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:$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 <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> 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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  # Broken: success on invalid input.
-continue
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
-else
-  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-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:$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 test "${ac_cv_path_GREP+set}" = set; 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"
-      { test -f "$ac_path_GREP" && $as_test_x "$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
-    ac_count=`expr $ac_count + 1`
-    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_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; 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"
-      { test -f "$ac_path_EGREP" && $as_test_x "$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
-    ac_count=`expr $ac_count + 1`
-    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_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_stdc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <string.h>
-
-_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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#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
-rm -f 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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-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
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-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`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-  if test "${ac_cv_header_minix_config_h+set}" = set; then
-  { $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
-$as_echo_n "checking for minix/config.h... " >&6; }
-if test "${ac_cv_header_minix_config_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
-$as_echo "$ac_cv_header_minix_config_h" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5
-$as_echo_n "checking minix/config.h usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <minix/config.h>
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5
-$as_echo_n "checking minix/config.h presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <minix/config.h>
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$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:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: minix/config.h:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: minix/config.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
-$as_echo_n "checking for minix/config.h... " >&6; }
-if test "${ac_cv_header_minix_config_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_header_minix_config_h=$ac_header_preproc
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
-$as_echo "$ac_cv_header_minix_config_h" >&6; }
-
-fi
-if test "x$ac_cv_header_minix_config_h" = x""yes; then
-  MINIX=yes
-else
-  MINIX=
-fi
-
-
-  if test "$MINIX" = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _POSIX_SOURCE 1
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
-#define _POSIX_1_SOURCE 2
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
-#define _MINIX 1
-_ACEOF
-
-  fi
-
-
-
-  { $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if test "${ac_cv_safe_to_define___extensions__+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#	  define __EXTENSIONS__ 1
-	  $ac_includes_default
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_safe_to_define___extensions__=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_safe_to_define___extensions__=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$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 &&
-    cat >>confdefs.h <<\_ACEOF
-#define __EXTENSIONS__ 1
-_ACEOF
-
-  cat >>confdefs.h <<\_ACEOF
-#define _ALL_SOURCE 1
-_ACEOF
-
-  cat >>confdefs.h <<\_ACEOF
-#define _GNU_SOURCE 1
-_ACEOF
-
-  cat >>confdefs.h <<\_ACEOF
-#define _POSIX_PTHREAD_SEMANTICS 1
-_ACEOF
-
-  cat >>confdefs.h <<\_ACEOF
-#define _TANDEM_SOURCE 1
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$fullversion"
-_ACEOF
-
-
-
-
-
-# Check whether --with-distribution was given.
-if test "${with_distribution+set}" = set; then
-  withval=$with_distribution; distribution=$withval
-fi
-
-
-
-
-# Check whether --with-target was given.
-if test "${with_target+set}" = set; then
-  withval=$with_target; target=$withval
-fi
-
-case $target in
-  Linux|linux)
-    cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_LINUX
-_ACEOF
-
-    target="Linux"
-    ;;
-  BSD| bsd)
-    cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_BSD
-_ACEOF
-
-    target="BSD"
-    ;;
-  Cygwin|CYGWIN|cygwin)
-    cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_CYGWIN
-_ACEOF
-
-    target="cygwin"
-    ;;
-  autodetect)
-    ;;
-  *)
-    { { $as_echo "$as_me:$LINENO: error: --with-target must have Linux, BSD or Cygwin as parameter." >&5
-$as_echo "$as_me: error: --with-target must have Linux, BSD or Cygwin as parameter." >&2;}
-   { (exit 1); exit 1; }; }
-    ;;
-esac
-
-
-# Check whether --with-cachedir was given.
-if test "${with_cachedir+set}" = set; then
-  withval=$with_cachedir; cachedir=$withval
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define CACHEDIR "$cachedir"
-_ACEOF
-
-
-
-# Check whether --enable-isdn was given.
-if test "${enable_isdn+set}" = set; then
-  enableval=$enable_isdn; test $enableval = "yes" && cat >>confdefs.h <<\_ACEOF
-#define ISDN_SUPPORT 1
-_ACEOF
-
-fi
-
-
-# Check whether --enable-ipv4 was given.
-if test "${enable_ipv4+set}" = set; then
-  enableval=$enable_ipv4; have_ipv4=$enableval
-fi
-
-
-test $have_ipv4 = "yes" && cat >>confdefs.h <<\_ACEOF
-#define ENABLE_IPV4 1
-_ACEOF
-
-
-# Check whether --enable-ipv6 was given.
-if test "${enable_ipv6+set}" = set; then
-  enableval=$enable_ipv6;  if test $enableval = "yes" ; then
-    cat >>confdefs.h <<\_ACEOF
-#define ENABLE_IPV6 1
-_ACEOF
-
-    if test $have_ipv4 != "yes" ; then
-      ipv4_default=0
-    fi
-  fi
-fi
-
-
-# Check whether --enable-ipv4-startup was given.
-if test "${enable_ipv4_startup+set}" = set; then
-  enableval=$enable_ipv4_startup;  if test $enableval = "yes" ; then
-    ipv4_default=1
-  else
-    ipv4_default=0
-  fi
-fi
-
-
-# Check whether --enable-ipv6-startup was given.
-if test "${enable_ipv6_startup+set}" = set; then
-  enableval=$enable_ipv6_startup;  if test $enableval = "yes" ; then
-    ipv4_default=0
-  else
-    ipv4_default=1
-  fi
-fi
-
-
-cat >>confdefs.h <<_ACEOF
-#define DEFAULT_IPV4 $ipv4_default
-_ACEOF
-
-
-# Check whether --enable-udp-queries was given.
-if test "${enable_udp_queries+set}" = set; then
-  enableval=$enable_udp_queries; udp_queries=$enableval
-fi
-
-
-# Check whether --enable-tcp-queries was given.
-if test "${enable_tcp_queries+set}" = set; then
-  enableval=$enable_tcp_queries; tcp_queries=$enableval
-fi
-
-
-
-# Check whether --with-query-method was given.
-if test "${with_query_method+set}" = set; then
-  withval=$with_query_method; query_m=$withval
-fi
-
-case $query_m in
-  udponly|UDPonly)
-    cat >>confdefs.h <<\_ACEOF
-#define M_PRESET UDP_ONLY
-_ACEOF
-
-    udp_queries=yes;
-    ;;
-  tcponly|TCPonly)
-    cat >>confdefs.h <<\_ACEOF
-#define M_PRESET TCP_ONLY
-_ACEOF
-
-    tcp_queries=yes;
-    ;;
-  tcpudp|TCPUDP)
-    cat >>confdefs.h <<\_ACEOF
-#define M_PRESET TCP_UDP
-_ACEOF
-
-    udp_queries=yes;
-    tcp_queries=yes;
-    ;;
-  udptcp|UDPTCP)
-    cat >>confdefs.h <<\_ACEOF
-#define M_PRESET UDP_TCP
-_ACEOF
-
-    udp_queries=yes;
-    tcp_queries=yes;
-    ;;
-  *)
-    { { $as_echo "$as_me:$LINENO: error: --with-query-method must have udponly, tcponly, tcpudp or udptcp as parameter." >&5
-$as_echo "$as_me: error: --with-query-method must have udponly, tcponly, tcpudp or udptcp as parameter." >&2;}
-   { (exit 1); exit 1; }; }
-    ;;
-esac
-
-test $udp_queries != "yes" && cat >>confdefs.h <<\_ACEOF
-#define NO_UDP_QUERIES 1
-_ACEOF
-
-test $tcp_queries != "yes" && cat >>confdefs.h <<\_ACEOF
-#define NO_TCP_QUERIES 1
-_ACEOF
-
-
-# Check whether --enable-tcp-server was given.
-if test "${enable_tcp_server+set}" = set; then
-  enableval=$enable_tcp_server; have_tcp_server=$enableval
-fi
-
-
-test $have_tcp_server != "yes" && cat >>confdefs.h <<\_ACEOF
-#define NO_TCP_SERVER 1
-_ACEOF
-
-
-# Check whether --enable-src-addr-disc was given.
-if test "${enable_src_addr_disc+set}" = set; then
-  enableval=$enable_src_addr_disc; adisc=$enableval
-fi
-
-
-# Check whether --enable-socket-locking was given.
-if test "${enable_socket_locking+set}" = set; then
-  enableval=$enable_socket_locking; slock=$enableval
-fi
-
-
-test $slock = "yes" && cat >>confdefs.h <<\_ACEOF
-#define SOCKET_LOCKING 1
-_ACEOF
-
-
-# Check whether --enable-poll was given.
-if test "${enable_poll+set}" = set; then
-  enableval=$enable_poll; test $enableval != "yes" && cat >>confdefs.h <<\_ACEOF
-#define NO_POLL 1
-_ACEOF
-
-fi
-
-
-# Check whether --enable-new-rrs was given.
-if test "${enable_new_rrs+set}" = set; then
-  enableval=$enable_new_rrs; newrrs=$enableval
-fi
-
-
-# Check whether --enable-strict-rfc2181 was given.
-if test "${enable_strict_rfc2181+set}" = set; then
-  enableval=$enable_strict_rfc2181; test $enableval = "yes" && cat >>confdefs.h <<\_ACEOF
-#define RFC2181_ME_HARDER 1
-_ACEOF
-
-fi
-
-
-
-# Check whether --with-random-device was given.
-if test "${with_random_device+set}" = set; then
-  withval=$with_random_device; randomdev=$withval
-fi
-
-
-if test "$randomdev" = arc4random ; then
-	cat >>confdefs.h <<\_ACEOF
-#define R_ARC4RANDOM 1
-_ACEOF
-
-elif test "$randomdev" = random ; then
-	cat >>confdefs.h <<\_ACEOF
-#define R_RANDOM 1
-_ACEOF
-
-elif test "$randomdev" = default ; then
-	cat >>confdefs.h <<\_ACEOF
-#define R_DEFAULT 1
-_ACEOF
-
-else
-	cat >>confdefs.h <<_ACEOF
-#define RANDOM_DEVICE "$randomdev"
-_ACEOF
-
-fi
-
-# Check whether --enable-underscores was given.
-if test "${enable_underscores+set}" = set; then
-  enableval=$enable_underscores; underscores=$enableval
-fi
-
-
-
-# Check whether --with-default-id was given.
-if test "${with_default_id+set}" = set; then
-  withval=$with_default_id; def_id=$withval
-fi
-
-
-
-
-# Check whether --with-debug was given.
-if test "${with_debug+set}" = set; then
-  withval=$with_debug; cat >>confdefs.h <<_ACEOF
-#define DEBUG $withval
-_ACEOF
-
-fi
-
-
-
-# Check whether --with-verbosity was given.
-if test "${with_verbosity+set}" = set; then
-  withval=$with_verbosity; cat >>confdefs.h <<_ACEOF
-#define VERBOSITY $withval
-_ACEOF
-
-fi
-
-
-
-# Check whether --with-hash-buckets was given.
-if test "${with_hash_buckets+set}" = set; then
-  withval=$with_hash_buckets; powof2=1
-  hashsz=0
-
-  while test $powof2 -lt "$withval"
-  do
-    powof2=`expr 2 '*' $powof2`
-    hashsz=`expr $hashsz '+' 1`
-  done
-  cat >>confdefs.h <<_ACEOF
-#define HASH_SZ $hashsz
-_ACEOF
-
-
-fi
-
-
-# Check whether --enable-hash-debug was given.
-if test "${enable_hash_debug+set}" = set; then
-  enableval=$enable_hash_debug; test $enableval = "yes" && cat >>confdefs.h <<\_ACEOF
-#define DEBUG_HASH 1
-_ACEOF
-
-fi
-
-
-# Check whether --enable-rcsids was given.
-if test "${enable_rcsids+set}" = set; then
-  enableval=$enable_rcsids; have_rcsids=$enableval
-fi
-
-
-
-# Check whether --with-tcp-qtimeout was given.
-if test "${with_tcp_qtimeout+set}" = set; then
-  withval=$with_tcp_qtimeout; cat >>confdefs.h <<_ACEOF
-#define TCP_TIMEOUT $withval
-_ACEOF
-
-fi
-
-
-# Check whether --enable-tcp-subseq was given.
-if test "${enable_tcp_subseq+set}" = set; then
-  enableval=$enable_tcp_subseq; test $enableval = "yes" && cat >>confdefs.h <<\_ACEOF
-#define TCP_SUBSEQ 1
-_ACEOF
-
-fi
-
-
-
-# Check whether --with-par-queries was given.
-if test "${with_par_queries+set}" = set; then
-  withval=$with_par_queries; cat >>confdefs.h <<_ACEOF
-#define PAR_QUERIES $withval
-_ACEOF
-
-fi
-
-
-
-# Check whether --with-max-nameserver-ips was given.
-if test "${with_max_nameserver_ips+set}" = set; then
-  withval=$with_max_nameserver_ips; cat >>confdefs.h <<_ACEOF
-#define MAXNAMESERVIPS $withval
-_ACEOF
-
-fi
-
-
-# Check whether --enable-specbuild was given.
-if test "${enable_specbuild+set}" = set; then
-  enableval=$enable_specbuild; specbuild=$enableval
-fi
-
-
-
-
-
-# Check whether --with-thread-lib was given.
-if test "${with_thread_lib+set}" = set; then
-  withval=$with_thread_lib; threadlib=$withval
-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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$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:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-
-{ $as_echo "$as_me:$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 test "${ac_cv_c_compiler_gnu+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_compiler_gnu=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	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:$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:$LINENO: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; 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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-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:$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:$LINENO: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* 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"
-  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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_c89=$ac_arg
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-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:$LINENO: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-
-
-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:$LINENO: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; 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'.
-  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 8's {/usr,}/bin/sh.
-      touch 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
-      ;;
-    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:$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
-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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:$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:$LINENO: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:$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:$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:$LINENO: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-
-{ $as_echo "$as_me:$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 test "${ac_cv_c_compiler_gnu+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_compiler_gnu=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	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:$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:$LINENO: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; 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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_g=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-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:$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:$LINENO: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* 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"
-  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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cc_c89=$ac_arg
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-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:$LINENO: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-
-
-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:$LINENO: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; 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'.
-  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 8's {/usr,}/bin/sh.
-      touch 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
-      ;;
-    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:$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
-
-
-
-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
-
-if test "x$CC" != xcc; then
-  { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
-$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
-else
-  { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5
-$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
-fi
-set dummy $CC; ac_cc=`$as_echo "$2" |
-		      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-# Make sure it works both with $CC and with simple cc.
-# We do the test twice because some compilers refuse to overwrite an
-# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-rm -f conftest2.*
-if { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-   test -f conftest2.$ac_objext && { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); };
-then
-  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
-  if test "x$CC" != xcc; then
-    # Test first that cc exists at all.
-    if { ac_try='cc -c conftest.$ac_ext >&5'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-      rm -f conftest2.*
-      if { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 test -f conftest2.$ac_objext && { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); };
-      then
-	# cc works too.
-	:
-      else
-	# cc exists but doesn't like -o.
-	eval ac_cv_prog_cc_${ac_cc}_c_o=no
-      fi
-    fi
-  fi
-else
-  eval ac_cv_prog_cc_${ac_cc}_c_o=no
-fi
-rm -f core conftest*
-
-fi
-if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-
-cat >>confdefs.h <<\_ACEOF
-#define NO_MINUS_C_MINUS_O 1
-_ACEOF
-
-fi
-
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != 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
-
-
-# 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:$LINENO: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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:$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'
-
-
-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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:$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:$LINENO: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:$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:$LINENO: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:$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:$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
-
-
-if test "$target" = "autodetect" ; then
-  { $as_echo "$as_me:$LINENO: checking for autodetect build target" >&5
-$as_echo_n "checking for autodetect build target... " >&6; }
-  uname_sys=`uname`
-  if test $? -ne 0 ; then
-    { $as_echo "$as_me:$LINENO: result: failed" >&5
-$as_echo "failed" >&6; }
-    { { $as_echo "$as_me:$LINENO: error: uname failed or was not found in path" >&5
-$as_echo "$as_me: error: uname failed or was not found in path" >&2;}
-   { (exit 1); exit 1; }; }
-  else
-    case "${uname_sys}" in
-    Linux)
-      { $as_echo "$as_me:$LINENO: result: Linux" >&5
-$as_echo "Linux" >&6; }
-      cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_LINUX
-_ACEOF
-
-      target="Linux"
-      ;;
-    FreeBSD|NetBSD|OpenBSD|Darwin)
-      { $as_echo "$as_me:$LINENO: result: \"${uname_sys}\"" >&5
-$as_echo "\"${uname_sys}\"" >&6; }
-      cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_BSD
-_ACEOF
-
-      target="BSD"
-      ;;
-    CYGWIN*)
-      { $as_echo "$as_me:$LINENO: result: \"${uname_sys}\"" >&5
-$as_echo "\"${uname_sys}\"" >&6; }
-      cat >>confdefs.h <<\_ACEOF
-#define TARGET TARGET_CYGWIN
-_ACEOF
-
-      target="cygwin"
-      ;;
-    *)
-      { $as_echo "$as_me:$LINENO: result: failed" >&5
-$as_echo "failed" >&6; }
-      { { $as_echo "$as_me:$LINENO: error: Your system type could not be identified. Try setting it manually using
---with-target" >&5
-$as_echo "$as_me: error: Your system type could not be identified. Try setting it manually using
---with-target" >&2;}
-   { (exit 1); exit 1; }; }
-      ;;
-    esac
-  fi
-fi
-
-#if test "$target" = BSD ; then
-#  uname_sys=`uname`
-#  if test "$uname_sys" = FreeBSD ; then
-#    AC_MSG_CHECKING([for FreeBSD version])
-#    osrel=`sysctl -n kern.osreldate`
-#    if test $osrel -ge 500016 ; then
-#      AC_MSG_RESULT([5.0 (>= 500016)])
-#      freebsd_pthread="5"
-#    else
-#      AC_MSG_RESULT([<=5.0 (< 500016)])
-#      freebsd_pthread="4"
-#    fi
-#  fi
-#fi
-
-if test "$adisc" = "default"; then
-  if test "$target" = "cygwin" ; then
-# Don't do UDP source address discovery on Cygwin platform by default.
-    adisc="no"
-  else
-    adisc="yes"
-  fi
-fi
-
-test "$adisc" = "yes" && cat >>confdefs.h <<\_ACEOF
-#define SRC_ADDR_DISC 1
-_ACEOF
-
-
-
-if test "$target" = "Linux"; then
-{ $as_echo "$as_me:$LINENO: checking if we can compile and link with -pthread" >&5
-$as_echo_n "checking if we can compile and link with -pthread... " >&6; }
-old_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -pthread"
-cat >conftest.$ac_ext <<_ACEOF
-
-#include <pthread.h>
-
-void *thread_func(void *data)
-{
-	*((int *)data)=1;
-	return data;
-}
-
-int main()
-{
-	pthread_t thread;
-	void *retval;
-	int val;
-
-	if(pthread_create(&thread, NULL, thread_func, &val))
-		return 1;
-
-	if(pthread_join(thread,&retval))
-		return 1;
-
-	return (*((int *)retval)!=1);
-}
-
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  gcc_pthread_flag="yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	gcc_pthread_flag="no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-CFLAGS="$old_CFLAGS"
-{ $as_echo "$as_me:$LINENO: result: $gcc_pthread_flag" >&5
-$as_echo "$gcc_pthread_flag" >&6; }
-
-  if test "$gcc_pthread_flag" = yes ; then
-    thread_CFLAGS="-pthread"
-
-  else
-
-{ $as_echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
-$as_echo_n "checking for pthread_create in -lpthread... " >&6; }
-if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpthread  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* 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 pthread_create ();
-int
-main ()
-{
-return pthread_create ();
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_lib_pthread_pthread_create=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_pthread_pthread_create=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
-$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_create" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBPTHREAD 1
-_ACEOF
-
-  LIBS="-lpthread $LIBS"
-
-fi
-
-  fi
-fi
-if test "$target" = "BSD" -a `uname` != Darwin ; then
-#  if test $freebsd_pthread = 4 ; then
-    thread_CFLAGS="-pthread"
-
-#  else
-#    AC_CHECK_LIB(c_r, pthread_create, ,
-#      AC_MSG_ERROR([You must have libc_r installed to build/run pdnsd!]))
-#  fi;
-fi
-
-if test "$target" = "Linux" -a "$threadlib" = default; then
-{ $as_echo "$as_me:$LINENO: checking if this is an NPTL-based system" >&5
-$as_echo_n "checking if this is an NPTL-based system... " >&6; }
-old_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS $thread_CFLAGS"
-if test "$cross_compiling" = yes; then
-
-  { $as_echo "$as_me:$LINENO: result: couldn't run test program" >&5
-$as_echo "couldn't run test program" >&6; }
-  threadlib=linuxthreads
-
-else
-  cat >conftest.$ac_ext <<_ACEOF
-
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <pthread.h>
-
-/* All this function does is return its PID (in a roundabout way). */
-void *thread_func(void *data)
-{
-	*((int *)data)=getpid();
-	return data;
-}
-
-int main()
-{
-	pthread_t thread;
-	void *retval;
-	int err,mainpid,thrdpid;
-
-	err=pthread_create(&thread, NULL, thread_func, &thrdpid);
-	if(err) {
-		fprintf(stderr,"pthread_create failed: %s\n",strerror(err));
-		return 1;
-	}
-	err=pthread_join(thread,&retval);
-	if(err) {
-		fprintf(stderr,"pthread_join failed: %s\n",strerror(err));
-		return 1;
-	}
-	mainpid=getpid();
-	/* In LinuxThreads implementations, the pids of the threads will usually differ
-	   in a non Posix-compliant way. */
-	fprintf(stderr,"main pid=%d, thread pid=%d\n",mainpid,*((int *)retval));
-	return (*((int *)retval)!=mainpid);
-}
-
-_ACEOF
-rm -f 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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-  { $as_echo "$as_me:$LINENO: result: yes" >&5
-$as_echo "yes" >&6; }
-  threadlib=nptl
-
-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
-
-( exit $ac_status )
-
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-  threadlib=linuxthreads
-
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-CFLAGS="$old_CFLAGS"
-fi
-
-if test "$threadlib" = nptl -o "$threadlib" = NPTL; then
-	cat >>confdefs.h <<\_ACEOF
-#define THREADLIB_NPTL 1
-_ACEOF
-
-elif test "$threadlib" = linuxthreads2 -o "$threadlib" = LinuxThreads2 -o "$threadlib" = lt2; then
-	cat >>confdefs.h <<\_ACEOF
-#define THREADLIB_LINUXTHREADS2 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_stdc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <string.h>
-
-_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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#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
-rm -f 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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-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
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5
-$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
-if test "${ac_cv_header_sys_wait_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/wait.h>
-#ifndef WEXITSTATUS
-# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
-#endif
-#ifndef WIFEXITED
-# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif
-
-int
-main ()
-{
-  int s;
-  wait (&s);
-  s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_sys_wait_h=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_header_sys_wait_h=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
-$as_echo "$ac_cv_header_sys_wait_h" >&6; }
-if test $ac_cv_header_sys_wait_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_WAIT_H 1
-_ACEOF
-
-fi
-
-
-
-
-
-
-
-for ac_header in fcntl.h malloc.h sys/ioctl.h sys/time.h syslog.h unistd.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
-$as_echo_n "checking $ac_header usability... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
-$as_echo_n "checking $ac_header presence... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ $as_echo "$as_me:$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:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
-fi
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-for ac_header in sys/types.h sys/socket.h net/if.h netinet/in.h sys/poll.h
-do
-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
-$as_echo_n "checking for $ac_header... " >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdio.h>
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# if HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_Header'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
-  typedef int charset[2];
-  const charset cs;
-  /* SunOS 4.1.1 cc rejects this.  */
-  char const *const *pcpcc;
-  char **ppc;
-  /* NEC SVR4.0.2 mips cc rejects this.  */
-  struct point {int x, y;};
-  static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
-     It does not let you subtract one const X* pointer from another in
-     an arm of an if-expression whose if-part is not a constant
-     expression */
-  const char *g = "string";
-  pcpcc = &g + (g ? g-g : 0);
-  /* HPUX 7.0 cc rejects these. */
-  ++pcpcc;
-  ppc = (char**) pcpcc;
-  pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
-    char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-    *t++ = 0;
-    if (s) return 0;
-  }
-  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-    int x[] = {25, 17};
-    const int *foo = &x[0];
-    ++foo;
-  }
-  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-    typedef const int *iptr;
-    iptr p = 0;
-    ++p;
-  }
-  { /* AIX XL C 1.02.0.0 rejects this saying
-       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
-  }
-  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-    const int foo = 10;
-    if (!foo) return 0;
-  }
-  return !cs[0] && !zero.x;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_c_const=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_c_const=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-cat >>confdefs.h <<\_ACEOF
-#define const /**/
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for pid_t" >&5
-$as_echo_n "checking for pid_t... " >&6; }
-if test "${ac_cv_type_pid_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_pid_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (pid_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((pid_t)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_pid_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
-$as_echo "$ac_cv_type_pid_t" >&6; }
-if test "x$ac_cv_type_pid_t" = x""yes; then
-  :
-else
-
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for size_t" >&5
-$as_echo_n "checking for size_t... " >&6; }
-if test "${ac_cv_type_size_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_size_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof (size_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if (sizeof ((size_t)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_size_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
-$as_echo "$ac_cv_type_size_t" >&6; }
-if test "x$ac_cv_type_size_t" = x""yes; then
-  :
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if test "${ac_cv_header_time+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_time=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_header_time=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define TIME_WITH_SYS_TIME 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
-$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
-if test "${ac_cv_struct_tm+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <time.h>
-
-int
-main ()
-{
-struct tm tm;
-				     int *p = &tm.tm_sec;
-				     return !p;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_struct_tm=time.h
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_struct_tm=sys/time.h
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
-$as_echo "$ac_cv_struct_tm" >&6; }
-if test $ac_cv_struct_tm = sys/time.h; then
-
-cat >>confdefs.h <<\_ACEOF
-#define TM_IN_SYS_TIME 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for socklen_t" >&5
-$as_echo_n "checking for socklen_t... " >&6; }
-if test "${ac_cv_type_socklen_t+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_socklen_t=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof (socklen_t))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof ((socklen_t)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_socklen_t=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
-$as_echo "$ac_cv_type_socklen_t" >&6; }
-if test "x$ac_cv_type_socklen_t" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_SOCKLEN_T 1
-_ACEOF
-
-
-else
-  cat >>confdefs.h <<\_ACEOF
-#define socklen_t int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for struct in6_addr" >&5
-$as_echo_n "checking for struct in6_addr... " >&6; }
-if test "${ac_cv_type_struct_in6_addr+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_struct_in6_addr=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof (struct in6_addr))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof ((struct in6_addr)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_struct_in6_addr=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_in6_addr" >&5
-$as_echo "$ac_cv_type_struct_in6_addr" >&6; }
-if test "x$ac_cv_type_struct_in6_addr" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IN6_ADDR 1
-_ACEOF
-
-
-fi
-{ $as_echo "$as_me:$LINENO: checking for struct in_pktinfo" >&5
-$as_echo_n "checking for struct in_pktinfo... " >&6; }
-if test "${ac_cv_type_struct_in_pktinfo+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_struct_in_pktinfo=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof (struct in_pktinfo))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof ((struct in_pktinfo)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_struct_in_pktinfo=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_in_pktinfo" >&5
-$as_echo "$ac_cv_type_struct_in_pktinfo" >&6; }
-if test "x$ac_cv_type_struct_in_pktinfo" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IN_PKTINFO 1
-_ACEOF
-
-
-fi
-{ $as_echo "$as_me:$LINENO: checking for struct ifreq" >&5
-$as_echo_n "checking for struct ifreq... " >&6; }
-if test "${ac_cv_type_struct_ifreq+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_type_struct_ifreq=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof (struct ifreq))
-       return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>
-
-int
-main ()
-{
-if (sizeof ((struct ifreq)))
-	  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_struct_ifreq=yes
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_struct_ifreq" >&5
-$as_echo "$ac_cv_type_struct_ifreq" >&6; }
-if test "x$ac_cv_type_struct_ifreq" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IFREQ 1
-_ACEOF
-
-
-fi
-
-
-{ $as_echo "$as_me:$LINENO: checking for CPP C99 Variadic macro support" >&5
-$as_echo_n "checking for CPP C99 Variadic macro support... " >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-
-#define a(...) junk(0,__VA_ARGS__)
-extern void junk(int i,...);
-int main()
-{
-  a(0);
-  a("a");
-  a(0, "a", 1);
-  return 0;
-}
-
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  cpp_c99_variadic="yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	cpp_c99_variadic="no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:$LINENO: result: $cpp_c99_variadic" >&5
-$as_echo "$cpp_c99_variadic" >&6; }
-if test $cpp_c99_variadic = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define CPP_C99_VARIADIC_MACROS 1
-_ACEOF
-
-else
-  if test "$GCC" != yes; then
-    { { $as_echo "$as_me:$LINENO: error: Compiler must support C99 or gcc variadic macros" >&5
-$as_echo "$as_me: error: Compiler must support C99 or gcc variadic macros" >&2;}
-   { (exit 1); exit 1; }; }
-  fi;
-fi
-
-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments.  Useless!
-{ $as_echo "$as_me:$LINENO: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if test "${ac_cv_working_alloca_h+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
-			  if (p) return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_working_alloca_h=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_working_alloca_h=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
-if test $ac_cv_working_alloca_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALLOCA_H 1
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if test "${ac_cv_func_alloca_works+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-#  include <malloc.h>
-#  define alloca _alloca
-# else
-#  ifdef HAVE_ALLOCA_H
-#   include <alloca.h>
-#  else
-#   ifdef _AIX
- #pragma alloca
-#   else
-#    ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
-#    endif
-#   endif
-#  endif
-# endif
-#endif
-
-int
-main ()
-{
-char *p = (char *) alloca (1);
-				    if (p) return 0;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func_alloca_works=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_func_alloca_works=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
-
-if test $ac_cv_func_alloca_works = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALLOCA 1
-_ACEOF
-
-else
-  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-# that cause trouble.  Some versions do not even contain alloca or
-# contain a buggy version.  If you still want to use their alloca,
-# use ar to extract alloca.o from them instead of compiling alloca.c.
-
-ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
-
-cat >>confdefs.h <<\_ACEOF
-#define C_ALLOCA 1
-_ACEOF
-
-
-{ $as_echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if test "${ac_cv_os_cray+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "webecray" >/dev/null 2>&1; then
-  ac_cv_os_cray=yes
-else
-  ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
-  for ac_func in _getb67 GETB67 getb67; do
-    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* 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 $ac_func ();
-/* 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_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
-_ACEOF
-
-    break
-fi
-
-  done
-fi
-
-{ $as_echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if test "${ac_cv_c_stack_direction+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_c_stack_direction=0
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-find_stack_direction ()
-{
-  static char *addr = 0;
-  auto char dummy;
-  if (addr == 0)
-    {
-      addr = &dummy;
-      return find_stack_direction ();
-    }
-  else
-    return (&dummy > addr) ? 1 : -1;
-}
-
-int
-main ()
-{
-  return find_stack_direction () < 0;
-}
-_ACEOF
-rm -f 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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_c_stack_direction=1
-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
-
-( exit $ac_status )
-ac_cv_c_stack_direction=-1
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
-
-
-fi
-
-if test $ac_cv_c_compiler_gnu = yes; then
-    { $as_echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5
-$as_echo_n "checking whether $CC needs -traditional... " >&6; }
-if test "${ac_cv_prog_gcc_traditional+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-    ac_pattern="Autoconf.*'x'"
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sgtty.h>
-Autoconf TIOCGETP
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "$ac_pattern" >/dev/null 2>&1; then
-  ac_cv_prog_gcc_traditional=yes
-else
-  ac_cv_prog_gcc_traditional=no
-fi
-rm -f conftest*
-
-
-  if test $ac_cv_prog_gcc_traditional = no; then
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <termio.h>
-Autoconf TCGETA
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "$ac_pattern" >/dev/null 2>&1; then
-  ac_cv_prog_gcc_traditional=yes
-fi
-rm -f conftest*
-
-  fi
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5
-$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
-  if test $ac_cv_prog_gcc_traditional = yes; then
-    CC="$CC -traditional"
-  fi
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for working memcmp" >&5
-$as_echo_n "checking for working memcmp... " >&6; }
-if test "${ac_cv_func_memcmp_working+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_memcmp_working=no
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-
-  /* Some versions of memcmp are not 8-bit clean.  */
-  char c0 = '\100', c1 = '\200', c2 = '\201';
-  if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0)
-    return 1;
-
-  /* The Next x86 OpenStep bug shows up only when comparing 16 bytes
-     or more and with at least one buffer not starting on a 4-byte boundary.
-     William Lewis provided this test program.   */
-  {
-    char foo[21];
-    char bar[21];
-    int i;
-    for (i = 0; i < 4; i++)
-      {
-	char *a = foo + i;
-	char *b = bar + i;
-	strcpy (a, "--------01111111");
-	strcpy (b, "--------10000000");
-	if (memcmp (a, b, 16) >= 0)
-	  return 1;
-      }
-    return 0;
-  }
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f 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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_memcmp_working=yes
-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
-
-( exit $ac_status )
-ac_cv_func_memcmp_working=no
-fi
-rm -rf conftest.dSYM
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-
-
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5
-$as_echo "$ac_cv_func_memcmp_working" >&6; }
-test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in
-  *" memcmp.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS memcmp.$ac_objext"
- ;;
-esac
-
-
-{ $as_echo "$as_me:$LINENO: checking return type of signal handlers" >&5
-$as_echo_n "checking return type of signal handlers... " >&6; }
-if test "${ac_cv_type_signal+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <signal.h>
-
-int
-main ()
-{
-return *(signal (0, 0)) (0) == 1;
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_signal=int
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_type_signal=void
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
-$as_echo "$ac_cv_type_signal" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define RETSIGTYPE $ac_cv_type_signal
-_ACEOF
-
-
-
-for ac_func in vprintf
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* 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 $ac_func ();
-/* 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_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-{ $as_echo "$as_me:$LINENO: checking for _doprnt" >&5
-$as_echo_n "checking for _doprnt... " >&6; }
-if test "${ac_cv_func__doprnt+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define _doprnt to an innocuous variant, in case <limits.h> declares _doprnt.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define _doprnt innocuous__doprnt
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char _doprnt (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef _doprnt
-
-/* 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 _doprnt ();
-/* 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__doprnt || defined __stub____doprnt
-choke me
-#endif
-
-int
-main ()
-{
-return _doprnt ();
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_func__doprnt=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_func__doprnt=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5
-$as_echo "$ac_cv_func__doprnt" >&6; }
-if test "x$ac_cv_func__doprnt" = x""yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DOPRNT 1
-_ACEOF
-
-fi
-
-fi
-done
-
-
-{ $as_echo "$as_me:$LINENO: checking for library containing nanosleep" >&5
-$as_echo_n "checking for library containing nanosleep... " >&6; }
-if test "${ac_cv_search_nanosleep+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* 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 nanosleep ();
-int
-main ()
-{
-return nanosleep ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' rt; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_search_nanosleep=$ac_res
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_nanosleep+set}" = set; then
-  break
-fi
-done
-if test "${ac_cv_search_nanosleep+set}" = set; then
-  :
-else
-  ac_cv_search_nanosleep=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_nanosleep" >&5
-$as_echo "$ac_cv_search_nanosleep" >&6; }
-ac_res=$ac_cv_search_nanosleep
-if test "$ac_res" != no; then
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for library containing socket" >&5
-$as_echo_n "checking for library containing socket... " >&6; }
-if test "${ac_cv_search_socket+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* 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 socket ();
-int
-main ()
-{
-return socket ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' socket; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib -lnsl $ac_func_search_save_LIBS"
-  fi
-  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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_search_socket=$ac_res
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_socket+set}" = set; then
-  break
-fi
-done
-if test "${ac_cv_search_socket+set}" = set; then
-  :
-else
-  ac_cv_search_socket=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_socket" >&5
-$as_echo "$ac_cv_search_socket" >&6; }
-ac_res=$ac_cv_search_socket
-if test "$ac_res" != no; then
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-{ $as_echo "$as_me:$LINENO: checking for library containing inet_aton" >&5
-$as_echo_n "checking for library containing inet_aton... " >&6; }
-if test "${ac_cv_search_inet_aton+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* 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 inet_aton ();
-int
-main ()
-{
-return inet_aton ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' resolv; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_search_inet_aton=$ac_res
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext
-  if test "${ac_cv_search_inet_aton+set}" = set; then
-  break
-fi
-done
-if test "${ac_cv_search_inet_aton+set}" = set; then
-  :
-else
-  ac_cv_search_inet_aton=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_inet_aton" >&5
-$as_echo "$ac_cv_search_inet_aton" >&6; }
-ac_res=$ac_cv_search_inet_aton
-if test "$ac_res" != no; then
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-
-
-
-
-
-
-
-
-
-for ac_func in nanosleep gettimeofday mkfifo select socket strerror uname snprintf vsnprintf
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* 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 $ac_func ();
-/* 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_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- true
-else
-  { { $as_echo "$as_me:$LINENO: error: One of the functions required for pdnsd were not found." >&5
-$as_echo "$as_me: error: One of the functions required for pdnsd were not found." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-done
-
-
-for ac_func in poll
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* 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 $ac_func ();
-/* 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_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- true
-else
-  cat >>confdefs.h <<\_ACEOF
-#define NO_POLL 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in strdup strndup stpcpy stpncpy strlcpy mempcpy getline asprintf vasprintf getpwnam_r inet_ntop inet_pton
-do
-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
-$as_echo_n "checking for $ac_func... " >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* 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 $ac_func ();
-/* 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_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-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:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  eval "$as_ac_var=yes"
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-	       { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-as_val=`eval 'as_val=${'$as_ac_var'}
-		 $as_echo "$as_val"'`
-   if test "x$as_val" = x""yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-ac_config_files="$ac_config_files pdnsd.spec Makefile file-list.base contrib/Makefile doc/Makefile doc/pdnsd.8 doc/pdnsd.conf.5 doc/pdnsd.conf src/Makefile src/pdnsd-ctl/Makefile src/rc/Makefile src/rc/RedHat/Makefile src/rc/RedHat/pdnsd src/rc/SuSE/Makefile src/rc/SuSE/pdnsd src/rc/Debian/Makefile src/rc/Debian/pdnsd src/rc/Slackware/Makefile src/rc/Slackware/rc.pdnsd src/rc/ArchLinux/Makefile src/rc/ArchLinux/pdnsd src/test/Makefile PKGBUILD"
-
-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:$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= ;; #(
-      *) $as_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
-    test "x$cache_file" != "x/dev/null" &&
-      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
-  else
-    { $as_echo "$as_me:$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=
-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.
-  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
- if test -n "$EXEEXT"; then
-  am__EXEEXT_TRUE=
-  am__EXEEXT_FALSE='#'
-else
-  am__EXEEXT_TRUE='#'
-  am__EXEEXT_FALSE=
-fi
-
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-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:$LINENO: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF || ac_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}
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_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
-
-
-
-
-# PATH needs CR
-# 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_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
-if (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
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-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.
-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); exit 1; }
-fi
-
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# Required to use basename.
-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
-
-
-# Name of the executable.
-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'`
-
-# CDPATH.
-$as_unset CDPATH
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  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
-   { (exit 1); exit 1; }; }
-
-  # 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
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
-  case `echo 'x\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-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 -p'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -p'
-  fi
-else
-  as_ln_s='cp -p'
-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=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# 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
-
-# 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 $as_me, which was
-generated by GNU Autoconf 2.63.  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 from templates according to the
-current configuration.
-
-Usage: $0 [OPTION]... [FILE]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, 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 <bug-autoconf at gnu.org>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_version="\\
-config.status
-configured by $0, generated by GNU Autoconf 2.63,
-  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright (C) 2008 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=$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 ;;
-  --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"` ;;
-    esac
-    CONFIG_FILES="$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
-    CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    { $as_echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; };;
-  --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_echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; } ;;
-
-  *) ac_config_targets="$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"
-
-_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
-    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
-    "pdnsd.spec") CONFIG_FILES="$CONFIG_FILES pdnsd.spec" ;;
-    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "file-list.base") CONFIG_FILES="$CONFIG_FILES file-list.base" ;;
-    "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;;
-    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
-    "doc/pdnsd.8") CONFIG_FILES="$CONFIG_FILES doc/pdnsd.8" ;;
-    "doc/pdnsd.conf.5") CONFIG_FILES="$CONFIG_FILES doc/pdnsd.conf.5" ;;
-    "doc/pdnsd.conf") CONFIG_FILES="$CONFIG_FILES doc/pdnsd.conf" ;;
-    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "src/pdnsd-ctl/Makefile") CONFIG_FILES="$CONFIG_FILES src/pdnsd-ctl/Makefile" ;;
-    "src/rc/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/Makefile" ;;
-    "src/rc/RedHat/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/RedHat/Makefile" ;;
-    "src/rc/RedHat/pdnsd") CONFIG_FILES="$CONFIG_FILES src/rc/RedHat/pdnsd" ;;
-    "src/rc/SuSE/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/SuSE/Makefile" ;;
-    "src/rc/SuSE/pdnsd") CONFIG_FILES="$CONFIG_FILES src/rc/SuSE/pdnsd" ;;
-    "src/rc/Debian/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/Debian/Makefile" ;;
-    "src/rc/Debian/pdnsd") CONFIG_FILES="$CONFIG_FILES src/rc/Debian/pdnsd" ;;
-    "src/rc/Slackware/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/Slackware/Makefile" ;;
-    "src/rc/Slackware/rc.pdnsd") CONFIG_FILES="$CONFIG_FILES src/rc/Slackware/rc.pdnsd" ;;
-    "src/rc/ArchLinux/Makefile") CONFIG_FILES="$CONFIG_FILES src/rc/ArchLinux/Makefile" ;;
-    "src/rc/ArchLinux/pdnsd") CONFIG_FILES="$CONFIG_FILES src/rc/ArchLinux/pdnsd" ;;
-    "src/test/Makefile") CONFIG_FILES="$CONFIG_FILES src/test/Makefile" ;;
-    "PKGBUILD") CONFIG_FILES="$CONFIG_FILES PKGBUILD" ;;
-
-  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
-  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=
-  trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
-' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} ||
-{
-   $as_echo "$as_me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
-
-# 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='
'
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/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 {' >"$tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-
-  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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-  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 >>"\$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
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$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 < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
-$as_echo "$as_me: error: could not setup config files machinery" >&2;}
-   { (exit 1); exit 1; }; }
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ 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[	 ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[	 ]*\):*/\1/
-s/:*$//
-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 >"$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_t=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_t"; then
-    break
-  elif $ac_last_try; then
-    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
-$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
-   { (exit 1); exit 1; }; }
-  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
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$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_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
-$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
-   { (exit 1); exit 1; }; }
-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_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
-$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
-   { (exit 1); exit 1; }; };;
-  :[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="$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_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-   { (exit 1); exit 1; }; };;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      ac_file_inputs="$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:$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 >"$tmp/stdin" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; } ;;
-    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"
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
-  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:$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 "$tmp/subs.awk" >$tmp/out \
-  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:$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 "$tmp/stdin"
-  case $ac_file in
-  -) cat "$tmp/out" && rm -f "$tmp/out";;
-  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
-  esac \
-  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
-    } >"$tmp/config.h" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
-    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$tmp/config.h" "$ac_file" \
-	|| { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
-$as_echo "$as_me: error: could not create $ac_file" >&2;}
-   { (exit 1); exit 1; }; }
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
-      || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
-$as_echo "$as_me: error: could not create -" >&2;}
-   { (exit 1); exit 1; }; }
-  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:$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"" || {
-  # Autoconf 2.62 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"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/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
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
-  done
-}
- ;;
-
-  esac
-done # for ac_tag
-
-
-{ (exit 0); exit 0; }
-_ACEOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-
-
-# 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 || { (exit 1); exit 1; }
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/jni/pdnsd/configure.in b/jni/pdnsd/configure.in
deleted file mode 100644
index 473abf1..0000000
--- a/jni/pdnsd/configure.in
+++ /dev/null
@@ -1,548 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(src)
-
-package="pdnsd"
-version=`cut -d - -f 1  "$srcdir"/version`
-fullversion=`cat "$srcdir"/version`
-packagerelease=`cut -d - -f 2- "$srcdir"/version`
-
-distribution="Generic"
-target="autodetect"
-cachedir="/var/cache/$package"
-ipv4_default=1
-have_ipv4="yes"
-#newrrs="yes"
-query_m="udponly"
-have_tcp_server="yes"
-adisc="default"
-slock="no";
-def_id="nobody"
-#have_rcsids="no"
-udp_queries="yes"
-tcp_queries="yes"
-tempdir="/tmp"
-randomdev=default
-freebsd_pthread="4"
-specbuild=no
-threadlib=default
-
-AM_INIT_AUTOMAKE($package, $version, [no-define])
-AM_CONFIG_HEADER(config.h)
-AC_GNU_SOURCE
-AC_DEFINE_UNQUOTED(VERSION,"$fullversion")
-AC_SUBST(fullversion)
-AC_SUBST(packagerelease)
-
-AC_ARG_WITH(distribution,
-[  --with-distribution=distro  Specify target distribution (default=Generic;
-                              others: RedHat, SuSE, Debian, ArchLinux)],
-  distribution=$withval)
-AC_SUBST(distribution)
-
-AC_ARG_WITH(target,
-[  --with-target=platform      Change compilation target platform (default: 
-                              autodetect; others: Linux, BSD, Cygwin)],
-  target=$withval)
-case $target in
-  Linux|linux)
-    AC_DEFINE(TARGET, TARGET_LINUX)
-    target="Linux"
-    ;;
-  BSD| bsd)
-    AC_DEFINE(TARGET, TARGET_BSD)
-    target="BSD"
-    ;;
-  Cygwin|CYGWIN|cygwin)
-    AC_DEFINE(TARGET, TARGET_CYGWIN)
-    target="cygwin"
-    ;;
-  autodetect)
-    ;;
-  *)
-    AC_MSG_ERROR([--with-target must have Linux, BSD or Cygwin as parameter.])
-    ;;
-esac
-
-AC_ARG_WITH(cachedir,
-[  --with-cachedir=dir         Default directory for pdnsd cache 
-                              (default=/var/cache/pdnsd)],
-  cachedir=$withval)
-AC_DEFINE_UNQUOTED(CACHEDIR, "$cachedir")
-AC_SUBST(cachedir)
-
-AC_ARG_ENABLE(isdn,
-[  --enable-isdn               Enable ISDN support (may cause problems on 
-                              some systems; only for Linux)],
-  test $enableval = "yes" && AC_DEFINE(ISDN_SUPPORT))
-
-AC_ARG_ENABLE(ipv4,
-[  --disable-ipv4              Disable IPv4 networking support 
-                              (default=enabled)],
-  have_ipv4=$enableval)
-
-test $have_ipv4 = "yes" && AC_DEFINE(ENABLE_IPV4)
-
-AC_ARG_ENABLE(ipv6,
-[  --enable-ipv6               Enable IPv6 networking support],
-[ if test $enableval = "yes" ; then
-    AC_DEFINE(ENABLE_IPV6)
-    if test $have_ipv4 != "yes" ; then
-      ipv4_default=0
-    fi
-  fi])
-
-AC_ARG_ENABLE(ipv4-startup,
-[  --disable-ipv4-startup      Disable IPv4 on pdnsd startup by default
-                              (default=enabled)],
-[ if test $enableval = "yes" ; then
-    ipv4_default=1
-  else
-    ipv4_default=0
-  fi])
-
-AC_ARG_ENABLE(ipv6-startup,
-[  --enable-ipv6-startup       Enable IPV6 on pdnsd startup by default
-                              (default=IPv4)],
-[ if test $enableval = "yes" ; then
-    ipv4_default=0
-  else
-    ipv4_default=1
-  fi])
-
-AC_DEFINE_UNQUOTED(DEFAULT_IPV4, $ipv4_default)
-
-AC_ARG_ENABLE(udp-queries,
-[  --disable-udp-queries       Disable udp as query method.],
-  udp_queries=$enableval)
-
-AC_ARG_ENABLE(tcp-queries,
-[  --disable-tcp-queries       Disable tcp as query method.],
-  tcp_queries=$enableval)
-
-AC_ARG_WITH(query-method,
-[  --with-query-method=qm      Specify the query method (default=udponly;
-                              others: tcponly, tcpudp, udptcp)],
-  query_m=$withval)
-case $query_m in
-  udponly|UDPonly)
-    AC_DEFINE(M_PRESET, UDP_ONLY)
-    udp_queries=yes;
-    ;;
-  tcponly|TCPonly)
-    AC_DEFINE(M_PRESET, TCP_ONLY)
-    tcp_queries=yes;
-    ;;
-  tcpudp|TCPUDP)
-    AC_DEFINE(M_PRESET, TCP_UDP)
-    udp_queries=yes;
-    tcp_queries=yes;
-    ;;
-  udptcp|UDPTCP)
-    AC_DEFINE(M_PRESET, UDP_TCP)
-    udp_queries=yes;
-    tcp_queries=yes;
-    ;;
-  *)
-    AC_MSG_ERROR([--with-query-method must have udponly, tcponly, tcpudp or udptcp as parameter.])
-    ;;
-esac
-
-test $udp_queries != "yes" && AC_DEFINE(NO_UDP_QUERIES)
-test $tcp_queries != "yes" && AC_DEFINE(NO_TCP_QUERIES)
-
-AC_ARG_ENABLE(tcp-server,
-[  --disable-tcp-server        Disable the TCP serving ability of pdnsd],
-  have_tcp_server=$enableval)
-
-test $have_tcp_server != "yes" && AC_DEFINE(NO_TCP_SERVER)
-
-AC_ARG_ENABLE(src-addr-disc,
-[  --disable-src-addr-disc     Disable the UDP source address discovery],
-    adisc=$enableval)
-
-AC_ARG_ENABLE(socket-locking,
-[  --enable-socket-locking     Enable the UDP socket locking],
-    slock=$enableval)
-
-test $slock = "yes" && AC_DEFINE(SOCKET_LOCKING)
-
-AC_ARG_ENABLE(poll,
-[  --disable-poll              Disable poll(2) and use select(2)
-                              (default=enabled)],
-   test $enableval != "yes" && AC_DEFINE(NO_POLL))
-
-AC_ARG_ENABLE(new-rrs,
-[  --disable-new-rrs           Disable new DNS RR types (obsolete, currently ignored)],
-   newrrs=$enableval)
-
-AC_ARG_ENABLE(strict-rfc2181,
-[  --enable-strict-rfc2181     Enforce strict RFC 2181 compliance],
-   test $enableval = "yes" && AC_DEFINE(RFC2181_ME_HARDER))
-
-AC_ARG_WITH(random-device,
-[  --with-random-device=device Specify random device other than 
-                              /dev/random; default: C Library random() PRNG;
-                              special value arc4random for BSD C Library
-                              arc4random function (default on FreeBSD)],
-   randomdev=$withval)
-
-if test "$randomdev" = arc4random ; then
-	AC_DEFINE(R_ARC4RANDOM)
-elif test "$randomdev" = random ; then
-	AC_DEFINE(R_RANDOM)
-elif test "$randomdev" = default ; then
-	AC_DEFINE(R_DEFAULT)
-else
-	AC_DEFINE_UNQUOTED(RANDOM_DEVICE, "$randomdev")
-fi
-
-AC_ARG_ENABLE(underscores,
-[  --enable-underscores        Allow _ in domain names (obsolete, currently ignored)],
-   underscores=$enableval)
-
-AC_ARG_WITH(default-id,
-[  --with-default-id=id        Specify default uid/gid for pdnsd 
-                              (default=nobody)],
-  def_id=$withval)
-AC_SUBST(def_id)
-
-AC_ARG_WITH(debug,
-[  --with-debug=level          Specify debugging level (0 means no debug support)],
-  AC_DEFINE_UNQUOTED(DEBUG, $withval))
-
-AC_ARG_WITH(verbosity,
-[  --with-verbosity=level      Specify default message verbosity],
-  AC_DEFINE_UNQUOTED(VERBOSITY, $withval))
-
-AC_ARG_WITH(hash-buckets,
-[  --with-hash-buckets=num     Number of hash buckets to use (default=1024).
-                              The number actually used is the smallest power of two
-                              greater or equal to the number specified here.],
-  powof2=1
-  hashsz=0
-
-  while test $powof2 -lt "$withval"
-  do
-    powof2=`expr 2 '*' $powof2`
-    hashsz=`expr $hashsz '+' 1`
-  done
-  AC_DEFINE_UNQUOTED(HASH_SZ, $hashsz)
-)
-
-AC_ARG_ENABLE(hash-debug,
-[  --enable-hash-debug         Debug hash tables (warning: massive output)],
-  test $enableval = "yes" && AC_DEFINE(DEBUG_HASH))
-
-AC_ARG_ENABLE(rcsids,
-[  --enable-rcsids             Enable RCS IDs in executables (obsolete, currently ignored)],
-  have_rcsids=$enableval)
-
-AC_ARG_WITH(tcp-qtimeout,
-[  --with-tcp-qtimeout=secs    Specify default tcp query timeout (default=30)],
-  AC_DEFINE_UNQUOTED(TCP_TIMEOUT, $withval))
-
-AC_ARG_ENABLE(tcp-subseq,
-[  --enable-tcp-subseq         Enable multiple dns querys using one
-                              tcp connection],
-  test $enableval = "yes" && AC_DEFINE(TCP_SUBSEQ))
-
-AC_ARG_WITH(par-queries,
-[  --with-par-queries=num      Specify default parallel query number (default=2)],
-  AC_DEFINE_UNQUOTED(PAR_QUERIES, $withval))
-
-AC_ARG_WITH(max-nameserver-ips,
-[  --with-max-nameserver-ips=num      Specify maximum number of IP addresses used per nameserver obtained from NS records (default=3)],
-  AC_DEFINE_UNQUOTED(MAXNAMESERVIPS, $withval))
-
-AC_ARG_ENABLE(specbuild,
-[  --enable-specbuild          Only used when building pdnsd from spec files],
-  specbuild=$enableval)
-
-AC_SUBST(specbuild)
-
-AC_ARG_WITH(thread-lib,
-[  --with-thread-lib=lib       Specify thread library, overriding automatic detection (for Linux only).
-                              Possible values: LinuxThreads,
-                              LinuxThreads2 (implements a fix for newer glibcs)
-                              or NPTL (Native POSIX Thread Library)],
-  threadlib=$withval)
-
-AC_SUBST(threadlib)
-
-dnl Checks for programs.
-AC_PROG_CC
-AM_PROG_CC_STDC
-AM_PROG_CC_C_O
-AC_PROG_INSTALL
-
-dnl For dbm subsystem libraries
-AC_PROG_RANLIB
-
-if test "$target" = "autodetect" ; then
-  AC_MSG_CHECKING([for autodetect build target])
-  uname_sys=`uname`
-  if test $? -ne 0 ; then
-    AC_MSG_RESULT([failed])
-    AC_MSG_ERROR([uname failed or was not found in path])
-  else
-    case "${uname_sys}" in
-    Linux)
-      AC_MSG_RESULT(Linux)
-      AC_DEFINE(TARGET, TARGET_LINUX)
-      target="Linux"
-      ;;
-    FreeBSD|NetBSD|OpenBSD|Darwin)
-      AC_MSG_RESULT("${uname_sys}")
-      AC_DEFINE(TARGET, TARGET_BSD)
-      target="BSD"
-      ;;
-    CYGWIN*)
-      AC_MSG_RESULT("${uname_sys}")
-      AC_DEFINE(TARGET, TARGET_CYGWIN)
-      target="cygwin"
-      ;;
-    *)
-      AC_MSG_RESULT([failed])
-      AC_MSG_ERROR(
-[Your system type could not be identified. Try setting it manually using 
---with-target])
-      ;;
-    esac
-  fi
-fi
-
-#if test "$target" = BSD ; then
-#  uname_sys=`uname`
-#  if test "$uname_sys" = FreeBSD ; then
-#    AC_MSG_CHECKING([for FreeBSD version])
-#    osrel=`sysctl -n kern.osreldate`
-#    if test $osrel -ge 500016 ; then
-#      AC_MSG_RESULT([5.0 (>= 500016)])
-#      freebsd_pthread="5"
-#    else
-#      AC_MSG_RESULT([<=5.0 (< 500016)])
-#      freebsd_pthread="4"
-#    fi
-#  fi
-#fi
-
-if test "$adisc" = "default"; then
-  if test "$target" = "cygwin" ; then
-# Don't do UDP source address discovery on Cygwin platform by default.
-    adisc="no"
-  else
-    adisc="yes"
-  fi
-fi
-
-test "$adisc" = "yes" && AC_DEFINE(SRC_ADDR_DISC)
-
-
-dnl Checks for libraries.
-if test "$target" = "Linux"; then
-AC_MSG_CHECKING([if we can compile and link with -pthread])
-old_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -pthread"
-AC_LINK_IFELSE([
-#include <pthread.h>
-
-void *thread_func(void *data)
-{
-	*((int *)data)=1;
-	return data;
-}
-
-int main()
-{
-	pthread_t thread;
-	void *retval;
-	int val;
-
-	if(pthread_create(&thread, NULL, thread_func, &val))
-		return 1;
-
-	if(pthread_join(thread,&retval))
-		return 1;
-
-	return (*((int *)retval)!=1);
-}
-],
-  gcc_pthread_flag="yes", gcc_pthread_flag="no")
-CFLAGS="$old_CFLAGS"
-AC_MSG_RESULT([$gcc_pthread_flag])
-
-  if test "$gcc_pthread_flag" = yes ; then
-    thread_CFLAGS="-pthread"
-    AC_SUBST(thread_CFLAGS)
-  else
-    AC_CHECK_LIB(pthread, pthread_create)
-  fi
-fi
-if test "$target" = "BSD" -a `uname` != Darwin ; then
-#  if test $freebsd_pthread = 4 ; then
-    thread_CFLAGS="-pthread"
-    AC_SUBST(thread_CFLAGS)
-#  else
-#    AC_CHECK_LIB(c_r, pthread_create, , 
-#      AC_MSG_ERROR([You must have libc_r installed to build/run pdnsd!]))
-#  fi;
-fi
-
-if test "$target" = "Linux" -a "$threadlib" = default; then
-AC_MSG_CHECKING([if this is an NPTL-based system])
-old_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS $thread_CFLAGS"
-AC_RUN_IFELSE([
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <pthread.h>
-
-/* All this function does is return its PID (in a roundabout way). */
-void *thread_func(void *data)
-{
-	*((int *)data)=getpid();
-	return data;
-}
-
-int main()
-{
-	pthread_t thread;
-	void *retval;
-	int err,mainpid,thrdpid;
-
-	err=pthread_create(&thread, NULL, thread_func, &thrdpid);
-	if(err) {
-		fprintf(stderr,"pthread_create failed: %s\n",strerror(err));
-		return 1;
-	}
-	err=pthread_join(thread,&retval);
-	if(err) {
-		fprintf(stderr,"pthread_join failed: %s\n",strerror(err));
-		return 1;
-	}
-	mainpid=getpid();
-	/* In LinuxThreads implementations, the pids of the threads will usually differ
-	   in a non Posix-compliant way. */
-	fprintf(stderr,"main pid=%d, thread pid=%d\n",mainpid,*((int *)retval));
-	return (*((int *)retval)!=mainpid);
-}
-],
-[
-  AC_MSG_RESULT([yes])
-  threadlib=nptl
-],
-[
-  AC_MSG_RESULT([no])
-  threadlib=linuxthreads
-],
-[
-  AC_MSG_RESULT([couldn't run test program])
-  threadlib=linuxthreads
-])
-CFLAGS="$old_CFLAGS"
-fi
-
-if test "$threadlib" = nptl -o "$threadlib" = NPTL; then
-	AC_DEFINE(THREADLIB_NPTL)
-elif test "$threadlib" = linuxthreads2 -o "$threadlib" = LinuxThreads2 -o "$threadlib" = lt2; then
-	AC_DEFINE(THREADLIB_LINUXTHREADS2)
-fi
-
-dnl Checks for header files.
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(fcntl.h malloc.h sys/ioctl.h sys/time.h syslog.h unistd.h)
-AC_CHECK_HEADERS(sys/types.h sys/socket.h net/if.h netinet/in.h sys/poll.h,,,
-[#include <stdio.h>
-#if STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# if HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-])
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_TYPE_PID_T
-AC_TYPE_SIZE_T
-AC_HEADER_TIME
-AC_STRUCT_TM
-AC_CHECK_TYPES(socklen_t,, AC_DEFINE(socklen_t,int),[#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>])
-AC_CHECK_TYPES([struct in6_addr, struct in_pktinfo, struct ifreq],,,[#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netinet/in.h>])
-
-AC_MSG_CHECKING([for CPP C99 Variadic macro support])
-AC_COMPILE_IFELSE([
-#define a(...) junk(0,__VA_ARGS__)
-extern void junk(int i,...);
-int main()
-{
-  a(0);
-  a("a");
-  a(0, "a", 1);
-  return 0;
-}
-],
-  cpp_c99_variadic="yes", cpp_c99_variadic="no")
-AC_MSG_RESULT([$cpp_c99_variadic])
-if test $cpp_c99_variadic = yes; then
-  AC_DEFINE(CPP_C99_VARIADIC_MACROS)
-else
-  if test "$GCC" != yes; then
-    AC_MSG_ERROR([Compiler must support C99 or gcc variadic macros])
-  fi;
-fi
-
-dnl Checks for library functions.
-AC_FUNC_ALLOCA
-AC_PROG_GCC_TRADITIONAL
-AC_FUNC_MEMCMP
-AC_TYPE_SIGNAL
-AC_FUNC_VPRINTF
-AC_SEARCH_LIBS(nanosleep, rt)
-AC_SEARCH_LIBS(socket, socket,,,-lnsl)
-AC_SEARCH_LIBS(inet_aton, resolv)
-AC_CHECK_FUNCS(nanosleep gettimeofday mkfifo select socket strerror uname snprintf vsnprintf, true, 
-		AC_MSG_ERROR([One of the functions required for pdnsd were not found.]))
-AC_CHECK_FUNCS(poll, true, AC_DEFINE(NO_POLL))
-AC_CHECK_FUNCS(strdup strndup stpcpy stpncpy strlcpy mempcpy getline asprintf vasprintf getpwnam_r inet_ntop inet_pton)
-
-AC_OUTPUT([
-pdnsd.spec
-Makefile
-file-list.base
-contrib/Makefile
-doc/Makefile
-doc/pdnsd.8
-doc/pdnsd.conf.5
-doc/pdnsd.conf
-src/Makefile
-src/pdnsd-ctl/Makefile
-src/rc/Makefile
-src/rc/RedHat/Makefile
-src/rc/RedHat/pdnsd
-src/rc/SuSE/Makefile
-src/rc/SuSE/pdnsd
-src/rc/Debian/Makefile
-src/rc/Debian/pdnsd
-src/rc/Slackware/Makefile
-src/rc/Slackware/rc.pdnsd
-src/rc/ArchLinux/Makefile
-src/rc/ArchLinux/pdnsd
-src/test/Makefile
-PKGBUILD
-])
diff --git a/jni/pdnsd/contrib/Makefile.am b/jni/pdnsd/contrib/Makefile.am
deleted file mode 100644
index 5bdec20..0000000
--- a/jni/pdnsd/contrib/Makefile.am
+++ /dev/null
@@ -1,2 +0,0 @@
-
-EXTRA_DIST = pdnsd_dhcp.pl dhcp2pdnsd change_pdnsd_server_ip.pl README
diff --git a/jni/pdnsd/contrib/Makefile.in b/jni/pdnsd/contrib/Makefile.in
deleted file mode 100644
index a400dfe..0000000
--- a/jni/pdnsd/contrib/Makefile.in
+++ /dev/null
@@ -1,323 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-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 = :
-subdir = contrib
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-EXTRA_DIST = pdnsd_dhcp.pl dhcp2pdnsd change_pdnsd_server_ip.pl README
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(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) --gnu contrib/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu contrib/Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-am
-
-clean-am: clean-generic 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:
-
-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:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
-	distclean-generic distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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 uninstall uninstall-am
-
-
-# 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:
diff --git a/jni/pdnsd/contrib/README b/jni/pdnsd/contrib/README
deleted file mode 100644
index 19e4f44..0000000
--- a/jni/pdnsd/contrib/README
+++ /dev/null
@@ -1,30 +0,0 @@
-Last revised: 27 July 2003 by Paul Rombouts
-
-This directory contains user-contributed scripts for use with pdnsd.
-So far there are:
-
-pdnsd_dhcp.pl, save_ram.pl
-	A perl script contributed by Marko Stolle (derived from a script by
-	Mike Stella) to watch a ISC DHCPD leases file and add local records for
-	the hosts listed there. This makes pdnsd useable in a DHCP setup.
-	Please look into the script for usage instructions (you will probably
-	also need to customize some settings there).
-	For details about save_ram.pl, please look into pdnsd_dhcp.pl
-
-dhcp2pdnsd
-	A rc script for pdnsd, also by Marko Stolle. You might need to change
-	it slightly to make it run with your distro.
-
-change_pdnsd_server_ip.pl
-	A perl script contributed by Paul Rombouts for automatically updating
-	the configuration file if the DNS server configuration has changed.
-	For instance, you could place the following line in the script
-	/sbin/ifup-local
-
-	/usr/local/sbin/change_pdnsd_server_ip.pl isplabel "$DNS" /etc/pdnsd.conf
-
-	where $DNS contains the IP addresses (in comma separated format) of the
-	DNS servers obtained by DHCP negotiation. The perl script only
-	overwrites /etc/pdnsd.conf if the DNS configuration has actually
-	changed, in which case the previous configuration file is saved as
-	/etc/pdnsd.conf.save
diff --git a/jni/pdnsd/contrib/change_pdnsd_server_ip.pl b/jni/pdnsd/contrib/change_pdnsd_server_ip.pl
deleted file mode 100644
index 1eafca0..0000000
--- a/jni/pdnsd/contrib/change_pdnsd_server_ip.pl
+++ /dev/null
@@ -1,124 +0,0 @@
-#!/usr/bin/perl -w
-#
-# A Perl script to change the ip addresses of dns servers
-# in the pdnsd configuration file.
-#
-# Written by Paul A. Rombouts
-#
-# This file Copyright 2002, 2004 Paul A. Rombouts
-# It may be distributed under the GNU Public License, version 2, or
-# any higher version.  See section COPYING of the GNU Public license
-# for conditions under which this file may be redistributed.
-#
-
-use strict;
-
-unless(@ARGV) {die "Error: no label specified.\n"}
-my $label=shift;
-unless(@ARGV) {die "Error: no DNS addresses specified.\n"}
-my $dns_str=shift;
-my $pdnsd_conf='/etc/pdnsd.conf';
-if(@ARGV) {
-    $pdnsd_conf=shift;
-    if(@ARGV) {warn "Warning: spurious arguments ignored: @ARGV\n"}
-}
-
-#unless($label =~ /^\".*\"$/) {$label="\"$label\""}
-#unless($dns_str =~ /^\".*\"$/) {$dns_str =~ s/^[\s,]*/\"/; $dns_str =~ s/[\s,]*$/\"/}
-#unless($dns_str =~ /\"\s*\,\s*\"/) {$dns_str =~ s/[\s,]+/","/g}
-
-my @lines=();
-my $found_section=0;
-my $changed=0;
-my $ip_patt = qr/^((?:[^#]*?(?:\{|;))*?)(\s*ip\s*=\s*)("?[\w.:]+"?(?:\s*,\s*"?[\w.:]+"?)*)\s*;/;
-
-open(CONFFILE,$pdnsd_conf) or die "Can't open $pdnsd_conf: $!\n";
-
-while(<CONFFILE>) {
-    if(/^\s*server\s*\{/) {
-	my $sect_beg=$#lines+1;
-	my $sect_end;
-	my $found_label=0;
-	LOOP: {
-	    do {
-		push @lines,$_;
-		if(/^(?:.*(?:\{|;))?\s*label\s*=\s*"?\Q$label\E"?\s*;/) {
-		    if($found_label++) {
-			warn "Server section with multiple labels found.\n";
-			close(CONFFILE);
-			exit 2;
-		    }
-		}
-		if(/\}\s*$/) {
-		    $sect_end=$#lines;
-		    last LOOP;
-		}
-	    } while(<CONFFILE>);
-	}
-	unless(defined($sect_end)) {
-	    warn "Server section without proper ending found.\n";
-	    close(CONFFILE);
-	    exit 2;
-	}
-	if(!$found_label) {next}
-	if(!($found_section++)) {
-	    my $found_ip=0;
-	    for(my $i=$sect_beg; $i<=$sect_end;++$i) {
-		if($lines[$i] =~ $ip_patt) {
-		    my $matched=''; my $rest;
-		    do {
-			$rest=$';
-			if(!($found_ip++)) {
-			    if($3 eq $dns_str) {
-				$matched.=$&;
-			    }
-			    else {
-				$matched.="$1$2$dns_str;";
-				$changed=1;
-			    }
-			}
-			else {
-			    $matched.=$1;
-			    $changed=1;
-			}
-		    } while($rest =~ $ip_patt);
-		    $lines[$i] = $matched.$rest;
-		}
-	    }
-	    if(!$found_ip) {
-		unless($lines[$sect_end] =~ s/\}\s*$/ ip=$dns_str;\n$&/) {
-		    warn "Can't add ip specification to server section labeled $label.\n";
-		    close(CONFFILE);
-		    exit 2;
-		}
-		$changed=1;
-	    }
-        }
-        else {
-	    splice @lines,$sect_beg;
-	    $changed=1;
-	}
-    }
-    else {push @lines,$_}
-}
-
-close(CONFFILE) or die "Can't close $pdnsd_conf: $!\n";
-
-if(!$found_section) {
-    warn "No server sections labeled $label found.\n";
-    exit 2;
-}
-elsif(!$changed) {
-    exit 0;
-}
-
-rename($pdnsd_conf,"$pdnsd_conf.save") or die "Can't rename $pdnsd_conf: $!\n";
-
-unless((open(CONFFILE,">$pdnsd_conf") or (warn("Can't open $pdnsd_conf for writing: $!\n"),0)) and 
-       (print CONFFILE (@lines) or (warn("Can't write to $pdnsd_conf: $!\n"),0)) and
-       (close(CONFFILE) or (warn("Can't close $pdnsd_conf after writing: $!\n"),0))) {
-    rename("$pdnsd_conf.save",$pdnsd_conf) or die "Can't rename $pdnsd_conf.save: $!\n";
-    exit 3;
-}
-
-exit 1;
diff --git a/jni/pdnsd/contrib/dhcp2pdnsd b/jni/pdnsd/contrib/dhcp2pdnsd
deleted file mode 100644
index 73b631c..0000000
--- a/jni/pdnsd/contrib/dhcp2pdnsd
+++ /dev/null
@@ -1,45 +0,0 @@
-#! /bin/sh
-#
-# dhcp2pdnsd       Start/Stop DHCP to DNS update script
-#
-# chkconfig: 345 96 99
-# description: DHCP to DNS update script
-# processname: dhcp2pdnsd.pl
-#
-# $Id: dhcp2pdnsd,v 1.1 2001/03/25 20:01:34 tmm Exp $
-
-where="/usr/local/bin/"
-name="pdnsd_dhcp.pl"
-
-# Source function library.
-. /etc/rc.d/init.d/functions
-
-# Get config.
-. /etc/sysconfig/network
-
-# See how we were called.
-case "$1" in
-  start)
-	$where$name > /dev/null 2> /dev/null &
-	action "Starting DHCP to DNS update script: " /bin/true
-	;;
-  stop)
-        p=`ps h -C $name | awk '{print $1}'`	
-	[ $p -gt 0 ] 2> /dev/null && kill $p && action "Stopping DHCP to DNS update script: " /bin/true
-	[ $p -gt 0 ] 2> /dev/null || action "Stopping DHCP to DNS update script: " /bin/false
-	;;
-  status)
-        p=`ps h -C $name | awk '{print $1}'`
-	[ $p -gt 0 ] 2> /dev/null && echo 'running as '$p
-	[ $p -gt 0 ] 2> /dev/null || echo 'not running'
-	;;
-  restart|reload)
-	$0 stop
-	$0 start
-	;;
-  *)
-	echo "Usage: dhcp2pdnsd {start|stop|status|restart|reload}"
-	exit 1
-esac
-
-exit 0
diff --git a/jni/pdnsd/contrib/pdnsd_dhcp.pl b/jni/pdnsd/contrib/pdnsd_dhcp.pl
deleted file mode 100644
index 9cf0c87..0000000
--- a/jni/pdnsd/contrib/pdnsd_dhcp.pl
+++ /dev/null
@@ -1,246 +0,0 @@
-#!/usr/bin/perl
-# $Id: pdnsd_dhcp.pl,v 1.2 2001/03/25 20:01:34 tmm Exp $
-##########################################################################
-#
-# Filename:     pdnsd_dhcp.pl
-# Description:  Dynamic DNS-DHCP update script for pdnsd
-# Author: 	Mike Stella
-# Modified by:  Marko Stolle
-# Created:      November 19, 2001
-# Last Updated: February 28, 2001
-# Email:        fwd2m at gmx.de
-#
-###########################################################################
-#
-#  This code is Copyright (c) 1998-2001 by Mike Stella and Marko Stolle
-#
-#  NO WARRANTY is given for this program.  If it doesn't
-#  work on your system, sorry.  If it eats your hard drive, 
-#  again, sorry.  It works fine on mine.  Good luck!
-#
-#  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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-###########################################################################
-#
-# This script reads a dhcpd.leases file and dynamically updates pdnsd with
-# hostname and ip information.  
-#
-# It assumes that your DHCP server recieves hostnames from the
-# clients, and that your clients offer their hostnames to the server.
-# Some versions of Linux DHCP clients don't do that.  I use ISC's
-# DHCPD, found at http://www.isc.org - though others may work just
-# fine.
-#
-# This version of the script updates the pdnsd database. The status
-# control socket of pdnsd has to be enabled (psnsd -d -s). 
-#
-###########################################################################
-#
-# 02/20/2001 - first working version
-# 02/21/2001 - security patches by Thomas Moestl
-# 02/22/2001 - re-read dhcpd.leases if ttl has expireds since last update
-# 02/24/2001 - try to get domainname if not specified
-# 02/28/2001 - randomized temporary filename
-#	       added possibility to save some RAM (read below)
-#
-###########################################################################
-
-
-# You may save some memory if you use absolute values with sysopen
-# in sub update_dns and don't use tmpnam().. 
-# Just switch the '#' in front of the 'until sysopen' in the sub 
-# update_dns, check the necessary modes on your system using save_ram.pl 
-# and add a '#' in front of the following three lines.
-# Not using the tmpnam() function may open a security breach on systems
-# with not absolute trustworthy local users (Risk: a user may write a 
-# script which creates files with the same names as this script and block 
-# it that way. Unlikely because the filenames are now even without tmpnam()
-# randomized and an attacker has to create a very large number of files.)
-
-use Fcntl;
-use strict;
-use POSIX qw(tmpnam);
-
-$|=1;
-
-###########################################################################
-### Globals - you can change these as needed
-
-# Domain name
-# if not changed script will try to get it from the system
-my $domain_name        = "domain";
-
-# DHCPD lease file
-my $lease_file         = "/var/lib/dhcp/dhcpd.leases";
-
-# path to pdnsd-ctl
-my $pdnsd_ctl          = "/usr/local/sbin/pdnsd-ctl";
-
-# owning name server for the newly added records
-my $nameserver         = "localhost.";
-
-# TTL (Time To Live) for the new records
-my $ttl                = "86400";
-
-# number of seconds to check the lease file for updates
-my $update_freq        = 30;
-
-my $debug = 0;
-
-###########################################################################
-### Don't mess with anything below unless you REALLY need to modify the
-### code.  And if you do, please let me know, I'm always interested in
-### in improving this program.
-
-# Make a pid file
-`echo $$ > /var/run/pdnsd_update.pid`;
-
-my $logstr;
-my $modtime = 0;
-my $temp_dir = -d '/tmp' ? '/tmp' : $ENV{TMP} || $ENV{TEMP};
-
-use vars qw (%db);
-
-my $version = "1.03";
-
-
-###########################################################################
-# Main Loop
-
-  # try to find domainname if necessary
-  if ($domain_name eq "domain") {
-   $domain_name = `dnsdomainname`;
-  }
-  else {
-   $domain_name = "$domain_name\n";
-  }
-
-while (1) {
-
-  # check the file's last updated time, if it's been changed, update
-  # the DNS and save the time. Update DNS even if there a no changes on
-  # the leases file if ttl since last DNS update has expired.  
-  # This will ALWAYS run once - on startup, since $modtime starts at zero.
-
- 
-  my @stats = stat ($lease_file);
-
-
-  if (($stats[9] > $modtime) or (time >= $modtime+$ttl)){
-
-	# clear the old hash
-	undef %db;
-
-	printf STDERR "updating DNS with dhcpd.leases\n";
-	$modtime = time;
-	&read_lease_file;
-	&update_dns;
-  } 
-
-  # wait till next check time
-  sleep $update_freq;
-
-} # end main
-###########################################################################
-
-
-### write out the import file
-sub update_dns {
-	my ($ip, $hostname, $fname);
-
-	do { $fname = tmpnam() }
-        until sysopen(DNSFILE, $fname, O_WRONLY|O_CREAT|O_EXCL, 0600);
-#	do { $fname = "$temp_dir/d2d".int(rand(time())) }
-#	until sysopen(DNSFILE, $fname, 1|64|128, 0600);
-
-	while (($hostname,$ip) = each (%db)) {
-		print DNSFILE "$ip $hostname.$domain_name";
-	}
-	close DNSFILE;
-
-	system ("$pdnsd_ctl source $fname $nameserver $ttl");
-	unlink($fname);
-}
-
-
-### reads the lease file & makes a hash of what's in there.
-sub read_lease_file {
-
-  unless (open(LEASEFILE,$lease_file)) {
-	#`logger -t dns_update.pl error opening dhcpd lease file`;
-	print STDERR "Can't open lease file\n";
-	return;
-  }
-
-  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
-  my $curdate = sprintf "%02d%02d%02d%02d%02d%20d%20d",
-  		($year+1900),($mon+1),$mday,$hour,$min,$sec;
-
-  ## Loop here, reading from LEASEFILE
-  while (<LEASEFILE>) {
-	my ($ip, $hostname, $mac, $enddate,$endtime);
-
-	if (/^\s*lease/i) {
-		
-	  # find ip address
-	  $_ =~ /^\s*lease\s+(\S+)/;
-	  $ip = $1;
-	  
-	  # do the rest of the block - we're interested in hostname,
-	  # mac address, and the lease time
-	  while ($_ !~ /^}/) {
-	    $_ = <LEASEFILE>;
-		# find hostname
-		if ($_ =~ /^\s*client/i) {
-		  #chomp $_;
-		  #chop $_;
-		  $_ =~ /\"(.*)\"/;
-		  $hostname = $1;
-		  
-		  # change spaces to dash, remove dots - microsoft
-		  # really needs to not do this crap
-		  $hostname =~ s/\s+/-/g;
-		  $hostname =~ s/\.//g;
-		}
-		# get the lease end date
-		elsif ($_ =~ /^\s*ends/i) {
-			$_ =~ m/^\s*ends\s+\d\s+([^;]+);/;
-			$enddate = $1;
-			$enddate =~ s|[/: ]||g;
-		}
-	  }
-	  # lowercase it - stupid dhcp clients
-	  $hostname =~ tr/[A-Z]/[a-z]/;
-
-	  ($debug < 1 ) || print STDERR "$hostname $ip $enddate $curdate\n";
-	  
-	  # Store hostname/ip in hash - this way we can do easy dupe checking
-	  if (($hostname ne "") and ($enddate > $curdate)) {
-		$db{$hostname} = $ip;
-	  }
-	}
-  }
-  close LEASEFILE;
-}
-
-### left around for testing
-sub print_db {
-  my ($key,$value);
-
-  while (($key,$value) = each (%db)) {
-	print "$key - $value\n";
-  }
-}
-
diff --git a/jni/pdnsd/depcomp b/jni/pdnsd/depcomp
deleted file mode 100644
index 04701da..0000000
--- a/jni/pdnsd/depcomp
+++ /dev/null
@@ -1,530 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2005-07-09.11
-
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-
-# 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 <oliva at dcc.unicamp.br>.
-
-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 outputing dependencies.
-  libtool     Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake at gnu.org>.
-EOF
-    exit $?
-    ;;
-  -v | --v*)
-    echo "depcomp $scriptversion"
-    exit $?
-    ;;
-esac
-
-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"
-
-# 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
-
-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.
-  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  mv "$tmpdepfile" "$depfile"
-  ;;
-
-gcc)
-## 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).
-## - 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 -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## 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.
-  tr ' ' '
-' < "$tmpdepfile" |
-## 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.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -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 -eq 0; then :
-  else
-    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 ' ' '
-' < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> $depfile
-    echo >> $depfile
-
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> $depfile
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-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.
-  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
-  tmpdepfile="$stripped.u"
-  if test "$libtool" = yes; then
-    "$@" -Wc,-M
-  else
-    "$@" -M
-  fi
-  stat=$?
-
-  if test -f "$tmpdepfile"; then :
-  else
-    stripped=`echo "$stripped" | sed 's,^.*/,,'`
-    tmpdepfile="$stripped.u"
-  fi
-
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-
-  if test -f "$tmpdepfile"; then
-    outname="$stripped.o"
-    # Each line is of the form `foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
-    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
-    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
-icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want:
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
-  #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
-  #    foo.o: sub/foo.c ... \
-  #     sub/foo.h ... \
-  #     ...
-
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    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"
-  ;;
-
-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.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mecanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in 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.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
-
-#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 $1 != '--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:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
-  rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    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 $1 != '--mode=compile'; do
-      shift
-    done
-    shift
-  fi
-  # X makedepend
-  shift
-  cleared=no
-  for arg in "$@"; do
-    case $cleared in
-    no)
-      set ""; shift
-      cleared=yes ;;
-    esac
-    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.
-    -*|$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"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    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 $1 != '--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, regardless of -o,
-  # because we must use -o when running libtool.
-  "$@" || exit $?
-  IFS=" "
-  for arg
-  do
-    case "$arg" in
-    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-	set fnord "$@"
-	shift
-	shift
-	;;
-    *)
-	set fnord "$@" "$arg"
-	shift
-	shift
-	;;
-    esac
-  done
-  "$@" -E |
-  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
-  rm -f "$depfile"
-  echo "$object : \\" > "$depfile"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$depfile"
-  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
-  rm -f "$tmpdepfile"
-  ;;
-
-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-end: "$"
-# End:
diff --git a/jni/pdnsd/doc/Makefile.am b/jni/pdnsd/doc/Makefile.am
deleted file mode 100644
index b3e2198..0000000
--- a/jni/pdnsd/doc/Makefile.am
+++ /dev/null
@@ -1,28 +0,0 @@
-
-man_MANS = pdnsd.8 pdnsd-ctl.8 pdnsd.conf.5
-
-# Note: pdnsd-ctl.8, pdnsd.conf.5.in, dl.html and the txt docs are handled by dist-hook rule.
-EXTRA_DIST = pdnsd.conf.in pdnsd.8.in \
-	html/dl.html.in html/doc.html html/faq.html html/index.html \
-	doc_makefile html/doc_makefile txt/doc_makefile \
-	html2confman.pl html/htmlsubst.pl 
-
-# XXX: Do not insist to set the config file owner to root to avoid breaking RPM
-# builds
-install-data-hook:
-	$(mkinstalldirs) "$(DESTDIR)$(sysconfdir)"
-	if test `whoami` = "root"; then \
-	  $(INSTALL) -o 0 -g 0 -m 644 pdnsd.conf "$(DESTDIR)$(sysconfdir)/pdnsd.conf.sample" ; \
-	else \
-	  $(INSTALL) -m 644 pdnsd.conf "$(DESTDIR)$(sysconfdir)/pdnsd.conf.sample" ; \
-	fi
-
-dist-hook: doc_makefile
-	@$(MAKE) -f doc_makefile doc
-	cp -p --parents pdnsd-ctl.8 pdnsd.conf.5.in \
-	                html/dl.html txt/faq.txt txt/intro.txt txt/manual.txt \
-	                $(distdir)
-
-distclean-local: doc_makefile
-	@$(MAKE) -f doc_makefile clean
-
diff --git a/jni/pdnsd/doc/Makefile.in b/jni/pdnsd/doc/Makefile.in
deleted file mode 100644
index 7f07fe6..0000000
--- a/jni/pdnsd/doc/Makefile.in
+++ /dev/null
@@ -1,483 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-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 = :
-subdir = doc
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/pdnsd.8.in $(srcdir)/pdnsd.conf.5.in \
-	$(srcdir)/pdnsd.conf.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = pdnsd.8 pdnsd.conf.5 pdnsd.conf
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-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'
-man5dir = $(mandir)/man5
-am__installdirs = "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)"
-man8dir = $(mandir)/man8
-NROFF = nroff
-MANS = $(man_MANS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-man_MANS = pdnsd.8 pdnsd-ctl.8 pdnsd.conf.5
-
-# Note: pdnsd-ctl.8, pdnsd.conf.5.in, dl.html and the txt docs are handled by dist-hook rule.
-EXTRA_DIST = pdnsd.conf.in pdnsd.8.in \
-	html/dl.html.in html/doc.html html/faq.html html/index.html \
-	doc_makefile html/doc_makefile txt/doc_makefile \
-	html2confman.pl html/htmlsubst.pl 
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(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) --gnu doc/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu doc/Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-pdnsd.8: $(top_builddir)/config.status $(srcdir)/pdnsd.8.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-pdnsd.conf.5: $(top_builddir)/config.status $(srcdir)/pdnsd.conf.5.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-pdnsd.conf: $(top_builddir)/config.status $(srcdir)/pdnsd.conf.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-man5: $(man_MANS)
-	@$(NORMAL_INSTALL)
-	test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
-	@list=''; test -n "$(man5dir)" || exit 0; \
-	{ for i in $$list; do echo "$$i"; done; \
-	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
-	  sed -n '/\.5[a-z]*$$/p'; \
-	} | while read p; do \
-	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; echo "$$p"; \
-	done | \
-	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
-	sed 'N;N;s,\n, ,g' | { \
-	list=; while read file base inst; do \
-	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
-	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
-	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
-	  fi; \
-	done; \
-	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
-	while read files; do \
-	  test -z "$$files" || { \
-	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
-	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
-	done; }
-
-uninstall-man5:
-	@$(NORMAL_UNINSTALL)
-	@list=''; test -n "$(man5dir)" || exit 0; \
-	files=`{ for i in $$list; do echo "$$i"; done; \
-	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
-	  sed -n '/\.5[a-z]*$$/p'; \
-	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
-	test -z "$$files" || { \
-	  echo " ( cd '$(DESTDIR)$(man5dir)' && rm -f" $$files ")"; \
-	  cd "$(DESTDIR)$(man5dir)" && rm -f $$files; }
-install-man8: $(man_MANS)
-	@$(NORMAL_INSTALL)
-	test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)"
-	@list=''; test -n "$(man8dir)" || exit 0; \
-	{ for i in $$list; do echo "$$i"; done; \
-	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
-	  sed -n '/\.8[a-z]*$$/p'; \
-	} | while read p; do \
-	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; echo "$$p"; \
-	done | \
-	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
-	sed 'N;N;s,\n, ,g' | { \
-	list=; while read file base inst; do \
-	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
-	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
-	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
-	  fi; \
-	done; \
-	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
-	while read files; do \
-	  test -z "$$files" || { \
-	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
-	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
-	done; }
-
-uninstall-man8:
-	@$(NORMAL_UNINSTALL)
-	@list=''; test -n "$(man8dir)" || exit 0; \
-	files=`{ for i in $$list; do echo "$$i"; done; \
-	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
-	  sed -n '/\.8[a-z]*$$/p'; \
-	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
-	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
-	test -z "$$files" || { \
-	  echo " ( cd '$(DESTDIR)$(man8dir)' && rm -f" $$files ")"; \
-	  cd "$(DESTDIR)$(man8dir)" && rm -f $$files; }
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@list='$(MANS)'; if test -n "$$list"; then \
-	  list=`for p in $$list; do \
-	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
-	  if test -n "$$list" && \
-	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
-	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
-	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
-	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
-	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
-	    exit 1; \
-	  else :; fi; \
-	else :; fi
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	$(MAKE) $(AM_MAKEFLAGS) \
-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
-	  dist-hook
-check-am: all-am
-check: check-am
-all-am: Makefile $(MANS)
-installdirs:
-	for dir in "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-local
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-man
-	@$(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-man5 install-man8
-
-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-man
-
-uninstall-man: uninstall-man5 uninstall-man8
-
-.MAKE: install-am install-data-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic dist-hook \
-	distclean distclean-generic distclean-local distdir 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-man5 \
-	install-man8 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 uninstall \
-	uninstall-am uninstall-man uninstall-man5 uninstall-man8
-
-
-# XXX: Do not insist to set the config file owner to root to avoid breaking RPM
-# builds
-install-data-hook:
-	$(mkinstalldirs) "$(DESTDIR)$(sysconfdir)"
-	if test `whoami` = "root"; then \
-	  $(INSTALL) -o 0 -g 0 -m 644 pdnsd.conf "$(DESTDIR)$(sysconfdir)/pdnsd.conf.sample" ; \
-	else \
-	  $(INSTALL) -m 644 pdnsd.conf "$(DESTDIR)$(sysconfdir)/pdnsd.conf.sample" ; \
-	fi
-
-dist-hook: doc_makefile
-	@$(MAKE) -f doc_makefile doc
-	cp -p --parents pdnsd-ctl.8 pdnsd.conf.5.in \
-	                html/dl.html txt/faq.txt txt/intro.txt txt/manual.txt \
-	                $(distdir)
-
-distclean-local: doc_makefile
-	@$(MAKE) -f doc_makefile clean
-
-# 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:
diff --git a/jni/pdnsd/doc/doc_makefile b/jni/pdnsd/doc/doc_makefile
deleted file mode 100644
index f5e8f86..0000000
--- a/jni/pdnsd/doc/doc_makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file was written by Paul Rombouts.
-# Because pdnsd currently has a very idiosyncratic method of building documentation
-# I prefer to keep the actual build rules outside of the Makefiles an ordinary user
-# would use to compile pdnsd and therefore I have put them into separate 'doc_makefile's.
-# 
-# To rebuild pdnsd docs after you have modified something that other files depend on,
-# run 'make -f doc_makefile doc' in the doc/ directory.
-# This makefile is also invoked when you build a pdnsd distribution tarball
-# using 'make dist' in the toplevel pdnsd source directory.
-#
-# If anyone thinks there is a much more elegant method for building the pdnsd docs
-# using a conventional autoconf/automake process, please let me know.
-
-versionfile = ../version
-
-doc: pdnsd-ctl.8 pdnsd.conf.5.in html txt
-.PHONY: pdnsd-ctl.8 doc html txt clean
-
-pdnsd-ctl.8:
-	@pver=`cat $(versionfile)` && \
-	mver=`perl -e 'while(<>) {if(/^\s*\.TH(?:\s+(?:"[^"]*"|[^"\s]+)){3}\s+"pdnsd\s+([^"]*)"/) {print "$$1\n";exit 0}} \
-	               die "Cannot find version in $$ARGV\n"' $@` && { \
-	  test "$$mver" = "$$pver" || { \
-	    perl -p -i.makesave -e 's/^(\s*\.TH(?:\s+(?:"[^"]*"|[^"\s]+)){3}\s+"pdnsd\s+)[^"]*(")/$${1}'"$$pver"'$${2}/' $@ && \
-	    echo "Updated version in $@: $$mver -> $$pver"; \
-	  }; \
-	}
-
-pdnsd.conf.5.in: html/doc.html html2confman.pl 
-	perl html2confman.pl $< > $@
-
-html txt:
-	@cd $@ && $(MAKE) -f doc_makefile
-
-clean:
-	@rm -fv pdnsd.conf.5.in
-	@cd html && $(MAKE) -f doc_makefile clean
-	@cd txt && $(MAKE) -f doc_makefile clean
diff --git a/jni/pdnsd/doc/html/dl.html b/jni/pdnsd/doc/html/dl.html
deleted file mode 100644
index 3f9c614..0000000
--- a/jni/pdnsd/doc/html/dl.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>pdnsd Download Page</title>
-    <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
-    <style type="text/css">
-      <!--
-      .small { font-family:helvetica; font-size:small; text-align:center; }
-      // -->
-    </style>
-  </head>
-  <!--notext(-->
-  <body bgcolor="#EEEEEE">
-    <table width="100%">
-      <tr>
-	<td> <span class="small">
-	    <a href="index.html">pdnsd Homepage</a>
-  </span></td>
-	<td> <span class="small">
-	    <a href="faq.html">pdnsd FAQ</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="doc.html">Documentation</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="../../COPYING">GNU GPL (pdnsd's License)</a>
-	  </span> </td>
-	<td><span class="small">
-	    <a href="dl.html">Download Section</a>
-	  </span></td>
-      </tr>
-    </table>
-    <!--)notext-->
-    <center><h1>pdnsd Download Page</h1></center>
-    <!--  For obvious reasons, the real download page is not included in the distribution ;-) -->
-    <p>The original author of pdnsd is <a href="mailto:tmoestl at gmx.net">Thomas Moestl</a>,
-    but since 2003, he no longer maintains pdnsd.
-    However, <a href="mailto:p.a.rombouts at home.nl">Paul A. Rombouts</a> has extensively revised the code and maintains
-    a version with many fixes and improvements at
-    <a href="http://members.home.nl/p.a.rombouts/pdnsd.html">http://members.home.nl/p.a.rombouts/pdnsd.html</a>.<br>
-    He has pre-patched tarballs and RPM packages available for download at this site.<br>
-    </p>
-    <p>
-    If you are interested in the very latest code or if you want to participate in
-    pdnsd development, checkout the <a href="http://gitorious.org/pdnsd/pdnsd">pdnsd git repository</a>
-    at <a href="http://gitorious.org/">gitorious.org</a>.
-    </p>
-
-    The most recent tarball is <a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-1.2.9b-par.tar.gz">pdnsd-1.2.9b-par.tar.gz</a>
-    (<a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-1.2.9b-par.tar.gz.asc">GPG signature</a>).<br>
-    The most recent RPM packages are:
-<table cellspacing=1 cellpadding=7>
-  <tr>
-    <td width="30%"><b>Package Name</b></td>
-    <td width="10%" align=right><b>Size</b></td>
-    <td width="60%"><b>Description</b></td>
-  </tr>
-  <tr>
-    <td width="30%"><a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-1.2.9b-par.src.rpm">pdnsd-1.2.9b-par.src.rpm</a></td>
-    <td width="10%" align=right>514kB</td>
-    <td width="60%">Source RPM (binary packages can also be built directly from the tarball).
-    </td>
-  </tr>
-  <tr>
-    <td width="30%"><a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-1.2.9b-par_sl6.i686.rpm">pdnsd-1.2.9b-par_sl6.i686.rpm</a></td>
-    <td width="10%" align=right>???</td>
-    <td width="60%">i686 binary built on a Scientific Linux 6.2 system.
-    </td>
-  </tr>
-  <tr>
-    <td width="30%"><a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/pdnsd-1.2.9b-par_sl6.x86_64.rpm">pdnsd-1.2.9b-par_sl6.x86_64.rpm</a></td>
-    <td width="10%" align=right>282kB</td>
-    <td width="60%">x86_64 binary built on a Scientific Linux 6.2 system.
-    </td>
-  </tr>
-</table>
-    If you want to check the signatures on these packages you will need a copy of my GPG key
-    which you can get <a href="http://members.home.nl/p.a.rombouts/paromb.asc">here</a>
-    or from a public key server.
-    <p>
-    There are also <a href="http://packages.debian.org/pdnsd">Debian</a>,
-    Ubuntu,
-    <a href="http://packages.gentoo.org/package/net-dns/pdnsd">Gentoo</a>,
-    <a href="http://www.rpmfind.net/linux/rpm2html/search.php?query=pdnsd">Mandriva</a>
-    and <a href="http://cvsweb.freebsd.org/ports/dns/pdnsd">FreeBSD</a>
-    packages, but these may not include the latest version.<br>
-    If you are looking for other versions released by Paul Rombouts, visit this
-    <a href="http://members.home.nl/p.a.rombouts/pdnsd/releases/">download directory</a>.
-    </p>
-    <hr>
-    <br>
-    <p>
-      <i>Last revised: 24 Apr 2012 by Paul A. Rombouts</i>
-    </p>
-  </body>
-</html>
diff --git a/jni/pdnsd/doc/html/dl.html.in b/jni/pdnsd/doc/html/dl.html.in
deleted file mode 100644
index dffe2b0..0000000
--- a/jni/pdnsd/doc/html/dl.html.in
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>pdnsd Download Page</title>
-    <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
-    <style type="text/css">
-      <!--
-      .small { font-family:helvetica; font-size:small; text-align:center; }
-      // -->
-    </style>
-  </head>
-  <!--notext(-->
-  <body bgcolor="#EEEEEE">
-    <table width="100%">
-      <tr>
-	<td> <span class="small">
-	    <a href="index.html">pdnsd Homepage</a>
-  </span></td>
-	<td> <span class="small">
-	    <a href="faq.html">pdnsd FAQ</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="doc.html">Documentation</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="../../COPYING">GNU GPL (pdnsd's License)</a>
-	  </span> </td>
-	<td><span class="small">
-	    <a href="dl.html">Download Section</a>
-	  </span></td>
-      </tr>
-    </table>
-    <!--)notext-->
-    <center><h1>pdnsd Download Page</h1></center>
-    <!--  For obvious reasons, the real download page is not included in the distribution ;-) -->
-    <p>The original author of pdnsd is <a href="mailto:tmoestl at gmx.net">Thomas Moestl</a>,
-    but since 2003, he no longer maintains pdnsd.
-    However, <a href="mailto:p.a.rombouts at home.nl">Paul A. Rombouts</a> has extensively revised the code and maintains
-    a version with many fixes and improvements at
-    <a href="http://members.home.nl/p.a.rombouts/pdnsd.html">http://members.home.nl/p.a.rombouts/pdnsd.html</a>.<br>
-    He has pre-patched tarballs and RPM packages available for download at this site.<br>
-    </p>
-    <p>
-    If you are interested in the very latest code or if you want to participate in
-    pdnsd development, checkout the <a href="http://gitorious.org/pdnsd/pdnsd">pdnsd git repository</a>
-    at <a href="http://gitorious.org/">gitorious.org</a>.
-    </p>
-
-    The most recent tarball is <a href="${baseurl}releases/pdnsd-$version.tar.gz">pdnsd-$version.tar.gz</a>
-    (<a href="${baseurl}releases/pdnsd-$version.tar.gz.asc">GPG signature</a>).<br>
-    The most recent RPM packages are:
-<table cellspacing=1 cellpadding=7>
-  <tr>
-    <td width="30%"><b>Package Name</b></td>
-    <td width="10%" align=right><b>Size</b></td>
-    <td width="60%"><b>Description</b></td>
-  </tr>
-  <tr>
-    <td width="30%"><a href="${baseurl}releases/pdnsd-$version.src.rpm">pdnsd-$version.src.rpm</a></td>
-    <td width="10%" align=right>$sizeof("$HOME/rpmbuild/SRPMS/pdnsd-$version.src.rpm")</td>
-    <td width="60%">Source RPM (binary packages can also be built directly from the tarball).
-    </td>
-  </tr>
-  <tr>
-    <td width="30%"><a href="${baseurl}releases/pdnsd-${version}${extver}.${arch}.rpm">pdnsd-${version}${extver}.${arch}.rpm</a></td>
-    <td width="10%" align=right>$sizeof("$HOME/rpmbuild/RPMS/pdnsd-${version}${extver}.${arch}.rpm")</td>
-    <td width="60%">${arch} binary built on a $system.
-    </td>
-  </tr>
-  <tr>
-    <td width="30%"><a href="${baseurl}releases/pdnsd-${version}${extver}.${arch2}.rpm">pdnsd-${version}${extver}.${arch2}.rpm</a></td>
-    <td width="10%" align=right>$sizeof("$HOME/rpmbuild/RPMS/pdnsd-${version}${extver}.${arch2}.rpm")</td>
-    <td width="60%">${arch2} binary built on a $system.
-    </td>
-  </tr>
-</table>
-    If you want to check the signatures on these packages you will need a copy of my GPG key
-    which you can get <a href="http://members.home.nl/p.a.rombouts/paromb.asc">here</a>
-    or from a public key server.
-    <p>
-    There are also <a href="http://packages.debian.org/pdnsd">Debian</a>,
-    Ubuntu,
-    <a href="http://packages.gentoo.org/package/net-dns/pdnsd">Gentoo</a>,
-    <a href="http://www.rpmfind.net/linux/rpm2html/search.php?query=pdnsd">Mandriva</a>
-    and <a href="http://cvsweb.freebsd.org/ports/dns/pdnsd">FreeBSD</a>
-    packages, but these may not include the latest version.<br>
-    If you are looking for other versions released by Paul Rombouts, visit this
-    <a href="${baseurl}releases/">download directory</a>.
-    </p>
-    <hr>
-    <br>
-    <p>
-      <i>Last revised: $date by Paul A. Rombouts</i>
-    </p>
-  </body>
-</html>
diff --git a/jni/pdnsd/doc/html/doc.html b/jni/pdnsd/doc/html/doc.html
deleted file mode 100644
index 95828c5..0000000
--- a/jni/pdnsd/doc/html/doc.html
+++ /dev/null
@@ -1,2630 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>pdnsd Documentation</title>
-    <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
-    <style type="text/css">
-      <!--
-      .small { font-family:helvetica; font-size:small; text-align:center; }
-      .indented { text-indent: 2em; }
-      .nowrap { white-space:nowrap; }
-      // -->
-    </style>
-  </head>
-
-  <body bgcolor="#EEEEEE">
-    <!--notext(-->
-    <table width="100%">
-      <tr>
-	<td> <span class="small">
-	    <a href="index.html">pdnsd Homepage</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="faq.html">pdnsd FAQ</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="doc.html">Documentation</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="../../COPYING">GNU GPL (pdnsd's License)</a>
-	  </span> </td>
-	<td><span class="small">
-	    <a href="dl.html">Download Section</a>
-	  </span></td>
-      </tr>
-    </table>
-    <!--)notext-->
-    <center><h1>pdnsd Documentation</h1></center>
-    This is the "official" pdnsd documentation and reference written by
-    <a href="index.html#authors">Thomas Moestl</a> with revisions by
-    <a href="index.html#authors">Paul A. Rombouts</a>.<br>
-    This manual is a part of the pdnsd package, and may be distributed in
-    original or modified  form  under  terms  of  the  GNU  General  Public
-    License,  as  published by the Free Software Foundation; either version
-    3, or (at your option) any later version.<br>
-    You can find a copy of the GNU GPL in the file <code>COPYING</code> in the source or documentation directory.<br>
-    This manual is up-to-date for version 1.2.9b. For older documentation, please refer to the doc
-    directory of the respective pdnsd package.<br>
-    If you want a quicker introduction to pdnsd, you can try some of the
-    <a href="http://www.google.com/search?q=pdnsd+howto">HOWTOs available on the web</a>.
-    For Apple Mac users, Brian Wells has published a good HOWTO at
-    <a href="http://web.mac.com/brianwells/main/pdnsd.html">http://web.mac.com/brianwells/main/pdnsd.html</a>.
-
-
-    <h2>0. Installation</h2>
-    <h3>0.1 Installing binary RPM's</h3>
-    To install a binary RPM, just do<br>
-    <p class="indented"><code>rpm -i pdnsd-<<i>version</i>>.rpm</code></p>
-    This should install pretty much everything automatically. The only thing left
-    for you to do is adapt your configuration file (stored in <code>/etc/pdnsd.conf</code>)
-    according to your needs (see below).
-    In the Red Hat and SuSE RPMs, a start script is also installed; read the section
-    <i>0.4, Start at Boot Time</i> about that.
-
-    <br>
-    <h3>0.2 Building RPM's</h3>
-    It is possible to build a binary RPM from a source package using the command<br>
-    <p class="indented"><code>rpmbuild --rebuild pdnsd-<<i>version</i>>.src.rpm</code></p>
-    or alternatively from a tarball using the command<br>
-    <p class="indented"><code>rpmbuild -tb pdnsd-<<i>version</i>>.tar.gz</code></p>
-    You can do this as root, but it is safer to build a binary package first as a normal user,
-    and then, when all has gone well, install the resulting binary package as root as in the previous section.
-    How to build an RPM package without being root is described at
-    <a href="http://www.ibm.com/developerworks/linux/library/l-rpm1/">
-    http://www.ibm.com/developerworks/linux/library/l-rpm1/</a>.<br><br>
-    Several pdnsd-specific options are available when building RPM packages:
-    <table cellpadding=7>
-      <tr>
-	<td class="nowrap">
-	  <code>--with isdn</code>
-	</td>
-	<td>
-	  Has the same effect as <code>--enable-isdn</code> (<a href="#enableisdn">see below</a>).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--without poll</code>
-	</td>
-	<td>
-	  Has the same effect as <code>--disable-poll</code> (<a href="#disablepoll">see below</a>).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--without nptl</code>
-	</td>
-	<td>
-	  Has the same effect as <code>--with-thread-lib=linuxthreads</code> (<a href="#threadlib">see below</a>).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--with ipv6</code>
-	</td>
-	<td>
-	  Has the same effect as <code>--enable-ipv6</code> (<a href="#enableipv6">see below</a>).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--without tcpqueries</code>
-	</td>
-	<td>
-	  Has the same effect as <code>--disable-tcp-queries</code> (<a href="#disabletcpqueries">see below</a>).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--without debug</code>
-	</td>
-	<td>
-	  Has the same effect as <code>--with-debug=0</code> (<a href="#withdebug">see below</a>).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--define "distro <<i>distro</i>>"</code>
-	</td>
-	<td>
-	  Has the same effect as <code>--with-distribution=<<i>distro</i>></code> (<a href="#withdistro">see below</a>).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--define "run_as_user <<i>user</i>>"</code>
-	</td>
-	<td>
-	  Has the same effect as <code>--with-default-id=<<i>user</i>></code> (<a href="#defaultid">see below</a>).<br>
-	  For RPMs the default <code><<i>user</i>></code> is <code>"pdnsd"</code>.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--define "run_as_uid <<i>uid</i>>"</code>
-	</td>
-	<td>
-	  If the user defined by the previous option does not exist when the RPM is installed,
-	  the pre-install script will try to create a new user with numerical id <code><<i>uid</i>></code>.
-	  The default is to let the system choose the numerical id at install time.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--define "cachedir <<i>dir</i>>"</code>
-	</td>
-	<td>
-	  Has the same effect as <code>--with-cachedir=<<i>dir</i>></code> (<a href="#withcachedir">see below</a>).
-	</td>
-      </tr>
-    </table>
-    You can also configure which compiler flags will be used by setting the environment variable
-    <code>CFLAGS</code>.
-    Using a bash shell, you can do that on the command line like this:
-    <code> CFLAGS="-O1 -Wall" rpmbuild ...</code><br>
-    This is useful if you prefer a different level of optimization, for instance.
-
-    <br>
-    <h3>0.3 Installing from pure sources (tar archives or git repositories)</h3>
-    <h4>0.3.1 Setting up the source code tree</h4>
-    Source code is available in the form of snapshots (tarballs) or a git repository
-    with the very latest development code and a (nearly) complete history of all the revisions.
-    Cloning a git repository is useful if you need a recent fix or feature
-    that is not yet contained in a main release or you want to participate in pdnsd development.
-    Otherwise you will probably find the tarballs more convenient because they are much more compact.
-    <h5>0.3.1.1 Unpacking a tar archive</h5>
-    The pdsnsd snapshot releases come in the form of a gzip'ed tar archive.
-    To decompress it (using a modern tar) do<br>
-    <p class="indented"><code>tar -xzf pdnsd-<version>.tar.gz</code></p>
-    If your tar doesn't do this, use:<br>
-    <p class="indented"><code>gzip -dc pdnsd-<version>.tar.gz | tar -xf -</code></p>
-    <h5>0.3.1.2 Cloning a git repository</h5>
-    To clone a git repository you need to install, if not already installed,
-    the git version control system, which is available as a package in most modern Linux distributions.
-    Then run the command:<br>
-    <p class="indented"><code>git clone git://gitorious.org/pdnsd/pdnsd.git pdnsd</code></p>
-    In rare cases, if you are behind some kind of firewall, the special git protocol can't be used
-    and you will need to fall back to the http protocol.
-    See the <a href="http://gitorious.org/pdnsd">gitorious.org</a> website or git documentation for more information.
-
-    <h4>0.3.2 Configuring the source</h4>
-    Change into the pdnsd source directory and run configure. It takes the following command line
-    options (if you do not specify an option, defaults will be used):<br>
-    <table bgcolor="#CCCCCC" cellpadding=10>
-      <tr>
-	<td class="nowrap">
-	  <code>--prefix=<i>dir</i></code>
-	</td>
-	<td>
-	  Specify the prefix directory. The pdnsd files are installed in subdirectories
-	  of the prefix, the pdnsd and pdnsd-ctl executables are for example installed
-	  in the sbin subdirectory of the prefix. The default for this is /usr/local;
-	  you might want to set this to /usr (using <code>--prefix=/usr</code>).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--sysconfdir=<i>dir</i></code>
-	</td>
-	<td>
-	  Specify the config directory. pdnsd expects its pdnsd.conf file to reside
-	  there if the <code>-c</code> option is not given at startup.
-	  The default for this is the <code>etc</code> subdirectory of your prefix, e.g. <code>/usr/local/etc</code>
-	  if you did not specify a prefix. To set this e.g. to <code>/etc</code>, use <code>--sysconfdir=/etc</code>.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code><a name="withdistro">--with-distribution=<i>distro</i></a></code>
-	</td>
-	<td>
-	  Specify target distribution (default=Generic; others: RedHat, SuSE, Debian)<br>
-	  See below for the effect of these settings.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--with-target=<i>platform</i></code>
-	</td>
-	<td>
-	  Change compilation target platform (default: autodetect; others: Linux, BSD, Cygwin).<br>
-	  autodetect will attempt to detect whether you are using Linux, *BSD or Cygwin and
-	  should normally be sufficient. If this does not work, try specifying
-	  your system manually (for the Darwin platform (Apple Mac OS X) specify BSD here).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code><a name="withcachedir">--with-cachedir=<i>dir</i></a></code>
-	</td>
-	<td>
-	  Default directory for pdnsd cache (default=/var/cache/pdnsd)<br>
-	  This setting can be changed via config file settings when pdnsd has been built.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--with-hash-buckets=<i>num</i></code>
-	</td>
-	<td>
-	  Number of hash buckets to use (default=1024). The default should be
-	  sufficient for most purposes, but if you want to store a large number of names
-	  in the cache, cache lookups may be faster if the number of hash buckets
-	  is comparable to the number of names stored in the cache.
-	  The number actually used is the smallest power of two
-	  greater or equal to the number specified here.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code><a name="enableisdn">--enable-isdn</a></code>
-	</td>
-	<td>
-	  Enable ISDN support<br>
-	  This option will work only on Linux and may cause problems with 2.0.x or
-	  old 2.2.x kernels. You will need it for a proper <code>if</code> uptest
-	  under Linux for ISDN ppp devices.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--disable-ipv4</code>
-	</td>
-	<td>
-	  Disable IPv4 networking support (default=enabled)
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code><a name="enableipv6">--enable-ipv6</a></code>
-	</td>
-	<td>
-	  Enable IPv6 networking support.<br>
-	  If your OS does support IPv6 properly, you should be able to serve also
-	  IPv4 queries using this. Normally, this is disabled and you won't need
-	  it.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--disable-ipv4-startup</code>
-	</td>
-	<td>
-	  Disable IPv4 on pdnsd startup by default (default=enabled)
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--enable-ipv6-startup</code>
-	</td>
-	<td>
-	  Enable IPV6 on pdnsd startup by default (default=IPv4).
-	  These options are only defaults, you can specify on
-	  the command line or in the config files which IP version
-	  will really be used.
-	  Normally, you won't need to change these.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--disable-udp-queries</code>
-	</td>
-	<td>
-	  Disable UDP as query method. You shouldn't need to change
-	  this.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code><a name="disabletcpqueries">--disable-tcp-queries</a></code>
-	</td>
-	<td>
-	  Disable TCP as query method. This only effects the querying of
-	  name servers by pdnsd, not the ability of pdnsd to answer
-	  TCP queries from clients.
-	  TCP queries are slower than UDP queries, but can be more secure
-	  against certain types of attacks and are able to handle large answers.
-	  For normal use this can be disabled.
-	  (Note that the default has changed: TCP-query support
-	  is now compiled in by default, but it still depends on the run-time
-	  options whether it is actually used.)
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--with-query-method=<i>qm</i></code>
-	</td>
-	<td>
-	  Specify the query method (default=udponly, others: tcponly, tcpudp, udptcp).
-	  If you have enabled both UDP and TCP queries, this lets you control
-	  which query method pdnsd will use by default. tcpudp will try TCP
-	  first and fall back to UDP if TCP is not supported by the server;
-	  udptcp will try UDP first and, if the answer was truncated, will repeat
-	  the query using TCP.
-	  udponly and tcponly should be clear. Note that this only effects
-	  the compiled-in default; the query method can still be changed using
-	  command-line options or options in the configuration file.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--disable-tcp-server</code>
-	</td>
-	<td>
-	  Disable the TCP server.
-	  In this case pdnsd will not be able to respond to TCP queries from clients.
-	  This may cause problems with very large answers.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--disable-src-addr-disc</code>
-	</td>
-	<td>
-	  Disable the UDP source address discovery.<br>
-	  You need this only if you have trouble with messages saying
-	  "could not discover udp source address".<br>
-	  For the Cygwin target, this option is disabled by default.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code><a name="disablepoll">--disable-poll</a></code>
-	</td>
-	<td>
-	  Disable poll(2) and use select(2) (default=enabled)<br>
-	  You will normally not need this.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--disable-new-rrs</code>
-	</td>
-	<td>
-	  Since version 1.2.9 this option is obsolete and ignored.
-	  It is now possible to configure for each RR type separately whether it is
-	  cacheable by pdnsd by editing the file <code>src/rr_types.in</code>.
-	  The comments in this file explain how to do this.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--enable-strict-rfc2181</code>
-	</td>
-	<td>
-	  Enforce strict RFC 2181 compliance.<br>
-	  This will cause pdnsd to reject DNS answers with incorrect
-	  timestamp settings (multiple RRs of the same type and for the same domain with
-	  different TTLs). Normally not needed.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code><a name="enableunderscores">--enable-underscores</a></code>
-	</td>
-	<td>
-	  This option is obsolete. Since version 1.2, pdnsd places no restrictions
-	  on the types of characters in domain names (there are still a few restrictions
-	  for locally defined names, though).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--with-random-device=<i>device</i></code>
-	</td>
-	<td>
-	  Specify random device; default: C Library <code>random()</code> PRNG<br>
-	  pdnsd uses (pseudo-)  random numbers as query IDs for security reasons
-	  (this makes forging DNS answers more difficult). This option
-	  controls where pdnsd gets these from. The default is the C library
-	  <code>random()</code> function, which is relatively weak.
-	  You can specify a device like /dev/urandom here if you like; pdnsd will read
-	  random numbers  from it 16-bit-wise. /dev/urandom is present under Linux and
-	  most BSD derivates. You should not use /dev/random - it is more secure, but
-	  may block and delay pdnsd's answers for a long time.<br>
-	  You can specify <code>arc4random</code> to use the BSD <code>arc4random()</code>
-	  library function (default for FreeBSD target), which is considered safe.<br>
-	  You can also specify <code>random</code> as device to use the C Library
-	  <code>random()</code> function (described above).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code><a name="defaultid">--with-default-id=<i>user</i></a></code>
-	</td>
-	<td>
-	  Specify default user for pdnsd (default=nobody).
-	  This is the user that will be entered for the <code>run_as</code>
-	  option in the config file (see <a href="#runas">below</a>) that will be installed during <code>make install</code>.
-	  You can change this any time in your config file.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code><a name="withdebug">--with-debug=<i>level</i></a></code>
-	</td>
-	<td>
-          Specify debugging level. Normally you can safely switch debugging off
-	  by setting the level to 0. This will increase speed (although only
-	  marginally) and save space in the executable (only about 12kB).
-	  However, more significant may be the savings in stack space, especially
-	  if pdnsd is put under heavy load and there are many simultaneous
-	  running threads.<br>
-	  Presently the only defined debug levels are in the range 0 - 9.
-	  Setting the level to 9 enables hex dumps of the queries and replies
-	  pdnsd receives and should normally not be needed. Debug output will only
-	  be generated if you turn on special switches; it might be useful for
-	  debugging your config files, so I recommend using the default (1).
-	  However, if you use pdnsd under heavy load, a  better strategy may be
-	  to compile one version of pdnsd without debug support (configured with
-	  <code>--with-debug=0</code>) for production use, and one version with
-	  with debug support (e.g. <code>--with-debug=9</code>)
-	  for diagnostic purposes.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--with-verbosity=<i>level</i></code>
-	</td>
-	<td>
-	  Specify default message verbosity. The default should be ok.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--enable-rcsids</code>
-	</td>
-	<td>
-	  Enable RCS IDs in executables (default=disabled).<br>
-	  For personal use, there is no need to do this. If you build rpm's, it
-	  might have advantages.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--enable-tcp-subseq</code>
-	</td>
-	<td>
-	  Enable subsequent tcp queries. The DNS protocol standard
-	  requires that servers must be capable of answering multiple
-	  subsequent queries that are sent over the same tcp connection, and that
-	  the server may only close the connection by himself after a certain
-	  timeout. This feature is rarely used, but may make denial-of-service
-	  attacks easier, as it allows for an attacker to hold a connection open
-	  a long time (although the attacker's IP is most likely revealed then).
-	  For full standard compliance, you should use this option.
-	  If you do not use <code>--enable-tcp-server</code>, is option is not honored.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--with-tcp-qtimeout=<i>secs</i></code>
-	</td>
-	<td>
-	  Specify default tcp query timeout after which the connection is closed
-	  if no full query has been received. The default is 30s.
-	  You can also change this option at run time using the tcp_qtimeout
-	  config file option.
-	  If you do not use <code>--enable-tcp-server</code>, is option is not honored.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--with-par-queries=<i>num</i></code>
-	</td>
-	<td>
-	  Specify the default number of queries that can be executed in parallel.
-	  You can also change this option at run time using the par_queries
-	  config file option. See the description of that option for an explanation
-	  of what it really does.<br>
-	  The default for this option is 2.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code>--with-max-nameserver-ips=<i>num</i></code>
-	</td>
-	<td>
-	  <em>New in version 1.2.9b:</em>
-	  Specify the maximum number of IP addresses that can be used per nameserver obtained
-	  from NS records (when resolving names recursively).
-	  Just one IP address per nameserver is sufficient in the vast majority of cases
-	  (and this was the strategy used by pdnsd in previous versions),
-	  but in rare cases this will cause unnecessary resolve failures if the address chosen
-	  for each nameserver happens to be unreachable while the other addresses would lead to
-	  successful resolution.<br>
-	  The default for this option is 3.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap">
-	  <code><a name="threadlib">--with-thread-lib=<i>lib</i></a></code>
-	</td>
-	<td>
-	  <em>Added by Paul Rombouts</em>: Use this option if you experience problems with
-	  signal handling under Linux. The usual symptom is that pdnsd fails to save
-	  the cache to disk, and <code>/var/cache/pdnsd/pdnsd.cache</code> remains empty.
-	  If you experience this kind of trouble, try reconfiguring with different values
-	  for the <code>--with-thread-lib</code> option. The allowable values are
-	  <code>linuxthreads</code> (or <code>lt</code> for short), <code>linuxthreads2</code>
-	  (or <code>lt2</code> for short), and <code>nptl</code>.
-	  By default the configure script tries to detect automatically whether
-	  <code>linuxthreads</code> or <code>nptl</code> is more appropriate for your system,
-	  but the method used is not foolproof. Look for the line:
-	  <code>checking if this is an NPTL-based system...</code><br>
-	  If the automatic test mistakenly indentifies the thread library on your system as
-	  NPTL based, you should reconfigure with <code>--with-thread-lib=lt</code> and recompile.
-	  If the result of the automatic test is "<code>no</code>" or if
-	  <code>--with-thread-lib=lt</code> does not have the desired effect, try again using
-	  <code>--with-thread-lib=lt2</code> .
-	</td>
-      </tr>
-    </table>
-    Normally, you will need only <code>--prefix</code>, <code>--sysconfdir</code> and
-    <code>--with-distribution</code>.
-    If you specify your distribution using <code>--with-distribution</code>, this has the
-    following effects:
-    <ul>
-      <li> An rc script is copied in the appropriate localtion, which enables pdnsd to start
-	at machine boot time (see 0.4)
-      <li> Distribution-specific portions might be included in the generated pdnsd.spec
-	file (only important if you want to build rpm archives yourself).
-    </ul>
-    If you choose <code>Generic</code>, no rc script is installed, and a generic spec
-    file is generated.<br>
-
-    Further instructions are in the INSTALL document in the pdnsd source directory.
-    <code>./configure --help</code> will give you a list of all supported command line
-    options.<br><br>
-    <em>Note added by Paul Rombouts</em>: Some people may want change the compiler optimization flag.
-    I use the <code>-O2</code> flag, but it might be safer to use a lower level of
-    optimization or no optimization at all. In that case prefix the
-    <code>configure</code> command with the desired compiler flags like this
-    (assuming you're using a bash shell):
-    <p class="indented"><code>CFLAGS="-O1 -Wall" ./configure ...</code></p>
-
-
-    <br>
-    <h4>0.3.3 Building & installing </h4>
-    Type <code>make</code> in the source directory. <i>Should</i> work by now.<br>
-    To install, type <code>make install</code> or do the installation by hand (see <i>0.3.4</i>).<br>
-    <code>make install</code> will do the following ($prefix is the prefix directory; see above):<br>
-    <ol>
-      <li> copies pdnsd to <code>$(prefix)/sbin/</code>
-      <li> copies pdnsd-ctl to <code>$(prefix)/sbin/</code>
-      <li> copies docs/pdnsd.conf.sample (a sample configuration) to the pdnsd config directory.
-      <li> creates your cache directory if it is not there.
-	After installation, you should check the file permissions and create or edit
-	<code>/etc/pdnsd.conf</code> to fit your needs (see below).
-	If you use the <a href="#runas"><code>run_as</code></a> option, please make sure that your
-	cache directory is owned by the user you specified with this option!
-    </ol>
-    You must be root for this installation!<br>
-    <b>Security notes:</b> <b><i>never</i></b> make the pdnsd cache directory
-    writeable for untrusted users, or you will get several security holes:
-    the users might modify the cache contents, or plant dangerous links.<br>
-    If you use a pidfile, you should be aware that you introduce security
-    problems if you place the pidfile in a directory in a NFS filesystem that
-    is writeable for untrusted users. Generally, the pidfile directory
-    (typically /var/run) should not be writeable for untrusted users.
-    <br>
-    <h4>0.3.4 Manual installation </h4>
-    For a manual installation, you need to do the following steps:
-    <ol>
-      <li> Copy pdnsd and pdnsd-ctl from your build directory to an appropriate location (e.g. <code>/usr/sbin</code>).
-      <li> Copy <code>docs/pdnsd.conf</code> into the directory you want it to reside (<code>/etc</code> by default,
-	    and change it according to your needs (see below).
-      <li> Create your caching directory; default is <code>/var/cache/pdnsd</code> (you may change this
-	in your <code>pdnsd.conf</code>); Permissions should be at max <code>rwxr-xr-x</code> (if you want to
-	protect your cache and status socket, make it <code>rwx------</code>).
-    </ol>
-    Thats it!
-    <br>
-
-    <h3>0.4 Start at boot time</h3>
-    In the <code>src/rc</code> folder of the pdnsd distribution are start scripts
-    for pdnsd designed for different Linux distros. There are scripts
-    for SuSE, Redhat, Debian, Arch Linux and Slackware now.<br>
-    The start scripts are automatically installed during RPM install, and also during <code>make install</code>
-    if you specified your distro.<br>
-    For Slackware Linux there is a start-up script contributed by Nikola Kotur, but presently
-    it must be installed manually.
-    See <code>src/rc/README</code> and <code>src/rc/Slackware/rc.pdnsd</code> for details.
-
-    <h4>0.4.1 SuSE Linux startup</h4>
-    <code>rc/SuSE/pdnsd</code> is a start script for SuSE Linux. It was tested for 6.? but should run on some
-    versions below. You can do <code>make install</code> as root in the <code>rc/SuSE</code>
-    directory to install it, or you can install manually:<br>
-    <table width="100%" bgcolor="#CCCCCC" cellpadding=5>
-      <tr>
-	<td>
-	  <b>manual installation</b>
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  For manual installation, copy <code>rc/SuSE/pdnsd</code> into <code>/sbin/init.d/</code>, go to
-	  <code>/sbin/init.d/rc2.d/</code> and create there the following two symlinks:<br>
-	  S11pdnsd to ../pdnsd (do <code>ln -s ../pdnsd S11pdnsd</code> in that dir) <br>
-	  K34pdnsd to ../pdnsd (do <code>ln -s ../pdnsd K34pdnsd</code> in that dir) <br>
-	  The numbers dictate the order different services are started and
-	  might need to be modified. Then edit your <code>/etc/rc.config</code> file and
-	  add the line <code>START_PDNSD=yes</code> to start pdnsd at boot time.
-	</td>
-      </tr>
-    </table>
-    <p>
-      If you used the <code>make install</code> command, <code>START_PDNSD=yes</code> has been
-      appended to your <code>/etc/rc.config</code> file, causing pdnsd to be started
-      at boot time. If you don't want that, change the <code>yes</code> into <code>no</code>.
-    </p>
-    This start script was created from <code>/sbin/init.d/skeleton</code> by me, so the
-    most is copyrighted by SuSE. They put it under the GPL, however, so
-    the license stated in <a href="../../COPYING">COPYING</a> also applies to this script.
-    There is NO WARRANTY OF ANY KIND on these scripts.
-    This is no official SuSE script, and SuSE naturally does NO support
-    for it.
-    <h4>0.4.2 Red Hat Linux startup</h4>
-    <code>rc/Redhat/pdnsd</code> is a start script for Red Hat Linux. It was contibuted by Torben
-    Janssen. <br>
-    This was tested for 6.1 but should run on 5.0+. You can do <code>make install</code> as root in the
-    <code>rc/Redhat</code> directory to install it, or you can install manually:<br>
-    <table width="100%" bgcolor="#CCCCCC" cellpadding=5>
-      <tr>
-	<td>
-	  <b>manual installation</b>
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  For manual installation, copy <code>rc/Redhat/pdnsd</code> into <code>/etc/rc.d/init.d/</code><br>
-	  Then go to <code>/etc/rc.d/rc3.d</code> and create there the following symlink:<br>
-	  S78pdnsd -> ../init.d/pdnsd
-	  (do <code>ln -f -s ../init.d/pdnsd S78pdnsd</code> in that dir)<br>
-
-	  Then go to <code>/etc/rc.d/rc0.d</code> and create there the following symlink:<br>
-	  K78pdnsd -> ../init.d/pdnsd
-	  (do <code>ln -f -s ../init.d/pdnsd K78pdnsd</code> in that dir)<br>
-
-	  Then go to /etc/rc.d/rc6.d and create there the following symlink:<br>
-	  K78pdnsd -> ../init.d/pdnsd
-	  (do <code>ln -f -s ../init.d/pdnsd K78pdnsd</code> in that dir)
-	</td>
-      </tr>
-    </table>
-    This script is also covered by license stated in <a href="../../COPYING">COPYING</a>.
-    Again, there is NO WARRANTY OF ANY KIND on these scripts.
-    This is no offical Redhat script, and Redhat naturally does NO support
-    for it
-    <br>
-    <h3>0.5 Notes for FreeBSD users</h3>
-    The special handling of ISDN ppp devices is only supported on Linux. It is not needed in FreeBSD, the normal
-    device handling also works fine with isdn4bsd devices.<br>
-    When compiled for FreeBSD, pdnsd as a small RFC compatability issue: RFC2181 demands answers on dns querys
-    to be sent with the same source address the query packet went to. In seldom cases, this will not be the case,
-    because the kernel selects the source address depending on the interface that was used for sending the answer.<br>
-    Setting the source address currently does not work for IPv4. I have written a kernel patch that will provide an easy way
-    to program this. We'll see if or when it gets commited.<br>
-    <br>
-    <br>
-    <h2>1 Invocation</h2>
-    When invoking pdnsd, you can specify various options at the command line. Command line options
-    always override config file options. The various <b>--noX</b> options are present to override
-    config file options.
-    <p>
-      pdnsd <b>--help</b> (or <b>-h</b>) gives you an overview of the pdnsd command line options.
-    </p>
-    <p>
-      pdnsd <b>--version</b> (or <b>-V</b> for short) prints licence and version information.
-    </p>
-    <p>
-      To start pdnsd as background daemon, specifiy <b>--daemon</b> (or <b>-d</b> for short) on
-      the command line. Diagnostic and error messages after the actual daemon start
-      will be printed to the syslog instead of the console. <b>--nodaemon</b> will disable this.
-    </p>
-    <p>
-      When starting pdnsd as a daemon, the <b>-p</b> option may be helpful: It writes the pid
-      of the server process to the file of the name given as argument to this option. <br>
-      Example: <code>pdnsd -d -p /var/run/pdnsd.pid</code>
-    </p>
-    <p>
-      If you want to specify a configuration file other than <code>/etc/pdnsd.conf</code>, specify
-      <b>-c</b> or <b>--config-file</b> on the command line, followed by a filename.
-    </p>
-    <p>
-      If pdnsd was compiled with debugging support, you may specify <b>-g</b> or
-      <b>--debug</b> on the command line. This will cause extra diagnostic messages to be
-      printed. When pdnsd runs in daemon mode, the messages will be written to the <code>pdnsd.debug</code>
-      file in your cache directory. <b>--nodebug</b> disables debugging.
-    </p>
-    <p>
-      pdnsd <b>-v</b><i>n</i> sets the verbosity level of pdnsd. <i>n</i> is normally a digit from 0 to 3,
-      where 0 means normal operation, while 3 will most verbose.
-      Level 9 can be used in combination with the <code>--debug</code> option for very
-      extensive debug information.<br>
-      <i>Note</i>: The current implementation mostly ignores the verbosity level,
-      so you may not notice much difference between the various levels.
-    </p>
-    <p>
-      The option <b>-s</b> or <b>--status</b> enables the status control socket. This is a named socket in
-      the cache directory called <code>pdnsd.status</code>. This socket allows run-time configuration of pdnsd
-      using the utility <code>pdnsd-ctl</code>. See <a href="#pdnsdctl">below</a> for more details about <code>pdnsd-ctl</code>.
-      <b>--nostatus</b> disables status control.
-      See also the configuration option <a href="#statusctl"><code>status_ctl</code></a> in the global section.
-    </p>
-    <p>
-      The option <b>--notcp</b> disables the seldom needed TCP server thread, which may
-      save you some resources. <b>-t</b> or <b>--tcp</b> will enable it.
-      See also the <a href="#tcpserver"><code>tcp_server</code></a> configuration option.
-    </p>
-    <p>
-      Using the <a name="querymethodcommandlineoption"><b>-m</b></a> option, you can select the method pdnsd uses to query other name servers.
-      Following methods are supported (see also the <a href="#querymethod"><code>query_method</code></a>
-      configuration option):<br>
-      <b>-muo</b>: pdnsd will use UDP only. This is the fastest method, and should be supported by all name servers
-      on the Internet. <br>
-      <b>-mto</b>: pdnsd will use TCP only. TCP queries usually take longer time than UDP queries, but are more secure
-      against certain attacks, where an attacker tries to guess your query id and to send forged answers. TCP queries
-      are not supported by some name servers.<br>
-      <b>-mtu</b>: pdnsd will try to use TCP, and will fall back to UDP if its connection is refused or times out.<br>
-      <b>-mut</b>: <em>New in version 1.2.5:</em> pdnsd will try to use UDP, and will repeat the query using TCP if the UDP reply was truncated
-      (i.e. the <code>tc</code> bit is set). This is the behaviour recommended by the DNS standards.<br>
-    </p>
-    <p>
-      The <b>-4</b> option switches to IPv4 mode, providing pdnsd was compiled with IPv4 support.<br>
-      The <b>-6</b> option switches to IPv6 mode, providing pdnsd was compiled with IPv6 support.<br>
-      The <b>-a</b> option is only available when pdnsd was compiled with both IPv4 and IPv6 support.
-      With this option, pdnsd will try to detect automatically if a system supports IPv6, and fall back to IPv4 otherwise.<br>
-    </p>
-    <p>
-      With <b>-i</b> <em>prefix</em> or <b>--ipv4_6_prefix=</b><em>prefix</em> you can set the prefix pdnsd uses (when running in IPv6
-      mode) to map IPv4 addresses in the configuration file to IPv6 addresses.
-      There is also a corresponding option for the config file, <a href="#ipv46prefix">see below</a>.
-      Must be a valid IPv6 address.
-      The default is <code>::ffff:0.0.0.0</code>
-    </p>
-
-    <h2>2 The configuration file</h2>
-    This section describes the layout of the configuration file and the available
-    configuration options.
-    The default location of the file is <code>/etc/pdnsd.conf</code>. This may be changed
-    with the -c command line option.
-    An example pdnsd.conf comes with the pdnsd distribution in the docs directory
-    and will be installed to <code>/etc/</code> by <code>make install</code>.
-
-    <br>
-    <h3>2.1 Layout</h3>
-    The configuration file is divided into sections. Each section is prefixed with
-    the section name and opening curlies ({) and closed with closing curlies (}).
-    In each section, configuration options can be given in the form
-    <br><code>
-      <i>option_name</i>=<i>option_value</i>;
-    </code><br>
-    Option value may be a string literal, a number, a time specification or a constant.
-    In previous  versions of pdnsd strings had to be enclosed
-    in quotes ("), but since version 1.1.10 this is no longer necessary, unless
-    a string contains a special character such as whitespace, a token that normally starts
-    a comment, or one of "<code>,;{}\</code>".
-    Since version 1.2.9 a backslash (\) inside a string is interpreted as an escape character,
-    so it is possible to include special characters in strings (both quoted or unquoted)
-    by preceding them with a backslash. Some escape sequences are in interpreted as in the C
-    programming language, e.g. <code>\t</code> becomes a tab,
-    <code>\n</code> becomes a new-line control char.<br>
-    A time specification consists a sequence of digits followed by a one-letter suffix.
-    The following suffixes are recognized:
-    <code>s</code> (seconds), <code>m</code> (minutes), <code>h</code> (hours),
-    <code>d</code> (days) and <code>w</code> (weeks).
-    If the suffix is missing, seconds are assumed.
-    If several time specifications are concatenated, their values are added together;
-    e.g. <code>2h30m</code> is interpreted as 2*60*60 + 30*60 = 9000 seconds.<br>
-    Some options take more than one value; in this case, the values are separated with commas.<br>
-    If you may supply one of a set of possible values to an option, this is noted
-    in the documentation as
-    <code>(option1|option2|option3|...)</code><br>
-    The constants <code>true|false</code> and <code>yes|no</code>
-    are accepted as synonyms for the constants <code>on|off</code>.<br>
-    Comments may be enclosed in /* and */, nested comments are possible. If the
-    # sign or two slashes (//) appear in the configuration file, everything from
-    these signs to the end of the current line is regarded as a comment and ignored.<br>
-    There are examples for nearly all options in the sample config file.
-    <br>
-    <h3>2.1.1 <a name="globalsection"><code>global</code> Section</a></h3>
-    The global section specifies parameters that affect the overall behaviour of the
-    server. If you specify multiple global sections, the settings of those later in
-    the file will overwrite the earlier given values.<br>
-    These are the possible options:<br><br>
-    <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
-      <tr>
-	<td>
-	  <b><code>perm_cache=(<i>number</i>|off);</code></b><br>
-	  Switch the disk cache off or supply a maximum cache size in kB. If the disk
-	  cache is switched off, 8 bytes will still be written to disk.
-	  The memory cache is always 10kB larger than the file cache.
-	  This value is 2048 (2 MB) by default.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>cache_dir=<i>string</i>;</code></b><br>
-	  Set the directory you want to keep the cache in.
-	  The default is <code>"/var/cache/pdnsd"</code>
-	  (unless pdnsd was compiled with a different default).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>server_port=<i>number</i>;</code></b><br>
-	  Set the server port. This is especially useful when you want to start the
-	  server and are not root. Note that you may also not specify uptest=ping in
-	  the server section as non-root.<br>
-	  The default port is 53, the RFC-standard one. Note that you should only use
-	  non-standard ports when you only need clients on your machine to communicate
-	  with the server; others will probably fail if the try to contact the server
-	  on the basis of an NS record, since the A record that supplies the address for
-	  (among others) name servers does not have a port number specification.
-	</td>
-      </tr>
-      <tr>
- 	<td>
-	  <b><code>server_ip=<i>string</i>;</code></b><br>
-	  or<br>
-	  <b><code>interface=<i>string</i>;</code></b><br>
-	  Set the IP address pdnsd listens on for requests. This can be useful
-          when the host has several interfaces and you want pdnsd not to listen on
-          all interfaces. For example, it is possible to bind pdnsd to listen on
-          127.0.0.2 to allow pdnsd to be a forwarder for BIND.
-	  The default setting for this option is <code>server_ip=any</code>, which means that
-	  pdnsd will listen on all of your local interfaces.
-	  Presently you can only specify one address here; if you want pdnsd to listen on multiple
-	  interfaces but not all you will have to specify <code>server_ip=any</code>
-	  and use firewall rules to restrict access.<br>
-	  The IP address used to need quotation marks around it, but since version 1.1.10
-	  this is no longer necessary.<br>
-	  If pdnsd has been compiled with both IPv4 and IPv6 support, and you want to
-	  specify an IPv6 address here, then unless pdnsd was compiled to start up in IPv6 mode
-	  by default, you will need to use the <code>-6</code> command-line option or
-	  set <code>run_ipv4=off</code> first (see <a href="#runipv4">below</a>) in order to ensure that the
-	  IPv6 address is parsed correctly.<br>
-	  If pdnsd is running in IPv6 mode and you specify an IPv4 address here,
-	  it will automatically be mapped to an IPv6 address.<br>
-	  <em>New in version 1.2:</em> You may also give the name of an interface
-	  such as <code>"lo"</code> or <code>"eth0"</code> here, instead of an IP address
-	  (this has been tested on Linux, and may or may not work on other platforms).
-	  pdnsd will not bind to the interface name, but will look up the address of the
-	  interface at start-up and listen on that address. If the address of the interface
-	  changes while pdnsd is running, pdnsd will not notice that. You will need to
-	  restart pdnsd in that case.
-	</td>
-      </tr>
-      <tr>
- 	<td>
-	  <b><code>outgoing_ip=<i>string</i>;</code></b><br>
-	  or<br>
-	  <b><code>outside_interface=<i>string</i>;</code></b><br>
-	  <em>New in version 1.2.9:</em>
-	  Set the IP address of the interface used by pdnsd for outgoing queries.
-	  This can be useful when the host has several interfaces and you want pdnsd
-	  to send outgoing queries via only one of them.
-	  For example, if  pdnsd is running on a host with one interface with IP address
-	  192.168.1.1 connected to the local network, and another with IP address 123.xxx.yyy.zzz
-	  connected to the internet, you may specify <code>server_ip=192.168.1.1</code>
-	  and <code>outgoing_ip=123.xxx.yyy.zzz</code> to enforce that pdnsd only responds
-	  to queries received from the local network, and only sends outgoing queries via
-	  the interface connected to the internet.<br>
-	  The default setting for this option is <code>any</code>, which means that
-	  the kernel is free to decide which interface to use.
-	  Like with the <code>server_ip</code> option, you may also give the name of an
-	  interface here, instead of an IP address.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>linkdown_kluge=(on|off);</code></b><br>
-	  This option enables a kluge that some people might need: when all servers are
-	  marked down, with this option set the cache is not even used when a query is
-	  received, and a DNS error is returned in any case. The only exception from this
-	  is that local records (as specified in <code>rr</code> and <code>source</code>
-	  sections are still served normally.
-	  In general, you probably want to get cached entries even when the network is down,
-	  so this defaults to off.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>max_ttl=<i>timespec</i>;</code></b><br>
-	  This option sets the maximum time a record is held in cache. All dns
-	  resource records have a time to live field that says for what period of time the
-	  record may be cached before it needs to be requeried. If this is more than the
-	  value given with <code>max_ttl</code>, this time to live value is set to <code>max_ttl</code>.
-	  This is done to prevent records from being cached an inappropriate long period of time, because
-	  that is almost never a good thing to do. Default is 604800s (one week).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>min_ttl=<i>timespec</i>;</code></b><br>
-	  This option sets the minimum time a record is held in cache. All dns
-	  resource records have a time to live field that says for what period of time the
-	  record may be cached before it needs to be requeried. If this is less than the
-	  value given with <code>min_ttl</code>, this time to live value is set to <code>min_ttl</code>.
-	  Default is 120 seconds.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>neg_ttl=<i>timespec</i>;</code></b><br>
-	  This option sets the time that negatively cached records will remain valid in the
-	  cache if no time to live can be determined. This is always the case when whole
-	  domains are being cached negatively, and additionally when record types are cached
-	  negatively for a domain for which no SOA record is known to pdnsd. If a SOA is present,
-	  the ttl of the SOA is taken.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>neg_rrs_pol=(on|off|auth|default);</code></b><br>
-	  This sets the RR set policy for negative caching; this tells pdnsd under which circumstances
-	  it should cache a record type negatively for a certain domain. <code>off</code> will
-	  turn the negative caching of record types off, <code>on</code> will always add a negative
-	  cache entry when a name server did not return a record type we asked it for, and <code>auth</code>
-	  will only add such entries if the answer came from an authoritative name server for that
-	  domain.<br>
-	  <em>New in version 1.2.8:</em> The <code>default</code> setting will add a negatively cached record
-	  if either the answer was authoritive or the answer indicated the name server had "recursion available"
-	  while the query explicitly requested such recursion.<br>
-	  The preset is "<code>default</code>" (used to be <code>auth</code>).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>neg_domain_pol=(on|off|auth);</code></b><br>
-	  This is analogue to <code>neg_rrs_pol</code> for whole domain negative caching. It should be safe
-	  to set this <code>on</code>, because I have not seen a caching server that will falsely claim that a
-	  domain does not exist.<br>
-	  The default is <code>auth</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="runas">run_as=<i>string</i>;</a></code></b><br>
-	  This option allows you to let pdnsd change its user and group id after operations that needed
-	  privileges have been done. This helps minimize security risks and is therefore recommended. The
-	  supplied string gives a user name whose user id and primary group id are taken. <br>
-	  A little more details: after reading the config file, becoming a daemon (if specified) and starting
-	  the server status thread, the main thread changes its gid and uid, as do all newly created threads
-	  thereafter. By taking another uid and gid, those threads run with the privileges of the
-	  specified user.
-	  Under Linux and FreeBSD, the server status thread runs with the original privileges only when the strict_setuid option
-	  is set to <code>off</code> (see below, <code>on</code> by default), because these may be needed
-	  for exec uptests. The manager thread also retains its original privileges in this case.
-	  You should take care that the user you specify has write permissions on your cache file and
-	  status pipe (if you need a status pipe). You should look out for error messages like "permission denied"
-	  and "operation not permitted" to discover permission problems.<br>
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>strict_setuid=(on|off);</code></b><br>
-	  When used together with the <code>run_as</code> option, this option lets you specify that all threads of the
-	  program will run with the privileges of the <code>run_as</code> user. This provides higher security than
-	  the normal <code>run_as</code>
-	  option, but is not always possible. See the <a href="#runas"><code>run_as</code></a> option for further discussion.<br>
-	  This option is on by default.<br>
-	  Note that this option has no effect on Non-Linux systems.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>paranoid=(on|off);</code></b><br>
-	  Normally, pdnsd queries all servers in recursive mode (i.e. instructs servers to query other servers themselves
-	  if possible,
-	  and to give back answers for domains that may not be in its authority), and accepts additional records with information
-	  for servers that are not in the authority of the queried server. This opens the possibility of so-called cache poisoning:
-	  a malicious attacker might set up a dns server that, when queried, returns forged additional records. This way, he might
-	  replace trusted servers with his own ones by making your dns server return bad IP addresses. This option protects
-	  you from cache poisoning by rejecting additional records
-	  that do not describe domains in the queried servers authority space and not doing recursive queries any more.
-	  An exception
-	  to this rule are the servers you specify in your config file, which are trusted.<br>
-	  The penalty is a possible performance decrease, in particular, more queries might be necessary for the same
-	  operation.<br>
-	  You should also notice that there may be other similar security problems, which are essentially problems of
-	  the DNS, i.e.
-	  any "traditional" server has them (the DNS security extensions solve these problems, but are not widely
-	  supported).
-	  One of this vulnerabilities is that an attacker may bombard you with forged answers in hopes that one may match a
-	  query
-	  you have done. If you have done such a query, one in 65536 forged packets will be succesful (i.e. an average packet
-	  count of 32768 is needed for that attack). pdnsd can use TCP for queries,
-	  which has a slightly higher overhead, but is much less vulnerable to such attacks on sane operating systems. Also, pdnsd
-	  chooses random query ids, so that an attacker cannot take a shortcut. If the attacker is able to listen to your network
-	  traffic, this attack is relatively easy, though.<br>
-	  This vulnerability is not pdnsd's fault, and is possible using any conventional
-	  name server (pdnsd is perhaps a little more secured against this type of attacks if you make it use TCP).<br>
-	  The <code>paranoid</code> option is off by default.<br>
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>ignore_cd=(on|off);</code></b><br>
-	  <em>New in version 1.2.8:</em> This option lets you specify that the CD bit of a DNS query will be ignored.
-	  Otherwise pdnsd will reply FORMERR to clients that set this bit in a query.
-	  It is safe to enable this option, as the CD bit refers to 'Checking Disabled'
-	  which means that the client will accept non-authenticated data.<br>
-	  This option is on by default. Turn it off if you want the old behaviour (before version 1.2.8).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>scheme_file=<i>string</i>;</code></b><br>
-	  In addition to normal uptests, you may specify that some servers shall only be queried when a certain
-	  pcmcia-cs scheme is active (only under linux). For that, pdnsd needs to know where the file resides that
-	  holds the pcmcia scheme information. Normally, this is either <code>/var/lib/pcmcia/scheme</code> or
-	  <code>/var/state/pcmcia/scheme</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="statusctl">status_ctl=(on|off);</a></code></b><br>
-	  This has the same effect as the <code>-s</code> command line option: the status control is enabled when
-	  <code>on</code> is specified.<br>
-	  <em>Added by Paul Rombouts</em>: Note that <code>pdnsd-ctl</code> allows run-time configuration of pdnsd,
-	  even the IP addesses of the name servers can be changed. If you're not using <code>pdnsd-ctl</code> and
-	  you want maximum security, you should not enable this option. It is disabled by default.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>daemon=(on|off);</code></b><br>
-	  This has the same effect as the <code>-d</code> command line option: the daemon mode is enabled when
-	  <code>on</code> is specified.<br>
-	  Default is <code>off</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="tcpserver">tcp_server=(on|off);</a></code></b><br>
-	  <code>tcp_server=on</code> has the same effect as the <code>-t</code> or <code>--tcp</code>
-	  command-line option: it enables TCP serving.
-	  Similarly, <code>tcp_server=off</code> is like the <code>--notcp</code> command-line option.<br>
-	  Default is <code>on</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>pid_file=<i>string</i>;</code></b><br>
-	  This has the same effect as the <code>-p</code> command line option: you can specify a file that pdnsd
-	  will write its pid into when it starts in daemon mode.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>verbosity=<i>number</i>;</code></b><br>
-	  This has the same effect as the <code>-v</code> command line option: you can set the verbosity of pdnsd's
-	  messages with it. The argument is a number between 0 (few messages) to 3 (most messages).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="querymethod">query_method=(tcp_only|udp_only|tcp_udp|udp_tcp);</a></code></b><br>
-	  This has the same effect as the <code>-m</code> command line option.
-	  Read the documentation for the <a href="#querymethodcommandlineoption">command line option</a> on this.
-	  <code>tcp_only</code> corresponds to the <code>to</code>, <code>udp_only</code> to the <code>uo</code>,
-	  <code>tcp_udp</code> to the <code>tu</code> and <code>udp_tcp</code> to the <code>ut</code>
-	  argument of the command line option.<br>
-	  If you use <code>query_method=tcp_udp</code>, it is recommended that you also set the <a href="#globaltimeout">global timeout option</a> to at least twice the longest server timeout.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="runipv4">run_ipv4=(on|off);</a></code></b><br>
-	  This has the same effect as the <code>-4</code> or <code>-6</code> command line option:
-	  if on is specified, IPv4 support is enabled, and IPv6 support is disabled (if available).
-	  If off is specified, IPv4 will be disabled and IPv6 will be enabled.
-	  For this option to be meaningful, pdnsd needs to be compiled with support for the protocol you choose.
-	  If pdnsd was compiled with both IPv4 and IPv6 support, and you want to include IPv6 addresses
-	  in the configuration file, you will probably need to specify <code>run_ipv4=off</code> first to
-	  ensure that the IPv6 addresses are parsed correctly.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>debug=(on|off);</code></b><br>
-	  This has the same effect as the <code>-g</code> command line option: the debugging messages are enabled when
-	  <code>on</code> is specified.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>ctl_perms=<i>number</i>;</code></b><br>
-	  This option allows you to set the file permissions that the pdnsd status control socket will have. These
-	  are the same as file permissions. The owner of the file will be the run_as user, or, if none is specified,
-	  the user who started pdnsd. If you want to specify the permissions in octal (as usual), don't forget
-	  the leading zero (0600 instead of 600!). To use the status control, write access is needed. The default
-	  is 0600 (only the owner may read or write).<br>
-	  Please note that the socket is kept in the cache directory, and that the cache directory permissions
-	  might also need to be adjusted. Please ensure that the cache directory is not writeable for untrusted
-	  users.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>proc_limit=<i>number</i>;</code></b><br>
-	  With this option, you can set a limit on the pdnsd threads that will be active simultaneously. If
-	  this number is exceeded, queries are queued and may be delayed some time.
-	  See also the <code>procq_limit</code> option.<br>
-	  The default for this option is 40.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>procq_limit=<i>number</i>;</code></b><br>
-	  When the query thread limit <code>proc_limit</code> is exceeded, connection attempts to pdnsd will be queued.
-	  With this option, you can set the maximum queue length.
-	  If this length is also exceeded, the incoming queries will be dropped.
-	  That means that tcp connections will be closed and udp queries will just be dropped, which
-	  will probably cause the querying resolver to wait for an answer until it times out.<br>
-	  See also the <code>proc_limit</code> option. A maximum of <code>proc_limit+procq_limit</code>
-	  query threads will exist at any one time (plus 3 to 6 threads that will always
-	  be present depending on your configuration).<br>
-	  The default for this option is 60.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>tcp_qtimeout=<i>timespec</i>;</code></b><br>
-	  This option sets a timeout for tcp queries. If no full query has been received on a tcp connection
-	  after that time has passed, the connection will be closed. The default is set using the
-	  <code>--with-tcp-qtimeout</code> option to <code>configure</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>par_queries=<i>number</i>;</code></b><br>
-	  This option used to set the maximum number of remote servers that would be queried simultaneously,
-	  for every query that pdnsd receives.<br>
-	  Since version 1.1.11, the meaning of this option has changed slightly.
-	  It is now the increment with which the number of parallel queries is
-	  increased when the previous set of servers has timed out.
-	  For example, if we have a list <i>server1, server2, server3,</i> etc. of available servers
-	  and <code>par_queries=2</code>, then pdnsd will first send queries to <i>server1</i> and <i>server2</i>,
-	  and listen for responses from these servers.<br>
-	  If these servers do not send a reply within their timeout period, pdnsd will send additional
-	  queries to <i>server3</i> and <i>server4</i>, and listen for responses from
-	  <i>server1, server2, server3</i> and <i>server4</i>, and so on until a useful reply is
-	  received or the list is exhausted.<br>
-	  In the worst case there will be pending queries to all the servers in the list of available servers.
-	  We may be using more system resources this way (but only if the first servers in the list
-	  are slow or unresponsive), but the advantage is that we have a greater chance of catching a reply.
-	  After all, if we wait longer anyway, why not for more servers.<br>
-	  See also the explanation of the global timeout option below.<br>
-	  1 or 2 are good values for this option.
-	  The default is set at compile time using the <code>--with-par-queries</code> option to <code>configure</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="globaltimeout">timeout=<i>timespec</i>;</a></code></b><br>
-	  This is the global timeout parameter for dns queries.
-	  This specifies the minimum period of time pdnsd will wait after sending the
-	  first query to a remote server before giving up without having
-	  received a reply. The timeout options in the configuration file are
-	  now only minimum timeout intervals. Setting the global timeout option
-	  makes it possible to specify quite short timeout intervals in the
-	  server sections (see below). This will have the effect that pdnsd will start
-	  querying additional servers fairly quickly if the first servers are
-	  slow to respond (but will still continue to listen for responses from
-	  the first ones). This may allow pdnsd to get an answer more quickly in
-	  certain situations.<br>
-	  If you use <code>query_method=tcp_udp</code> it is recommended that
-	  you make the global timeout at least twice as large as the largest
-	  server timeout, otherwise pdnsd may not have time to try a UDP query
-	  if a TCP connection times out.<br>
-	  Default value is 0.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>randomize_recs=(on|off);</code></b><br>
-	  If this option is turned on, pdnsd will randomly reorder the cached records of one type
-	  when creating an answer. This supports round-robin DNS schemes and increases fail
-	  safety for hosts with multiple IP addresses, so this is usually a good idea.<br>
-	  On by default.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="queryportstart">query_port_start=(<i>number</i>|none);</a></code></b><br>
-	  If a number is given, this defines the start of the port range used for queries of pdnsd. The
-	  value given must be >= 1024. The purpose of this option is to aid certain firewall
-	  configurations that are based on the source port. Please keep in mind that another application
-	  may bind a port in that range, so a stateful firewall using target port and/or process uid may
-	  be more effective. In case a query start port is given pdnsd uses this port as the first port of a
-	  specified port range (see <a href="#queryportend"><code>query_port_end</code></a>) used for queries.
-	  pdnsd will try to randomly select a free port from this range as local port for the query.<br>
-	  To ensure that there are enough ports for pdnsd to use, the range between <code>query_port_start</code> and
-	  <code>query_port_end</code> should be adjusted to at least (<code>par_queries</code> * <code>proc_limit</code>).
-	  A larger range is highly recommended for security reasons, and also because other applications may
-	  allocate ports in that range. If possible, this range should be kept out of the space
-	  that other applications usually use.<br>
-	  The default for this option is 1024. Together with the default value of <code>query_port_end</code>,
-	  this makes it the hardest for an attacker to guess the source port used by the pdnsd resolver.
-	  If you specify <code>none</code> here, pdnsd will let the kernel choose the source port, but
-	  this may leave pdnsd more vulnerable to an attack.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="queryportend">query_port_end=<i>number</i>;</a></code></b><br>
-	  Used if <code>query_port_start</code> is not <code>none</code>. Defines the last port of the range started by query_port_start
-	  used for querys by pdnsd. The default is 65535, which is also the maximum legal value for this option.
-	  For details see the description of <a href="#queryportstart"><code>query_port_start</code></a>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="delegationonly">delegation_only=<i>string</i>;</a></code></b><br>
-	  <em>Added by Paul Rombouts</em>: This option specifies a "delegation-only" zone.
-	  This means that if pdnsd receives a query for a name that is in a
-	  subdomain of a "delegation-only" zone but the remote name server
-	  returns an answer with an authority section lacking any NS RRs for
-	  subdomains of that zone, pdnsd will answer NXDOMAIN (unknown domain).
-	  This feature can be used for undoing the undesired effects of DNS
-	  "wildcards". Several "delegation-only" zones may be specified together.
-	  If you specify root servers in a <a href="#serversection"><code>server</code></a> section it is
-	  important that you set <code><a href="#rootserver">root_server</a>=on</code> in such a section.<br>
-	  Example:
-	  <p class="indented"><code>delegation_only="com","net";</code></p>
-	  This feature is off by default. It is recommended that you only use
-	  this feature if you actually need it, because there is a risk that
-	  some legitimate names will be blocked, especially if the remote
-	  name servers queried by pdnsd return answers with empty authority
-	  sections.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="ipv46prefix">ipv4_6_prefix=<i>string</i>;</a></code></b><br>
-	  This option has the same effect as the <code>-i</code> command-line option.
-	  When pdnsd runs in IPv6 mode, this option specifies the prefix pdnsd uses to convert IPv4 addresses in
-	  the configuration file (or addresses specified with <a href="#pdnsdctl"><code>pdnsd-ctl</code></a>)
-	  to IPv6-mapped addresses.
-	  The string must be a valid IPv6 address. Only the first 96 bits are used.
-	  Note that this only effects the parsing of IPv4 addresses listed after this option.<br>
-	  The default is <code>"::ffff.0.0.0.0"</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>use_nss=(on|off);</code></b><br>
-	  If this option is turned on, pdnsd will call <code>initgroups()</code> to set up the group access list,
-	  whenever pdnsd changes its user and group id (see <a href="#runas"><code>run_as</code></a> option).
-	  There is a possible snag, though, if <code>initgroups()</code> uses NSS (Name Service Switch) and
-	  NSS in turn uses DNS. In such a case you may experience lengthy timeouts and stalls.
-	  By setting <code>use_nss=off</code>, you can disable the <code>initgroups()</code> call
-	  (only possible in versions 1.2.5 and later).<br>
-	  This option was contributed by Jan-Marek Glogowski.<br>
-	  On by default.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="udpbufsize">udpbufsize=<i>number</i>;</a></code></b><br>
-	  <em>New in version 1.2.9:</em>
-	  This option sets the upper limit on the size of UDP DNS messages. The default is 1024.<br>
-	  See also the <code><a href="#ednsquery">edns_query</a></code> server option below.
-	</td>
-      </tr>
-    </table>
-
-    <br>
-    <h3>2.1.2 <a name="serversection"><code>server</code> Section</a></h3>
-    Each server section specifies a set of name servers that pdnsd should try to get
-    resource records or authoritative name server information from. The servers are
-    queried in the order of their appearance (or parallel to a limited extend).
-    If one fails, the next one is taken and so on.<br>
-    You probably want to specify  the dns server in your LAN, the caching dns servers
-    of your internet provider or even a list of root servers in one or more server sections.<br>
-    The supported options in this section are:<br><br>
-
-    <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
-      <tr>
-	<td>
-	  <b><code>label=<i>string</i>;</code></b><br>
-	  Specify a label for the server section. This can be used to refer to this section
-	  when using <a href="#pdnsdctl"><code>pdnsd-ctl</code></a>, the pdnsd control utility.<br>
-	  You can give several server sections the same label, but if you want to change the addresses
-	  of a server section (see <b><code>ip</code></b> option below) during run-time with
-	  <code>"pdnsd-ctl server <i>label</i> up <i>dns1</i>,<i>dns2</i>,..."</code>,
-	  the label must be unique.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>ip=<i>string</i>;</code></b><br>
-	  Give the IP (the address, <em>not</em> the host name) of the server.<br>
-	  Multiple IP addresses can be given per server section.
-	  This can be done by entering multiple lines of the form <code>ip=<i>string</i>;</code>
-	  or a single line like this:
-	  <p class="indented"><code>ip=<i>string</i>,<i>string</i>,<i>string</i>;</code></p>
-	  IP addresses do not have to be specified in the configuration file.
-	  A server section without IP addresses will remain inactive until it is assigned
-	  one or more addresses with <a href="#pdnsdctl"><code>pdnsd-ctl</code></a>,
-	  the pdnsd control utility.<br>
-	  If pdnsd has been compiled with both IPv4 and IPv6 support, any IPv6 addresses you specify
-	  here will be skipped with a warning message, unless pdnsd is running in IPv6 mode.
-	  Thus, unless pdnsd was compiled to startup in IPv6 mode by default, you need to use the
-	  command-line option <code>-6</code> or set <code>run_ipv4=off</code>
-	  first (see <a href="#runipv4"><code>global</code></a> section) in order to ensure
-	  that IPv6 addresses are parsed correctly.<br>
-	  If pdnsd is running in IPv6 mode and you specify an IPv4 address here,
-	  it will automatically be mapped to an IPv6 address.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="resolvfile">file=<i>string</i>;</a></code></b><br>
-	  <em>New in version 1.2:</em> This option allows you to give the name of a <code>resolv.conf</code>-style file.
-	  Of the lines beginning with the <code>nameserver</code> keyword, the second field will be parsed as an
-	  IP address, as if it were specified with the <code>ip=</code> option. The remaining lines will be ignored.
-	  If the contents of the file changes while pdnsd is running, you can make pdnsd aware of the changes through the
-	  use of <a href="#pdnsdctl"><code>pdnsd-ctl</code></a>, the pdnsd control utility.
-	  This is usually most conveniently done by placing the command <code>"pdnsd-ctl config"</code> in a script
-	  that is automatically run whenever the DNS configuration changes.<br>
-	  For example, suppose you have a ppp client that writes the DNS configuration for your ISP to the file
-	  <code>/etc/ppp/resolv.conf</code> and runs the script <code>/etc/ppp/ip-up</code> when a new
-	  connection is established. One way of ensuring that pdnsd is automatically reconfigured is to
-	  add a <code>server</code> section in the config file with <code>file=/etc/ppp/resolv.conf</code> and to
-	  add the command <code>"pdnsd-ctl config"</code> to <code>/etc/ppp/ip-up</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>port=<i>number</i>;</code></b><br>
-	  Give the port the remote name server listens on. Default is 53 (the official
-	  dns port)
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>uptest=(ping|none|if|dev|diald|exec|query);</code></b><br>
-	  Determine the method to check whether the server is available. Currently
-	  defined methods are:
-
-	  <ul>
-	    <li><b><code>ping</code></b>: Send an ICMP_ECHO request to the server. If it doesn't respond
-	      within the timeout, it is regarded to be unavailable until the next probe.
-	    <li><b><code>none</code></b>: The availability status is not changed, only the time stamp is updated.
-	    <li><b><code>if</code></b>: Check whether the interface (specified in the <code>interface=</code> option) is
-	      existent, up and running. This currently works for all "ordinary"
-	      network interfaces, interfaces that disappear when down (e.g. ppp?),
-	      and additionally for Linux isdn interfaces (as of kernel 2.2). Note that
-	      you need a <code>/dev/isdninfo</code> device file (major#45, minor#255), or the
-	      isdn uptest will always fail.
-	    <li><b><code>dev</code></b> and <b><code>diald</code></b>: Perform an <code>if</code> uptest, and, if that
-	      was succesful, additionally check whether a program is running that
-	      has locked a given (modem-) device. The needed parameters are an interface (specified as for the <code>if</code>
-	      uptest, e.g. <code>"ppp0"</code>) and a device relative to <code>/dev</code> (e.g.
-	      <code>"modem"</code> for <code>/dev/modem</code> specified using the <code>device=</code> option.
-	      pdnsd will then look for a pid file for the given interface in <code>/var/lock</code> (e.g.
-	      <code>/var/run/ppp0.pid</code>) and for a lockfile for the given device (e.g. <code>/var/lock/LCK..modem</code>),
-	      and then test whether the locking process is the process that created the pid file and this process is still
-	      alive. If this is the case, the normal <code>if</code> uptest is executed for the given interface.<br>
-	      The <code>dev</code> option is for pppd dial-on-demand, <code>diald</code> is the same for diald users.
-	    <li><b><code>exec</code></b>: Executes a given command in the <code>/bin/sh</code> shell
-	      (as <code>/bin/sh -c <command></code>)
-	      and evaluates the result (the return code of the last command) in the shell's way of handling return codes,
-	      i.e. 0 indicates success, all other indicate failure. The shell's process name will be
-	      <code>uptest_sh</code>. The command is given with the <code>uptest_cmd</code> option (see below).
-	      For secuity issues, also see that entry.
-	    <li><b><code>query</code></b>: <em>New in version 1.2:</em>
-	      This works like the ping test, except it sends an (empty) DNS query to the remote server.
-	      If the server sends a well-formed response back within the timeout period (except SERVFAIL),
-	      it will be regarded as available.
-	      This test is useful if a remote server does not respond to ICMP_ECHO requests at all,
-	      which unfortunately is quite common these days.
-	      It can also happen that a remote server is online but ignores empty DNS queries.
-	      Then you will need the set the <code><a href="#querytestname">query_test_name</a></code> option (see below).
-	      In many cases this test will be a more reliable indicator of availability
-	      than the ones mentioned before.
-	  </ul>
-	  <p>
-	    The default value is <b><code>none</code></b>.
-	    <br><br>
-	    <b>NOTE</b>: If you use on-demand dialing, use <code>none</code>, <code>if</code>,
-	    <code>dev</code>, <code>diald</code> or <code>exec</code>,
-	    since <code>ping</code> or <code>query</code> will send packets
-	    in the specified interval and the interface will thus frequently dial!
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>ping_timeout=<i>number</i>;</code></b><br>
-	  Sets the timeout for the ping test in tenths of seconds
-	  (this unit is used for legacy reasons; actually the current implementation is
-	  only accurate to a second).<br>
-	  The default is 600 (one minute).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>ping_ip=<i>string</i>;</code></b><br>
-	  The IP address for the ping test. The default is the IP of the name server.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="querytestname">query_test_name=<i>string</i>;</a></code></b><br>
-	  <em>New in version 1.2.9:</em>
-	  Sets the name to be queried when using <code>uptest=query</code> availability test.
-	  If the string is the unquoted constant <code>none</code>,
-	  an empty query is used (this the default), otherwise a query of type A will be
-	  sent for the domain name specified here. It is not necessary for the domain name
-	  to exist or have a record of type A in order for the uptest to succeed.<br>
-	  If the the remote server ignores empty queries, you will probably want to set
-	  <code>query_test_name="."</code> (the root domain).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>uptest_cmd=<i>string</i>,<i>string</i>;</code></b><br>
-	  or<br>
-	  <b><code>uptest_cmd=<i>string</i>;</code></b><br>
-	  Sets the command for the uptest=exec function to the first string.
-	  If the second string is given, it specifies a user with whose user
-	  id and primary group id the command is executed.<br>
-	  This is especially useful if you are executing the server as root,
-	  but do not want the uptest to be performed with root privileges.
-	  In fact, you should never execute the uptest as root if you can help
-	  it.<br>
-	  If the server is running setuid or setgid, the privileges thus gained
-	  are attempted to be dropped even before changing identity to the
-	  specified user to prevent setuid/gid security holes (otherwise, any
-	  user might execute commands as root if you setuid the executable).<br>
-	  <b>Note that this is not always possible, and that pdnsd should never
-	    be installed as setuid or setgid.</b>
-	  The command is executed using <code>/bin/sh</code>, so you should be able to use
-	  shell builtin commands.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>interval=(<i>timespec</i>|onquery|ontimeout);</code></b><br>
-	  Sets the interval for the server up-test. The default is 900 seconds;
-	  however, a test is forced when a query times out and the timestamp is reset then.<br>
-	  If you specify <code>onquery</code> instead of a timeout, the interface will be
-	  tested before every query. This is to prevent automatically dialing
-	  interfaces (diald/pppd or ippp) to dial on dns queries. It is intended to be
-	  used in connection with an interface-testing uptest ;-) <br>
-	  Note that using uptest=exec, you might run into performance problems
-	  on slow machines when you use that option.
-	  DON'T use <code>onquery</code> with <code>uptest=ping</code> or
-	  <code>uptest=query</code>, as it may cause delays if the server does not answer
-	  (btw, it doesn't make sense anyway).
-	  Note also that using <code>onquery</code> is no guarantee that the interface
-	  will not be used. When another (reachable) dns server tells pdnsd
-	  to query a third dns server for data, pdnsd will do that and has
-	  no means of checking whether this will dial up the interface or not.
-	  This however should be a rare situation.<br>
-	  <em>New in version 1.2.3:</em>
-	  A third possibility is to specify <code>interval=ontimeout</code>.
-	  In this case the server is not tested at startup/reconfiguration, nor at regular intervals,
-	  but only after a DNS query to a server times out. Certain types of network problems
-	  such as a refused connection will also cause the server to be considered unavailable.
-	  However, once a server is declared dead it is never considered again unless it is revived using a
-	  <code><a href="#pdnsdctl">pdnsd-ctl</a> config</code> or <code>server</code> command.
-	  The idea behind this option is to minimize uptests by assuming all
-	  servers are available until there is reason to believe otherwise.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>interface=<i>string</i>;</code></b><br>
-	  The network interface (or network device, e.g. <code>"eth0"</code>) for the <code>uptest=if</code> option.
-	  Must be specified if <code>uptest=if</code> is given.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>device=<i>string</i>;</code></b><br>
-	  The (modem-) device that is used for the <code>dev</code> uptest. If you use this for a dial-on-demand
-	  ppp uptest (together with <code>uptest=dev</code>), you need to enter the device you are using for your
-	  pppd here, e.g. <code>modem</code> for <code>/dev/modem</code>.<br>
-	  Must be specified if <code>uptest=dev</code> is given.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>timeout=<i>timespec</i>;</code></b><br>
-	  Set the timeout for the dns query. The default is 120 seconds. You probably want to set this lower.<br>
-	  Timeouts specified in the configuration file are only treated as the
-	  minimum period of time to wait for a reply. A queries to a remote
-	  server are not canceled until a useful reply has been received, or all
-	  the other queries have timed out or failed.<br>
-	  If you have also set the global timeout option, you may consider setting a fairly small value here.
-	  See the explanation of the timeout option in the <a href="#globaltimeout"><code>global</code></a>
-	  section for what that means.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>purge_cache=(on|off);</code></b><br>
-	  In every fetched dns record, there is a cache timeout given, which
-	  specifies how long the fetched data may be cached until it needs to be
-	  reloaded. If <code>purge_cache</code> is set to <code>off</code>, the stale records are not purged
-	  (unless the cache size would be exceeded, in this case the oldest records are purged).
-	  Instead, they are still served if they cannot succesfully be
-	  updated (e.g. because all servers are down).<br>
-	  Default is <code>off</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>caching=(on|off);</code></b><br>
-	  Specifies if caching shall be performed for this server at all. Default is
-	  <code>on</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>lean_query=(on|off);</code></b><br>
-	  Specifies whether to use the "lean" query mode. In this mode, only the
-	  information actually queried from pdnsd is resolved and cached. This has
-	  the advantage that usually less cache space is used and the query is
-	  usually faster. In 90% of the cases, only address (A) records are needed
-	  anyway. If switched off, pdnsd will always cache all data about a host
-	  it can find and will specifically ask for all available records
-	  (well, at least it is a good approximation for what it really does ;-)
-	  This will of course increase the answer packet sizes.<br>
-	  Some buggy name servers may not deliver CNAME records when not asked for
-	  all records. I do not know if such servers are around, but if you have
-	  trouble resolving certain host names, try turning this option off.<br>
-	  A last note: If you use multiple pdnsd's that access each other, turning
-	  this option on is probably a big win.<br>
-	  This on by default.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="ednsquery">edns_query=(on|off);</a></code></b><br>
-	  <em>New in version 1.2.9:</em>
-	  Specifies whether to use EDNS (Extension mechanisms for DNS) for outgoing queries.
-	  Currently this is only useful for allowing UDP message sizes larger than 512 bytes.
-	  Note that setting this option on can give problems in combination with some legacy
-	  systems or software, including, embarrassingly enough, previous versions of pdnsd.<br>
-	  The default is <code>off</code>, but if your network can handle UDP payloads
-	  significantly larger than 512 bytes, the recommended value is <code>on</code>.<br>
-	  Note that this option only effects outgoing queries. If pdnsd receives a query using
-	  EDNS, it will reply using EDNS regardless of the value of this option.
-	  <br>
-	  See also the <code><a href="#udpbufsize">udpbufsize</a></code> option above.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>scheme=<i>string</i>;</code></b><br>
-	  You can specify a pcmcia-cs scheme that is used in addition to the uptests. If you specify
-	  a scheme here, the server this section is for will only be queries if the given scheme
-	  is active. Shell wildcards (* and ?) are allowed in the string under their special
-	  meanings. You need to use the <code>scheme_file</code> option on the <code>global</code>
-	  section to make this option work.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>preset=(on|off);</code></b><br>
-	  This allows you to specify the initial state of a server before any uptest is performed.
-	  <code>on</code> specifies that the server is regarded available. The default is <code>on</code>.
-	  This is especially useful when you set <code>uptest=none;</code> and want to change
-	  the status of a server only via pdnsd-ctl.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="proxyonly">proxy_only=(on|off);</a></code></b><br>
-	  When this option is set to <code>on</code>, answers given by the servers are always accepted, and no
-	  other servers (as, for example, specified in the NS records of the query domain) are
-	  queried. If you do not turn this option on, pdnsd will do such queries in some cases
-	  (in particular when processing ANY queries).<br>
-	  This option is useful when you do not want pdnsd to make connections to outside servers
-	  for some reasons (e.g. when a firewall is blocking such queries).<br>
-	  I recommend that you turn on <code>lean_query</code> when using this option.<br>
-	  Default is <code>off</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code><a name="rootserver">root_server=(on|off|discover);</a></code></b><br>
-	  Set this option to <code>on</code> if the servers specified in a section are root servers.
-	  A root server will typically only give the name servers for the top-level domain in its reply.
-	  Setting <code>root_server=on</code> will cause pdnsd to try to use cached information about
-	  top-level domains to reduce to number of queries to root servers, making the resolving of
-	  new names more efficient.
-	  You can get a list of available root servers by running the command
-	  <code>"dig . ns"</code>.<br>
-	  This option is also necessary if you use the <a href="#delegationonly"><code>delegation_only</code></a> option.<br>
-	  <em>New in version 1.2.8:</em> This option may also be set to "<code>discover</code>".
-	  This will cause pdnsd to query the servers provided with the <code>ip=</code> option
-	  to obtain the full list of root servers. The root-server addresses will replace the addresses
-	  specified with the <code>ip=</code> option.
-	  This will only be done once on startup, or after a "<code>pdnsd-ctl config</code>" command.
-	  In this case the name servers specified with the <code>ip=</code> option don't have to be
-	  root servers, they just have to know the names and addresses of the root servers.
-	  After root-server discovery pdnsd will behave just as if <code>root_server=on</code>
-	  had been specified.<br>
-	  Default is <code>off</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>randomize_servers=(on|off);</code></b><br>
-	  <em>New in version 1.2.6:</em> Set this option to <code>on</code> to give each name server
-	  in this section an equal chance of being queried. If this option is off, the name servers
-	  are always queried starting with the first one specified. Even with this option on, the
-	  query order is not truly random. Only the first server is selected randomly; the following
-	  ones are queried in consecutive order, wrapping around to the beginning of the list when
-	  the end is reached.  Note that this option only effects the order within a section. The
-	  servers in the first (active) section are always queried before those in the second one,
-	  etc.<br> The default is off, but if you are resolving from root servers setting this
-	  option on is highly recommended. If <code>root_server=on</code> this option also effects
-	  the query order of the name servers for the top-level domains.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>reject=<i>string</i>;</code></b><br>
-	  <em>New in version 1.2.6:</em> This option can be used to make pdnsd reject replies that
-	  contain certain IP addresses.  You can specify a single IP address, which will be matched
-	  exactly, or a range of addresses using an address/mask pair.
-	  The mask can be specified as a simple integer, indicating the number of initial 1 bits in
-	  the mask, or in the usual IP address notation. IP addresses may be either IPv4 or IPv6
-	  (provided there is sufficient support in the C libraries and support for AAAA records was
-	  not disabled).
-	  When addresses in the reject list are compared with those in a reply, only the bits
-	  corresponding to those set in the netmask are significant, the rest are ignored.<br>
-	  Multiple addresses or address/mask pairs may be specified; this can be done by entering
-	  multiple lines of the form <code>reject=<i>string</i>;</code>
-	  or a single line like this:
-	  <p class="indented"><code>reject=<i>string</i>,<i>string</i>,<i>string</i>;</code></p>
-	  How pdnsd reacts when an address in the reply matches one in the <code>reject</code> list,
-	  depends on the <code>reject_policy</code> option, see below.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>reject_policy=(fail|negate);</code></b><br>
-	  <em>New in version 1.2.6:</em>
-	  This option determines what pdnsd does when an address in the reply from a name server
-	  matches the <code>reject</code> list (see above). If this option is set to
-	  <code>fail</code>, pdnsd will try another server, or, if there no more servers to try,
-	  return the answer SERVFAIL. If this option is set to <code>negate</code>, pdnsd will
-	  immediately return the answer NXDOMAIN (unknown domain) without querying additional
-	  servers. The <code>fail</code> setting is useful if you don't always trust the servers in
-	  this section, but do trust the servers in the following section. The <code>negate</code>
-	  setting can be used to completely censor certain IP addresses. In this case you should put
-	  the same <code>reject</code> list in every server section, and also set the
-	  <code>reject_recursively</code> option (see below) to true.<br>
-	  The default is <code>fail</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>reject_recursively=(on|off);</code></b><br>
-	  <em>New in version 1.2.6:</em> Normally pdnsd checks for addresses in the
-	  <code>reject</code> list (see above) only when the reply comes directly from a name server
-	  listed in the configuration file.  With this option set to <code>on</code>, pdnsd will
-	  also do this check for name servers that where obtained from NS records in the authority
-	  section of a previous reply (which was incomplete and non-authoritative).<br>
-	  Default is <code>off</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>policy=(included|excluded|simple_only|fqdn_only);</code></b><br>
-	   pdnsd supports inclusion/exclusion lists for server sections: with <code>include=</code>
-	   and <code>exclude=</code> (see below) you can specify domain names for which this server
-	   will be used or will not be used. The first match counts (i.e., the first include or
-	   exclude rule in a server section that matches a domain name is applied, and the
-	   search for other rules is terminated). If no rule matched a given domain name,
-	   the <code>policy=</code> option determines whether this server is used for the
-	   lookup for that domain name; when <code>included</code> is given, the server will
-	   be asked, and when <code>excluded</code> is given, it will not.
-	   If <code>simple_only</code> is given the server will be used if the name to lookup
-	   is a simple (single-label) domain name, on the other hand if <code>fqdn_only</code>
-	   is given the server will be used only  for names consisting of two or more labels
-	   (i.e. the name has at least one dot in-between).<br>
-	   If no server is available for a queried domain, pdnsd will return an error message
-	   to the client that usually will stop the client's attempts to resolve a specific
-	   domain from this server (the libc resolver will e.g. return an error to the application that
-	   tried to resolve the domain if no other servers are available in the <code>resolv.conf</code>).
-	   This may be of use sometimes.<br>
-	   <em>Note</em>: the <code>simple_only</code> and <code>fqdn_only</code> constants
-	   were added by Paul Rombouts.
-	   They are useful for controlling which name servers (if any) will be used by
-	   pdnsd for resolving simple (single-label) host names.
-	   <code>fqdn_only</code> used to stand for "fully qualified domain name only", but this is
-	   actually a misnomer. The names in queries received by pdnsd are always considered to be
-	   fully qualified. If you do not exactly understand what the options <code>simple_only</code> and
-	   <code>fqdn_only</code> are good for, you are probably better off not using them.<br>
-	   The default for this option is <code>included</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>include=<i>string</i>;</code></b><br>
-	  This option adds an entry to the exclusion/inclusion list. If a domain matches
-	  the name given as string, the server is queried if this was the first matching rule
-	  (see also the entry for <code>policy</code>).<br>
-	  If the given name starts with a dot, the whole subdomain
-	  of the given name including the one of that name is matched, e.g. <code>".foo.bar."</code>
-	  will match the domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.<br>
-	  If it does not start in a dot, only exactly the given name (ignoring the case, of course)
-	  will be matched (hint: if you want to include all subdomains, but not the domain of the given
-	  name itself, place an exact-match exclude rule before the include rule, e.g:
-	  <code>exclude="foo.bar."; include=".foo.bar.";</code><br>
-	  Previous versions of pdnsd
-	  required that names given with this and the next option ended in a dot, but since
-	  version 1.1.8b1-par8, pdnsd automatically adds a dot at the end if it
-	  is missing.<br>
-	  pdnsd now also accepts a more compact notation for adding several <code>"include"</code> entries in
-	  one line, e.g.:
-	  <p class="indented"><code>include=".foo",".bar",".my.dom";</code></p>
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>exclude=<i>string</i>;</code></b><br>
-	  This option adds an entry to the exclusion/inclusion list. If a domain matches
-	  the name given as string, the server is not queried if this was the first matching rule
-	  (see also the entry for <code>policy</code>).<br>
-	  If the given name starts with a dot, the whole subdomain
-	  of the given name including the one of that name is matched, e.g. <code>".foo.bar."</code>
-	  will match the domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.<br>
-	  If it does not start in a dot, only exactly the given name (ignoring the case, of course)
-	  will be matched (hint: if you want to exclude all subdomains, but not the domain of the given
-	  name itself, place an exact-match include rule before the exclude rule, e.g:
-	  <code>include="foo.bar."; exclude=".foo.bar.";</code><br>
-	  pdnsd now also accepts a more compact notation for adding several <code>"exclude"</code> entries in
-	  one line, e.g.:
-	  <p class="indented"><code>exclude=".foo",".bar",".my.dom";</code></p>
-	</td>
-      </tr>
-    </table>
-    <br>
-    <h3>2.1.3 <a name="rrsection"><code>rr</code> Section</a></h3>
-    Every <code>rr</code> section specifies a dns resource record that is stored locally. It
-    allows you to specify own dns records that are served by pdnsd in a limited way.
-    Only A, PTR, CNAME, MX, NS and SOA records are implemented.<br>
-    This option is intended to allow you to define RRs for 1.0.0.127.in-addr.arpa.
-    and localhost. (and perhaps even one or two hosts) without having to start an
-    extra named if your cached name servers do not serve those records.
-    It is <b>NOT</b> intended and not capable to work as a full-featured name server.
-    <br><br>
-    <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
-      <tr>
-	<td>
-	  <b><code>name=<i>string</i>;</code></b><br>
-	  Specifies the name of the resource records, i.e. the domain name of
-	  the resource the record describes. This option must be specified
-	  before any <code>a</code>, <code>ptr</code>, <code>cname</code>,
-	  <code>mx</code>, <code>ns</code> or <code>soa</code> records.
-	  Names are interpreted as absolute domain names
-	  (i.e. pdnsd assumes they end in the root domain).
-	  For this and all following arguments that take domain names, you need to
-	  specify domain names in dotted notation (example venera.isi.edu.).<br>
-	  Previous versions of pdnsd
-	  required that domain names given in the configuration file ended in a
-	  dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
-	  dot at the end if it is missing.<br>
-	  <em>New in version 1.2:</em> It is also possible to specify a name starting
-	  with the label *. Such a name is called a wildcard. The * in a wildcard
-	  can match one or more labels in a queried name, but only whole labels.
-	  Any other * characters in a wildcard, apart from the leading one,
-	  will only match a literal *.<br>
-	  For example, *.mydomain will match a.mydomain or www.a.mydomain, but not
-	  mydomain. *.a*.mydomain will match www.a*.mydomain, but not www.ab.mydomain.
-	  *a.mydomain will only match itself.<br>
-	  Before you can specify an <code>rr</code> section with <code>name=*.mydomain</code>
-	  you must define some records for mydomain, typically NS and/or SOA records.
-	  Example:
-	  <pre>
-    rr {
-	name = mydomain;
-	ns = localhost;
-	soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
-    }
-    rr {
-	name = *.mydomain;
-	a = 192.168.1.10;
-    }</pre>
-	  In this example, www.mydomain and ftp.mydomain will resolve to the numeric
-	  address 192.168.1.10 (unless you add <code>rr</code> sections explicitly
-	  specifying different addresses for www.mydomain or ftp.mydomain).
-	  If you want mydomain also to resolve to a numeric address,
-	  add an A record to the first <code>rr</code> section.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>ttl=<i>timespec</i>;</code></b><br>
-	  Specifies the ttl (time to live) for all resource records in this section after this entry.
-	  This may be redefined. The default is 86400 seconds (=1 day).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>authrec=(on|off);</code></b><br>
-	  If this is turned on, pdnsd will create authoritative local records for this <code>rr</code> section.
-	  This means that pdnsd flags the domain record so that records of this domain that are not
-	  present in the cache are treated as non-existent, i.e. no other servers are queried for
-	  that record type, and an response containing none of those records is returned. This is
-	  most time what people want: if you add an A record for a host, and it has no AAAA record
-	  (thus no IPv6 address), you normally don't want other name servers to be queried for it.<br>
-	  This is on by default.<br>
-	  Please note that this only has an effect if it precedes the <code>name</code> option!
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>reverse=(on|off);</code></b><br>
-	  <em>New in version 1.2:</em> If you want a locally defined name to resolve to a numeric address
-	  and vice versa, you can achieve this by setting reverse=on before defining the A record
-	  (see below). The alternative is to define a separate PTR record, but you will
-	  probably find this option much more convenient.<br>
-	  The default is <code>off</code>.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>a=<i>string</i>;</code></b><br>
-	  Defines an A (host address) record. The argument is an IPv4 address in dotted notation.
-	  pdnsd will serve this address for the host name given in the <code>name</code> option.<br>
-	  Provided there is sufficient support in the C libraries and support for AAAA records was not
-	  disabled, the argument string may also be an IPv6 address, in which case an AAAA record
-	  will be defined.<br>
-	  This option be may used multiple times within an <code>rr</code> section, causing
-	  multiple addresses to be defined for the name. However, if you put the different addresses
-	  in different <code>rr</code> sections for the same name, the definition in the last
-	  <code>rr</code> section will cancel the definitions in the previous ones.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>ptr=<i>string</i>;</code></b><br>
-	  Defines a PTR (domain name pointer) record. The argument is a host name in
-	  dotted notation (see name). The ptr record is for resolving adresses into names. For example, if
-	  you want the adress 127.0.0.1 to resolve into localhost, and localhost into 127.0.0.1, you need something
-	  like the following sections:<br>
-	  <pre>
-    rr {
-	name = localhost;
-	a = 127.0.0.1;
-	owner = localhost;
-	soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
-    }
-    rr {
-	name = 1.0.0.127.in-addr.arpa;
-	ptr = localhost;
-	owner = localhost;
-	soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
-    }</pre>
-	  The second section is for reverse resolving and uses the <code>ptr</code> option.
-	  Note that you can get the same effect by specifying only the first <code>rr</code> section
-	  with <code>reverse=on</code>.<br>
-	  There is something special about the name in the second section:
-	  when a resolver wants to get a host name from an internet address,
-	  it composes an address that is built of the IP address in reverse byte order
-	  (<code>1.0.0.127</code> instead of <code>127.0.0.1</code>) where each byte of the adress written
-	  as number constitutes a sub-domain under the domain <code>in-addr.arpa.</code> <br>
-	  So, if you want to compose an adress for reverse resolving, take your ip in dotted notation (e.g. <code>1.2.3.4</code>),
-	  reverse the byte order (<code>4.3.2.1</code>) and append in-addr.arpa. (<code>4.3.2.1.in-addr.arpa.</code>)
-	  Then, define an <code>rr</code> section giving this address as <code>name</code> and the domain name corresponding to
-	  that ip in the <code>ptr</code> option.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>cname=<i>string</i>;</code></b><br>
-	  Defines a CNAME (canonical name) record.
-	  The argument should be a fully-qualified host name in dotted notation (see name).
-	  A CNAME is the DNS equivalent of an alias or symbolic link.<br>
-	  A useful application for CNAMEs is giving short, easy to remember nicknames to hosts with complicated names.
-	  For example, you might want the name "<tt>news</tt>" to refer to your ISP's news server "<tt>nntp2.myisp.com</tt>".
-	  Instead of adding an A record for "<tt>news</tt>" with the same address as "<tt>nntp2.myisp.com</tt>", you could
-	  put in a CNAME pointing to "<tt>nntp2.myisp.com</tt>", so that if the IP address of the news server changes,
-	  there is no need to update the record for "<tt>news</tt>".<br>
-	  To implement this with pdnsd, you could add the following section to your configuration file:<br>
-	  <pre>
-    rr {
-	name = news;
-	cname = nntp2.myisp.com;
-	owner = localhost;
-    }</pre>
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>mx=<i>string</i>,<i>number</i>;</code></b><br>
-	  Defines an MX (mail exchange) record. The string is the host name of the mail server in dotted notation (see name).
-	  The number specifies the preference level.<br>
-	  When you send mail to someone, your mail typically goes from your E-mail client to an SMTP server.
-	  The SMTP server then checks for the MX record of the domain in the E-mail address.
-	  For example, with <tt>joe at example.com</tt>, it would look for the MX record for <tt>example.com</tt> and find
-	  that the name of mail server for that domain is, say, <tt>mail.example.com</tt>.
-	  The SMTP server then gets the A record for <tt>mail.example.com</tt>, and connects to the mail server.<br>
-	  If there are multiple MX records, the SMTP server will pick one based on the preference level
-	  (starting with the lowest preference number, working its way up).<br>
-	  Don't define MX records with pdnsd unless you know what you're doing.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>owner=<i>string</i>;</code></b><br>
-	  or<br>
-	  <b><code>ns=<i>string</i>;</code></b><br>
-	  Defines an NS (name server) record. Specifies the name of the host which should be authoritative for the records
-	  you defined in the <code>rr</code> section. This is typically the host pdnsd runs on.<br>
-	  <em>Note:</em> In previous versions of pdnsd this option had to be specified before
-	  any <code>a</code>, <code>ptr</code>, <code>cname</code>, <code>mx</code> or <code>soa</code> entries.
-	  In version 1.2, the restrictions on this option are same as the options just mentioned,
-	  and it must listed after the <code>name=</code> option.
-	  This can be a pain if you want to use an old config file which specifies <code>owner=</code>
-	  before <code>name=</code> (sorry about that).
-	  Apart from greater consistency, the advantage is that you can now specify as many NS records as you like (including zero).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>soa=<i>string</i>,<i>string</i>,<i>number</i>,<i>timespec</i>,<i>timespec</i>,<i>timespec</i>,<i>timespec</i>;</code></b><br>
-	  This defines a soa (start of authority) record. The first string is the
-	  domain name of the server and should be equal to the name you specified as
-	  owner. <br>
-	  The second string specifies the email address of the maintainer of the name
-	  server. It is also specified as a domain name, so you will have to replace the
-	  @ sign in the name with a dot (.) to get the name you have to specify here.
-	  The next parameter (the first number) is the serial number of the record. You
-	  should increment this number if you change the record.<br>
-	  The 4th parameter is the refresh timeout. It specifies after what amount
-	  of time a caching server should attempt to refresh the cached record.<br>
-	  The 5th parameter specifies a time after which a caching server should attempt
-	  to refresh the record after a refresh failure.<br>
-	  The 6th parameter defines the timeout after which a cached record expires if it
-	  has not been refreshed.<br>
-	  The 7th parameter is the ttl that is specified in every rr and should be the
-	  same as given with the ttl option (if you do not specify a ttl, use the default 86400).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>txt=<i>string</i>,...,<i>string</i>;</code></b><br>
-	  <em>New in version 1.2.9:</em>
-	  Defines an TXT record. You can specify one or more strings here.
-	</td>
-      </tr>
-    </table>
-    <br>
-    <h3>2.1.4 <a name="negsection"><code>neg</code> Section</a></h3>
-    Every <code>neg</code> section specifies a dns resource record or a dns domain that should be
-    cached negatively locally. Queries for negatively cached records are always answered
-    immediatley with an error or an empty answer without querying other hosts as long
-    as the record is valid. The records defined with <code>neg</code> sections remain
-    valid until they are explicitely invalidated or deleted by the user using
-    <a href="#pdnsdctl"><code>pdnsd-ctl</code></a>.<br>
-    This is useful if a certain application asks periodically for nonexisting hosts or
-    RR types and you do not want a query to go out every time the cached record has
-    timed out. Example: Netscape Communicator will ask for the servers  news and mail
-    on startup if unconfigured. If you do not have a dns search list for your network,
-    you can inhibit outgoing queries for these by specifying<br>
-    <pre>
-    neg {
-	name = news;
-	types = domain;
-    }
-    neg {
-	name = mail;
-	types = domain;
-    }</pre>
-    in your config file. If you have a search list, you have to repeat that for any
-    entry in your search list in addition to the entries given above!<br>
-    In versions 1.1.11 and later, if you negate whole domains this way, all subdomains
-    will be negated as well. Thus if you specify<br>
-    <code>neg {name=example.com; types=domain;}</code> in the
-    config file, this will also negate www.example.com, xxx.adserver.example.com, etc.
-    <br><br>
-    <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
-      <tr>
-	<td>
-	  <b><code>name=<i>string</i>;</code></b><br>
-	  Specifies the name of the domain for which negative cache entries are created.
-          This option must be specified before the types option.
-	  Names are interpreted as absolute domain names (i.e. pdnsd
-	  assumes they end in the root domain).
-	  You need to specify domain names in dotted notation (example venera.isi.edu.).<br>
-	  Previous versions of pdnsd
-	  required that domain names given in the configuration file ended in a
-	  dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
-	  dot at the end if it is missing.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>ttl=<i>timespec</i>;</code></b><br>
-	  Specifies the ttl (time to live) for all resource records in this section after this entry.
-	  This may be redefined. The default is 86400 seconds (=1 day).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>types=(domain|<i>rr_type</i>[,<i>rr_type</i>[,<i>rr_type</i>[,...]]]);</code></b><br>
-	  Specifies what is to be cached negatively: <code>domain</code> will cache the whole
-	  domain negatively; alternatively, you can specify a comma-separated list of RR types
-	  which are to be cached negatively. You may specify multiple types options, but
-	  <code>domain</code> and the RR types are mutually exclusive.<br>
-	  The RR types are specified using their official names from the RFC's in capitals,
-	  e.g. <code>A</code>, <code>CNAME</code>, <code>NS</code>, <code>PTR</code>, <code>MX</code>,
-	  <code>AAAA</code>, ...<br>
-	  The command <code>pdnsd-ctl list-rrtypes</code> will give you a complete list
-	  of those types. <a href="#pdnsdctl"><code>pdnsd-ctl</code></a> is built along with pdnsd
-	  and will be installed in the same directory as the pdnsd binary during <code>make install</code>.
-	</td>
-      </tr>
-    </table>
-    <br>
-    <h3>2.1.5 <a name="sourcesection"><code>source</code> Section</a></h3>
-    Every source section allows you to let pdnsd read the records from a file in an
-    <code>/etc/hosts</code>-like format. pdnsd will generate records to resolve the entries
-    address from its host name and vice versa for every entry in the file. This is
-    normally easier than defining an rr for every of your addresses, since localhost
-    and your other FQDNs are normally given in <code>/etc/hosts</code>.<br>
-    The accepted format is as follows: The #-sign initiates a comment, the rest of
-    the line from the first occurence of this character on is ignored. Empty lines
-    are tolerated.<br>
-    The first entry on a line (predeceded by an arbitrary number of tabs and spaces)
-    is the IP in dotted notation, the second entry on one line (separated by the
-    first by an arbitrary number of tabs and spaces) is the FQDN (fully qualified
-    domain name) for that ip. The rest of the line is ignored by default (in the original
-    <code>/etc/hosts</code>, it may contain information not needed by pdnsd).
-    <br><br>
-    <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
-      <tr>
-	<td>
-	  <b><code>owner=<i>string</i>;</code></b><br>
-	  Specifies the name of the host pdnsd runs on and that are specified in dns
-	  answers (specifically, nameserver records).
-	  Must be specified before any file entries.<br>
-	  Names are interpreted as absolute domain names (i.e. pdnsd
-	  assumes they end in the root domain).
-	  You need to specify domain names in dotted notation (example venera.isi.edu.).<br>
-	  Previous versions of pdnsd
-	  required that domain names given in the configuration file ended in a
-	  dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
-	  dot at the end if it is missing.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>ttl=<i>timespec</i>;</code></b><br>
-	  Specifies the ttl (time to live) for all resource records in this section after
-	  this entry. This may be redefined. The default is 86400 seconds (=1 day).
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>file=<i>string</i>;</code></b><br>
-	  The string specifies a file name. For every file entry in a source section,
-	  pdnsd will try to load the given file as described above. Failure is indicated
-	  only when the file cannot be opened, malformed entries will be ignored.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>serve_aliases=(on|off);</code></b><br>
-	  If this is turned on pdnsd will serve the aliases given in a <code>hosts</code>-style file.
-	  These are the third entry in a line of a hosts-style file, which usually give a "short name" for the host.
-	  This may be used to support broken clients without a proper domain-search option.
-	  If no aliases are given in a line of the file, pdnsd behaves as without this option for this line.<br>
-	  This feature was suggested by Bert Frederiks.<br>
-	  It is off by default.
-	</td>
-      </tr>
-      <tr>
-	<td>
-	  <b><code>authrec=(on|off);</code></b><br>
-	  If this is turned on, pdnsd will create authoritative local records with the data from the hosts file.
-	  Please see the description of the option of the same name in the rr section for a closer description of
-	  what this means. Please note that this only has an effect for files sourced with <code>file</code> options
-	  subsequent to this option.<br>
-	  This is on by default.
-	</td>
-      </tr>
-    </table>
-    <br>
-    <h3>2.1.6 <a name="includesection"><code>include</code> Section</a></h3>
-    A configuration file may include other configuration files.
-    However, only the top-level configuration file may contain <a href="#globalsection"><code>global</code></a>
-    and <a href="#serversection"><code>server</code></a> sections,
-    thus include files are effectively limited to sections that add local definitions to the cache.<br>
-    Include sections currently only have one type of option, which may be given multiple times within a single section.
-    <br><br>
-    <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
-      <tr>
-	<td>
-	  <b><code>file=<i>string</i>;</code></b><br>
-	  The string specifies a file name. For every <code>file</code> option in an include section,
-	  pdnsd will parse the given file as described above. The file may contain include sections itself,
-	  but as a precaution pdnsd checks that a certain maximum depth is not exceeded to guard against
-	  the possibility of infinite recursion.
-	</td>
-      </tr>
-    </table>
-    <br>
-    <h2>3 <a name="pdnsdctl">pdnsd-ctl</a></h2>
-    <p>
-    pdnsd-ctl allows you to configure pdnsd at run time. To make this work, you have to start pdnsd with the <code>-s</code>
-    option (or use the <code><a href="#statusctl">status_ctl</a></code> option in the config file). You also should make sure that you
-    have appropriate permissions on the control socket (use the <code>ctl_perms</code> option to make this sure) and of your pdnsd
-    cache directory (pdnsd keeps its socket there). Please make sure the pdnsd cache directory is not writeable for untrusted users!</p>
-    <p>
-    pdnsd-ctl accepts two command-line options starting with a dash.<br>
-    <code>-c</code> may be used to specify the cache directory (and takes this as argument).
-    The default for this setting is the pdnsd default cache directory (specified at compile time).
-    The cache directory for pdnsd-ctl must be the same pdnsd uses!<br>
-    <code>-q</code> can be used to make the output of pdnsd-ctl less verbose.</p>
-    <p>
-    The following table lists the commands that pdnsd-ctl supports. The command must always be
-    the first command-line option (not starting with a dash), the arguments to the command must follow in the given order.<br>
-    In the following table, keywords are in a normal font, while placeholders are in italics.<br>
-    Alternatives are specified like (alt1|alt2|alt3).
-    Optional arguments are placed between square brackets [].</p>
-    <table width="100%" bgcolor="#CCCCCC" cellpadding=10>
-      <tr>
-	<td><b>Command</b></td>
-	<td><b>Arguments</b></td>
-	<td><b>Description</b></td>
-      </tr>
-      <tr>
-	<td class="nowrap">help</td>
-	<td></td>
-	<td>Print a command summary.</td>
-      </tr>
-      <tr>
-	<td class="nowrap">version</td>
-	<td></td>
-	<td>Print version and license info.</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>status</td>
-	<td></td>
-	<td>
-	  Print a description of pdnsd's cache status, thread status and configuration.
-	  Also shows which remote name servers are assumed to be available.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>server</td>
-	<td valign=top>(<i>index</i>|<i>label</i>)  (up|down|retest)  [<i>dns1</i>[,<i>dns2</i>[,...]]]</td>
-	<td>
-	  Set the status of the server with the given <i>index</i> or <i>label</i> (where the given label
-	  matches the one given with the label option in the respective server section in the config file)
-	  to up or down, or  force a retest. The index is assigned in the order of definition in
-	  <code>pdnsd.conf</code> starting with 0. Use the status command to view the indices and labels.
-	  You can specify <code>all</code> instead of an index or label to perform the action for all
-	  servers registered with pdnsd. Example:<br>
-	  <code>pdnsd-ctl server 0 retest</code><br>
-	  An optional third argument consisting of a list of IP addresses (separated by commas or
-	  white-space characters) can be given.
-	  This list will replace the previous list of addresses of name servers used by pdnsd in the
-	  specified section of the config file.
-	  For example in the <code>/etc/ppp/ip-up</code> script called by <code>pppd</code> you could
-	  place the following line:<br>
-	  <code>pdnsd-ctl server isplabel up $DNS1,$DNS2</code><br>
-	  If white space is used to separate addresses the list will have to be quoted.
-	  Spurious commas and white-space characters are ignored.
-	  The last argument may also be an empty string, in which case the existing IP addresses are
-	  removed and the corresponding server section becomes inactive.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>record</td>
-	<td valign=top><i>name</i>  (delete|invalidate)</td>
-	<td>
-	  Delete or invalidate the records of the given domain <i>name</i> if it is in the
-	  cache. Invalidation means that the records are marked as timed out, and
-	  will be reloaded if possible (if purge_cache is set to on, they will
-	  be deleted in any case).<br>
-	  For local records (i.e., records that were given in the config file
-	  using a <code>rr</code> section, records read from a hosts-style file
-	  and records added using pdnsd-ctl), invalidation has no effect. Deletion
-	  will work, though. Example:<br>
-	  <code>pdnsd-ctl record localhost. delete</code>
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>source</td>
-	<td valign=top><i>fn</i>  <i>owner</i>  [<i>ttl</i>]  [(on|off)]  [noauth]</td>
-	<td>
-	  Load a hosts-style file. Works like using the pdnsd
-	  <a href="#sourcesection">source configuration section</a>.
-	  <i>owner</i> and <i>ttl</i> are used as in the source section. <i>ttl</i> has a default
-	  of 900 (it does not need to be specified). The next to last argument corresponds
-	  to the serve_aliases option, and is off by default (i.e. if it is not specified).
-	  <code>noauth</code> is used to make the domains non-authoritative - please see
-	  the description of the <code>authrec</code> config file options for a description of what
-	  that means.
-	  <i>fn</i> is the filename. The file must be readable by pdnsd! Example:<br>
-	  <code>pdnsd-ctl source /etc/hosts localhost. 900 off</code>
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>add</td>
-	<td valign=top>a  <i>addr</i>  <i>name</i>  [<i>ttl</i>]  [noauth]</td>
-	<td rowspan=6>
-	  Add a record of the given type to the pdnsd cache, replacing existing
-	  records for the same <i>name</i> and type. The 2nd argument corresponds
-	  to the value of the option in the rr section that is named like
-	  the first argument: a is a record for hostname-to-address mapping,
-	  aaaa is the same thing for IPv6 addresses, and ptr is for address-to-hostname
-	  mapping. See the documentation for the <code>rr</code> section for more details.
-	  In case of A and AAAA records, the <i>addr</i> argument may be a list of IP addresses,
-	  separated by commas or white space, causing multiple addresses to be defined
-	  for the same <i>name</i>.
-	  The <i>ttl</i> is optional, the default is 900 seconds.
-	  <code>noauth</code> is used to make the domains non-authoritative - please see
-	  the description of the <code>authrec</code> config file options for a description of what
-	  that means.
-	  If you want no other record than the newly added in the cache, do<br>
-	  <code>pdnsd-ctl record <i>name</i> delete</code>
-	  before adding records. This is also better when overwriting local records. Example:<br>
-	  <code>pdnsd-ctl add a 127.0.0.1 localhost. 900</code>
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>add</td>
-	<td valign=top>aaaa  <i>addr</i>  <i>name</i>  [<i>ttl</i>]  [noauth]</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>add</td>
-	<td valign=top>ptr  <i>host</i>  <i>name</i>  [<i>ttl</i>]  [noauth]</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>add</td>
-	<td valign=top>cname  <i>host</i>  <i>name</i>  [<i>ttl</i>]  [noauth]</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>add</td>
-	<td valign=top>mx  <i>host</i>  <i>name</i>  <i>pref</i>  [<i>ttl</i>]  [noauth]</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>add</td>
-	<td valign=top>ns  <i>host</i>  <i>name</i>  [<i>ttl</i>]  [noauth]</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>neg</td>
-	<td valign=top><i>name</i>  [<i>type</i>]  [<i>ttl</i>]</td>
-	<td>
-	  Add a negatively cached record to pdnsd's cache, replacing existing
-	  records for the same <i>name</i> and <i>type</i>. If no type is given, the whole
-	  domain is cached negatively. For negatively cached records, errors are
-	  immediately returned on a query, without querying other servers first.
-	  The <i>ttl</i> is optional, the default is 900 seconds.<br>
-	  You can get a list of all types you can pass to this command using
-	  <code>pdnsd-ctl list-rrtypes</code>. The type is treated case-sensitive!
-	  Example:<br>
-	  <code>pdnsd-ctl neg foo.bar A 900</code><br>
-	  <code>pdnsd-ctl neg foo.baz 900</code><br>
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>config</td>
-	<td valign=top>[<i>filename</i>]</td>
-	<td>
-	  Reload pdnsd's configuration file.<br>
-	  The config file must be owned by the uid that pdnsd had when it was
-	  started, and be readable by pdnsd's <a href="#runas"><code>run_as</code></a> uid. If no file name is
-	  specified, the config file used at start-up is reloaded.<br>
-	  Note that some configuration changes, like the port or IP address pdnsd listens on,
-	  cannot be made this way and you will receive an error message.
-	  In these cases, you will have to restart pdnsd instead.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>include</td>
-	<td valign=top><i>filename</i></td>
-	<td>
-	  Parse the given file as an include file, see the documentation on
-	  <a href="#includesection">include sections</a> for a description
-	  what this file may contain.<br>
-	  This command is useful for adding definitions to the cache without reconfiguring pdnsd.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>eval</td>
-	<td valign=top><i>string</i></td>
-	<td>
-	  Parse the given string as if it were part of pdnsd's configuration file.
-	  The string should hold one or more complete configuration sections.
-	  However, <a href="#globalsection"><code>global</code></a> and
-	  <a href="#serversection"><code>server</code></a> sections are not allowed,
-	  just as in <a href="#includesection">include files</a>.
-	  If multiple strings are given, they will be joined using newline chars
-	  and parsed together.<br>
-	  This command is useful for adding records interactively to the cache
-	  that cannot be defined using the "<code>pdnsd-ctl add</code>" command,
-	  (e.g. soa records).
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>empty-cache</td>
-	<td valign=top>[[+|-]<i>name</i> ...]</td>
-	<td>
-	  If no arguments are provided, the cache will be completely emptied,
-	  freeing all existing entries.
-	  Note that this also removes local records, as defined by the config file.
-	  To restore local records, run <code>"pdnsd-ctl config"</code> or
-	  <code>"pdnsd-ctl include <i>filename</i>"</code> immediately afterwards.<br>
-	  The <code>"pdnsd-ctl empty-cache"</code> command now accepts additional arguments;
-	  these are interpreted as include/exclude names. If an argument starts with a '+'
-	  the name will be included. If an argument starts with a '-' it will be
-	  excluded. If an argument does not begin with '+' or '-', a '+' is
-	  assumed. If the domain name of a cache entry ends in one of the names in
-	  the list, the first match will determine what happens. If the matching
-	  name is to be included, the cache entry is deleted, otherwise not.
-	  If there are no matches, the default action is not to delete.
-	  Note that if you want to delete exactly one name and no others, you should
-	  use <code>"pdnsd-ctl record <i>name</i> delete"</code>,
-	  this is also much more efficient.<br>
-	  Examples:<br>
-	  <code>pdnsd-ctl empty-cache</code><br>
-	  This command will remove all cache entries.<br>
-	  <br>
-	  <code>pdnsd-ctl empty-cache microsoft.com msft.net</code><br>
-	  This will remove all entries ending in microsoft.com or msft.net.<br>
-	  <br>
-	  <code>pdnsd-ctl empty-cache -localdomain -168.192.in-addr.arpa .</code><br>
-	  This will remove all entries except those ending in localdomain or
-	  168.192.in-addr.arpa. Note that '.' is the root domain which matches any
-	  domain name.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>dump</td>
-	<td valign=top>[<i>name</i>]</td>
-	<td>
-	  Print information stored in the cache about <i>name</i>.
-	  If <i>name</i> begins with a dot and is not the root domain, information about
-	  the  names  in the cache ending in <i>name</i> (including <i>name</i> without
-	  the leading dot) will be printed.
-	  If <i>name</i> is not specified, information about all the names in the cache will
-	  be printed.<br>
-	  For each RR record the time and date that this record has been added to the cache
-	  will be printed in the form mm/dd HH:MM:SS (locally defined records are printed without a time stamp).
-	  After that the type of record is printed with the data. For the more common types
-	  of RR records the data will be printed in human readable form, the remaining ones in a
-	  hexadecimal representation.<br>
-	  This command is mainly useful for diagnostic purposes.<br>
-	  Note that if you pipe the output of this command through an application that
-	  reads only part of the output and then blocks (such as <code>more</code> or <code>less</code>),
-	  pdnsd will not be able to add new entries to the cache until the pipe is closed.
-	  It is preferable to capture the output in a file in such a case.
-	</td>
-      </tr>
-      <tr>
-	<td class="nowrap" valign=top>list-rrtypes</td>
-	<td></td>
-	<td>
-	  List available rr types for the neg command.
-	  Note that those are only used for the neg command, not for add!
-	</td>
-      </tr>
-    </table>
-    <br>
-    <br>
-    <h2>4 contrib/</h2>
-    The contrib directory in the pdnsd distribution contains useful user-contributed scripts.<br>
-    So far, there are scripts contributed by Marko Stolle and Paul Rombouts that make pdnsd
-    usable in a DHCP setup.
-    Please take a look into the README file in the contrib directory for further information.
-    <br>
-    <br>
-    <h2>5 Problems...</h2>
-    If you have problems with configuring or running pdnsd, be sure to read the <a href="faq.html">FAQ</a>.
-    If this does not help you, pdnsd crashes or you find bugs, please mail one of the authors.<br>
-    <em>Note added by <a href="mailto:p.a.rombouts at home.nl">Paul A. Rombouts</a></em>:
-    Thomas Moestl no longer maintains the code. I have revised the code and added new features.
-    See <a href="../../README.par"><code>README.par</code></a> and the
-    <a href="../../ChangeLog"><code>ChangeLog</code></a> in the source directory
-    (or <code>/usr/share/doc/pdnsd-<version></code> if you have installed a binary package)
-    for more details.
-    If you have questions about my modifications, you can find my email address at the end of
-    <a href="../../README.par"><code>README.par</code></a>.
-    <br>
-    <br>
-    <h2>6 Hacking</h2>
-    Here comes some information you might find useful for hacking pdnsd.
-    <br>
-    <h3>6.1 Source files</h3>
-    <table width="100%" cellspacing=1 cellpadding=7>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">Makefile.am, configure.in, acconfig.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  autoconf/automake/autoheader scripts. Makefile.am's are in most subdirectories.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">pdnsd.spec.in</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  A template from which configure generates a spec file for building rpm's for various
-	  distributions.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">version</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Contains only the program version string. Needed for several templates.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/rc/*</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  rc (start-up) scripts for various linux distributions.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/cache.c</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  The pdnsd cache subsystem(s) as defined in src/cache.h.
-	  This is the "traditional" pdnsd system which keeps the cache in memory and uses hash tables for accesses.
-	  Sourav K. Mandal is working on a system using gdbm.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/pdnsd-ctl/*</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Contains the code for pdnsd-ctl, a program that allows you to control pdnsd at run time.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/conf-lex.l.in</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  The lex/flex source file for the config file lexer. This is a template because there might be
-	  inserted  "%option yylineno" for proper flex support.
-	  <font color="#990000">(obsolete, superseded by src/conf-parser.c)</font>
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/conf-lex.l</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  This is automatically generated by configure from conf-lex.l.in. It may be overwritten
-	  in any make, so never modify this, but conf-lex.l.in instead!
-	  <font color="#990000">(obsolete, superseded by src/conf-parser.c)</font>
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/conf-parse.y</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  The yacc/bison source of the config file parser.
-	  <font color="#990000">(obsolete, superseded by src/conf-parser.c)</font>
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/conf-parser.c, src/conf-parser.h, src/conf-keywords.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  The config file parser written purely in C (versions 1.1.10-par and later).
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/conff.c, src/conff.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  The configuration handler functions and their prototypes. The parser is called from here.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/consts.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Some constants used by the parser, config file handler functions and in the server status thread,
-	  among others.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/dns.c, src/dns.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Define dns message structures, constants, and some common dns data handlers. dns.h contains gcc-specific
-	  code (in praticular, "__attribute__((packed))").
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/dns_answer.c, src/dns_answer.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Define functions that answer incoming dns queries.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/dns_query.c, src/dns_query.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Define functions to manage outgoing dns queries.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/error.c, src/error.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Functions for error output to stderr or the syslog, and debug output to stderr or <code>pdnsd.debug</code>.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/hash.c, src/hash.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Contains the code for storing and looking up cache entries in the hash table.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/helpers.c, src/helpers.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Define miscellaneous helper functions.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/icmp.c, src/icmp.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Define a function for performing a ping test. This contains OS-specific code.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/main.c</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Contains main(), which holds the command line parser, performs initialisations and signal handling.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/make_hashconvtable.c</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Contains the code for the executable <code>make_hashconvtable</code>, which  is only run once, during build time, to generate the file <code>hashconvtable.h</code>, used by <code>src/hash.c</code> (versions 1.1.10-par and later).
-	  <font color="#990000">(obsolete since version 1.2)</font>
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/make_rr_types_h.pl</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  A perl script for generating src/rr_types.h,
-	  a C header file containing macro definitions and tables needed for handling the
-	  RR types known to pdnsd, from the text file src/rr_types.in.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/rr_types.c, src/rr_types.h, src/rr_types.in</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  These define tables and macros needed for handling the RR types known to pdnsd.
-	  Since version 1.2.9, rr_types.h is an automatically generated file,
-	  see make_rr_types_h.pl.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/netdev.c, src/netdev.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Define functions for network device handling. OS-specific.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/servers.c, src/servers.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Define functions for the server status thread that performs the periodical uptests.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%">src/status.c, src/status.h</td>
-	<td bgcolor="#CCFFFF" width="80%">
-	  Define functions for the status control thread. This is pdnsd's interface to pdnsd-ctl.
-	</td>
-      </tr>
-    </table>
-
-    <br>
-    <hr>
-    <address>
-    Copyright (C) 2000, 2001 <a href="mailto:tmoestl at gmx.net">Thomas Moestl</a><br>
-    Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2012 <a href="mailto:p.a.rombouts at home.nl">Paul A. Rombouts</a>
-    </address>
-    <p>
-      <i>Last revised: 19 April 2012 by Paul A. Rombouts</i>
-    </p>
-  </body>
-</html>
diff --git a/jni/pdnsd/doc/html/doc_makefile b/jni/pdnsd/doc/html/doc_makefile
deleted file mode 100644
index 28fb7d5..0000000
--- a/jni/pdnsd/doc/html/doc_makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-
-versionfile = ../../version
-arch = i686
-arch2 = x86_64
-extver = _sl6
-system = Scientific Linux 6.2 system
-
-doc: dl.html
-.PHONY: doc clean
-
-# If the existing dl.html contains '???', then certain packages were missing
-# during the previous build and dl.html needs to be built again.
-ifneq ($(shell grep -F -l -e '???' dl.html),)
-.PHONY: dl.html
-endif
-
-dl.html: %.html: %.html.in htmlsubst.pl $(versionfile)
-	perl htmlsubst.pl version=`cat $(versionfile)` \
-	baseurl='http://members.home.nl/p.a.rombouts/pdnsd/' \
-	arch=$(arch) arch2=$(arch2) extver=$(extver) system="$(system)" $< > $@
-
-clean:
-	@rm -fv dl.html
diff --git a/jni/pdnsd/doc/html/faq.html b/jni/pdnsd/doc/html/faq.html
deleted file mode 100644
index eec6599..0000000
--- a/jni/pdnsd/doc/html/faq.html
+++ /dev/null
@@ -1,412 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>The pdnsd FAQ</title>
-    <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
-    <style type="text/css">
-      <!--
-      .small { font-family:helvetica; font-size:small; text-align:center; }
-      // -->
-    </style>
-  </head>
-
-  <body bgcolor="#EEEEEE">
-    <!--notext(-->
-    <table width="100%">
-      <tr>
-	<td> <span class="small">
-	    <a href="index.html">pdnsd Homepage</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="faq.html">pdnsd FAQ</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="doc.html">Documentation</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="../../COPYING">GNU GPL (pdnsd's License)</a>
-	  </span> </td>
-	<td><span class="small">
-	    <a href="dl.html">Download Section</a>
-	  </span></td>
-      </tr>
-    </table>
-    <!--)notext-->
-    <h1>The pdnsd FAQ</h1>
-    <a name="q001"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  There are complete and well-tested name servers around, such as the BIND.
-	  These do also perform caching. Why should I use pdnsd?
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  pdnsd does not aim to be a complete name server implementation, such as the
-	  BIND. It is optimized for caching, and you can only specify a small subset of all
-	  dns record types pdnsd knows in your local "zone" definitions.
-	  This of course reduces the code size drastically, and such the memory footprint.
-	  There are some features especially interesting for dialin networks, ordinary
-	  (non-server) internet hosts and computers that are often not connected to
-	  to their network, e.g. notebooks (I originally wrote this program for use
-	  with my notebook).
-	  These features are:
-	  <ul>
-	    <li> permanent disk cache (useful for frequent power-offs/reboots)
-	    <li> usually smaller memory footprint (depends on cache size) (see next question)
-	    <li> offline-detection prevents hangs (e.g. the typical hang on startup of some
-	      Netscape Navigator versions if not dialled in)
-	    <li> better control about timeouts (also to prevent hangs)
-	    <li> better control over the cache
-	    <li> better run-time control
-	  </ul>
-	</td>
-      </tr>
-    </table>
-    <hr>
-    <a name="q002"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  When I look at the process size with ps, top, gtop, or a similar tool, I see
-	  some processes with a total size well above 3.5 MB. This is much more than
-	  e.g. BIND named (about 1.4 MB). Why?
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  Really, it is not.
-	  pdnsd uses multithreading, not multiprocessing. That means that the processes
-	  share most of their process space. In the LinuxThreads library
-	  or NPTL (Native Posix Thread Libary),
-	  which are used by pdnsd on Linux, in fact the total process address space is shared
-	  (although the processes have different stacks, these are in one process
-	  address space). You may check this by looking at the at the process sizes of
-	  the  pdnsd threads: all should be the same. The effective size that pdnsd
-	  occupies is thus the size of any of the processes, not the sum of those.
-	  So, pdnsd with empty cache occupies about 800 kB, and the maximum size
-	  should be about the cache size plus this size (in fact, ca 5-10% more).
-	</td>
-      </tr>
-    </table>
-    <hr>
-    <a name="q003"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  What do I need the status control (option -s) for?
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  It enables you to do some things you might or might not need. With it, you can:
-	  <ul>
-	    <li> query pdnsd's settings at runtime to debug configuration files and
-	      see which servers are regarded to be available
-	    <li> mark servers as available or unavailable, or force a status retest - very
-	      handy if you want to control which servers pdnsd queries, e.g for muliple
-	      dial-up accounts
-	    <li> delete, invalidate or add DNS records - useful e.g. when you want to build
-	      records for dynamically assigned IP addresses or domain names
-	    <li> reload pdnsd's configuration file without restarting pdnsd
-	    <li> print information about the contents of pdnsd's cache.
-	  </ul>
-	</td>
-      </tr>
-    </table>
-    <hr>
-    <a name="q004"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  What do I need local records (rr- and source-sections in the config file) for?
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  Some resolver programs, e.g. nslookup, want to look up the name of the
-	  server they are using before doing anything else. This option is for defining
-	  a PTR record for your IP such that those programs get an answer even if the
-	  name server you are caching is not available or does not offer these records.
-	  By extension, you may also define A and SOA records. This allows you to build
-	  very small zones without having to use a "big" name server. It is NOT
-	  intended to replace such a complete server in anything but VERY small
-	  networks. Alternatively, you may start a named on another host or on the
-	  same host on another port and cache it with pdnsd in addition to other (more
-	  distant) name servers.
-	  <br>
-	  The <code>source</code> section allows you to let pdnsd read in your
-	  <code>/etc/hosts</code> file on startup and serve its contents. This file is used by your local
-	  resolver before it even  tries the name servers and usually contains
-	  fully-qualified domain names (FQDNs) for all of the internet addresses your host has.
-	  If you source this file, you usually won't need any additional <code>rr</code> sections. Sourcing it also allows
-	  other hosts (eg. in your local network) to access the names defined in your
-	  hosts file. You can of course just add other hosts in your local network to the
-	  servers <code>hosts</code> file, thus making them known to your server's resolver
-	  and pdnsd (if you sourced that file).
-	  <br>
-	  If you don't know what this answer was all about, you should just take the
-	  source section in the sample config file that comes with pdnsd, copy it
-	  into your config file and forget about it.
-	</td>
-      </tr>
-    </table>
-    <hr>
-    <a name="q005"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  When compiling, I get an error message like <br><i>Please define __BYTE_ORDER to
-	  be __LITTLE_ENDIAN or __BIG_ENDIAN</i><br> What's up?
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  Normally, this macros should be defined in your C library's header files.
-	  There are two different methods, most C libraries support both (and pdnsd
-	  honors both): either <code>__BYTE_ORDER</code> is set to <code>__LITTLE_ENDIAN</code>
-	  or <code>__BIG_ENDIAN</code>, or <code>__LITTLE_ENDIAN</code> or <code>__BIG_ENDIAN</code>
-	  are directly defined as macros.
-	  <br>
-	  Linux glibc, for example, does set those macros correctly. Never mind. You just have to know
-	  whether your machine is little-endian or big-endian, this means wheter your
-	  machine saves the least significant byte of a word or double-word first in memory (little-endian) or
-	  the most significant first (big-endian).
-	  All intel x86 and Alpha machines are little-endian, for example, while SPARC
-	  and PowerPC architectures are big-endian.
-	  If your machine is little-endian, add the following line to your config.h:
-	  <br><code>
-	    #define __BYTE_ORDER __LITTLE_ENDIAN
-	  </code><br>
-	  Likewise, if your machines byte order is big-endian:
-	  <br><code>
-	    #define __BYTE_ORDER __BIG_ENDIAN
-	  </code><br>
-	  Pathological byte orders like pdp-endian are not yet supported really;
-	  However, for the place the endianess is needed, <code>__LITTLE_ENDIAN</code> should do
-	  (it deals only with 16 bits; for all other occurances, ntoh[sl]/hton[sl] is used).
-	</td>
-      </tr>
-    </table>
-    <hr>
-    <a name="q007"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  At startup, I get a warning saying:<br>
-	  <i>
-	    Uptest command [...] will implicitly be executed as root
-	  </i> <br>
-	  What does that mean?
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  This warning only occurs if you use the <code>uptest=exec</code> option in your
-	  configuration. It means that the uptest command is run as root
-	  because pdnsd is running as root, and this was not explicitely specified.
-	  The idea is that it may introduce security holes (in the programs being run)
-	  when they run as root, and so they shouldn't do that if possible.
-	  You can specify the user that shall run the command by appending its name
-	  comma-separated as string to the <code>uptest_cmd</code> line: <br>
-	  <code>
-	    uptest_cmd="<your command>","<user>";
-	  </code> <br>
-	  If it is correctly running as root, just append the user string <code>"root"</code> to
-	  the command and the warning will not occur again.
-	</td>
-      </tr>
-    </table>
-    <hr>
-    <a name="q008"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  I cannot run my <code>uptest_cmd</code> command as root (it says <i>permission denied</i>),
-	  although the pdnsd executable is setuid root. Why?
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  pdnsd will drop privileges gained through setuid/setgid before executing the
-	  uptest commands (you shouldn't set the pdnsd executable setuid/setgid anyway).
-	  The reason is clear: if you install the pdnsd
-	  executable as setuid root and this wouln't be done, any user could execute
-	  shellcode with root privileges using that option!
-	</td>
-      </tr>
-    </table>
-    <hr>
-    <a name="q009"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  At startup, I get an error saying:<br>
-	  <i>
-	    Bad config file permissions: the file must be only writeable by the user
-	  </i><br>
-	  Why is that?
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  pdnsd has an option (<code>uptest=exec</code>) that allows the execution of arbitrary
-	  shell code (for testing whether an interface is up). This must be
-	  of course secured against unauthorized use. One of these
-	  protection is the one that produces the error message: if you routinely run
-	  pdnsd, e.g. at system startup, and your config file is editable for others,
-	  someone could change it and insert shell code that is executed in the next
-	  pdnsd run -- with your user privileges! To prevent this, pdnsd will exit if the config file is writeable
-	  by others than the owner.
-	  To get rid of this message, just do <br>
-	  <code>
-	    chmod go-w <filename>
-	  </code><br>
-	  on your config
-	  file (for the default file: <code>chmod go-w /etc/pdnsd.conf</code>).
-	  You should also check that the ownership is set correct.
-	</td>
-      </tr>
-    </table>
-    <hr>
-    <a name="q010"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  <code>serve_aliases</code> does not seem to work.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  Some resolvers (e.g. of the glibc 2.1) seem sometimes not to look up unmodified names, but the names with
-	  an entry of the search path already appended. Since pdnsd will serve short names with this
-	  option anyway, you can delete the search an domain options from your /etc/resolv.conf. This is reported to
-	  work in some cases.
-	</td>
-      </tr>
-    </table>
-    <hr>
-    <a name="q011"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-     <tr>
-        <td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  Some queries for domains that have many records (e.g. www.gmx.de) fail mysteriously.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  pdnsd versions prior to 1.1.0 had the tcp server thread disabled by default. Most resolvers
-	  repeat their query using tcp when they receive a truncated answer (the answer is truncated
-	  when it exceeds a length of 512 bytes). You need to recompile pdnsd with the option
-	  <code>--enable-tcp-server</code> to fix this.
-	</td>
-      </tr>
-    </table>
-    <hr>
-    <a name="q012"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-     <tr>
-        <td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  I am behind some kind of firewall. In the configuration file
-	  I have only listed addresses of name servers on the local (ISP's) network,
-	  but pdnsd is slow and DNS queries frequently time out.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  In some cases pdnsd will not consider the answer of the local name server
-	  authoritative enough, and will try to get answers from the name servers listed in the
-	  authority section of the reply message. If pdnsd is behind a firewall that blocks the
-	  UDP reply packets from remote name servers, pdnsd will wait in vain for a reply.
-	  One solution is to set <a href="doc.html#proxyonly"><code>proxy_only=on</code></a>
-	  in the servers sections of the configuration file.
-	  This will prevent pdnsd from querying name servers that are not listed in the configuration
-	  file.
-	  Another solution that can be tried is specifying
-	  <a href="doc.html#querymethod"><code>query_method=tcp_only</code></a>
-	  in the global section of the configuration file, because a firewall that blocks
-	  UDP packets from outside might still allow outgoing TCP connections to port 53.
-	</td>
-      </tr>
-    </table>
-    <hr>
-    <a name="q013"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-     <tr>
-        <td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	  Is pdnsd vulnerable to DNS cache poisoning as described in
-	  <a href="http://www.kb.cert.org/vuls/id/800113">CERT vulnerability note VU#800113</a>?
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	  Short answer: Yes.<br>
-	  Somewhat longer answer: The problem is not so much that pdnsd's implementation is flawed
-	  but rather that the DNS protocol currently being used is fundamentally flawed from
-	  a security viewpoint. As long as a more secure protocol is not in place,
-	  all that the developers of pdnsd can do is to try to tweak the current implementation
-	  to make it as difficult as possible for an attacker to succeed.<br>
-	  From version 1.2.7 onwards, the default for the <code>query_port_start</code> option
-	  is 1024, which means that the pdnsd resolver will randomly select source ports
-	  in the range 1024-65535. (In previous versions the default was to let the kernel select
-	  the source ports, which will often result in a more or less predictable sequence of ports.)
-	  It also helps to use a good quality source of random numbers. On platforms where this is
-	  supported, it is preferable to configure with <code>--with-random-device=/dev/urandom</code>.
-	  There is still more that can be done to make pdnsd less vulnerable, but this remains
-	  (as of this writing) a work in progress.
-	  <br>
-	  Please note that pdnsd was designed for small (private) networks, and that it is generally
-	  not recommended to let untrusted users access pdnsd.
-	</td>
-      </tr>
-    </table>
-<!--<hr>
-    <a name="q014"></a>
-    <table width="100%" cellspacing=1 cellpadding=7>
-     <tr>
-        <td bgcolor="#FFCCFF"><b>Q:</b></td>
-	<td bgcolor="#CCFFFF">
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF"><b>A:</b></td>
-	<td bgcolor="#DDFFEE">
-	</td>
-      </tr>
-    </table>-->
-    <hr>
-    <address><a href="mailto:tmoestl at gmx.net">Thomas Moestl</a>
-      and <a href="mailto:p.a.rombouts at home.nl">Paul Rombouts</a>
-    </address>
-    <br>
-    <p>
-      <i>Last revised: 18 August 2008 by Paul Rombouts</i>
-    </p>
-  </body>
-</html>
-
diff --git a/jni/pdnsd/doc/html/htmlsubst.pl b/jni/pdnsd/doc/html/htmlsubst.pl
deleted file mode 100644
index a9e3e9f..0000000
--- a/jni/pdnsd/doc/html/htmlsubst.pl
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/perl -w
-
-# Primitive ad-hoc script for updating pdnsd html doc files.
-# Written by Paul Rombouts.
-
-use strict;
-use integer;
-use POSIX qw(strftime);
-
-my %paramvals=();
-
-while(@ARGV && $ARGV[0]=~/^([^=]*)=(.*)$/) {
-    my $param=$1; my $val=$2;
-    if($param =~ /^[[:alpha:]]\w*$/) {
-	$paramvals{$param}=$val;
-    }
-    else {warn "Warning: invalid parameter '$param' ignored.\n"}
-    shift @ARGV;
-}
-
-sub sizeof {
-    my($arg)=@_;
-    (my $str= $arg) =~ s/\$(?:([[:alpha:]]\w*)\b|\{([[:alpha:]]\w*)\})/
-				defined($paramvals{$+})?$paramvals{$+}:defined($ENV{$+})?$ENV{$+}:''/eg;
-    my $filename=eval($str);
-    (-f $filename) or return '???';
-    (((-s $filename)+1023)/1024).'kB';
-}
-
-while(<>) {
-    s/\$(?:date\b|\{date\})/strftime("%d %b %Y",localtime)/eg;
-    s/\$sizeof\(([^()]*)\)/sizeof($1)/eg;
-    s/\$(?:([[:alpha:]]\w*)\b|\{([[:alpha:]]\w*)\})/
-	defined($paramvals{$+})?$paramvals{$+}:defined($ENV{$+})?$ENV{$+}:''/eg;
-    print;
-}
diff --git a/jni/pdnsd/doc/html/index.html b/jni/pdnsd/doc/html/index.html
deleted file mode 100644
index d2e426a..0000000
--- a/jni/pdnsd/doc/html/index.html
+++ /dev/null
@@ -1,686 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>pdnsd homepage</title>
-    <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
-    <style type="text/css">
-      <!--
-      .small { font-family:helvetica; font-size:small; text-align:center; }
-      // -->
-    </style>
-  </head>
-
-  <body bgcolor="#EEEEEE">
-    <!-- This html code is used for the homepage and for the pdnsd documentation. Since there are some sections that
-    are unwanted in the documentation (particularly the link section with non-local images), and some things that shall
-    not appear in the textified version (some links etc), I introduce 4 tags: the homepage html code is translated to
-    documentation html code by replacing the "nodoc(" comment with the html start comment tag, and the ")nodoc" comment
-    with the html end comment tag.
-    Likewise, before the doc html version is translated to text, the "notext(" and ")notext" comments are translated to
-    html comment tags.
-    -->
-    <!--notext(-->
-    <table width="100%">
-      <tr>
-	<td> <span class="small">
-	    <a href="index.html#aboutpdnsd">About pdnsd</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="faq.html">pdnsd FAQ</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="doc.html">Documentation</a>
-	  </span></td>
-	<td> <span class="small">
-	    <a href="../../COPYING">GNU GPL (pdnsd's License)</a>
-	  </span> </td>
-	<td><span class="small">
-	    <a href="dl.html">Download Section</a>
-	  </span></td>
-      </tr>
-    </table>
-    <center><h1>The pdnsd Homepage</h1></center>
-    <center><h2>News</h2></center>
-    <table width="100%" cellspacing=1 cellpadding=7>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2012-03-17</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.2.9a-par has been released.</b>
-	  Version 1.2.9a fixes a bug in the 1.2.9 release that causes a build failure when pdnsd is
-	  configured with <span style="white-space:nowrap;"><code>--enable-strict-rfc2181</code></span>.
-	  If you do not use this option to compile pdnsd, there is no need to upgrade from 1.2.9 to 1.2.9a.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2012-02-27</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.2.9-par has been released.</b>
-	Version 1.2.9 supports many more RR types (including those necessary for DNSSEC) and
-	EDNS (Extension mechanisms for DNS) to enable UDP messages larger than 512 bytes.
-	It also has support for defining local TXT records and has several new options and bugfixes
-	(including file descriptor leaks that effect FreeBSD users).
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2011-05-03</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>The latest source code is available from a
-	 <a href="http://gitorious.org/pdnsd">git repository</a>.</b><br>
-	In response to frequent requests I have uploaded a git tree including the latest code
-	and a fairly extensive history of pdnsd development to
-	<a href="http://gitorious.org/pdnsd/pdnsd">gitorious.org</a>.
-	Anyone who wants to participate in pdnsd development is free to create a
-	<a href="http://gitorious.org/pdnsd/pdnsd/clone">clone repo on gitorious.org</a>
-	and push his modifications there.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2010-02-22</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.2.8-par has been released.</b>
-	The main new feature of version 1.2.8 is automatic discovery of root servers.
-	Furthermore, there are some additional improvements in the resolver.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2008-09-04</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.2.7-par has been released.</b>
-	Foremost, this release fixes some security problems.
-	It contains a fix for a "dangling pointer" bug that could cause pdnsd to
-	crash when it received a long reply. It also addresses some of the issues
-	raised in the <a href="http://www.kb.cert.org/vuls/id/800113">CERT
-	vulnerability note VU#800113</a> by making the default of
-	<code>query_port_start</code> equal to 1024, thereby ensuring that source
-	ports are randomly selected by the pdnsd resolver in the range 1024-65535.
-	This release also fixes problems with compiling pdnsd for the ARM architecture
-	and for the Darwin platform (Max OS X).
-	<br>
-	There are a number of (minor) new features.
-	pdnsd now supports "include" files, essentially configuration files that
-	only contain definitions for local records.
-	It is now possible to define interactively, using <code>pdnsd-ctl</code>,
-	any local record that can be defined in a configuration file.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2007-09-04</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.2.6-par has been released.</b>
-	pdnsd's license has been upgraded to GPL version 3.
-	A bug has been fixed which which caused pdnsd to handle NXDOMAIN replies
-	inefficiently when configured with <code>neg_domain_pol=on</code>.  The
-	code that implements the ping test has been fixed, which was broken for
-	64-bit systems.  A new option <code>randomize_servers</code> can be used
-	to give each server in a section of the configuration file an equal
-	chance of being queried.  The new options <code>reject</code>,
-	<code>reject_policy</code> and <code>reject_recursively</code> make it
-	possible to check for the presence of certain IP addresses in the
-	replies of name servers and to avoid some types of unwanted replies.
-	The pdnsd-ctl '<code>add a</code>' and '<code>add aaaa</code>' commands
-	now allow multiple IP addresses to be specified for the same name.
-	pdnsd's ability to resolve from root servers has been improved.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2006-09-02</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.2.5-par has been released.</b>
-	This release introduces a new query method: <code>udp_tcp</code>.
-	With this method a UDP query is tried first and, if the UDP answer is
-	truncated, the query is repeated using TCP, which is the behaviour that
-	seems to be recommended by the DNS standards. There is a new
-	configuration option <code>use_nss</code>, which can be turned off to
-	prevent lengthy timeouts and stalls in certain situations. A bug has
-	been fixed which could cause pdnsd to crash if debug output was
-	generated before the debug output stream was properly initialized.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2006-01-09</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.2.4-par has been released.</b>
-	A memory leak and a minor buffer-overflow problem have been fixed.
-	There is now a fix for some situations that would previously cause pdnsd to
-	exit prematurely (such as ACPI S3 sleep or trying to attach strace to pdnsd).
-	Time intervals specified in the configuration file can now be expressed in
-	minutes, hours, days and weeks as well as seconds.
-	Support for Apple Mac OS X v10.4 Tiger has been improved.
-	The "<code>pdnsd-ctl status</code>" command now also provides some
-	information about the status of the running threads.
-	There are some further improvements in the debugging information provided by pdnsd.<br>
-	TCP-query support is now compiled in by default (but can still be disabled using
-	the configure option <code>--disable-tcp-queries</code>).
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2005-07-11</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.2.3-par has been released.</b>
-	New feature in this release: the "<code>pdnsd-ctl empty-cache</code>" command can
-	be provided with an include/exclude list, allowing the user to specify a
-	selection of names to be removed, instead of emptying the cache completely.<br>
-	Additional improvements: pdnsd should now remain responsive while executing the
-	"<code>pdnsd-ctl empty-cache</code>" command.
-	With the <code>query_method=tcp_udp</code> option pdnsd will now also
-	try a UDP query after a TCP connection times out, which should allow
-	pdnsd to resolve the same names with <code>query_method=tcp_udp</code>
-	as with <code>query_method=udp_only</code>, although perhaps with an
-	occasional delay.
-	"<code>pdnsd-ctl config</code>" or "<code>pdnsd-ctl server</code>"
-	commands should now run without delays, even if pdnsd is performing
-	<code>ping</code> or <code>query</code> uptests at the time.
-	Some problems with resolving certain names using root servers have been fixed.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2005-04-03</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.2.2-par has been released.</b>
-	The main emphasis of this release is improved portability.
-	A bug has been fixed that prevented pdnsd from compiling successfully on some
-	64 bit architectures.
-	This release has (experimental) support for the Darwin (Apple Mac OS X) platform.
-	On Linux systems, the configure script will now try to detect automatically whether
-	the system implements the Native POSIX Thread Library, but the method used may not
-	necessarily be foolproof.
-	In addition, the debug features have been improved and should make it easier to find out
-	why pdnsd considers some queries or replies malformed.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2004-11-07</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.2.1-par has been released.</b>
-	The main new feature of this release is improved support for non-Linux platforms.<br>
-	This release has (experimental) support for the Cygwin platform, and should also fix
-	some compilation glitches that have been reported by FreeBSD users.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2004-10-10</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.2-par has been released.</b>
-	pdnsd is new and improved! Most of the changes effect the internal workings
-	of pdnsd, but there also a number of interesting new features (well, I think they are interesting).<br>
-	Among the bugs fixed are two rather nasty ones which involve the handling of NXT and NAPTR records
-	and which can cause pdnsd to crash or abort.<br>
-	The new features include a new server availability test which can be specified with <code>uptest=query</code>,
-	support for reading the DNS configuration from resolv.conf files,
-	a new option for optimizing the use of root servers,
-	a new option that makes defining local records for reverse resolving easier,
-	support for defining wildcard records,
-	a new pdnsd-ctl command for reloading the config file without restarting pdnsd, and
-	a new pdnsd-ctl command for dumping information about the names stored in the cache.
-	The documentation has also been updated: there is now a <code>pdnsd.conf</code> man page.<br>
-	For a more complete list of the changes I'll have to refer you to <a href="../../README.par"><code>README.par</code></a> and the <a
-	href="../../ChangeLog"><code>ChangeLog</code></a>.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2004-05-22</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.1.11a-par has been released.</b>
-	This release contains a fix for FreeBSD users that bypasses a problem
-	with the macro <code>ENONET</code>, which can cause a compilation failure when it is undefined.
-	Linux users will notice no difference between 1.1.11a-par and 1.1.11-par.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2004-05-10</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.1.11-par has been released.</b>
-	This version has a rather large number of small changes, which are rather difficult to summarize.
-	Among the bugs fixed are a race condition in the cache lookup code, a
-	flaw in the code that caused a busy spin when a remote server answered
-	with "Not Implemented", and problems with the -4 and -6 command-line
-	options. Among the improvements are an alternative sorting algorithm
-	which should allow pdnsd to start up faster when reading a large cache
-	file from disk, automatic mapping of IPv4 to IPv6 addresses when running
-	in IPv6 mode, somewhat more efficient memory use, better compression of
-	the replies and changes in the parallel querying algorithm that should
-	improve the chances of catching a reply from a remote server.<br>
-
-	For a more complete list of the changes I'll have to refer you to <a href="../../README.par"><code>README.par</code></a> and the <a
-	href="../../ChangeLog"><code>ChangeLog</code></a>.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2004-02-10</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.1.10-par has been released.</b>
-
-	The main new feature of this release is a new parser for configuration
-	files, completely rewritten from scratch in C. The main advantages are:
-	(f)lex and yacc/bison are no longer needed to build pdnsd, more
-	informative error messages instead of merely "<code>parse error</code>",
-	and string literals no longer need to be enclosed in quotes in most
-	cases.<br> Furthermore, a bug has been fixed that caused incorrect
-	IPV6-type PTR records to be generated when sourcing
-	<code>/etc/hosts</code> like files.<br>
-
-	There have been other small changes, more details can be found in the <a
-	href="../../ChangeLog"><code>ChangeLog</code></a>.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2004-01-08</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.1.9-par has been released.</b>
-	"maintenance" release by Paul Rombouts.<br>
-
-	The change of version number is not very significant; the
-	difference between 1.1.9-par and the previous 1.1.8b1-par8 is marginal.
-	However, I felt the need to simplify the numbering, because it was
-	becoming rather baroque.<br>
-
-	I've added some missing pieces to the documentation (the pdnsd <a
-	href="doc.html">manual</a> and the man page for pdnsd-ctl). BTW, did you
-	know that it's possible to define aliases for domain names with pdnsd? I
-	had plans to implement such a feature when I discovered that pdnsd
-	already supports it. It was just poorly documented. (If want to try this
-	for your self, look for the new information about CNAME records under
-	the rr Section in the <a href="doc.html#rrsection">manual</a>.)<br> The
-	changes to the code consist mostly of optimizations, removal of some
-	size limits due to fixed-size buffers, and some cleaning up. I've also
-	tried to make the error responses of <a
-	href="doc.html#pdnsdctl"><code>pdnsd-ctl</code></a> more helpful.<br>
-
-	More details can be found in the <a href="../../ChangeLog"><code>ChangeLog</code></a>.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2003-10-10</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.1.8b1-par8 has been released.</b>
-	"maintenance" release by Paul Rombouts.<br>
-	This version introduces a "delegation-only" feature that may be useful
-	for blocking Verisign's Sitefinder.<br>
-	The parser for the configuration file now tolerates domain names missing
-	a dot at the end.<br>
-	I have provided alternative implementations for some GNU extensions that I
-	used in an effort to make the code more portable. In particular, the
-	code should build on FreeBSD again.<br>
-	More details can be found in the <a href="../../README.par"><code>README.par</code></a> file.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2003-09-19</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.1.8b1-par7 has been released.</b>
-	"maintenance" release by Paul Rombouts. Besides fixing a number of bugs I have
-	reworked some of the code for adding and removing entries in the cache in an
-	effort to improve efficiency and stability.<br>
-	More details can be found in the <a href="../../ChangeLog"><code>ChangeLog</code></a>.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2003-07-28</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.1.8b1-par6 has been released.</b>
-	"maintenance" release by Paul Rombouts. In addition to some further code cleanup,
-	the documentation has been revised.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2003-07-10</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.1.8b1-par5 has been released.</b>
-	A troublesome allocation size error has been discovered in Thomas Moestl's code.
-	In practice this bug only wastes memory but it could
-	also potentially lead to memory corruption. Upgrading is recommended.
-	More details can be found in the <code>ChangeLog</code>.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#ffccff" width="20%"><b>2003-06-30</b></td>
-	<td bgcolor="#ccffff" width="80%"><b>Version 1.1.8b1-par4 has been released.</b>
-	Due to incompatibilities between various implementations of
-	the pthread library on Linux systems, problems can occur with signal handling in
-	pdnsd. The usual symptom is failure by pdnsd to save the cache to disk, and
-	<code>/var/cache/pdnsd/pdnsd.cache</code> remaining empty. If you experience
-	this kind of trouble, try reconfiguring with different values for the new
-	<code>--with-thread-lib</code> option. The allowable values are
-	described in the <a href="doc.html#threadlib">documentation</a>.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%"><b>2003-04-07</b></td>
-	<td bgcolor="#CCFFFF" width="80%"><b>pdnsd is no longer maintained by Thomas Moestl:</b>
-	I have not had time to maintain pdnsd for quite a while now, and have been very slow to
-	respond to issues, or did not respond at all. It is time that I officially announce that
-	pdnsd is no longer actively maintained; I apologize to all those who reported bugs or
-	asked questions without receiving any reply. However, <b>Paul A. Rombouts</b> has published
-	a patch set against the last released version at
-	<a href="http://members.home.nl/p.a.rombouts/pdnsd.html">http://members.home.nl/p.a.rombouts/pdnsd.html</a>,
-	which cleans up a lot of code fixes many bugs.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%"><b>2002-07-19</b></td>
-	<td bgcolor="#CCFFFF" width="80%"><b>Documentation update.</b>
-	Please note that pdnsd should <b>never be installed with setuid or setgid attributes</b>,
-	as it is not always possible to give up all privileges due to operating system restrictions.
-	While this was never intended and I don't think that anybody would actually do this, the
-	documentation was updated to explicitely mention this to avoid misunderstandings.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%"><b>2002-01-15</b></td>
-	<td bgcolor="#CCFFFF" width="80%"><b>Version 1.1.7a has been released.</b>
-	This fixes a reversed test in an assertion that would cause pdnsd to termintate when the ping uptest
-	was used. No other changes were made.
-	</td>
-      </tr>
-      <tr>
-	<td bgcolor="#FFCCFF" width="20%"><b>2002-01-15</b></td>
-	<td bgcolor="#CCFFFF" width="80%"><b>Version 1.1.7 has been released.</b>
-	This fixes some problems that might be remotely exploitable to gain access as the user pdnsd runs as
-	(an unprivileged user by default). To do this, an attacker needs to control a name server that is
-	queried by pdnsd, and send a malicious reply to such a query.<br>
-	Upgrading is strongly recommended!<br>
-	There are also minor bug fixes and stability improvements.
-	</td>
-      </tr>
-    </table>
-    <!--)notext-->
-    <hr>
-    <h2><a name="aboutpdnsd">About pdnsd</a></h2>
-    pdnsd is a  proxy DNS server with permanent caching (the cache contents
-    are written to hard disk on exit) that is designed to cope with unreachable
-    or down DNS servers (for example in dial-in networking).<br>
-    Since version 1.1.0, pdnsd supports negative caching.<br>
-    <br>
-    It is licensed under the <a HREF="http://www.gnu.org">GNU</a> General Public License (<a HREF="../../COPYING">GPL</A><!--notext(-->,
-    <a HREF="http://www.gnu.org/copyleft/gpl.html">also available in html</A> and
-    <a HREF="http://www.gnu.org/copyleft/copyleft.html#translations">translated into various languages</A>.<!--)notext-->).
-    This, in short, means that the sources are distributed togehter with the program, and
-    that you are free to modify the sources and redistribute them as long as you
-    also license them under the GPL. You do not need to pay anything for pdnsd.
-    It also means that there is <b>ABSOLUTELY NO WARRANTY</b> for pdnsd or any part
-    of it. For details, please <a href="../../COPYING">read the GPL</a>.
-    <p>
-      pdnsd can be used with applications that do DNS lookups, e.g. on startup, and
-      can't be configured to change that behaviour, to prevent the often minute-long
-      hangs (or even crashes) that result from stalled DNS queries. Some Netscape Navigator
-      versions for Unix, for example, expose this behaviour.
-    </p>
-    pdnsd is configurable via a file and supports run-time configuration using the program pdnsd-ctl that comes
-    with pdnsd. This allows you to set the status flags of servers that pdnsd knows (to influence which servers
-    pdnsd will query), and the addition, deletion and invalidation of DNS records in pdnsd's cache.
-    <br>
-    Parallel name server queries are supported. This is a technique that allows
-    querying several servers at the same time so that very slow or unavailable
-    servers will not block the answer for one timeout interval.
-    <br>
-    Since version 1.0.0, pdnsd has full IPv6 support.
-    <p>
-      There is also a limited support for local zone records, intended for defining
-      1.0.0.127.in-addr.arpa. and localhost. , since some clients request that
-      information and it must be served even if the cached servers are not available
-      or do not serve these records. pdnsd may also read your /etc/hosts file
-      (this file is normally used by your local resolver and usually contains
-      information for localhost as well as for your machines FQDN) and serve its
-      contents.
-    </p> <p>
-      pdnsd was started on Linux, and has since been ported to FreeBSD (and Cygwin and Darwin).
-      90% of the source code should be easily portable to POSIX-
-      and BSD-compatible systems, provided that those systems support the POSIX threads (pthreads).
-      The rest might need OS-specific rewrites.
-    </p><p>
-      Currently, pdnsd is only compileable by gcc. This should be easy to fix, but I just
-      do not have documentation for other compilers. If you are not able or do not want
-      to use gcc, I would recommend you just try to do the minor changes.
-    </p>
-    <p>
-      pdnsd must be started as root in some cases (raw sockets are needed for icmp
-      echoes for the option <code>uptest=ping</code>, and the default port is 53, this must be
-      >1024 to allow non-root execution). However, pdnsd can be configured to change it's user
-      and group id to those of a non-privileged user after opening the sockets needed for this.
-    </p> <p>
-      The server should support the full standard DNS queries following the rfcs 1034
-      and 1035. As of version 1.0.0, the rfc compliance has been improved again, and pdnsd is now
-      believed (or hoped?) to be fully rfc-compatible. It completely follows rfc 2181 (except
-      for one minor issue in the FreeBSD port, see the <a href="doc.html">documentation</a>).
-      It does not support the
-      following features, of which most are marked optional, experimental or obsolete
-      in these rfcs:
-    </p>
-    <ul>
-      <li> Inverse queries
-      <li> Status queries
-      <li> Completion queries
-      <li> Namespaces other than IN (Internet)
-      <li> AXFR and IXFR queries (whole zone transfers); since pdnsd does not maintain  zones, that should not violate the standard
-    </ul>
-    The following record types, that are extensions to the original DNS standard, are supported for caching since version 1.2.9
-    (if you do not need most of them, you can disable runtime support for the unneeded ones before compiling pdnsd and save a little cache and executable space, see the source file <code>src/rr_types.in</code>):
-    <ul>
-      <li> RP (<i>responsible person</i>, RFC 1183)
-      <li> AFSDB (<i>AFS database location</i>, RFC 1183)
-      <li> X25 (<i>X25 address</i>, RFC 1183)
-      <li> ISDN (<i>ISDN number/address</i>, RFC 1183)
-      <li> RT (<i>route through</i>, RFC 1183)
-      <li> NSAP (<i>Network Service Access Protocol address </i>, RFC 1348)
-      <li> PX (<i>X.400/RFC822 mapping information</i>, RFC 1995)
-      <li> GPOS (<i>geographic position</i>, deprecated)
-      <li> AAAA (<i>IPv6 address</i>, RFC 1886)
-      <li> LOC (<i>location</i>, RFC 1876)
-      <li> EID (<i>Nimrod EID</i>)
-      <li> NIMLOC (<i>Nimrod locator</i>)
-      <li> SRV (<i>service record</i>, RFC 2782)
-      <li> ATMA (<i>ATM address</i>)
-      <li> NAPTR (<i>URI mapping</i>, RFC 2168)
-      <li> KX (<i>key exchange</i>, RFC 2230)
-      <li> CERT (<i>Certificate record</i>, RFC 4398)
-      <li> DS (<i>Delegation Signer</i>, RFC 4034)
-      <li> RRSIG (<i>Resource Record Signature</i>, RFC 4034)
-      <li> NSEC (<i>Next Secure</i>, RFC 4034)
-      <li> DNSKEY (<i>record containing the public key for a zone</i>, RFC 4034)
-      <li> NSEC3 (<i>Next Secure version 3</i>, RFC 5155)
-      <li> NSEC3PARAM (<i>NSEC3 parameters</i>, RFC 5155)
-    </ul>
-    <p style="text-indent: 1em;">
-      <i><b>Note</b>: This list is incomplete. For the complete list see the source file</i> <code>src/rr_types.in</code>.
-    </p>
-    There are FreeBSD and OpenBSD ports available for pdnsd (ports/net/pdnsd for both).
-    Thanks go to Roman Shterenzon for the FreeBSD port Sebastian Stark for the OpenBSD one!
-    Thanks to Kiyo Kelvin Lee now also runs on the Cygwin platform!
-    Thanks goes to Rodney Brown for extending portability to the Darwin (Apple Mac OS X) platform!
-    <p>
-      If you have questions left, you should take a look into the <a HREF="faq.html">FAQ</a>.
-      <br>
-      Bugfixes, patches and compatability fixes for other OSs are very welcome!
-    </p>
-    <h2>Features in detail</h2>
-    <p>
-      This section describes some of pdnsds features in detail. Most of the options are set
-      in the config file. For more information on the configuration file, see
-      <a href="doc.html">the documenation page</a>.
-    </p><br>
-
-    <h3>Uptests</h3>
-    pdnsd provides several methods to test whether a remote DNS server should be regarded as available
-    (so that pdnsd can query it), in
-    addition to the obvious "none" test (the server is always regarded as available,
-    or availability is set on or off using the <a href="doc.html#pdnsdctl"><code>pdnsd-ctl</code></a> utility).
-    These tests are:
-    <ul>
-      <li><b>ping:</b> a given adress is ping'ed in a given interval. If it there is no response
-	  or the host is unreachable, the server is seen to be not available (for those who don't know:
-	  pinging is sending a certain Internet packet type to a host to which any standard-conformant
-	  host is required to reply).
-      <li><b>if:</b> a given network interface is tested whether it is existent, up and running. If
-	  it is not, the server is regarded to be not available. This is especially useful for ppp and
-	  similar interfaces. A special case test for Linux isdn (ippp*) interfaces is integrated, so that the uptests
-	  should also work for these.
-      <li><b>dev:</b> this is a variant of the if uptest for use with Linux dial-on-demand ppp interfaces. In addition
-	to performing an if-style interface uptest, it also tests whether a specified program (e.g. pppd) owns
-	a lock to a given (modem-) device.
-      <li><b>exec:</b> a given shell command line is executed and the exit status of the whole command line (which
-	  is normally the exit status of the last command) is evaluated. If it is not zero, the server is regarded
-	  to be not available. This is a very flexible testing method with which it should be able to perform
-	  virtually any needed test.
-      <li><b>query:</b> <em>New in version 1.2:</em>
-          This works like the ping test, except it sends an (empty) DNS query to the remote server.
-	  If the server sends a well-formed response back within the timeout period (except SERVFAIL),
-	  it will be regarded as available.
-	  This test is useful if a remote server does not respond to ICMP_ECHO requests at all,
-	  which unfortunately is quite common these days.
-	  In many cases this test will be a more reliable indicator of availability
-	  than the ones mentioned above.
-    </ul>
-    <br>
-    <h3>Local Records ("Zones")</h3>
-    As mentioned above, there are only very basic local record types (ie the record types that you may use in record
-    declarations in your local configuration for records that pdnsd shall serve in addion to the cached ones).
-    They are organized roughly in zones but have not complete zone declarations, so I generally do not use the
-    term "zone" for them, but rather "local records".
-    These are the local record types pdnsd can understand:
-    <ul>
-      <li> <b>SOA</b> (information about the name server)
-      <li> <b>A</b> (domain-name-to-address mapping)
-      <li> <b>PTR</b> (pointer, used normally for address-to-domain-name mapping)
-      <li> <b>NS</b> (name server, generated automatically by pdnsd for any local record set)
-      <li> <b>CNAME</b> (canonical host name)
-      <li> <b>MX</b> (mail exchange for the domain)
-      <li> <b>TXT</b> (arbitrary text strings, often used for Sender Policy Framework)
-    </ul>
-    You can specify these records in the configuration file. <br>
-    You may "source" a file in a format like that used in the <code>/etc/hosts</code> file, that means
-    that pdnsd reads this file, extracts addresses and domain names from it and automatically generates
-    A records for name to address mapping, PTR records for address to name mapping and NS records (name
-    server specifiation) for each entry in the file.<br>
-    Records can also be changed dynamically at run time.<br>
-    A script contributed by Marko Stolle makes pdnsd usable in a DHCP setup using this feature.
-    <br>
-    <h1>System requirements</h1>
-    As mentioned, pdnsd currently runs under Linux, FreeBSD and Cygwin.
-    Other BSD flavours may or may not work (feedback is very welcome!).
-    The system and software requirements under Linux are:
-    <ul>
-      <li> Kernel version >2.2.0
-      <li> glibc version >2.0.1 (aka libc6) with LinuxThreads (normally included)
-        or NPTL (Native Posix Thread Library, recommended).<br>
-	Due to a bug, pdnsd 0.9.8 does not run with glibc2.1.1. This behaviour was
-	fixed in pdnsd 0.9.9.
-      <li> For IPv6: glibc>=2.1
-    </ul>
-    The system requirements under FreeBSD are:
-    <ul>
-      <li> FreeBSD versions >=2.6 (prior ones may or may not work)
-      <li> For IPv6: FreeBSD >=4.0 is recommended (no idea if it runs on prior versions)
-    </ul>
-
-    The common software requirements for all supported systems are:
-    <ul>
-      <li> GCC, preferably egcs-2.* or 3.* (other compilers are currently not supported; the needed patch for another compiler
-	should not be difficult, however)
-      <li> GNU or BSD make
-      <li> the standard commands install, grep, sed, awk, touch and which (along with the REALLY
-	standard ones mv, cp, ln, rm, pwd, test, echo, cat, mkdir, chown, chmod, tar). In
-	any standard Unix installation, this should be no problem.
-      <li> for hacking and building own packages, you might also need gzip, bzip2, perl and rpmbuild
-    </ul>
-    <br>
-    <h1>Download</h1>
-    If you want to download pdnsd, please visit the <a href="dl.html">download page</a>.
-    <br>
-    <h1><a name="authors">Authors</a></h1>
-    <p>
-      pdnsd was originally written by <a href="mailto:tmoestl at gmx.net">Thomas Moestl</a>,
-      but is no longer maintained by him. <a href="mailto:p.a.rombouts at home.nl">Paul A. Rombouts</a>
-      has revised large portions of the code and has added a number of new features.
-      See <a href="../../README.par"><code>README.par</code></a> and the <a href="../../ChangeLog"><code>ChangeLog</code></a>
-      in the source directory (or <code>/usr/share/doc/pdnsd-<version></code>
-      if you have installed a binary package) for more details.
-      If you have questions about the recent modifications, you can find
-      <a name="currentmaintainer">the email address of the current maintainer</a>
-      at the end of <a href="../../README.par"><code>README.par</code></a>.
-    </p>
-    <p>
-      Daniel Smolik has contributed RedHat RPMs (the most recent RPMs are available <a href="dl.html">here</a>).<br>
-      Torben Janssen contributed start scripts for Red Hat Linux. <br>
-      Soenke J. Peters contributed patches and suggestions for Red Hat compatability.<br>
-      Wolfgang Ocker has contributed the code and documentation for the <code>server_ip</code> option.<br>
-      Markus Mohr contributed a Debian rc script.<br>
-      Nikita V. Youschenko contributed extensions to the "<code>if</code>" uptest.<br>
-      Lyonel Vincent extended the serve_aliases option to support an arbitrary number of aliases.<br>
-      Sourav K. Mandal wrote the autoconf scripts and contributed many fixes and suggestions.<br>
-      Stephan Boettcher contributed the SCHEME= option.<br>
-      Ron Yorston contributed the uptest for Linux ppp dial-on-demand devices.<br>
-      Alexandre Nunes fixed some bugs in the autoconf files.<br>
-      Sverker Wiberg contributed fixes for IPv6.<br>
-      Carsten Block contributed <code>configure</code>-able rc scripts.<br>
-      Olaf Kirch contributed a security fix for the run_as code.<br>
-      Paul Wagland contributed various patches for bind9-compatability and other issues.<br>
-      Roman Shterenzon contributed patches and lots of helpful hints for FreeBSD compatability.<br>
-      Bernd Leibing has contributed spec file fixes.<br>
-      Michael Wiedmann has contributed the pdnsd-ctl.8 man page.<br>
-      Marko Stolle has contributed the contrib/pdnsd_update.pl script that makes pdnsd usable in a DHCP setup.<br>
-      P.J. Bostley has contributed patches to get pdnsd working on alpha properly.<br>
-      Christian Engstler contributed patches for SuSE compatability.<br>
-      Bjoern Fischer contributed code to make pdnsd leave the case of names in the cache unchanged.<br>
-      Marko Stolle contributed the contrib/pdnsd_update.pl script that makes pdnsd usable in a DHCP setup.<br>
-      Andrew M. Bishop contributed the support for the label server option and the pdnsd-ctl interface for using it.<br>
-      Frank Elsner contributed rc script fixes. <br>
-      Andreas Steinmetz contributed the code for <code>query_port_start</code> and <code>query_port_end</code> options.<br>
-      Mahesh T. Pai contributed the pdnsd.8 man page.<br>
-      Nikola Kotur contributed the Slackware start-up script.<br>
-      Kiyo Kelvin Lee contributed a patch for Cygwin support.<br>
-      Rodney Brown contributed a patch for Darwin (Apple Mac OS X) support.<br>
-      Jan-Marek Glogowski contributed a patch implementing the <code>use_nss</code> option.
-    </p>
-    <p>
-      Special thanks to Bert Frederiks for letting me do a late-night debugging run on his machine to
-      spot obscure bugs!
-    </p>
-    <p>
-      Thanks to the following persons for reporting bugs and being helpful:<br>
-      David G. Andersen,<br>
-      Dirk Armbrust,<br>
-      Daniel Black,<br>
-      Kevin A. Burton,<br>
-      Juliusz Chroboczek,<br>
-      Joachim Dorner,<br>
-      Stefan Erhardt,<br>
-      Stefan Förster,<br>
-      Mike Hammer,<br>
-      Jonathan Hudson,<br>
-      Dan Jacobson,<br>
-      Byrial Jensen,<br>
-      Patrick Loschmidt,<br>
-      James MacLean,<br>
-      Fraser McCrossan,<br>
-      Michael Müller,<br>
-      Erich Reitz,<br>
-      Brian Schroeder,<br>
-      Milan P. Stanic,<br>
-      Michael Steiner,<br>
-      Norbert Steinl,<br>
-      Markus Storm,<br>
-      Michael Ströder,<br>
-      Alan Swanson,<br>
-      Eelco Vriezekolk.
-    </p>
-    <!--nodoc(-->
-    <h1>Links</h1>
-    Well, this is the obligatory link section.
-    <br>
-    <br>
-    <table width="100%" cellpadding=7>
-      <tr>
-	<td><center>
-	    <a href="http://www.gnu.org">
-	      <img src="gnuhead.png" alt="http://www.gnu.org"><br>
-	      The GNU homepage
-	    </a>
-	</center></td>
-	<td><center>
-	    <a href="http://freecode.com">
-	      <img src="fm_logo.png" alt="http://freecode.com"><br>
-	      Freecode (formerly Freshmeat) - large free software index
-	    </a>
-	  </center></td>
-      </tr>
-      <tr>
-	<td><center>
-	    <a href="http://www.freebsd.org">
-	      <img src="freebsd.png" alt="http://www.freebsd.org"><br>
-	      The FreeBSD project
-	    </a>
-	  </center></td>
-      </tr>
-    </table>
-    <!--)nodoc-->
-    <br>
-    <hr>
-    <address><a href="mailto:tmoestl at gmx.net">Thomas Moestl</a>
-      and <a href="mailto:p.a.rombouts at home.nl">Paul A. Rombouts</a>
-    </address>
-    <br>
-    <p>
-      <i>Last revised: 17 March 2012 by Paul A. Rombouts</i>
-    </p>
-  </body>
-</html>
diff --git a/jni/pdnsd/doc/html2confman.pl b/jni/pdnsd/doc/html2confman.pl
deleted file mode 100644
index abade11..0000000
--- a/jni/pdnsd/doc/html2confman.pl
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/perl -w
-#
-# A Perl script for converting pdnsd html documentation to a man page.
-#
-# Written by Paul A. Rombouts
-#
-# This file Copyright 2004 Paul A. Rombouts
-# It may be distributed under the GNU Public License, version 2, or
-# any higher version.  See section COPYING of the GNU Public license
-# for conditions under which this file may be redistributed.
-#
-
-use strict;
-use POSIX qw(strftime);
-
-
-while(<>) {
-    if(/<h[1-4]>[^<]*configuration file/i) {
-       last;
-    }
-}
-
-exit unless defined($_);
-
-while(<>) {
-    if(/<h[1-4]>[^<]*layout/i) {
-       last;
-    }
-}
-
-exit unless defined($_);
-
-(my $myname=$0) =~ s{.*/}{};
-
-print <<ENDOFHEADER;
-.\\\" Generated automatically from the html documentation by $myname
-.\\\" 
-.\\\" Manpage for pdnsd.conf (pdnsd configuration file)
-.\\\" 
-.\\\" Copyright (C) 2000, 2001 Thomas Moestl
-.\\\" Copyright (C) 2003, 2004, 2005, 2006, 2007 Paul A. Rombouts
-.\\\" 
-.\\\" This manual is a part of the pdnsd package, and may be distributed in
-.\\\" original or modified  form  under  terms  of  the  GNU  General  Public
-.\\\" License,  as  published by the Free Software Foundation; either version
-.\\\" 3, or (at your option) any later version.
-.\\\" You can find a copy of the GNU GPL in the file COPYING in the source
-.\\\" or documentation directory.
-.\\\" 
-ENDOFHEADER
-
-
-print ".TH PDNSD.CONF 5 \"",strftime("%b %Y",localtime),"\" \"pdnsd \@fullversion\@\"\n";
-print <<ENDOFHEADER2;
-.SH NAME
-pdnsd.conf \\- The configuration file for pdnsd
-.hw config
-.SH DESCRIPTION
-.PP
-This manual page describes the layout of the
-.BR pdnsd (8)
-configuration file and the available configuration options.
-The default location of the file is \@sysconfdir\@/pdnsd.conf. This may be changed
-with the \\fB-c\\fP command line option.
-An example pdnsd.conf comes with the pdnsd distribution in the documentation directory
-or in \@sysconfdir\@/pdnsd.conf.sample.
-.SH \"FILE FORMAT\"
-.PP
-ENDOFHEADER2
-
-my $taggedparagraph=0;
-my $displayed=0;
-
-while(<>) {
-    if(/<h[1-4]>.*\bpdnsd-ctl\b/) {
-       last;
-    }
-    s{^\s*((?:<[^<>]+>)*?)<h[1-4]>[\d.]*\s*(.*)</h[1-4]>((?:<[^<>]+>)*?)(?:<br>)?\s*$}{.SS $1$2$3\n}i;
-    if(s{^\s*<tr>\s*}{.TP\n}i) {$taggedparagraph=1}
-    if(m{^\s*</tr>}i) {$taggedparagraph=0}
-    s{^\s*((?:<[^<>]+>)*?)<b>(.*)</b>((?:<[^<>]+>)*?)(?:<br>)?\s*$}{.B $1$2$3\n}i  if $taggedparagraph;
-    s{^\s*((?:<[^<>]+>)*?or(?:<[^<>]+>)*?)(?:<br>)?\s*$}{$1\n.PD 0\n.TP\n.PD\n}i  if $taggedparagraph;
-    if(s{^\s*<pre>}{.DS L\n}i) {$displayed=1}
-    s{^\t}{        } if $displayed;
-    if(s{</pre>\s*$}{\n.DE\n\n}i) {$displayed=0}
-    elsif(!$displayed) {s{^\s*}{}}
-    s{^\s*<li>}{.IP\n\\(bu }i;
-    s{<li>}{\n.IP\n\\(bu }i;
-    s{<ul>}{\n}i;
-    s{</ul>}{\n}i;
-    s{<b>}{\\fB}ig;
-    s{</b>}{\\fP}ig;
-    s{<(i|em)>}{\\fI}ig;
-    s{</(i|em)>}{\\fP}ig;
-    unless(s{^\s*(<[^<>]+>)*(<br>|<p>)(<[^<>]+>)*\s*$}{\n}i) {
-	s{<p\b[^<>]*>(.*)</p>}{\n$1\n}i;
-	s{^\s*<br>}{.br\n}i;
-	s{<br>\s*<br>\s*$}{\n\n}i;
-	s{<br>\s*$}{\n.br\n}i;
-	s{<br>}{\n.br\n}i;
-	s{^\s*(<[^<>]+>)*\s*$}{};
-    }
-    s{<[^<>]+>}{}g;
-    s{<}{<}ig;
-    s{>}{>}ig;
-    s{"}{"}ig;
-    s{ }{\\ }ig;
-    s{/var/cache/pdnsd\b}{\@cachedir\@}g;
-    s{(?<![-\w\\])-[-\w]*}{(my $s=$&) =~ s{-}{\\-}g;$s}ge;
-    s{\bpdnsd-ctl\b}{pdnsd\\-ctl}g;
-    s{\blist-rrtypes\b}{list\\-rrtypes}g;
-    print;
-}
-
-print <<ENDOFTRAILER;
-.SH \"VERSION\"
-.PP
-This man page is correct for version \@fullversion\@ of pdnsd.
-.SH \"SEE ALSO\"
-.PP
-.BR pdnsd (8),
-.BR pdnsd\\-ctl (8)
-.PP
-More documentation is available in the \\fBdoc/\\fP subdirectory of the source,
-or in \\fB/usr/share/doc/pdnsd/\\fP if you are using a binary package.
-
-.SH AUTHORS
-
-\\fBpdnsd\\fP was originally written by Thomas Moestl
-.UR
-<tmoestl\@gmx.net>
-.UE
-and was extensively revised by Paul A. Rombouts
-.UR
-<p.a.rombouts\@home.nl>
-.UE
-(for versions 1.1.8b1\\-par and later).
-.PP
-Several others have contributed to \\fBpdnsd\\fP; see files in the source or
-\\fB/usr/share/doc/pdnsd/\\fP directory.
-.PP
-This man page was automatically generated from the html documentation for \\fBpdnsd\\fP,
-using a customized Perl script written by Paul A. Rombouts.
-ENDOFTRAILER
-
-if(defined($_)) {
-    while(<>) {
-	if(/last\s+revised/i) {
-            s{^\s*}{};
-	    s{<[^<>]+>}{}g;
-	    s{<}{<}ig;
-	    s{>}{>}ig;
-	    s{"}{"}ig;
-	    s{ }{\\ }ig;
-	    print ".PP\n";
-            print;
-            last;
-	}
-    }
-}
-exit;
diff --git a/jni/pdnsd/doc/pdnsd-ctl.8 b/jni/pdnsd/doc/pdnsd-ctl.8
deleted file mode 100644
index 73459f3..0000000
--- a/jni/pdnsd/doc/pdnsd-ctl.8
+++ /dev/null
@@ -1,198 +0,0 @@
-.\" This manpage has been automatically generated by docbook2man-spec
-.\" from a DocBook document.  docbook2man-spec can be found at:
-.\" <http://shell.ipoline.com/~elmert/hacks/docbook2X/> 
-.\" Please send any bug reports, improvements, comments, patches, 
-.\" etc. to Steve Cheng <steve at ggi-project.org>.
-.\" This manpage has been edited manually by Paul A. Rombouts.
-.TH "PDNSD\-CTL" "8" "Sep 2008" "pdnsd 1.2.9b-par" ""
-.SH NAME
-\fBpdnsd\-ctl\fP \- controls pdnsd
-.SH SYNOPSIS
-.sp
-\fBpdnsd\-ctl\fP [\fB\-c\fP \fIcachedir\fP] [\fB\-q\fP] \fIcommand\fP [\fIarguments\fP]
-.SH "DESCRIPTION"
-.PP
-\fBpdnsd\-ctl\fP controls \fBpdnsd\fP, a proxy dns server with permanent caching.
-Note that the status control socket must be enabled (by specifying an option on
-the pdnsd command line or in the configuration file) before you can use
-\fBpdnsd\-ctl\fP.
-.PP
-.TP
-\fB\-c\fP \fIcachedir\fP
-Set the cache directory to \fIcachedir\fP (must match pdnsd setting).
-This is only necessary if the directory differs from the default specified
-at compile time.
-.TP
-\fB\-q\fP
-Be quiet unless output is specified by the command or something goes wrong.
-.SH "COMMANDS"
-.TP
-\fBhelp\fP\ \ \ [no arguments]
-
-Print a command summary.
-.TP
-\fBversion\fP\ [no arguments]
-
-Print version and license info.
-.TP
-\fBstatus\fP\ [no arguments]
-
-Print a description of pdnsd's cache status, thread status and configuration.
-Also shows which remote name servers are assumed to be available.
-.TP
-\fBserver\fP\ (\fIindex\fP|\fIlabel\fP) (\fBup\fP|\fBdown\fP|\fBretest\fP) [\fIdns1\fP[,\fIdns2\fP[,...]]]
-
-Set the status of the servers with the given index or label to up or down, or
-force a retest. The index is assigned in the order of definition in pdnsd.conf
-starting with 0. Use the status command to view the indexes. You can specify all
-instead of an index to perform the action for all servers registered with pdnsd.
-.IP
-An optional third argument can be given consisting of a list of IP addresses
-separated by commas or white-space characters. This list will replace the
-addresses of name servers used by pdnsd for the given server section. This
-feature is useful for run-time configuration of pdnsd with dynamic DNS data in
-scripts called by ppp or DHCP clients. The last argument may also be an empty
-string, which causes existing IP addresses to be removed and the corresponding
-server section to become inactive.
-.TP
-\fBrecord\fP\ \fIname\fP (\fBdelete\fP|\fBinvalidate\fP)
-
-Delete or invalidate the records of the given domain name if it is in the cache.
-Invalidation means that the records are marked as timed out, and will be
-reloaded if possible. For local records (i.e., records that were given in the
-config file using a rr section, records read from a hosts-style file and records
-added using pdnsd-ctl), invalidation has no effect. Deletion will work, though.
-.TP
-\fBsource\fP\ \fIfn\fP \fIowner\fP [\fIttl\fP] [(\fBon\fP|\fBoff\fP)] [\fBnoauth\fP]
-
-Load a hosts-style file. Works like using the pdnsd source configuration section.
-Owner and ttl are used as in the source section. ttl has a default
-of 900 (it does not need to be specified). The next to last argument corresponds
-to the serve_aliases option, and is off by default.
-\fBnoauth\fP is used to make the domains non-authoritative
-(this is similar to setting authrec=off in the config file,
-please consult the
-.BR pdnsd.conf (5)
-man page for what that means).
-fn is the name of the file, which must be readable by pdnsd.
-.TP
-\fBadd\fP\ \ \ \ \fBa\fP \fIaddr\fP \fIname\fP [\fIttl\fP] [\fBnoauth\fP]
-.TP
-\fBadd\fP\ \ \ \ \fBaaaa\fP \fIaddr\fP \fIname\fP [\fIttl\fP] [\fBnoauth\fP]
-.TP
-\fBadd\fP\ \ \ \ \fBptr\fP \fIhost\fP \fIname\fP [\fIttl\fP] [\fBnoauth\fP]
-.TP
-\fBadd\fP\ \ \ \ \fBcname\fP \fIhost\fP \fIname\fP [\fIttl\fP] [\fBnoauth\fP]
-.TP
-\fBadd\fP\ \ \ \ \fBmx\fP \fIhost\fP \fIname\fP \fIpref\fP [\fIttl\fP] [\fBnoauth\fP]
-
-Add a record of the given type to the pdnsd cache, replacing existing
-records for the same name and type. The 2nd argument corresponds
-to the value of the option in the rr section that is named like
-the first argument. The addr argument may be a list of IP addresses,
-separated by commas or white space.
-The ttl is optional, the default is 900 seconds.
-\fBnoauth\fP is used to make the domains non-authoritative
-(this is similar to setting authrec=off in the config file,
-please consult the
-.BR pdnsd.conf (5)
-man page for what that means).
-If you want no other record than the newly added in the cache, do
-\fBpdnsd\-ctl\fP\ \fBrecord\fP\ \fIname\fP\ \fBdelete\fP
-before adding records.
-.TP
-\fBneg\fP\ \ \ \ \fIname\fP [\fItype\fP] [\fIttl\fP]
-
-Add a negatively cached record to pdnsd's cache, replacing existing
-records for the same name and type. If no type is given, the whole
-domain is cached negatively. For negatively cached records, errors are
-immediately returned on a query, without querying other servers first.
-The ttl is optional, the default is 900 seconds.
-.TP
-\fBconfig\fP\ \fIfilename\fP
-
-Reload pdnsd's configuration file.
-.br
-The config file must be owned by the uid that pdnsd had when it was started,
-and be readable by pdnsd's run_as uid.
-If no file name is specified, the config file used at start-up is reloaded.
-Note that some configuration changes, like the port or IP address pdnsd listens on,
-cannot be made this way and you will receive an error message.
-In these cases, you will have to restart pdnsd instead.
-.TP
-\fBinclude\fP\ \fIfilename\fP
-
-Parse an include file.
-.br
-The include file may contain the same
-type of sections as a config file, expect for global and server
-sections, which are not allowed. This command can be used to add data
-to the cache without reconfiguring pdnsd.
-.TP
-\fBeval\fP\ \ \ \fIstring\fP
-
-Parse a string as if part of an include file.
-.br
-The string should hold one or more complete configuration sections,
-but no global and server sections, which are not allowed.
-If multiple strings are given, they will be joined using newline chars
-and parsed together.
-.TP
-\fBempty\-cache\fP\ [[+|-]\fIname\fP ...]
-
-Delete all entries in the cache matching include/exclude rules.
-.br
-If no arguments are provided, the cache is completely emptied,
-freeing all existing entries.
-Note that this also removes local records, as defined by the config file.
-To restore local records, run "pdnsd-ctl\ config" immediately afterwards.
-.br
-If one or more arguments are provided, these are interpreted as 
-include/exclude names. If an argument starts with a '+' the name is to
-be included. If an argument starts with a '-' it is to be excluded.
-If an argument does not begin with '+' or '-', a '+' is assumed.
-If the domain name of a cache entry ends in one of the names in the
-list, the first match will determine what happens. If the matching name
-is to be included, the cache entry is deleted, otherwise it remains.
-If there are no matches, the default action is not to delete.
-.TP
-\fBdump\fP\ \ \ [\fIname\fP]
-
-Print information stored in the cache about \fIname\fP.
-If \fIname\fP begins with a dot and is not the root domain, information
-about the names in the cache ending in \fIname\fP (including \fIname\fP without
-the leading dot) will be printed.
-If \fIname\fP is not specified, information about all the names in the cache
-will be printed.
-.TP
-\fBlist\-rrtypes\fP [no arguments]
-
-List available rr types for the neg command. Note that those are only
-used for the neg command, not for add!
-.SH "BUGS"
-.PP
-If you pipe the output of \fBdump\fP command through an application that
-reads only part of the output and then blocks (such as more or less),
-pdnsd threads trying to add new entries to the cache will be suspended
-until the pipe is closed.
-It is preferable to capture the output in a file in such a case.
-.br
-Report any remaining bugs to the authors.
-.SH "AUTHORS"
-.PP
-Thomas Moestl
-.UR
-<tmoestl at gmx.net>
-.UE
-.br
-Paul A. Rombouts
-.UR
-<p.a.rombouts at home.nl>
-.UE
-(for versions 1.1.8b1\-par and later)
-.PP
-Last revised: 04 Sep 2008 by Paul A. Rombouts.
-.SH "SEE ALSO"
-.PP
-.BR pdnsd (8),
-.BR pdnsd.conf (5)
diff --git a/jni/pdnsd/doc/pdnsd.8.in b/jni/pdnsd/doc/pdnsd.8.in
deleted file mode 100644
index ba4330a..0000000
--- a/jni/pdnsd/doc/pdnsd.8.in
+++ /dev/null
@@ -1,326 +0,0 @@
-.TH PDNSD 8 "Jul 2007" "pdnsd @fullversion@" "System Administration Commands"
-
-.SH NAME
-\fBpdnsd\fP \- dns proxy daemon
-
-.SH SYNOPSIS
-
-\fBpdnsd\fP [\-h] [\-V] [\-s] [\-d] [\-g] [\-t] [\-p \fIfile\fR] [\-v\fIn\fR] [\-m\fIxx\fR] [\-c \fIfile\fR] [\-4] [\-6] [\-a]
-.PP
-This man page is an extract of the documentation of \fBpdnsd\fP.
-For complete, current documentation, refer to the HTML (or plain text)
-documentation (which you can find in the \fBdoc/\fP subdirectory of the
-source or in a standard documentation directory, typically
-\fB/usr/share/doc/pdnsd/\fP if you are using a binary package).
-
-.SH DESCRIPTION
-.PP
-\fBpdnsd\fP is a IPv6 capable proxy domain name server (DNS) which
-saves the contents of its DNS cache to the disk on exit.
-
-.SH OPTIONS
-
-.RS
-.TP
-.B \-4
-enables IPv4 support. IPv6 support is automatically
-disabled (should it be available). On by default.
-.TP
-.B \-6
-enables IPv6 support. IPv4 support is automatically
-disabled (should it be available). Off by default.
-.TP
-.B \-a
-With this option, pdnsd will try to detect automatically if
-the system supports IPv6, and fall back to IPv4 otherwise.
-.TP
-.BR \-V "  or  " \-\-version
-Print version information and exit.
-.TP
-\fB\-c\fP \fIFILE\fP  or  \fB\-\-config\-file=\fP\fIFILE\fP
-specifies that configuration is to be read from \fIFILE\fP.
-Default is \fB at sysconfdir@/pdnsd.conf\fP.
-.TP
-.BR \-d "  or  " \-\-daemon
-Start \fBpdnsd\fP in daemon mode (as a background process).
-.TP
-.BR \-g "  or  " \-\-debug
-Print some debug messages on the console or to the file
-\fBpdnsd.debug\fP in your cache directory (in daemon mode).
-.TP
-.BR \-h "  or  " \-\-help
-Print an option summary and exit.
-.TP
-\fB\-i\fP \fIPREFIX\fP  or  \fB\-\-ipv4_6_prefix=\fP\fIPREFIX\fP
-specifies the prefix pdnsd uses (when running in IPv6 mode) to map IPv4
-addresses in the configuration file to IPv6 addresses. Must be a valid IPv6
-address. Default is ::ffff:0.0.0.0
-.TP
-.B \-p \fIFILE\fP
-writes the pid the server runs as to the specified filename. Works
-only in daemon mode.
-.TP
-.B \-\-pdnsd\-user
-Print the user \fBpdnsd\fP will run as and exit.
-.TP
-.BR \-s "  or  " \-\-status
-enables the status control socket. Either this option should be passed
-to the command line or \fBstatus_ctl=on;\fP should be specified in the
-config file if you want to use
-.BR pdnsd\-ctl (8)
-to control \fBpdnsd\fP at runtime.
-.TP
-.BR \-t "  or  " \-\-tcp
-enables the TCP server thread. \fBpdnsd\fP will then serve TCP and UDP
-queries.
-.TP
-.BI \-v n
-sets the verbosity of \fBpdnsd\fP. \fIn\fP is a numeric argument
-between  0 (normal operation) to 3 (many messages for debugging).
-.TP
-.BI \-m xx
-sets the query method \fBpdnsd\fP
-uses. Possible values for \fIxx\fP are:
-.IP
-.B uo
-\- pdnsd will use UDP only. This is the fastest method, and should
-be supported by all name servers on the Internet.
-
-.IP
-.B to
-\- pdnsd will use TCP only. TCP queries usually take more time than
-UDP queries, but are more secure against certain attacks, where an
-attacker tries to guess your query id and to send forged answers. TCP
-queries are not supported by some name servers.
-
-.IP
-.B tu
-\- pdnsd will try to use TCP, and will fall back to UDP if its
-connection is refused or times out.
-
-.IP
-.B ut
-\- pdnsd will try to use UDP, and will repeat the query using TCP
-if the UDP reply was truncated (i.e. the tc bit is set).
-This is the behaviour recommended by the DNS standards.
-
-.PP
-Additionally, "no" can be prepended to the \-\-status, \-\-daemon, \-\-debug
-and \-\-tcp options (e.g. \-\-notcp) to reverse their effect.
-.RE
-
-.SH USAGE
-.PP
-\fBpdnsd\fP is usually run from a startup script. For \fBpdnsd\fP to
-work, You need to:-
-
-.IP
-1. Tell your system to use \fBpdnsd\fP as the primary DNS server by
-modifying \fB/etc/resolv.conf\fP.
-
-.IP
-2. Tell \fBpdnsd\fP to use an authentic source for DNS records, by
-including the IP addresses of one or more DNS servers, usually your
-ISP's DNS servers, in \fB at sysconfdir@/pdnsd.conf\fP.
-.PP
-For this, put the following line in your \fB/etc/resolv.conf\fP
-.PP
-.RS
-nameserver 127.0.0.X
-.RE
-.PP
-where X can be any number. (I use 3). Comment out all other
-entries. You should put the same value in the server_ip= line in
-\fBglobal\fP section of \fB at sysconfdir@/pdnsd.conf\fP.
-.br
-If you want to use \fBpdnsd\fP as the DNS server for a small local network,
-you should use the IP address or name of the interface connected to
-this network instead of 127.0.0.X.
-.RE
-
-.PP
-To tell \fBpdnsd\fP where to get DNS information from, add the
-following lines in \fB at sysconfdir@/pdnsd.conf\fP:-
-
-.PP
-.RS
-server {
-.br
-        label= "myisp";
-        ip=123.456.789.001,123.456.789.002;
-        proxy_only=on;
-        timeout=10;
-.br
-}
-.RE
-.PP
-Note the opening and closing braces. Add more such \fBserver\fP
-sections for each set of DNS servers you want \fBpdnsd\fP to query.
-Of course the configuration options shown here are just examples.
-More examples can be found in \fB at sysconfdir@/pdnsd.conf.sample\fP
-or the pdnsd.conf in the documentation directory.
-See the
-.BR pdnsd.conf (5)
-man page for all the possible options and their exact meaning.
-.PP
-If you use a dial up connection, remember that ppp scripts usually
-replace \fB/etc/resolv.conf\fP when connection with the ISP is
-established.  You need to configure ppp (or whatever you use to
-establish a connection) so that \fB/etc/resolv.conf\fP is not replaced
-every time a connection is established. Read the documentation for the
-scripts run when your network comes up.
-.PP
-If you use pppconfig, specify `none' in the  `nameservers' option  in
-the `advanced' tab. If you use multiple ISPs, you should  do this for
-each connection/account.
-.PP
-If you use multiple ISPs, you should tell \fBpdnsd\fP which DNS servers
-have become available by calling \fBpdnsd\-ctl\fP, the \fBpdnsd\fP
-control utility, in a script (e.g. \fB/etc/ppp/ip\-up\fP when you use pppd)
-that is run when the connection is established.
-If the addresses of the DNS servers are obtained through some type of
-dynamic configuration protocol (e.g. pppd with the usepeerdns
-option or a DHCP client), you can pass the DNS server addresses as an extra
-argument to \fBpdnsd\-ctl\fP to configure \fBpdnsd\fP at run time.
-See the
-.BR pdnsd\-ctl (8)
-man page for details.
-
-.SH FILES
-
-\fB at sysconfdir@/pdnsd.conf\fP is the pdnsd configuration file.
-The file format and configuration options are described in the
-.BR pdnsd.conf (5)
-man page. You can find examples of almost all options in
-\fB at sysconfdir@/pdnsd.conf.sample\fP.
-.PP
-\fB at cachedir@/pdnsd.cache\fP
-.PP
-\fB at cachedir@/pdnsd.status\fP is the status control socket, which must be
-enabled before you can use \fBpdnsd\-ctl\fP.
-.PP
-\fB/etc/init.d/pdnsd\fP (the name and location of the start-up script
-may be different depending on your distribution.)
-.PP
-\fB/etc/resolv.conf\fP
-.PP
-\fB/etc/defaults/pdnsd\fP contains additional parameters or options
-which may be passed to pdnsd at boot time. This saves the hassle of
-fiddling with initscripts (not available on all distributions).
-
-.SH BUGS
-.PP
-The verbosity option
-.BI -v n
-presently does not seem to have much effect on the amount of debug output.
-.br
-Report any remaining bugs to the authors.
-
-.SH CONFORMING TO
-.PP
-\fBpdnsd\fP should comply with RFCs 1034 and 1035. As of version
-1.0.0, RFC compliance has been improved and pdnsd is now believed (or
-hoped?)  to be fully RFC compatible. It completely follows RFC 2181
-(except for one minor issue in the FreeBSD port, see the
-documentation).
-.PP
-It does \fINOT\fP support the following features, of which most are
-marked optional, experimental or obsolete in these RFCs:
-
-
-.IP
-\(bu Inverse queries
-.IP
-\(bu Status queries
-.IP
-\(bu Completion queries
-.IP
-\(bu Namespaces other than IN (Internet)
-.IP
-\(bu AXFR and IXFR queries (whole zone transfers); since pdnsd does not maintain zones, that should not violate the standard
-
-.PP
-The following record types, that are extensions to the original DNS
-standard, are supported if given as options at compile time. (if you
-do not need them, you do not need to compile support for them into
-pdnsd and save cache and executable space):
-
-.IP
-\(bu RP (responsible person, RFC 1183)
-.IP
-\(bu AFSDB (AFS database location, RFC 1183)
-.IP
-\(bu X25 (X25 address, RFC 1183)
-.IP
-\(bu ISDN (ISDN number/address, RFC 1183)
-.IP
-\(bu RT (route through, RFC 1183)
-.IP
-\(bu NSAP (Network Service Access Protocol address , RFC 1348)
-.IP
-\(bu PX (X.400/RFC822 mapping information, RFC 1995)
-.IP
-\(bu GPOS (geographic position, deprecated)
-.IP
-\(bu AAAA (IPv6 address, RFC 1886)
-.IP
-\(bu LOC (location, RFC 1876)
-.IP
-\(bu EID (Nimrod EID)
-.IP
-\(bu NIMLOC (Nimrod locator)
-.IP
-\(bu SRV (service record, RFC 2782)
-.IP
-\(bu ATMA (ATM address)
-.IP
-\(bu NAPTR (URI mapping, RFC 2168)
-.IP
-\(bu KX (key exchange, RFC 2230)
-
-.SH SEE ALSO
-.PP
-.BR pdnsd\-ctl (8),
-.BR pdnsd.conf (5),
-.BR pppconfig (8),
-.BR resolv.conf (5)
-.PP
-More documentation is available in the \fBdoc/\fP subdirectory of the source,
-or in \fB/usr/share/doc/pdnsd/\fP if you are using a binary package.
-
-.SH AUTHORS
-
-\fBpdnsd\fP was originally written by Thomas Moestl,
-.UR
-<tmoestl at gmx.net>,
-.UE
-and was extensively revised by Paul A. Rombouts
-.UR
-<p.a.rombouts at home.nl>
-.UE
-(for versions 1.1.8b1\-par and later).
-.PP
-Several others have contributed to \fBpdnsd\fP; see files in the
-source or \fB/usr/share/doc/pdnsd/\fP directory.
-.PP
-This man page was written by Mahesh T. Pai
-.UR
-<paivakil at yahoo.co.in>
-.UE
-using the documents in \fB/usr/share/docs/pdnsd/\fP directory for Debian,
-but can be used on other distributions too.
-.PP
-Last revised: 22 Jul 2007 by Paul A. Rombouts.
-
-.SH COPYRIGHT
-
-.PP
-This man page is a part of the pdnsd package, and may be distributed
-in original or modified form under terms of the GNU General Public
-License, as published by the Free Software Foundation; either version
-3, or (at your option) any later version.
-
-.PP
-You can find a copy of the GNU GPL in the file \fBCOPYING\fP in the source
-or the \fB/usr/share/common\-licenses/\fP directory if you are using a
-Debian system.
diff --git a/jni/pdnsd/doc/pdnsd.conf.5.in b/jni/pdnsd/doc/pdnsd.conf.5.in
deleted file mode 100644
index 801b535..0000000
--- a/jni/pdnsd/doc/pdnsd.conf.5.in
+++ /dev/null
@@ -1,1328 +0,0 @@
-.\" Generated automatically from the html documentation by html2confman.pl
-.\" 
-.\" Manpage for pdnsd.conf (pdnsd configuration file)
-.\" 
-.\" Copyright (C) 2000, 2001 Thomas Moestl
-.\" Copyright (C) 2003, 2004, 2005, 2006, 2007 Paul A. Rombouts
-.\" 
-.\" This manual is a part of the pdnsd package, and may be distributed in
-.\" original or modified  form  under  terms  of  the  GNU  General  Public
-.\" License,  as  published by the Free Software Foundation; either version
-.\" 3, or (at your option) any later version.
-.\" You can find a copy of the GNU GPL in the file COPYING in the source
-.\" or documentation directory.
-.\" 
-.TH PDNSD.CONF 5 "Apr 2012" "pdnsd @fullversion@"
-.SH NAME
-pdnsd.conf \- The configuration file for pdnsd
-.hw config
-.SH DESCRIPTION
-.PP
-This manual page describes the layout of the
-.BR pdnsd (8)
-configuration file and the available configuration options.
-The default location of the file is @sysconfdir@/pdnsd.conf. This may be changed
-with the \fB-c\fP command line option.
-An example pdnsd.conf comes with the pdnsd distribution in the documentation directory
-or in @sysconfdir@/pdnsd.conf.sample.
-.SH "FILE FORMAT"
-.PP
-The configuration file is divided into sections. Each section is prefixed with
-the section name and opening curlies ({) and closed with closing curlies (}).
-In each section, configuration options can be given in the form
-
-\fIoption_name\fP=\fIoption_value\fP;
-
-Option value may be a string literal, a number, a time specification or a constant.
-In previous  versions of pdnsd strings had to be enclosed
-in quotes ("), but since version 1.1.10 this is no longer necessary, unless
-a string contains a special character such as whitespace, a token that normally starts
-a comment, or one of ",;{}\".
-Since version 1.2.9 a backslash (\) inside a string is interpreted as an escape character,
-so it is possible to include special characters in strings (both quoted or unquoted)
-by preceding them with a backslash. Some escape sequences are in interpreted as in the C
-programming language, e.g. \t becomes a tab,
-\n becomes a new-line control char.
-.br
-A time specification consists a sequence of digits followed by a one-letter suffix.
-The following suffixes are recognized:
-s (seconds), m (minutes), h (hours),
-d (days) and w (weeks).
-If the suffix is missing, seconds are assumed.
-If several time specifications are concatenated, their values are added together;
-e.g. 2h30m is interpreted as 2*60*60 + 30*60 = 9000 seconds.
-.br
-Some options take more than one value; in this case, the values are separated with commas.
-.br
-If you may supply one of a set of possible values to an option, this is noted
-in the documentation as
-(option1|option2|option3|...)
-.br
-The constants true|false and yes|no
-are accepted as synonyms for the constants on|off.
-.br
-Comments may be enclosed in /* and */, nested comments are possible. If the
-# sign or two slashes (//) appear in the configuration file, everything from
-these signs to the end of the current line is regarded as a comment and ignored.
-.br
-There are examples for nearly all options in the sample config file.
-
-.SS global Section
-The global section specifies parameters that affect the overall behaviour of the
-server. If you specify multiple global sections, the settings of those later in
-the file will overwrite the earlier given values.
-.br
-These are the possible options:
-
-.TP
-.B perm_cache=(\fInumber\fP|off);
-Switch the disk cache off or supply a maximum cache size in kB. If the disk
-cache is switched off, 8 bytes will still be written to disk.
-The memory cache is always 10kB larger than the file cache.
-This value is 2048 (2 MB) by default.
-.TP
-.B cache_dir=\fIstring\fP;
-Set the directory you want to keep the cache in.
-The default is "@cachedir@"
-(unless pdnsd was compiled with a different default).
-.TP
-.B server_port=\fInumber\fP;
-Set the server port. This is especially useful when you want to start the
-server and are not root. Note that you may also not specify uptest=ping in
-the server section as non-root.
-.br
-The default port is 53, the RFC-standard one. Note that you should only use
-non-standard ports when you only need clients on your machine to communicate
-with the server; others will probably fail if the try to contact the server
-on the basis of an NS record, since the A record that supplies the address for
-(among others) name servers does not have a port number specification.
-.TP
-.B server_ip=\fIstring\fP;
-or
-.PD 0
-.TP
-.PD
-.B interface=\fIstring\fP;
-Set the IP address pdnsd listens on for requests. This can be useful
-when the host has several interfaces and you want pdnsd not to listen on
-all interfaces. For example, it is possible to bind pdnsd to listen on
-127.0.0.2 to allow pdnsd to be a forwarder for BIND.
-The default setting for this option is server_ip=any, which means that
-pdnsd will listen on all of your local interfaces.
-Presently you can only specify one address here; if you want pdnsd to listen on multiple
-interfaces but not all you will have to specify server_ip=any
-and use firewall rules to restrict access.
-.br
-The IP address used to need quotation marks around it, but since version 1.1.10
-this is no longer necessary.
-.br
-If pdnsd has been compiled with both IPv4 and IPv6 support, and you want to
-specify an IPv6 address here, then unless pdnsd was compiled to start up in IPv6 mode
-by default, you will need to use the \-6 command-line option or
-set run_ipv4=off first (see below) in order to ensure that the
-IPv6 address is parsed correctly.
-.br
-If pdnsd is running in IPv6 mode and you specify an IPv4 address here,
-it will automatically be mapped to an IPv6 address.
-.br
-\fINew in version 1.2:\fP You may also give the name of an interface
-such as "lo" or "eth0" here, instead of an IP address
-(this has been tested on Linux, and may or may not work on other platforms).
-pdnsd will not bind to the interface name, but will look up the address of the
-interface at start-up and listen on that address. If the address of the interface
-changes while pdnsd is running, pdnsd will not notice that. You will need to
-restart pdnsd in that case.
-.TP
-.B outgoing_ip=\fIstring\fP;
-or
-.PD 0
-.TP
-.PD
-.B outside_interface=\fIstring\fP;
-\fINew in version 1.2.9:\fP
-Set the IP address of the interface used by pdnsd for outgoing queries.
-This can be useful when the host has several interfaces and you want pdnsd
-to send outgoing queries via only one of them.
-For example, if  pdnsd is running on a host with one interface with IP address
-192.168.1.1 connected to the local network, and another with IP address 123.xxx.yyy.zzz
-connected to the internet, you may specify server_ip=192.168.1.1
-and outgoing_ip=123.xxx.yyy.zzz to enforce that pdnsd only responds
-to queries received from the local network, and only sends outgoing queries via
-the interface connected to the internet.
-.br
-The default setting for this option is any, which means that
-the kernel is free to decide which interface to use.
-Like with the server_ip option, you may also give the name of an
-interface here, instead of an IP address.
-.TP
-.B linkdown_kluge=(on|off);
-This option enables a kluge that some people might need: when all servers are
-marked down, with this option set the cache is not even used when a query is
-received, and a DNS error is returned in any case. The only exception from this
-is that local records (as specified in rr and source
-sections are still served normally.
-In general, you probably want to get cached entries even when the network is down,
-so this defaults to off.
-.TP
-.B max_ttl=\fItimespec\fP;
-This option sets the maximum time a record is held in cache. All dns
-resource records have a time to live field that says for what period of time the
-record may be cached before it needs to be requeried. If this is more than the
-value given with max_ttl, this time to live value is set to max_ttl.
-This is done to prevent records from being cached an inappropriate long period of time, because
-that is almost never a good thing to do. Default is 604800s (one week).
-.TP
-.B min_ttl=\fItimespec\fP;
-This option sets the minimum time a record is held in cache. All dns
-resource records have a time to live field that says for what period of time the
-record may be cached before it needs to be requeried. If this is less than the
-value given with min_ttl, this time to live value is set to min_ttl.
-Default is 120 seconds.
-.TP
-.B neg_ttl=\fItimespec\fP;
-This option sets the time that negatively cached records will remain valid in the
-cache if no time to live can be determined. This is always the case when whole
-domains are being cached negatively, and additionally when record types are cached
-negatively for a domain for which no SOA record is known to pdnsd. If a SOA is present,
-the ttl of the SOA is taken.
-.TP
-.B neg_rrs_pol=(on|off|auth|default);
-This sets the RR set policy for negative caching; this tells pdnsd under which circumstances
-it should cache a record type negatively for a certain domain. off will
-turn the negative caching of record types off, on will always add a negative
-cache entry when a name server did not return a record type we asked it for, and auth
-will only add such entries if the answer came from an authoritative name server for that
-domain.
-.br
-\fINew in version 1.2.8:\fP The default setting will add a negatively cached record
-if either the answer was authoritive or the answer indicated the name server had "recursion available"
-while the query explicitly requested such recursion.
-.br
-The preset is "default" (used to be auth).
-.TP
-.B neg_domain_pol=(on|off|auth);
-This is analogue to neg_rrs_pol for whole domain negative caching. It should be safe
-to set this on, because I have not seen a caching server that will falsely claim that a
-domain does not exist.
-.br
-The default is auth.
-.TP
-.B run_as=\fIstring\fP;
-This option allows you to let pdnsd change its user and group id after operations that needed
-privileges have been done. This helps minimize security risks and is therefore recommended. The
-supplied string gives a user name whose user id and primary group id are taken. 
-.br
-A little more details: after reading the config file, becoming a daemon (if specified) and starting
-the server status thread, the main thread changes its gid and uid, as do all newly created threads
-thereafter. By taking another uid and gid, those threads run with the privileges of the
-specified user.
-Under Linux and FreeBSD, the server status thread runs with the original privileges only when the strict_setuid option
-is set to off (see below, on by default), because these may be needed
-for exec uptests. The manager thread also retains its original privileges in this case.
-You should take care that the user you specify has write permissions on your cache file and
-status pipe (if you need a status pipe). You should look out for error messages like "permission denied"
-and "operation not permitted" to discover permission problems.
-.br
-.TP
-.B strict_setuid=(on|off);
-When used together with the run_as option, this option lets you specify that all threads of the
-program will run with the privileges of the run_as user. This provides higher security than
-the normal run_as
-option, but is not always possible. See the run_as option for further discussion.
-.br
-This option is on by default.
-.br
-Note that this option has no effect on Non-Linux systems.
-.TP
-.B paranoid=(on|off);
-Normally, pdnsd queries all servers in recursive mode (i.e. instructs servers to query other servers themselves
-if possible,
-and to give back answers for domains that may not be in its authority), and accepts additional records with information
-for servers that are not in the authority of the queried server. This opens the possibility of so-called cache poisoning:
-a malicious attacker might set up a dns server that, when queried, returns forged additional records. This way, he might
-replace trusted servers with his own ones by making your dns server return bad IP addresses. This option protects
-you from cache poisoning by rejecting additional records
-that do not describe domains in the queried servers authority space and not doing recursive queries any more.
-An exception
-to this rule are the servers you specify in your config file, which are trusted.
-.br
-The penalty is a possible performance decrease, in particular, more queries might be necessary for the same
-operation.
-.br
-You should also notice that there may be other similar security problems, which are essentially problems of
-the DNS, i.e.
-any "traditional" server has them (the DNS security extensions solve these problems, but are not widely
-supported).
-One of this vulnerabilities is that an attacker may bombard you with forged answers in hopes that one may match a
-query
-you have done. If you have done such a query, one in 65536 forged packets will be succesful (i.e. an average packet
-count of 32768 is needed for that attack). pdnsd can use TCP for queries,
-which has a slightly higher overhead, but is much less vulnerable to such attacks on sane operating systems. Also, pdnsd
-chooses random query ids, so that an attacker cannot take a shortcut. If the attacker is able to listen to your network
-traffic, this attack is relatively easy, though.
-.br
-This vulnerability is not pdnsd's fault, and is possible using any conventional
-name server (pdnsd is perhaps a little more secured against this type of attacks if you make it use TCP).
-.br
-The paranoid option is off by default.
-.br
-.TP
-.B ignore_cd=(on|off);
-\fINew in version 1.2.8:\fP This option lets you specify that the CD bit of a DNS query will be ignored.
-Otherwise pdnsd will reply FORMERR to clients that set this bit in a query.
-It is safe to enable this option, as the CD bit refers to 'Checking Disabled'
-which means that the client will accept non-authenticated data.
-.br
-This option is on by default. Turn it off if you want the old behaviour (before version 1.2.8).
-.TP
-.B scheme_file=\fIstring\fP;
-In addition to normal uptests, you may specify that some servers shall only be queried when a certain
-pcmcia-cs scheme is active (only under linux). For that, pdnsd needs to know where the file resides that
-holds the pcmcia scheme information. Normally, this is either /var/lib/pcmcia/scheme or
-/var/state/pcmcia/scheme.
-.TP
-.B status_ctl=(on|off);
-This has the same effect as the \-s command line option: the status control is enabled when
-on is specified.
-.br
-\fIAdded by Paul Rombouts\fP: Note that pdnsd\-ctl allows run-time configuration of pdnsd,
-even the IP addesses of the name servers can be changed. If you're not using pdnsd\-ctl and
-you want maximum security, you should not enable this option. It is disabled by default.
-.TP
-.B daemon=(on|off);
-This has the same effect as the \-d command line option: the daemon mode is enabled when
-on is specified.
-.br
-Default is off.
-.TP
-.B tcp_server=(on|off);
-tcp_server=on has the same effect as the \-t or \-\-tcp
-command-line option: it enables TCP serving.
-Similarly, tcp_server=off is like the \-\-notcp command-line option.
-.br
-Default is on.
-.TP
-.B pid_file=\fIstring\fP;
-This has the same effect as the \-p command line option: you can specify a file that pdnsd
-will write its pid into when it starts in daemon mode.
-.TP
-.B verbosity=\fInumber\fP;
-This has the same effect as the \-v command line option: you can set the verbosity of pdnsd's
-messages with it. The argument is a number between 0 (few messages) to 3 (most messages).
-.TP
-.B query_method=(tcp_only|udp_only|tcp_udp|udp_tcp);
-This has the same effect as the \-m command line option.
-Read the documentation for the command line option on this.
-tcp_only corresponds to the to, udp_only to the uo,
-tcp_udp to the tu and udp_tcp to the ut
-argument of the command line option.
-.br
-If you use query_method=tcp_udp, it is recommended that you also set the global timeout option to at least twice the longest server timeout.
-.TP
-.B run_ipv4=(on|off);
-This has the same effect as the \-4 or \-6 command line option:
-if on is specified, IPv4 support is enabled, and IPv6 support is disabled (if available).
-If off is specified, IPv4 will be disabled and IPv6 will be enabled.
-For this option to be meaningful, pdnsd needs to be compiled with support for the protocol you choose.
-If pdnsd was compiled with both IPv4 and IPv6 support, and you want to include IPv6 addresses
-in the configuration file, you will probably need to specify run_ipv4=off first to
-ensure that the IPv6 addresses are parsed correctly.
-.TP
-.B debug=(on|off);
-This has the same effect as the \-g command line option: the debugging messages are enabled when
-on is specified.
-.TP
-.B ctl_perms=\fInumber\fP;
-This option allows you to set the file permissions that the pdnsd status control socket will have. These
-are the same as file permissions. The owner of the file will be the run_as user, or, if none is specified,
-the user who started pdnsd. If you want to specify the permissions in octal (as usual), don't forget
-the leading zero (0600 instead of 600!). To use the status control, write access is needed. The default
-is 0600 (only the owner may read or write).
-.br
-Please note that the socket is kept in the cache directory, and that the cache directory permissions
-might also need to be adjusted. Please ensure that the cache directory is not writeable for untrusted
-users.
-.TP
-.B proc_limit=\fInumber\fP;
-With this option, you can set a limit on the pdnsd threads that will be active simultaneously. If
-this number is exceeded, queries are queued and may be delayed some time.
-See also the procq_limit option.
-.br
-The default for this option is 40.
-.TP
-.B procq_limit=\fInumber\fP;
-When the query thread limit proc_limit is exceeded, connection attempts to pdnsd will be queued.
-With this option, you can set the maximum queue length.
-If this length is also exceeded, the incoming queries will be dropped.
-That means that tcp connections will be closed and udp queries will just be dropped, which
-will probably cause the querying resolver to wait for an answer until it times out.
-.br
-See also the proc_limit option. A maximum of proc_limit+procq_limit
-query threads will exist at any one time (plus 3 to 6 threads that will always
-be present depending on your configuration).
-.br
-The default for this option is 60.
-.TP
-.B tcp_qtimeout=\fItimespec\fP;
-This option sets a timeout for tcp queries. If no full query has been received on a tcp connection
-after that time has passed, the connection will be closed. The default is set using the
-\-\-with\-tcp\-qtimeout option to configure.
-.TP
-.B par_queries=\fInumber\fP;
-This option used to set the maximum number of remote servers that would be queried simultaneously,
-for every query that pdnsd receives.
-.br
-Since version 1.1.11, the meaning of this option has changed slightly.
-It is now the increment with which the number of parallel queries is
-increased when the previous set of servers has timed out.
-For example, if we have a list \fIserver1, server2, server3,\fP etc. of available servers
-and par_queries=2, then pdnsd will first send queries to \fIserver1\fP and \fIserver2\fP,
-and listen for responses from these servers.
-.br
-If these servers do not send a reply within their timeout period, pdnsd will send additional
-queries to \fIserver3\fP and \fIserver4\fP, and listen for responses from
-\fIserver1, server2, server3\fP and \fIserver4\fP, and so on until a useful reply is
-received or the list is exhausted.
-.br
-In the worst case there will be pending queries to all the servers in the list of available servers.
-We may be using more system resources this way (but only if the first servers in the list
-are slow or unresponsive), but the advantage is that we have a greater chance of catching a reply.
-After all, if we wait longer anyway, why not for more servers.
-.br
-See also the explanation of the global timeout option below.
-.br
-1 or 2 are good values for this option.
-The default is set at compile time using the \-\-with\-par\-queries option to configure.
-.TP
-.B timeout=\fItimespec\fP;
-This is the global timeout parameter for dns queries.
-This specifies the minimum period of time pdnsd will wait after sending the
-first query to a remote server before giving up without having
-received a reply. The timeout options in the configuration file are
-now only minimum timeout intervals. Setting the global timeout option
-makes it possible to specify quite short timeout intervals in the
-server sections (see below). This will have the effect that pdnsd will start
-querying additional servers fairly quickly if the first servers are
-slow to respond (but will still continue to listen for responses from
-the first ones). This may allow pdnsd to get an answer more quickly in
-certain situations.
-.br
-If you use query_method=tcp_udp it is recommended that
-you make the global timeout at least twice as large as the largest
-server timeout, otherwise pdnsd may not have time to try a UDP query
-if a TCP connection times out.
-.br
-Default value is 0.
-.TP
-.B randomize_recs=(on|off);
-If this option is turned on, pdnsd will randomly reorder the cached records of one type
-when creating an answer. This supports round-robin DNS schemes and increases fail
-safety for hosts with multiple IP addresses, so this is usually a good idea.
-.br
-On by default.
-.TP
-.B query_port_start=(\fInumber\fP|none);
-If a number is given, this defines the start of the port range used for queries of pdnsd. The
-value given must be >= 1024. The purpose of this option is to aid certain firewall
-configurations that are based on the source port. Please keep in mind that another application
-may bind a port in that range, so a stateful firewall using target port and/or process uid may
-be more effective. In case a query start port is given pdnsd uses this port as the first port of a
-specified port range (see query_port_end) used for queries.
-pdnsd will try to randomly select a free port from this range as local port for the query.
-.br
-To ensure that there are enough ports for pdnsd to use, the range between query_port_start and
-query_port_end should be adjusted to at least (par_queries * proc_limit).
-A larger range is highly recommended for security reasons, and also because other applications may
-allocate ports in that range. If possible, this range should be kept out of the space
-that other applications usually use.
-.br
-The default for this option is 1024. Together with the default value of query_port_end,
-this makes it the hardest for an attacker to guess the source port used by the pdnsd resolver.
-If you specify none here, pdnsd will let the kernel choose the source port, but
-this may leave pdnsd more vulnerable to an attack.
-.TP
-.B query_port_end=\fInumber\fP;
-Used if query_port_start is not none. Defines the last port of the range started by query_port_start
-used for querys by pdnsd. The default is 65535, which is also the maximum legal value for this option.
-For details see the description of query_port_start.
-.TP
-.B delegation_only=\fIstring\fP;
-\fIAdded by Paul Rombouts\fP: This option specifies a "delegation-only" zone.
-This means that if pdnsd receives a query for a name that is in a
-subdomain of a "delegation-only" zone but the remote name server
-returns an answer with an authority section lacking any NS RRs for
-subdomains of that zone, pdnsd will answer NXDOMAIN (unknown domain).
-This feature can be used for undoing the undesired effects of DNS
-"wildcards". Several "delegation-only" zones may be specified together.
-If you specify root servers in a server section it is
-important that you set root_server=on in such a section.
-.br
-Example:
-
-delegation_only="com","net";
-
-This feature is off by default. It is recommended that you only use
-this feature if you actually need it, because there is a risk that
-some legitimate names will be blocked, especially if the remote
-name servers queried by pdnsd return answers with empty authority
-sections.
-.TP
-.B ipv4_6_prefix=\fIstring\fP;
-This option has the same effect as the \-i command-line option.
-When pdnsd runs in IPv6 mode, this option specifies the prefix pdnsd uses to convert IPv4 addresses in
-the configuration file (or addresses specified with pdnsd\-ctl)
-to IPv6-mapped addresses.
-The string must be a valid IPv6 address. Only the first 96 bits are used.
-Note that this only effects the parsing of IPv4 addresses listed after this option.
-.br
-The default is "::ffff.0.0.0.0".
-.TP
-.B use_nss=(on|off);
-If this option is turned on, pdnsd will call initgroups() to set up the group access list,
-whenever pdnsd changes its user and group id (see run_as option).
-There is a possible snag, though, if initgroups() uses NSS (Name Service Switch) and
-NSS in turn uses DNS. In such a case you may experience lengthy timeouts and stalls.
-By setting use_nss=off, you can disable the initgroups() call
-(only possible in versions 1.2.5 and later).
-.br
-This option was contributed by Jan-Marek Glogowski.
-.br
-On by default.
-.TP
-.B udpbufsize=\fInumber\fP;
-\fINew in version 1.2.9:\fP
-This option sets the upper limit on the size of UDP DNS messages. The default is 1024.
-.br
-See also the edns_query server option below.
-
-.SS server Section
-Each server section specifies a set of name servers that pdnsd should try to get
-resource records or authoritative name server information from. The servers are
-queried in the order of their appearance (or parallel to a limited extend).
-If one fails, the next one is taken and so on.
-.br
-You probably want to specify  the dns server in your LAN, the caching dns servers
-of your internet provider or even a list of root servers in one or more server sections.
-.br
-The supported options in this section are:
-
-.TP
-.B label=\fIstring\fP;
-Specify a label for the server section. This can be used to refer to this section
-when using pdnsd\-ctl, the pdnsd control utility.
-.br
-You can give several server sections the same label, but if you want to change the addresses
-of a server section (see \fBip\fP option below) during run-time with
-"pdnsd\-ctl\ server\ \fIlabel\fP\ up\ \fIdns1\fP,\fIdns2\fP,...",
-the label must be unique.
-.TP
-.B ip=\fIstring\fP;
-Give the IP (the address, \fInot\fP the host name) of the server.
-.br
-Multiple IP addresses can be given per server section.
-This can be done by entering multiple lines of the form ip=\fIstring\fP;
-or a single line like this:
-
-ip=\fIstring\fP,\fIstring\fP,\fIstring\fP;
-
-IP addresses do not have to be specified in the configuration file.
-A server section without IP addresses will remain inactive until it is assigned
-one or more addresses with pdnsd\-ctl,
-the pdnsd control utility.
-.br
-If pdnsd has been compiled with both IPv4 and IPv6 support, any IPv6 addresses you specify
-here will be skipped with a warning message, unless pdnsd is running in IPv6 mode.
-Thus, unless pdnsd was compiled to startup in IPv6 mode by default, you need to use the
-command-line option \-6 or set run_ipv4=off
-first (see global section) in order to ensure
-that IPv6 addresses are parsed correctly.
-.br
-If pdnsd is running in IPv6 mode and you specify an IPv4 address here,
-it will automatically be mapped to an IPv6 address.
-.TP
-.B file=\fIstring\fP;
-\fINew in version 1.2:\fP This option allows you to give the name of a resolv.conf-style file.
-Of the lines beginning with the nameserver keyword, the second field will be parsed as an
-IP address, as if it were specified with the ip= option. The remaining lines will be ignored.
-If the contents of the file changes while pdnsd is running, you can make pdnsd aware of the changes through the
-use of pdnsd\-ctl, the pdnsd control utility.
-This is usually most conveniently done by placing the command "pdnsd\-ctl\ config" in a script
-that is automatically run whenever the DNS configuration changes.
-.br
-For example, suppose you have a ppp client that writes the DNS configuration for your ISP to the file
-/etc/ppp/resolv.conf and runs the script /etc/ppp/ip-up when a new
-connection is established. One way of ensuring that pdnsd is automatically reconfigured is to
-add a server section in the config file with file=/etc/ppp/resolv.conf and to
-add the command "pdnsd\-ctl\ config" to /etc/ppp/ip-up.
-.TP
-.B port=\fInumber\fP;
-Give the port the remote name server listens on. Default is 53 (the official
-dns port)
-.TP
-.B uptest=(ping|none|if|dev|diald|exec|query);
-Determine the method to check whether the server is available. Currently
-defined methods are:
-.IP
-\(bu \fBping\fP: Send an ICMP_ECHO request to the server. If it doesn't respond
-within the timeout, it is regarded to be unavailable until the next probe.
-.IP
-\(bu \fBnone\fP: The availability status is not changed, only the time stamp is updated.
-.IP
-\(bu \fBif\fP: Check whether the interface (specified in the interface= option) is
-existent, up and running. This currently works for all "ordinary"
-network interfaces, interfaces that disappear when down (e.g. ppp?),
-and additionally for Linux isdn interfaces (as of kernel 2.2). Note that
-you need a /dev/isdninfo device file (major#45, minor#255), or the
-isdn uptest will always fail.
-.IP
-\(bu \fBdev\fP and \fBdiald\fP: Perform an if uptest, and, if that
-was succesful, additionally check whether a program is running that
-has locked a given (modem-) device. The needed parameters are an interface (specified as for the if
-uptest, e.g. "ppp0") and a device relative to /dev (e.g.
-"modem" for /dev/modem specified using the device= option.
-pdnsd will then look for a pid file for the given interface in /var/lock (e.g.
-/var/run/ppp0.pid) and for a lockfile for the given device (e.g. /var/lock/LCK..modem),
-and then test whether the locking process is the process that created the pid file and this process is still
-alive. If this is the case, the normal if uptest is executed for the given interface.
-.br
-The dev option is for pppd dial-on-demand, diald is the same for diald users.
-.IP
-\(bu \fBexec\fP: Executes a given command in the /bin/sh shell
-(as /bin/sh \-c <command>)
-and evaluates the result (the return code of the last command) in the shell's way of handling return codes,
-i.e. 0 indicates success, all other indicate failure. The shell's process name will be
-uptest_sh. The command is given with the uptest_cmd option (see below).
-For secuity issues, also see that entry.
-.IP
-\(bu \fBquery\fP: \fINew in version 1.2:\fP
-This works like the ping test, except it sends an (empty) DNS query to the remote server.
-If the server sends a well-formed response back within the timeout period (except SERVFAIL),
-it will be regarded as available.
-This test is useful if a remote server does not respond to ICMP_ECHO requests at all,
-which unfortunately is quite common these days.
-It can also happen that a remote server is online but ignores empty DNS queries.
-Then you will need the set the query_test_name option (see below).
-In many cases this test will be a more reliable indicator of availability
-than the ones mentioned before.
-
-The default value is \fBnone\fP.
-
-\fBNOTE\fP: If you use on-demand dialing, use none, if,
-dev, diald or exec,
-since ping or query will send packets
-in the specified interval and the interface will thus frequently dial!
-.TP
-.B ping_timeout=\fInumber\fP;
-Sets the timeout for the ping test in tenths of seconds
-(this unit is used for legacy reasons; actually the current implementation is
-only accurate to a second).
-.br
-The default is 600 (one minute).
-.TP
-.B ping_ip=\fIstring\fP;
-The IP address for the ping test. The default is the IP of the name server.
-.TP
-.B query_test_name=\fIstring\fP;
-\fINew in version 1.2.9:\fP
-Sets the name to be queried when using uptest=query availability test.
-If the string is the unquoted constant none,
-an empty query is used (this the default), otherwise a query of type A will be
-sent for the domain name specified here. It is not necessary for the domain name
-to exist or have a record of type A in order for the uptest to succeed.
-.br
-If the the remote server ignores empty queries, you will probably want to set
-query_test_name="." (the root domain).
-.TP
-.B uptest_cmd=\fIstring\fP,\fIstring\fP;
-or
-.PD 0
-.TP
-.PD
-.B uptest_cmd=\fIstring\fP;
-Sets the command for the uptest=exec function to the first string.
-If the second string is given, it specifies a user with whose user
-id and primary group id the command is executed.
-.br
-This is especially useful if you are executing the server as root,
-but do not want the uptest to be performed with root privileges.
-In fact, you should never execute the uptest as root if you can help
-it.
-.br
-If the server is running setuid or setgid, the privileges thus gained
-are attempted to be dropped even before changing identity to the
-specified user to prevent setuid/gid security holes (otherwise, any
-user might execute commands as root if you setuid the executable).
-.br
-\fBNote that this is not always possible, and that pdnsd should never
-be installed as setuid or setgid.\fP
-The command is executed using /bin/sh, so you should be able to use
-shell builtin commands.
-.TP
-.B interval=(\fItimespec\fP|onquery|ontimeout);
-Sets the interval for the server up-test. The default is 900 seconds;
-however, a test is forced when a query times out and the timestamp is reset then.
-.br
-If you specify onquery instead of a timeout, the interface will be
-tested before every query. This is to prevent automatically dialing
-interfaces (diald/pppd or ippp) to dial on dns queries. It is intended to be
-used in connection with an interface-testing uptest ;\-) 
-.br
-Note that using uptest=exec, you might run into performance problems
-on slow machines when you use that option.
-DON'T use onquery with uptest=ping or
-uptest=query, as it may cause delays if the server does not answer
-(btw, it doesn't make sense anyway).
-Note also that using onquery is no guarantee that the interface
-will not be used. When another (reachable) dns server tells pdnsd
-to query a third dns server for data, pdnsd will do that and has
-no means of checking whether this will dial up the interface or not.
-This however should be a rare situation.
-.br
-\fINew in version 1.2.3:\fP
-A third possibility is to specify interval=ontimeout.
-In this case the server is not tested at startup/reconfiguration, nor at regular intervals,
-but only after a DNS query to a server times out. Certain types of network problems
-such as a refused connection will also cause the server to be considered unavailable.
-However, once a server is declared dead it is never considered again unless it is revived using a
-pdnsd\-ctl config or server command.
-The idea behind this option is to minimize uptests by assuming all
-servers are available until there is reason to believe otherwise.
-.TP
-.B interface=\fIstring\fP;
-The network interface (or network device, e.g. "eth0") for the uptest=if option.
-Must be specified if uptest=if is given.
-.TP
-.B device=\fIstring\fP;
-The (modem-) device that is used for the dev uptest. If you use this for a dial-on-demand
-ppp uptest (together with uptest=dev), you need to enter the device you are using for your
-pppd here, e.g. modem for /dev/modem.
-.br
-Must be specified if uptest=dev is given.
-.TP
-.B timeout=\fItimespec\fP;
-Set the timeout for the dns query. The default is 120 seconds. You probably want to set this lower.
-.br
-Timeouts specified in the configuration file are only treated as the
-minimum period of time to wait for a reply. A queries to a remote
-server are not canceled until a useful reply has been received, or all
-the other queries have timed out or failed.
-.br
-If you have also set the global timeout option, you may consider setting a fairly small value here.
-See the explanation of the timeout option in the global
-section for what that means.
-.TP
-.B purge_cache=(on|off);
-In every fetched dns record, there is a cache timeout given, which
-specifies how long the fetched data may be cached until it needs to be
-reloaded. If purge_cache is set to off, the stale records are not purged
-(unless the cache size would be exceeded, in this case the oldest records are purged).
-Instead, they are still served if they cannot succesfully be
-updated (e.g. because all servers are down).
-.br
-Default is off.
-.TP
-.B caching=(on|off);
-Specifies if caching shall be performed for this server at all. Default is
-on.
-.TP
-.B lean_query=(on|off);
-Specifies whether to use the "lean" query mode. In this mode, only the
-information actually queried from pdnsd is resolved and cached. This has
-the advantage that usually less cache space is used and the query is
-usually faster. In 90% of the cases, only address (A) records are needed
-anyway. If switched off, pdnsd will always cache all data about a host
-it can find and will specifically ask for all available records
-(well, at least it is a good approximation for what it really does ;\-)
-This will of course increase the answer packet sizes.
-.br
-Some buggy name servers may not deliver CNAME records when not asked for
-all records. I do not know if such servers are around, but if you have
-trouble resolving certain host names, try turning this option off.
-.br
-A last note: If you use multiple pdnsd's that access each other, turning
-this option on is probably a big win.
-.br
-This on by default.
-.TP
-.B edns_query=(on|off);
-\fINew in version 1.2.9:\fP
-Specifies whether to use EDNS (Extension mechanisms for DNS) for outgoing queries.
-Currently this is only useful for allowing UDP message sizes larger than 512 bytes.
-Note that setting this option on can give problems in combination with some legacy
-systems or software, including, embarrassingly enough, previous versions of pdnsd.
-.br
-The default is off, but if your network can handle UDP payloads
-significantly larger than 512 bytes, the recommended value is on.
-.br
-Note that this option only effects outgoing queries. If pdnsd receives a query using
-EDNS, it will reply using EDNS regardless of the value of this option.
-
-See also the udpbufsize option above.
-.TP
-.B scheme=\fIstring\fP;
-You can specify a pcmcia-cs scheme that is used in addition to the uptests. If you specify
-a scheme here, the server this section is for will only be queries if the given scheme
-is active. Shell wildcards (* and ?) are allowed in the string under their special
-meanings. You need to use the scheme_file option on the global
-section to make this option work.
-.TP
-.B preset=(on|off);
-This allows you to specify the initial state of a server before any uptest is performed.
-on specifies that the server is regarded available. The default is on.
-This is especially useful when you set uptest=none; and want to change
-the status of a server only via pdnsd\-ctl.
-.TP
-.B proxy_only=(on|off);
-When this option is set to on, answers given by the servers are always accepted, and no
-other servers (as, for example, specified in the NS records of the query domain) are
-queried. If you do not turn this option on, pdnsd will do such queries in some cases
-(in particular when processing ANY queries).
-.br
-This option is useful when you do not want pdnsd to make connections to outside servers
-for some reasons (e.g. when a firewall is blocking such queries).
-.br
-I recommend that you turn on lean_query when using this option.
-.br
-Default is off.
-.TP
-.B root_server=(on|off|discover);
-Set this option to on if the servers specified in a section are root servers.
-A root server will typically only give the name servers for the top-level domain in its reply.
-Setting root_server=on will cause pdnsd to try to use cached information about
-top-level domains to reduce to number of queries to root servers, making the resolving of
-new names more efficient.
-You can get a list of available root servers by running the command
-"dig\ .\ ns".
-.br
-This option is also necessary if you use the delegation_only option.
-.br
-\fINew in version 1.2.8:\fP This option may also be set to "discover".
-This will cause pdnsd to query the servers provided with the ip= option
-to obtain the full list of root servers. The root-server addresses will replace the addresses
-specified with the ip= option.
-This will only be done once on startup, or after a "pdnsd\-ctl\ config" command.
-In this case the name servers specified with the ip= option don't have to be
-root servers, they just have to know the names and addresses of the root servers.
-After root-server discovery pdnsd will behave just as if root_server=on
-had been specified.
-.br
-Default is off.
-.TP
-.B randomize_servers=(on|off);
-\fINew in version 1.2.6:\fP Set this option to on to give each name server
-in this section an equal chance of being queried. If this option is off, the name servers
-are always queried starting with the first one specified. Even with this option on, the
-query order is not truly random. Only the first server is selected randomly; the following
-ones are queried in consecutive order, wrapping around to the beginning of the list when
-the end is reached.  Note that this option only effects the order within a section. The
-servers in the first (active) section are always queried before those in the second one,
-etc.
-.br
- The default is off, but if you are resolving from root servers setting this
-option on is highly recommended. If root_server=on this option also effects
-the query order of the name servers for the top-level domains.
-.TP
-.B reject=\fIstring\fP;
-\fINew in version 1.2.6:\fP This option can be used to make pdnsd reject replies that
-contain certain IP addresses.  You can specify a single IP address, which will be matched
-exactly, or a range of addresses using an address/mask pair.
-The mask can be specified as a simple integer, indicating the number of initial 1 bits in
-the mask, or in the usual IP address notation. IP addresses may be either IPv4 or IPv6
-(provided there is sufficient support in the C libraries and support for AAAA records was
-not disabled).
-When addresses in the reject list are compared with those in a reply, only the bits
-corresponding to those set in the netmask are significant, the rest are ignored.
-.br
-Multiple addresses or address/mask pairs may be specified; this can be done by entering
-multiple lines of the form reject=\fIstring\fP;
-or a single line like this:
-
-reject=\fIstring\fP,\fIstring\fP,\fIstring\fP;
-
-How pdnsd reacts when an address in the reply matches one in the reject list,
-depends on the reject_policy option, see below.
-.TP
-.B reject_policy=(fail|negate);
-\fINew in version 1.2.6:\fP
-This option determines what pdnsd does when an address in the reply from a name server
-matches the reject list (see above). If this option is set to
-fail, pdnsd will try another server, or, if there no more servers to try,
-return the answer SERVFAIL. If this option is set to negate, pdnsd will
-immediately return the answer NXDOMAIN (unknown domain) without querying additional
-servers. The fail setting is useful if you don't always trust the servers in
-this section, but do trust the servers in the following section. The negate
-setting can be used to completely censor certain IP addresses. In this case you should put
-the same reject list in every server section, and also set the
-reject_recursively option (see below) to true.
-.br
-The default is fail.
-.TP
-.B reject_recursively=(on|off);
-\fINew in version 1.2.6:\fP Normally pdnsd checks for addresses in the
-reject list (see above) only when the reply comes directly from a name server
-listed in the configuration file.  With this option set to on, pdnsd will
-also do this check for name servers that where obtained from NS records in the authority
-section of a previous reply (which was incomplete and non-authoritative).
-.br
-Default is off.
-.TP
-.B policy=(included|excluded|simple_only|fqdn_only);
-pdnsd supports inclusion/exclusion lists for server sections: with include=
-and exclude= (see below) you can specify domain names for which this server
-will be used or will not be used. The first match counts (i.e., the first include or
-exclude rule in a server section that matches a domain name is applied, and the
-search for other rules is terminated). If no rule matched a given domain name,
-the policy= option determines whether this server is used for the
-lookup for that domain name; when included is given, the server will
-be asked, and when excluded is given, it will not.
-If simple_only is given the server will be used if the name to lookup
-is a simple (single-label) domain name, on the other hand if fqdn_only
-is given the server will be used only  for names consisting of two or more labels
-(i.e. the name has at least one dot in-between).
-.br
-If no server is available for a queried domain, pdnsd will return an error message
-to the client that usually will stop the client's attempts to resolve a specific
-domain from this server (the libc resolver will e.g. return an error to the application that
-tried to resolve the domain if no other servers are available in the resolv.conf).
-This may be of use sometimes.
-.br
-\fINote\fP: the simple_only and fqdn_only constants
-were added by Paul Rombouts.
-They are useful for controlling which name servers (if any) will be used by
-pdnsd for resolving simple (single-label) host names.
-fqdn_only used to stand for "fully qualified domain name only", but this is
-actually a misnomer. The names in queries received by pdnsd are always considered to be
-fully qualified. If you do not exactly understand what the options simple_only and
-fqdn_only are good for, you are probably better off not using them.
-.br
-The default for this option is included.
-.TP
-.B include=\fIstring\fP;
-This option adds an entry to the exclusion/inclusion list. If a domain matches
-the name given as string, the server is queried if this was the first matching rule
-(see also the entry for policy).
-.br
-If the given name starts with a dot, the whole subdomain
-of the given name including the one of that name is matched, e.g. ".foo.bar."
-will match the domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.
-.br
-If it does not start in a dot, only exactly the given name (ignoring the case, of course)
-will be matched (hint: if you want to include all subdomains, but not the domain of the given
-name itself, place an exact-match exclude rule before the include rule, e.g:
-exclude="foo.bar."; include=".foo.bar.";
-.br
-Previous versions of pdnsd
-required that names given with this and the next option ended in a dot, but since
-version 1.1.8b1-par8, pdnsd automatically adds a dot at the end if it
-is missing.
-.br
-pdnsd now also accepts a more compact notation for adding several "include" entries in
-one line, e.g.:
-
-include=".foo",".bar",".my.dom";
-
-.TP
-.B exclude=\fIstring\fP;
-This option adds an entry to the exclusion/inclusion list. If a domain matches
-the name given as string, the server is not queried if this was the first matching rule
-(see also the entry for policy).
-.br
-If the given name starts with a dot, the whole subdomain
-of the given name including the one of that name is matched, e.g. ".foo.bar."
-will match the domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.
-.br
-If it does not start in a dot, only exactly the given name (ignoring the case, of course)
-will be matched (hint: if you want to exclude all subdomains, but not the domain of the given
-name itself, place an exact-match include rule before the exclude rule, e.g:
-include="foo.bar."; exclude=".foo.bar.";
-.br
-pdnsd now also accepts a more compact notation for adding several "exclude" entries in
-one line, e.g.:
-
-exclude=".foo",".bar",".my.dom";
-
-
-.SS rr Section
-Every rr section specifies a dns resource record that is stored locally. It
-allows you to specify own dns records that are served by pdnsd in a limited way.
-Only A, PTR, CNAME, MX, NS and SOA records are implemented.
-.br
-This option is intended to allow you to define RRs for 1.0.0.127.in-addr.arpa.
-and localhost. (and perhaps even one or two hosts) without having to start an
-extra named if your cached name servers do not serve those records.
-It is \fBNOT\fP intended and not capable to work as a full-featured name server.
-
-.TP
-.B name=\fIstring\fP;
-Specifies the name of the resource records, i.e. the domain name of
-the resource the record describes. This option must be specified
-before any a, ptr, cname,
-mx, ns or soa records.
-Names are interpreted as absolute domain names
-(i.e. pdnsd assumes they end in the root domain).
-For this and all following arguments that take domain names, you need to
-specify domain names in dotted notation (example venera.isi.edu.).
-.br
-Previous versions of pdnsd
-required that domain names given in the configuration file ended in a
-dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
-dot at the end if it is missing.
-.br
-\fINew in version 1.2:\fP It is also possible to specify a name starting
-with the label *. Such a name is called a wildcard. The * in a wildcard
-can match one or more labels in a queried name, but only whole labels.
-Any other * characters in a wildcard, apart from the leading one,
-will only match a literal *.
-.br
-For example, *.mydomain will match a.mydomain or www.a.mydomain, but not
-mydomain. *.a*.mydomain will match www.a*.mydomain, but not www.ab.mydomain.
-*a.mydomain will only match itself.
-.br
-Before you can specify an rr section with name=*.mydomain
-you must define some records for mydomain, typically NS and/or SOA records.
-Example:
-.DS L
-
-    rr {
-        name = mydomain;
-        ns = localhost;
-        soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
-    }
-    rr {
-        name = *.mydomain;
-        a = 192.168.1.10;
-    }
-.DE
-
-In this example, www.mydomain and ftp.mydomain will resolve to the numeric
-address 192.168.1.10 (unless you add rr sections explicitly
-specifying different addresses for www.mydomain or ftp.mydomain).
-If you want mydomain also to resolve to a numeric address,
-add an A record to the first rr section.
-.TP
-.B ttl=\fItimespec\fP;
-Specifies the ttl (time to live) for all resource records in this section after this entry.
-This may be redefined. The default is 86400 seconds (=1 day).
-.TP
-.B authrec=(on|off);
-If this is turned on, pdnsd will create authoritative local records for this rr section.
-This means that pdnsd flags the domain record so that records of this domain that are not
-present in the cache are treated as non-existent, i.e. no other servers are queried for
-that record type, and an response containing none of those records is returned. This is
-most time what people want: if you add an A record for a host, and it has no AAAA record
-(thus no IPv6 address), you normally don't want other name servers to be queried for it.
-.br
-This is on by default.
-.br
-Please note that this only has an effect if it precedes the name option!
-.TP
-.B reverse=(on|off);
-\fINew in version 1.2:\fP If you want a locally defined name to resolve to a numeric address
-and vice versa, you can achieve this by setting reverse=on before defining the A record
-(see below). The alternative is to define a separate PTR record, but you will
-probably find this option much more convenient.
-.br
-The default is off.
-.TP
-.B a=\fIstring\fP;
-Defines an A (host address) record. The argument is an IPv4 address in dotted notation.
-pdnsd will serve this address for the host name given in the name option.
-.br
-Provided there is sufficient support in the C libraries and support for AAAA records was not
-disabled, the argument string may also be an IPv6 address, in which case an AAAA record
-will be defined.
-.br
-This option be may used multiple times within an rr section, causing
-multiple addresses to be defined for the name. However, if you put the different addresses
-in different rr sections for the same name, the definition in the last
-rr section will cancel the definitions in the previous ones.
-.TP
-.B ptr=\fIstring\fP;
-Defines a PTR (domain name pointer) record. The argument is a host name in
-dotted notation (see name). The ptr record is for resolving adresses into names. For example, if
-you want the adress 127.0.0.1 to resolve into localhost, and localhost into 127.0.0.1, you need something
-like the following sections:
-.br
-.DS L
-
-    rr {
-        name = localhost;
-        a = 127.0.0.1;
-        owner = localhost;
-        soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
-    }
-    rr {
-        name = 1.0.0.127.in-addr.arpa;
-        ptr = localhost;
-        owner = localhost;
-        soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
-    }
-.DE
-
-The second section is for reverse resolving and uses the ptr option.
-Note that you can get the same effect by specifying only the first rr section
-with reverse=on.
-.br
-There is something special about the name in the second section:
-when a resolver wants to get a host name from an internet address,
-it composes an address that is built of the IP address in reverse byte order
-(1.0.0.127 instead of 127.0.0.1) where each byte of the adress written
-as number constitutes a sub-domain under the domain in-addr.arpa. 
-.br
-So, if you want to compose an adress for reverse resolving, take your ip in dotted notation (e.g. 1.2.3.4),
-reverse the byte order (4.3.2.1) and append in-addr.arpa. (4.3.2.1.in-addr.arpa.)
-Then, define an rr section giving this address as name and the domain name corresponding to
-that ip in the ptr option.
-.TP
-.B cname=\fIstring\fP;
-Defines a CNAME (canonical name) record.
-The argument should be a fully-qualified host name in dotted notation (see name).
-A CNAME is the DNS equivalent of an alias or symbolic link.
-.br
-A useful application for CNAMEs is giving short, easy to remember nicknames to hosts with complicated names.
-For example, you might want the name "news" to refer to your ISP's news server "nntp2.myisp.com".
-Instead of adding an A record for "news" with the same address as "nntp2.myisp.com", you could
-put in a CNAME pointing to "nntp2.myisp.com", so that if the IP address of the news server changes,
-there is no need to update the record for "news".
-.br
-To implement this with pdnsd, you could add the following section to your configuration file:
-.br
-.DS L
-
-    rr {
-        name = news;
-        cname = nntp2.myisp.com;
-        owner = localhost;
-    }
-.DE
-
-.TP
-.B mx=\fIstring\fP,\fInumber\fP;
-Defines an MX (mail exchange) record. The string is the host name of the mail server in dotted notation (see name).
-The number specifies the preference level.
-.br
-When you send mail to someone, your mail typically goes from your E-mail client to an SMTP server.
-The SMTP server then checks for the MX record of the domain in the E-mail address.
-For example, with joe at example.com, it would look for the MX record for example.com and find
-that the name of mail server for that domain is, say, mail.example.com.
-The SMTP server then gets the A record for mail.example.com, and connects to the mail server.
-.br
-If there are multiple MX records, the SMTP server will pick one based on the preference level
-(starting with the lowest preference number, working its way up).
-.br
-Don't define MX records with pdnsd unless you know what you're doing.
-.TP
-.B owner=\fIstring\fP;
-or
-.PD 0
-.TP
-.PD
-.B ns=\fIstring\fP;
-Defines an NS (name server) record. Specifies the name of the host which should be authoritative for the records
-you defined in the rr section. This is typically the host pdnsd runs on.
-.br
-\fINote:\fP In previous versions of pdnsd this option had to be specified before
-any a, ptr, cname, mx or soa entries.
-In version 1.2, the restrictions on this option are same as the options just mentioned,
-and it must listed after the name= option.
-This can be a pain if you want to use an old config file which specifies owner=
-before name= (sorry about that).
-Apart from greater consistency, the advantage is that you can now specify as many NS records as you like (including zero).
-.TP
-.B soa=\fIstring\fP,\fIstring\fP,\fInumber\fP,\fItimespec\fP,\fItimespec\fP,\fItimespec\fP,\fItimespec\fP;
-This defines a soa (start of authority) record. The first string is the
-domain name of the server and should be equal to the name you specified as
-owner. 
-.br
-The second string specifies the email address of the maintainer of the name
-server. It is also specified as a domain name, so you will have to replace the
-@ sign in the name with a dot (.) to get the name you have to specify here.
-The next parameter (the first number) is the serial number of the record. You
-should increment this number if you change the record.
-.br
-The 4th parameter is the refresh timeout. It specifies after what amount
-of time a caching server should attempt to refresh the cached record.
-.br
-The 5th parameter specifies a time after which a caching server should attempt
-to refresh the record after a refresh failure.
-.br
-The 6th parameter defines the timeout after which a cached record expires if it
-has not been refreshed.
-.br
-The 7th parameter is the ttl that is specified in every rr and should be the
-same as given with the ttl option (if you do not specify a ttl, use the default 86400).
-.TP
-.B txt=\fIstring\fP,...,\fIstring\fP;
-\fINew in version 1.2.9:\fP
-Defines an TXT record. You can specify one or more strings here.
-
-.SS neg Section
-Every neg section specifies a dns resource record or a dns domain that should be
-cached negatively locally. Queries for negatively cached records are always answered
-immediatley with an error or an empty answer without querying other hosts as long
-as the record is valid. The records defined with neg sections remain
-valid until they are explicitely invalidated or deleted by the user using
-pdnsd\-ctl.
-.br
-This is useful if a certain application asks periodically for nonexisting hosts or
-RR types and you do not want a query to go out every time the cached record has
-timed out. Example: Netscape Communicator will ask for the servers  news and mail
-on startup if unconfigured. If you do not have a dns search list for your network,
-you can inhibit outgoing queries for these by specifying
-.br
-.DS L
-
-    neg {
-        name = news;
-        types = domain;
-    }
-    neg {
-        name = mail;
-        types = domain;
-    }
-.DE
-
-in your config file. If you have a search list, you have to repeat that for any
-entry in your search list in addition to the entries given above!
-.br
-In versions 1.1.11 and later, if you negate whole domains this way, all subdomains
-will be negated as well. Thus if you specify
-.br
-neg {name=example.com; types=domain;} in the
-config file, this will also negate www.example.com, xxx.adserver.example.com, etc.
-
-.TP
-.B name=\fIstring\fP;
-Specifies the name of the domain for which negative cache entries are created.
-This option must be specified before the types option.
-Names are interpreted as absolute domain names (i.e. pdnsd
-assumes they end in the root domain).
-You need to specify domain names in dotted notation (example venera.isi.edu.).
-.br
-Previous versions of pdnsd
-required that domain names given in the configuration file ended in a
-dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
-dot at the end if it is missing.
-.TP
-.B ttl=\fItimespec\fP;
-Specifies the ttl (time to live) for all resource records in this section after this entry.
-This may be redefined. The default is 86400 seconds (=1 day).
-.TP
-.B types=(domain|\fIrr_type\fP[,\fIrr_type\fP[,\fIrr_type\fP[,...]]]);
-Specifies what is to be cached negatively: domain will cache the whole
-domain negatively; alternatively, you can specify a comma-separated list of RR types
-which are to be cached negatively. You may specify multiple types options, but
-domain and the RR types are mutually exclusive.
-.br
-The RR types are specified using their official names from the RFC's in capitals,
-e.g. A, CNAME, NS, PTR, MX,
-AAAA, ...
-.br
-The command pdnsd\-ctl\ list\-rrtypes will give you a complete list
-of those types. pdnsd\-ctl is built along with pdnsd
-and will be installed in the same directory as the pdnsd binary during make install.
-
-.SS source Section
-Every source section allows you to let pdnsd read the records from a file in an
-/etc/hosts-like format. pdnsd will generate records to resolve the entries
-address from its host name and vice versa for every entry in the file. This is
-normally easier than defining an rr for every of your addresses, since localhost
-and your other FQDNs are normally given in /etc/hosts.
-.br
-The accepted format is as follows: The #\-sign initiates a comment, the rest of
-the line from the first occurence of this character on is ignored. Empty lines
-are tolerated.
-.br
-The first entry on a line (predeceded by an arbitrary number of tabs and spaces)
-is the IP in dotted notation, the second entry on one line (separated by the
-first by an arbitrary number of tabs and spaces) is the FQDN (fully qualified
-domain name) for that ip. The rest of the line is ignored by default (in the original
-/etc/hosts, it may contain information not needed by pdnsd).
-
-.TP
-.B owner=\fIstring\fP;
-Specifies the name of the host pdnsd runs on and that are specified in dns
-answers (specifically, nameserver records).
-Must be specified before any file entries.
-.br
-Names are interpreted as absolute domain names (i.e. pdnsd
-assumes they end in the root domain).
-You need to specify domain names in dotted notation (example venera.isi.edu.).
-.br
-Previous versions of pdnsd
-required that domain names given in the configuration file ended in a
-dot, but since version 1.1.8b1-par8, pdnsd automatically assumes a
-dot at the end if it is missing.
-.TP
-.B ttl=\fItimespec\fP;
-Specifies the ttl (time to live) for all resource records in this section after
-this entry. This may be redefined. The default is 86400 seconds (=1 day).
-.TP
-.B file=\fIstring\fP;
-The string specifies a file name. For every file entry in a source section,
-pdnsd will try to load the given file as described above. Failure is indicated
-only when the file cannot be opened, malformed entries will be ignored.
-.TP
-.B serve_aliases=(on|off);
-If this is turned on pdnsd will serve the aliases given in a hosts-style file.
-These are the third entry in a line of a hosts-style file, which usually give a "short name" for the host.
-This may be used to support broken clients without a proper domain-search option.
-If no aliases are given in a line of the file, pdnsd behaves as without this option for this line.
-.br
-This feature was suggested by Bert Frederiks.
-.br
-It is off by default.
-.TP
-.B authrec=(on|off);
-If this is turned on, pdnsd will create authoritative local records with the data from the hosts file.
-Please see the description of the option of the same name in the rr section for a closer description of
-what this means. Please note that this only has an effect for files sourced with file options
-subsequent to this option.
-.br
-This is on by default.
-
-.SS include Section
-A configuration file may include other configuration files.
-However, only the top-level configuration file may contain global
-and server sections,
-thus include files are effectively limited to sections that add local definitions to the cache.
-.br
-Include sections currently only have one type of option, which may be given multiple times within a single section.
-
-.TP
-.B file=\fIstring\fP;
-The string specifies a file name. For every file option in an include section,
-pdnsd will parse the given file as described above. The file may contain include sections itself,
-but as a precaution pdnsd checks that a certain maximum depth is not exceeded to guard against
-the possibility of infinite recursion.
-
-.SH "VERSION"
-.PP
-This man page is correct for version @fullversion@ of pdnsd.
-.SH "SEE ALSO"
-.PP
-.BR pdnsd (8),
-.BR pdnsd\-ctl (8)
-.PP
-More documentation is available in the \fBdoc/\fP subdirectory of the source,
-or in \fB/usr/share/doc/pdnsd/\fP if you are using a binary package.
-
-.SH AUTHORS
-
-\fBpdnsd\fP was originally written by Thomas Moestl
-.UR
-<tmoestl at gmx.net>
-.UE
-and was extensively revised by Paul A. Rombouts
-.UR
-<p.a.rombouts at home.nl>
-.UE
-(for versions 1.1.8b1\-par and later).
-.PP
-Several others have contributed to \fBpdnsd\fP; see files in the source or
-\fB/usr/share/doc/pdnsd/\fP directory.
-.PP
-This man page was automatically generated from the html documentation for \fBpdnsd\fP,
-using a customized Perl script written by Paul A. Rombouts.
-.PP
-Last revised: 19 April 2012 by Paul A. Rombouts
diff --git a/jni/pdnsd/doc/pdnsd.conf.in b/jni/pdnsd/doc/pdnsd.conf.in
deleted file mode 100644
index e348eb0..0000000
--- a/jni/pdnsd/doc/pdnsd.conf.in
+++ /dev/null
@@ -1,143 +0,0 @@
-// Sample pdnsd configuration file. Must be customized to obtain a working pdnsd setup!
-// Read the pdnsd.conf(5) manpage for an explanation of the options.
-// Add or remove '#' in front of options you want to disable or enable, respectively.
-// Remove '/*' and '*/' to enable complete sections.
-
-global {
-	perm_cache=1024;
-	cache_dir="@cachedir@";
-#	pid_file = /var/run/pdnsd.pid;
-	run_as="@def_id@";
-	server_ip = 127.0.0.1;  # Use eth0 here if you want to allow other
-				# machines on your network to query pdnsd.
-	status_ctl = on;
-#	paranoid=on;       # This option reduces the chance of cache poisoning
-	                   # but may make pdnsd less efficient, unfortunately.
-	query_method=udp_tcp;
-	min_ttl=15m;       # Retain cached entries at least 15 minutes.
-	max_ttl=1w;        # One week.
-	timeout=10;        # Global timeout option (10 seconds).
-	neg_domain_pol=on;
-	udpbufsize=1024;   # Upper limit on the size of UDP messages.
-}
-
-# The following section is most appropriate if you have a fixed connection to
-# the Internet and an ISP which provides good DNS servers.
-server {
-	label= "myisp";
-	ip = 192.168.0.1;  # Put your ISP's DNS-server address(es) here.
-#	proxy_only=on;     # Do not query any name servers beside your ISP's.
-	                   # This may be necessary if you are behind some
-	                   # kind of firewall and cannot receive replies
-	                   # from outside name servers.
-	timeout=4;         # Server timeout; this may be much shorter
-			   # that the global timeout option.
-	uptest=if;         # Test if the network interface is active.
-	interface=eth0;    # The name of the interface to check.
-	interval=10m;      # Check every 10 minutes.
-	purge_cache=off;   # Keep stale cache entries in case the ISP's
-			   # DNS servers go offline.
-	edns_query=yes;    # Use EDNS for outgoing queries to allow UDP messages
-			   # larger than 512 bytes. May cause trouble with some
-			   # legacy systems.
-#	exclude=.thepiratebay.org,  # If your ISP censors certain names, you may
-#		.thepiratebay.se,   # want to exclude them here, and provide an
-#		.piratebay.org,	    # alternative server section below that will
-#		.piratebay.se;	    # successfully resolve the names.
-}
-
-/*
-# The following section is more appropriate for dial-up connections.
-# Read about how to use pdnsd-ctl for dynamic configuration in the documentation.
-server {
-	label= "dialup";
-	file = "/etc/ppp/resolv.conf";  # Preferably do not use /etc/resolv.conf
-	proxy_only=on;
-	timeout=4;
-	uptest=if;
-	interface = ppp0;
-	interval=10;       # Check the interface every 10 seconds.
-	purge_cache=off;
-	preset=off;
-}
-*/
-
-/*
-# The servers provided by OpenDNS are fast, but they do not reply with
-# NXDOMAIN for non-existant domains, instead they supply you with an
-# address of one of their search engines. They also lie about the addresses of 
-# of the search engines of google, microsoft and yahoo.
-# If you do not like this behaviour the "reject" option may be useful.
-server {
-	label = "opendns";
-	ip = 208.67.222.222, 208.67.220.220;
-	reject = 208.69.32.0/24,  # You may need to add additional address ranges
-	         208.69.34.0/24,  # here if the addresses of their search engines
-	         208.67.219.0/24; # change.
-	reject_policy = fail;     # If you do not provide any alternative server
-	                          # sections, like the following root-server
-	                          # example, "negate" may be more appropriate here.
-	timeout = 4;
-	uptest = ping;            # Test availability using ICMP echo requests.
-        ping_timeout = 100;       # ping test will time out after 10 seconds.
-	interval = 15m;           # Test every 15 minutes.
-	preset = off;
-}
-*/
-
-/*
-# This section is meant for resolving from root servers.
-server {
-	label = "root-servers";
-	root_server = discover; # Query the name servers listed below
-				# to obtain a full list of root servers.
-	randomize_servers = on; # Give every root server an equal chance
-	                        # of being queried.
-	ip = 	198.41.0.4,     # This list will be expanded to the full
-		192.228.79.201; # list on start up.
-	timeout = 5;
-	uptest = query;         # Test availability using empty DNS queries.
-#	query_test_name = .;    # To be used if remote servers ignore empty queries.
-	interval = 30m;         # Test every half hour.
-	ping_timeout = 300;     # Test should time out after 30 seconds.
-	purge_cache = off;
-#	edns_query = yes;	# Use EDNS for outgoing queries to allow UDP messages
-			   	# larger than 512 bytes. May cause trouble with some
-			   	# legacy systems.
-	exclude = .localdomain;
-	policy = included;
-	preset = off;
-}
-*/
-
-source {
-	owner=localhost;
-#	serve_aliases=on;
-	file="/etc/hosts";
-}
-
-/*
-include {file="/etc/pdnsd.include";}	# Read additional definitions from /etc/pdnsd.include.
-*/
-
-rr {
-	name=localhost;
-	reverse=on;
-	a=127.0.0.1;
-	owner=localhost;
-	soa=localhost,root.localhost,42,86400,900,86400,86400;
-}
-
-/*
-neg {
-	name=doubleclick.net;
-	types=domain;   # This will also block xxx.doubleclick.net, etc.
-}
-*/
-
-/*
-neg {
-	name=bad.server.com;   # Badly behaved server you don't want to connect to.
-	types=A,AAAA;
-}
-*/
diff --git a/jni/pdnsd/doc/txt/doc_makefile b/jni/pdnsd/doc/txt/doc_makefile
deleted file mode 100644
index 57aa7c1..0000000
--- a/jni/pdnsd/doc/txt/doc_makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Makefile for converting pdnsd html documentation to text files.
-# This file was based on a Makefile originally written by Thomas Moestl
-# and adapted by Paul Rombouts.
-
-
-HTML2TXT=w3m -dump -cols 80 -T text/html
-
-doc: intro.txt manual.txt faq.txt
-.PHONY: doc clean
-
-intro.txt: ../html/index.html
-	sed -e 's/<!--\(nodoc\|notext\)(-->/<!--/g' -e 's/<!--)\(nodoc\|notext\)-->/-->/g' ../html/index.html | $(HTML2TXT) | sed -e 's/[[:blank:]]\+$$//' > intro.txt
-
-manual.txt: ../html/doc.html
-	sed -e 's/<!--\(nodoc\|notext\)(-->/<!--/g' -e 's/<!--)\(nodoc\|notext\)-->/-->/g' ../html/doc.html | $(HTML2TXT) | sed -e 's/[[:blank:]]\+$$//' > manual.txt
-
-faq.txt: ../html/faq.html
-	sed -e 's/<!--\(nodoc\|notext\)(-->/<!--/g' -e 's/<!--)\(nodoc\|notext\)-->/-->/g' ../html/faq.html | $(HTML2TXT) | sed -e 's/[[:blank:]]\+$$//' > faq.txt
-
-clean:
-	@rm -fv intro.txt manual.txt faq.txt
diff --git a/jni/pdnsd/doc/txt/faq.txt b/jni/pdnsd/doc/txt/faq.txt
deleted file mode 100644
index 0263161..0000000
--- a/jni/pdnsd/doc/txt/faq.txt
+++ /dev/null
@@ -1,227 +0,0 @@
-The pdnsd FAQ
-
-Q:  There are complete and well-tested name servers around, such as the BIND.
-    These do also perform caching. Why should I use pdnsd?
-
-    pdnsd does not aim to be a complete name server implementation, such as the
-    BIND. It is optimized for caching, and you can only specify a small subset
-    of all dns record types pdnsd knows in your local "zone" definitions. This
-    of course reduces the code size drastically, and such the memory footprint.
-    There are some features especially interesting for dialin networks,
-    ordinary (non-server) internet hosts and computers that are often not
-    connected to to their network, e.g. notebooks (I originally wrote this
-    program for use with my notebook). These features are:
-A:
-      * permanent disk cache (useful for frequent power-offs/reboots)
-      * usually smaller memory footprint (depends on cache size) (see next
-        question)
-      * offline-detection prevents hangs (e.g. the typical hang on startup of
-        some Netscape Navigator versions if not dialled in)
-      * better control about timeouts (also to prevent hangs)
-      * better control over the cache
-      * better run-time control
-
--------------------------------------------------------------------------------
-
-    When I look at the process size with ps, top, gtop, or a similar tool, I
-Q:  see some processes with a total size well above 3.5 MB. This is much more
-    than e.g. BIND named (about 1.4 MB). Why?
-
-    Really, it is not. pdnsd uses multithreading, not multiprocessing. That
-    means that the processes share most of their process space. In the
-    LinuxThreads library or NPTL (Native Posix Thread Libary), which are used
-    by pdnsd on Linux, in fact the total process address space is shared
-A:  (although the processes have different stacks, these are in one process
-    address space). You may check this by looking at the at the process sizes
-    of the pdnsd threads: all should be the same. The effective size that pdnsd
-    occupies is thus the size of any of the processes, not the sum of those.
-    So, pdnsd with empty cache occupies about 800 kB, and the maximum size
-    should be about the cache size plus this size (in fact, ca 5-10% more).
-
--------------------------------------------------------------------------------
-
-Q:  What do I need the status control (option -s) for?
-
-    It enables you to do some things you might or might not need. With it, you
-    can:
-
-      * query pdnsd's settings at runtime to debug configuration files and see
-        which servers are regarded to be available
-A:    * mark servers as available or unavailable, or force a status retest -
-        very handy if you want to control which servers pdnsd queries, e.g for
-        muliple dial-up accounts
-      * delete, invalidate or add DNS records - useful e.g. when you want to
-        build records for dynamically assigned IP addresses or domain names
-      * reload pdnsd's configuration file without restarting pdnsd
-      * print information about the contents of pdnsd's cache.
-
--------------------------------------------------------------------------------
-
-Q:  What do I need local records (rr- and source-sections in the config file)
-    for?
-
-    Some resolver programs, e.g. nslookup, want to look up the name of the
-    server they are using before doing anything else. This option is for
-    defining a PTR record for your IP such that those programs get an answer
-    even if the name server you are caching is not available or does not offer
-    these records. By extension, you may also define A and SOA records. This
-    allows you to build very small zones without having to use a "big" name
-    server. It is NOT intended to replace such a complete server in anything
-    but VERY small networks. Alternatively, you may start a named on another
-    host or on the same host on another port and cache it with pdnsd in
-    addition to other (more distant) name servers.
-A:  The source section allows you to let pdnsd read in your /etc/hosts file on
-    startup and serve its contents. This file is used by your local resolver
-    before it even tries the name servers and usually contains fully-qualified
-    domain names (FQDNs) for all of the internet addresses your host has. If
-    you source this file, you usually won't need any additional rr sections.
-    Sourcing it also allows other hosts (eg. in your local network) to access
-    the names defined in your hosts file. You can of course just add other
-    hosts in your local network to the servers hosts file, thus making them
-    known to your server's resolver and pdnsd (if you sourced that file).
-    If you don't know what this answer was all about, you should just take the
-    source section in the sample config file that comes with pdnsd, copy it
-    into your config file and forget about it.
-
--------------------------------------------------------------------------------
-
-    When compiling, I get an error message like
-Q:  Please define __BYTE_ORDER to be __LITTLE_ENDIAN or __BIG_ENDIAN
-    What's up?
-
-    Normally, this macros should be defined in your C library's header files.
-    There are two different methods, most C libraries support both (and pdnsd
-    honors both): either __BYTE_ORDER is set to __LITTLE_ENDIAN or
-    __BIG_ENDIAN, or __LITTLE_ENDIAN or __BIG_ENDIAN are directly defined as
-    macros.
-    Linux glibc, for example, does set those macros correctly. Never mind. You
-    just have to know whether your machine is little-endian or big-endian, this
-    means wheter your machine saves the least significant byte of a word or
-    double-word first in memory (little-endian) or the most significant first
-A:  (big-endian). All intel x86 and Alpha machines are little-endian, for
-    example, while SPARC and PowerPC architectures are big-endian. If your
-    machine is little-endian, add the following line to your config.h:
-    #define __BYTE_ORDER __LITTLE_ENDIAN
-    Likewise, if your machines byte order is big-endian:
-    #define __BYTE_ORDER __BIG_ENDIAN
-    Pathological byte orders like pdp-endian are not yet supported really;
-    However, for the place the endianess is needed, __LITTLE_ENDIAN should do
-    (it deals only with 16 bits; for all other occurances, ntoh[sl]/hton[sl] is
-    used).
-
--------------------------------------------------------------------------------
-
-    At startup, I get a warning saying:
-Q:  Uptest command [...] will implicitly be executed as root
-    What does that mean?
-
-    This warning only occurs if you use the uptest=exec option in your
-    configuration. It means that the uptest command is run as root because
-    pdnsd is running as root, and this was not explicitely specified. The idea
-    is that it may introduce security holes (in the programs being run) when
-A:  they run as root, and so they shouldn't do that if possible. You can
-    specify the user that shall run the command by appending its name
-    comma-separated as string to the uptest_cmd line:
-    uptest_cmd="<your command>","<user>";
-    If it is correctly running as root, just append the user string "root" to
-    the command and the warning will not occur again.
-
--------------------------------------------------------------------------------
-
-Q:  I cannot run my uptest_cmd command as root (it says permission denied),
-    although the pdnsd executable is setuid root. Why?
-
-    pdnsd will drop privileges gained through setuid/setgid before executing
-    the uptest commands (you shouldn't set the pdnsd executable setuid/setgid
-A:  anyway). The reason is clear: if you install the pdnsd executable as setuid
-    root and this wouln't be done, any user could execute shellcode with root
-    privileges using that option!
-
--------------------------------------------------------------------------------
-
-    At startup, I get an error saying:
-Q:  Bad config file permissions: the file must be only writeable by the user
-    Why is that?
-
-    pdnsd has an option (uptest=exec) that allows the execution of arbitrary
-    shell code (for testing whether an interface is up). This must be of course
-    secured against unauthorized use. One of these protection is the one that
-    produces the error message: if you routinely run pdnsd, e.g. at system
-    startup, and your config file is editable for others, someone could change
-A:  it and insert shell code that is executed in the next pdnsd run -- with
-    your user privileges! To prevent this, pdnsd will exit if the config file
-    is writeable by others than the owner. To get rid of this message, just do
-    chmod go-w <filename>
-    on your config file (for the default file: chmod go-w /etc/pdnsd.conf). You
-    should also check that the ownership is set correct.
-
--------------------------------------------------------------------------------
-
-Q:  serve_aliases does not seem to work.
-
-    Some resolvers (e.g. of the glibc 2.1) seem sometimes not to look up
-    unmodified names, but the names with an entry of the search path already
-A:  appended. Since pdnsd will serve short names with this option anyway, you
-    can delete the search an domain options from your /etc/resolv.conf. This is
-    reported to work in some cases.
-
--------------------------------------------------------------------------------
-
-Q:  Some queries for domains that have many records (e.g. www.gmx.de) fail
-    mysteriously.
-
-    pdnsd versions prior to 1.1.0 had the tcp server thread disabled by
-    default. Most resolvers repeat their query using tcp when they receive a
-A:  truncated answer (the answer is truncated when it exceeds a length of 512
-    bytes). You need to recompile pdnsd with the option --enable-tcp-server to
-    fix this.
-
--------------------------------------------------------------------------------
-
-    I am behind some kind of firewall. In the configuration file I have only
-Q:  listed addresses of name servers on the local (ISP's) network, but pdnsd is
-    slow and DNS queries frequently time out.
-
-    In some cases pdnsd will not consider the answer of the local name server
-    authoritative enough, and will try to get answers from the name servers
-    listed in the authority section of the reply message. If pdnsd is behind a
-    firewall that blocks the UDP reply packets from remote name servers, pdnsd
-    will wait in vain for a reply. One solution is to set proxy_only=on in the
-A:  servers sections of the configuration file. This will prevent pdnsd from
-    querying name servers that are not listed in the configuration file.
-    Another solution that can be tried is specifying query_method=tcp_only in
-    the global section of the configuration file, because a firewall that
-    blocks UDP packets from outside might still allow outgoing TCP connections
-    to port 53.
-
--------------------------------------------------------------------------------
-
-Q:  Is pdnsd vulnerable to DNS cache poisoning as described in CERT
-    vulnerability note VU#800113?
-
-    Short answer: Yes.
-    Somewhat longer answer: The problem is not so much that pdnsd's
-    implementation is flawed but rather that the DNS protocol currently being
-    used is fundamentally flawed from a security viewpoint. As long as a more
-    secure protocol is not in place, all that the developers of pdnsd can do is
-    to try to tweak the current implementation to make it as difficult as
-    possible for an attacker to succeed.
-    From version 1.2.7 onwards, the default for the query_port_start option is
-A:  1024, which means that the pdnsd resolver will randomly select source ports
-    in the range 1024-65535. (In previous versions the default was to let the
-    kernel select the source ports, which will often result in a more or less
-    predictable sequence of ports.) It also helps to use a good quality source
-    of random numbers. On platforms where this is supported, it is preferable
-    to configure with --with-random-device=/dev/urandom. There is still more
-    that can be done to make pdnsd less vulnerable, but this remains (as of
-    this writing) a work in progress.
-    Please note that pdnsd was designed for small (private) networks, and that
-    it is generally not recommended to let untrusted users access pdnsd.
-
--------------------------------------------------------------------------------
-
-Thomas Moestl and Paul Rombouts
-
-
-Last revised: 18 August 2008 by Paul Rombouts
-
diff --git a/jni/pdnsd/doc/txt/intro.txt b/jni/pdnsd/doc/txt/intro.txt
deleted file mode 100644
index db1c89e..0000000
--- a/jni/pdnsd/doc/txt/intro.txt
+++ /dev/null
@@ -1,305 +0,0 @@
--------------------------------------------------------------------------------
-
-About pdnsd
-
-pdnsd is a proxy DNS server with permanent caching (the cache contents are
-written to hard disk on exit) that is designed to cope with unreachable or down
-DNS servers (for example in dial-in networking).
-Since version 1.1.0, pdnsd supports negative caching.
-
-It is licensed under the GNU General Public License (GPL). This, in short,
-means that the sources are distributed togehter with the program, and that you
-are free to modify the sources and redistribute them as long as you also
-license them under the GPL. You do not need to pay anything for pdnsd. It also
-means that there is ABSOLUTELY NO WARRANTY for pdnsd or any part of it. For
-details, please read the GPL.
-
-pdnsd can be used with applications that do DNS lookups, e.g. on startup, and
-can't be configured to change that behaviour, to prevent the often minute-long
-hangs (or even crashes) that result from stalled DNS queries. Some Netscape
-Navigator versions for Unix, for example, expose this behaviour.
-
-pdnsd is configurable via a file and supports run-time configuration using the
-program pdnsd-ctl that comes with pdnsd. This allows you to set the status
-flags of servers that pdnsd knows (to influence which servers pdnsd will
-query), and the addition, deletion and invalidation of DNS records in pdnsd's
-cache.
-Parallel name server queries are supported. This is a technique that allows
-querying several servers at the same time so that very slow or unavailable
-servers will not block the answer for one timeout interval.
-Since version 1.0.0, pdnsd has full IPv6 support.
-
-There is also a limited support for local zone records, intended for defining
-1.0.0.127.in-addr.arpa. and localhost. , since some clients request that
-information and it must be served even if the cached servers are not available
-or do not serve these records. pdnsd may also read your /etc/hosts file (this
-file is normally used by your local resolver and usually contains information
-for localhost as well as for your machines FQDN) and serve its contents.
-
-pdnsd was started on Linux, and has since been ported to FreeBSD (and Cygwin
-and Darwin). 90% of the source code should be easily portable to POSIX- and
-BSD-compatible systems, provided that those systems support the POSIX threads
-(pthreads). The rest might need OS-specific rewrites.
-
-Currently, pdnsd is only compileable by gcc. This should be easy to fix, but I
-just do not have documentation for other compilers. If you are not able or do
-not want to use gcc, I would recommend you just try to do the minor changes.
-
-pdnsd must be started as root in some cases (raw sockets are needed for icmp
-echoes for the option uptest=ping, and the default port is 53, this must be >
-1024 to allow non-root execution). However, pdnsd can be configured to change
-it's user and group id to those of a non-privileged user after opening the
-sockets needed for this.
-
-The server should support the full standard DNS queries following the rfcs 1034
-and 1035. As of version 1.0.0, the rfc compliance has been improved again, and
-pdnsd is now believed (or hoped?) to be fully rfc-compatible. It completely
-follows rfc 2181 (except for one minor issue in the FreeBSD port, see the
-documentation). It does not support the following features, of which most are
-marked optional, experimental or obsolete in these rfcs:
-
-  * Inverse queries
-  * Status queries
-  * Completion queries
-  * Namespaces other than IN (Internet)
-  * AXFR and IXFR queries (whole zone transfers); since pdnsd does not maintain
-    zones, that should not violate the standard
-
-The following record types, that are extensions to the original DNS standard,
-are supported for caching since version 1.2.9 (if you do not need most of them,
-you can disable runtime support for the unneeded ones before compiling pdnsd
-and save a little cache and executable space, see the source file src/
-rr_types.in):
-
-  * RP (responsible person, RFC 1183)
-  * AFSDB (AFS database location, RFC 1183)
-  * X25 (X25 address, RFC 1183)
-  * ISDN (ISDN number/address, RFC 1183)
-  * RT (route through, RFC 1183)
-  * NSAP (Network Service Access Protocol address , RFC 1348)
-  * PX (X.400/RFC822 mapping information, RFC 1995)
-  * GPOS (geographic position, deprecated)
-  * AAAA (IPv6 address, RFC 1886)
-  * LOC (location, RFC 1876)
-  * EID (Nimrod EID)
-  * NIMLOC (Nimrod locator)
-  * SRV (service record, RFC 2782)
-  * ATMA (ATM address)
-  * NAPTR (URI mapping, RFC 2168)
-  * KX (key exchange, RFC 2230)
-  * CERT (Certificate record, RFC 4398)
-  * DS (Delegation Signer, RFC 4034)
-  * RRSIG (Resource Record Signature, RFC 4034)
-  * NSEC (Next Secure, RFC 4034)
-  * DNSKEY (record containing the public key for a zone, RFC 4034)
-  * NSEC3 (Next Secure version 3, RFC 5155)
-  * NSEC3PARAM (NSEC3 parameters, RFC 5155)
-
-Note: This list is incomplete. For the complete list see the source file src/
-rr_types.in.
-
-There are FreeBSD and OpenBSD ports available for pdnsd (ports/net/pdnsd for
-both). Thanks go to Roman Shterenzon for the FreeBSD port Sebastian Stark for
-the OpenBSD one! Thanks to Kiyo Kelvin Lee now also runs on the Cygwin
-platform! Thanks goes to Rodney Brown for extending portability to the Darwin
-(Apple Mac OS X) platform!
-
-If you have questions left, you should take a look into the FAQ.
-Bugfixes, patches and compatability fixes for other OSs are very welcome!
-
-Features in detail
-
-This section describes some of pdnsds features in detail. Most of the options
-are set in the config file. For more information on the configuration file, see
-the documenation page.
-
-
-Uptests
-
-pdnsd provides several methods to test whether a remote DNS server should be
-regarded as available (so that pdnsd can query it), in addition to the obvious
-"none" test (the server is always regarded as available, or availability is set
-on or off using the pdnsd-ctl utility). These tests are:
-
-  * ping: a given adress is ping'ed in a given interval. If it there is no
-    response or the host is unreachable, the server is seen to be not available
-    (for those who don't know: pinging is sending a certain Internet packet
-    type to a host to which any standard-conformant host is required to reply).
-  * if: a given network interface is tested whether it is existent, up and
-    running. If it is not, the server is regarded to be not available. This is
-    especially useful for ppp and similar interfaces. A special case test for
-    Linux isdn (ippp*) interfaces is integrated, so that the uptests should
-    also work for these.
-  * dev: this is a variant of the if uptest for use with Linux dial-on-demand
-    ppp interfaces. In addition to performing an if-style interface uptest, it
-    also tests whether a specified program (e.g. pppd) owns a lock to a given
-    (modem-) device.
-  * exec: a given shell command line is executed and the exit status of the
-    whole command line (which is normally the exit status of the last command)
-    is evaluated. If it is not zero, the server is regarded to be not
-    available. This is a very flexible testing method with which it should be
-    able to perform virtually any needed test.
-  * query: New in version 1.2: This works like the ping test, except it sends
-    an (empty) DNS query to the remote server. If the server sends a
-    well-formed response back within the timeout period (except SERVFAIL), it
-    will be regarded as available. This test is useful if a remote server does
-    not respond to ICMP_ECHO requests at all, which unfortunately is quite
-    common these days. In many cases this test will be a more reliable
-    indicator of availability than the ones mentioned above.
-
-
-Local Records ("Zones")
-
-As mentioned above, there are only very basic local record types (ie the record
-types that you may use in record declarations in your local configuration for
-records that pdnsd shall serve in addion to the cached ones). They are
-organized roughly in zones but have not complete zone declarations, so I
-generally do not use the term "zone" for them, but rather "local records".
-These are the local record types pdnsd can understand:
-
-  * SOA (information about the name server)
-  * A (domain-name-to-address mapping)
-  * PTR (pointer, used normally for address-to-domain-name mapping)
-  * NS (name server, generated automatically by pdnsd for any local record set)
-  * CNAME (canonical host name)
-  * MX (mail exchange for the domain)
-  * TXT (arbitrary text strings, often used for Sender Policy Framework)
-
-You can specify these records in the configuration file.
-You may "source" a file in a format like that used in the /etc/hosts file, that
-means that pdnsd reads this file, extracts addresses and domain names from it
-and automatically generates A records for name to address mapping, PTR records
-for address to name mapping and NS records (name server specifiation) for each
-entry in the file.
-Records can also be changed dynamically at run time.
-A script contributed by Marko Stolle makes pdnsd usable in a DHCP setup using
-this feature.
-
-System requirements
-
-As mentioned, pdnsd currently runs under Linux, FreeBSD and Cygwin. Other BSD
-flavours may or may not work (feedback is very welcome!). The system and
-software requirements under Linux are:
-
-  * Kernel version >2.2.0
-  * glibc version >2.0.1 (aka libc6) with LinuxThreads (normally included) or
-    NPTL (Native Posix Thread Library, recommended).
-    Due to a bug, pdnsd 0.9.8 does not run with glibc2.1.1. This behaviour was
-    fixed in pdnsd 0.9.9.
-  * For IPv6: glibc>=2.1
-
-The system requirements under FreeBSD are:
-
-  * FreeBSD versions >=2.6 (prior ones may or may not work)
-  * For IPv6: FreeBSD >=4.0 is recommended (no idea if it runs on prior
-    versions)
-
-The common software requirements for all supported systems are:
-
-  * GCC, preferably egcs-2.* or 3.* (other compilers are currently not
-    supported; the needed patch for another compiler should not be difficult,
-    however)
-  * GNU or BSD make
-  * the standard commands install, grep, sed, awk, touch and which (along with
-    the REALLY standard ones mv, cp, ln, rm, pwd, test, echo, cat, mkdir,
-    chown, chmod, tar). In any standard Unix installation, this should be no
-    problem.
-  * for hacking and building own packages, you might also need gzip, bzip2,
-    perl and rpmbuild
-
-
-Download
-
-If you want to download pdnsd, please visit the download page.
-
-Authors
-
-pdnsd was originally written by Thomas Moestl, but is no longer maintained by
-him. Paul A. Rombouts has revised large portions of the code and has added a
-number of new features. See README.par and the ChangeLog in the source
-directory (or /usr/share/doc/pdnsd-<version> if you have installed a binary
-package) for more details. If you have questions about the recent
-modifications, you can find the email address of the current maintainer at the
-end of README.par.
-
-Daniel Smolik has contributed RedHat RPMs (the most recent RPMs are available
-here).
-Torben Janssen contributed start scripts for Red Hat Linux.
-Soenke J. Peters contributed patches and suggestions for Red Hat compatability.
-Wolfgang Ocker has contributed the code and documentation for the server_ip
-option.
-Markus Mohr contributed a Debian rc script.
-Nikita V. Youschenko contributed extensions to the "if" uptest.
-Lyonel Vincent extended the serve_aliases option to support an arbitrary number
-of aliases.
-Sourav K. Mandal wrote the autoconf scripts and contributed many fixes and
-suggestions.
-Stephan Boettcher contributed the SCHEME= option.
-Ron Yorston contributed the uptest for Linux ppp dial-on-demand devices.
-Alexandre Nunes fixed some bugs in the autoconf files.
-Sverker Wiberg contributed fixes for IPv6.
-Carsten Block contributed configure-able rc scripts.
-Olaf Kirch contributed a security fix for the run_as code.
-Paul Wagland contributed various patches for bind9-compatability and other
-issues.
-Roman Shterenzon contributed patches and lots of helpful hints for FreeBSD
-compatability.
-Bernd Leibing has contributed spec file fixes.
-Michael Wiedmann has contributed the pdnsd-ctl.8 man page.
-Marko Stolle has contributed the contrib/pdnsd_update.pl script that makes
-pdnsd usable in a DHCP setup.
-P.J. Bostley has contributed patches to get pdnsd working on alpha properly.
-Christian Engstler contributed patches for SuSE compatability.
-Bjoern Fischer contributed code to make pdnsd leave the case of names in the
-cache unchanged.
-Marko Stolle contributed the contrib/pdnsd_update.pl script that makes pdnsd
-usable in a DHCP setup.
-Andrew M. Bishop contributed the support for the label server option and the
-pdnsd-ctl interface for using it.
-Frank Elsner contributed rc script fixes.
-Andreas Steinmetz contributed the code for query_port_start and query_port_end
-options.
-Mahesh T. Pai contributed the pdnsd.8 man page.
-Nikola Kotur contributed the Slackware start-up script.
-Kiyo Kelvin Lee contributed a patch for Cygwin support.
-Rodney Brown contributed a patch for Darwin (Apple Mac OS X) support.
-Jan-Marek Glogowski contributed a patch implementing the use_nss option.
-
-Special thanks to Bert Frederiks for letting me do a late-night debugging run
-on his machine to spot obscure bugs!
-
-Thanks to the following persons for reporting bugs and being helpful:
-David G. Andersen,
-Dirk Armbrust,
-Daniel Black,
-Kevin A. Burton,
-Juliusz Chroboczek,
-Joachim Dorner,
-Stefan Erhardt,
-Stefan F?rster,
-Mike Hammer,
-Jonathan Hudson,
-Dan Jacobson,
-Byrial Jensen,
-Patrick Loschmidt,
-James MacLean,
-Fraser McCrossan,
-Michael M?ller,
-Erich Reitz,
-Brian Schroeder,
-Milan P. Stanic,
-Michael Steiner,
-Norbert Steinl,
-Markus Storm,
-Michael Str?der,
-Alan Swanson,
-Eelco Vriezekolk.
-
-
--------------------------------------------------------------------------------
-
-Thomas Moestl and Paul A. Rombouts
-
-
-Last revised: 17 March 2012 by Paul A. Rombouts
-
diff --git a/jni/pdnsd/doc/txt/manual.txt b/jni/pdnsd/doc/txt/manual.txt
deleted file mode 100644
index c7e3e9d..0000000
--- a/jni/pdnsd/doc/txt/manual.txt
+++ /dev/null
@@ -1,2017 +0,0 @@
-                              pdnsd Documentation
-
-This is the "official" pdnsd documentation and reference written by Thomas
-Moestl with revisions by Paul A. Rombouts.
-This manual is a part of the pdnsd package, and may be distributed in original
-or modified form under terms of the GNU General Public License, as published by
-the Free Software Foundation; either version 3, or (at your option) any later
-version.
-You can find a copy of the GNU GPL in the file COPYING in the source or
-documentation directory.
-This manual is up-to-date for version 1.2.9b. For older documentation, please
-refer to the doc directory of the respective pdnsd package.
-If you want a quicker introduction to pdnsd, you can try some of the HOWTOs
-available on the web. For Apple Mac users, Brian Wells has published a good
-HOWTO at http://web.mac.com/brianwells/main/pdnsd.html.
-
-0. Installation
-
-0.1 Installing binary RPM's
-
-To install a binary RPM, just do
-
-rpm -i pdnsd-<version>.rpm
-
-This should install pretty much everything automatically. The only thing left
-for you to do is adapt your configuration file (stored in /etc/pdnsd.conf)
-according to your needs (see below). In the Red Hat and SuSE RPMs, a start
-script is also installed; read the section 0.4, Start at Boot Time about that.
-
-0.2 Building RPM's
-
-It is possible to build a binary RPM from a source package using the command
-
-rpmbuild --rebuild pdnsd-<version>.src.rpm
-
-or alternatively from a tarball using the command
-
-rpmbuild -tb pdnsd-<version>.tar.gz
-
-You can do this as root, but it is safer to build a binary package first as a
-normal user, and then, when all has gone well, install the resulting binary
-package as root as in the previous section. How to build an RPM package without
-being root is described at http://www.ibm.com/developerworks/linux/library/
-l-rpm1/.
-
-Several pdnsd-specific options are available when building RPM packages:
-
---with isdn             Has the same effect as --enable-isdn (see below).
-
---without poll          Has the same effect as --disable-poll (see below).
-
---without nptl          Has the same effect as --with-thread-lib=linuxthreads (
-                        see below).
-
---with ipv6             Has the same effect as --enable-ipv6 (see below).
-
---without tcpqueries    Has the same effect as --disable-tcp-queries (see below
-                        ).
-
---without debug         Has the same effect as --with-debug=0 (see below).
-
---define "distro <      Has the same effect as --with-distribution=<distro> (
-distro>"                see below).
-
---define "run_as_user   Has the same effect as --with-default-id=<user> (see
-<user>"                 below).
-                        For RPMs the default <user> is "pdnsd".
-
-                        If the user defined by the previous option does not
---define "run_as_uid <  exist when the RPM is installed, the pre-install script
-uid>"                   will try to create a new user with numerical id <uid>.
-                        The default is to let the system choose the numerical
-                        id at install time.
-
---define "cachedir <    Has the same effect as --with-cachedir=<dir> (see below
-dir>"                   ).
-
-You can also configure which compiler flags will be used by setting the
-environment variable CFLAGS. Using a bash shell, you can do that on the command
-line like this:  CFLAGS="-O1 -Wall" rpmbuild ...
-This is useful if you prefer a different level of optimization, for instance.
-
-0.3 Installing from pure sources (tar archives or git repositories)
-
-0.3.1 Setting up the source code tree
-
-Source code is available in the form of snapshots (tarballs) or a git
-repository with the very latest development code and a (nearly) complete
-history of all the revisions. Cloning a git repository is useful if you need a
-recent fix or feature that is not yet contained in a main release or you want
-to participate in pdnsd development. Otherwise you will probably find the
-tarballs more convenient because they are much more compact.
-
-0.3.1.1 Unpacking a tar archive
-
-The pdsnsd snapshot releases come in the form of a gzip'ed tar archive. To
-decompress it (using a modern tar) do
-
-tar -xzf pdnsd-<version>.tar.gz
-
-If your tar doesn't do this, use:
-
-gzip -dc pdnsd-<version>.tar.gz | tar -xf -
-
-0.3.1.2 Cloning a git repository
-
-To clone a git repository you need to install, if not already installed, the
-git version control system, which is available as a package in most modern
-Linux distributions. Then run the command:
-
-git clone git://gitorious.org/pdnsd/pdnsd.git pdnsd
-
-In rare cases, if you are behind some kind of firewall, the special git
-protocol can't be used and you will need to fall back to the http protocol. See
-the gitorious.org website or git documentation for more information.
-
-0.3.2 Configuring the source
-
-Change into the pdnsd source directory and run configure. It takes the
-following command line options (if you do not specify an option, defaults will
-be used):
-
-                            Specify the prefix directory. The pdnsd files are
-                            installed in subdirectories of the prefix, the
---prefix=dir                pdnsd and pdnsd-ctl executables are for example
-                            installed in the sbin subdirectory of the prefix.
-                            The default for this is /usr/local; you might want
-                            to set this to /usr (using --prefix=/usr).
-
-                            Specify the config directory. pdnsd expects its
-                            pdnsd.conf file to reside there if the -c option is
---sysconfdir=dir            not given at startup. The default for this is the
-                            etc subdirectory of your prefix, e.g. /usr/local/
-                            etc if you did not specify a prefix. To set this
-                            e.g. to /etc, use --sysconfdir=/etc.
-
---with-distribution=        Specify target distribution (default=Generic;
-distro                      others: RedHat, SuSE, Debian)
-                            See below for the effect of these settings.
-
-                            Change compilation target platform (default:
-                            autodetect; others: Linux, BSD, Cygwin).
-                            autodetect will attempt to detect whether you are
---with-target=platform      using Linux, *BSD or Cygwin and should normally be
-                            sufficient. If this does not work, try specifying
-                            your system manually (for the Darwin platform
-                            (Apple Mac OS X) specify BSD here).
-
-                            Default directory for pdnsd cache (default=/var/
---with-cachedir=dir         cache/pdnsd)
-                            This setting can be changed via config file
-                            settings when pdnsd has been built.
-
-                            Number of hash buckets to use (default=1024). The
-                            default should be sufficient for most purposes, but
-                            if you want to store a large number of names in the
---with-hash-buckets=num     cache, cache lookups may be faster if the number of
-                            hash buckets is comparable to the number of names
-                            stored in the cache. The number actually used is
-                            the smallest power of two greater or equal to the
-                            number specified here.
-
-                            Enable ISDN support
-                            This option will work only on Linux and may cause
---enable-isdn               problems with 2.0.x or old 2.2.x kernels. You will
-                            need it for a proper if uptest under Linux for ISDN
-                            ppp devices.
-
---disable-ipv4              Disable IPv4 networking support (default=enabled)
-
-                            Enable IPv6 networking support.
---enable-ipv6               If your OS does support IPv6 properly, you should
-                            be able to serve also IPv4 queries using this.
-                            Normally, this is disabled and you won't need it.
-
---disable-ipv4-startup      Disable IPv4 on pdnsd startup by default (default=
-                            enabled)
-
-                            Enable IPV6 on pdnsd startup by default (default=
-                            IPv4). These options are only defaults, you can
---enable-ipv6-startup       specify on the command line or in the config files
-                            which IP version will really be used. Normally, you
-                            won't need to change these.
-
---disable-udp-queries       Disable UDP as query method. You shouldn't need to
-                            change this.
-
-                            Disable TCP as query method. This only effects the
-                            querying of name servers by pdnsd, not the ability
-                            of pdnsd to answer TCP queries from clients. TCP
-                            queries are slower than UDP queries, but can be
---disable-tcp-queries       more secure against certain types of attacks and
-                            are able to handle large answers. For normal use
-                            this can be disabled. (Note that the default has
-                            changed: TCP-query support is now compiled in by
-                            default, but it still depends on the run-time
-                            options whether it is actually used.)
-
-                            Specify the query method (default=udponly, others:
-                            tcponly, tcpudp, udptcp). If you have enabled both
-                            UDP and TCP queries, this lets you control which
-                            query method pdnsd will use by default. tcpudp will
-                            try TCP first and fall back to UDP if TCP is not
---with-query-method=qm      supported by the server; udptcp will try UDP first
-                            and, if the answer was truncated, will repeat the
-                            query using TCP. udponly and tcponly should be
-                            clear. Note that this only effects the compiled-in
-                            default; the query method can still be changed
-                            using command-line options or options in the
-                            configuration file.
-
-                            Disable the TCP server. In this case pdnsd will not
---disable-tcp-server        be able to respond to TCP queries from clients.
-                            This may cause problems with very large answers.
-
-                            Disable the UDP source address discovery.
-                            You need this only if you have trouble with
---disable-src-addr-disc     messages saying "could not discover udp source
-                            address".
-                            For the Cygwin target, this option is disabled by
-                            default.
-
---disable-poll              Disable poll(2) and use select(2) (default=enabled)
-                            You will normally not need this.
-
-                            Since version 1.2.9 this option is obsolete and
-                            ignored. It is now possible to configure for each
---disable-new-rrs           RR type separately whether it is cacheable by pdnsd
-                            by editing the file src/rr_types.in. The comments
-                            in this file explain how to do this.
-
-                            Enforce strict RFC 2181 compliance.
-                            This will cause pdnsd to reject DNS answers with
---enable-strict-rfc2181     incorrect timestamp settings (multiple RRs of the
-                            same type and for the same domain with different
-                            TTLs). Normally not needed.
-
-                            This option is obsolete. Since version 1.2, pdnsd
---enable-underscores        places no restrictions on the types of characters
-                            in domain names (there are still a few restrictions
-                            for locally defined names, though).
-
-                            Specify random device; default: C Library random()
-                            PRNG
-                            pdnsd uses (pseudo-) random numbers as query IDs
-                            for security reasons (this makes forging DNS
-                            answers more difficult). This option controls where
-                            pdnsd gets these from. The default is the C library
-                            random() function, which is relatively weak. You
-                            can specify a device like /dev/urandom here if you
---with-random-device=       like; pdnsd will read random numbers from it
-device                      16-bit-wise. /dev/urandom is present under Linux
-                            and most BSD derivates. You should not use /dev/
-                            random - it is more secure, but may block and delay
-                            pdnsd's answers for a long time.
-                            You can specify arc4random to use the BSD
-                            arc4random() library function (default for FreeBSD
-                            target), which is considered safe.
-                            You can also specify random as device to use the C
-                            Library random() function (described above).
-
-                            Specify default user for pdnsd (default=nobody).
-                            This is the user that will be entered for the
---with-default-id=user      run_as option in the config file (see below) that
-                            will be installed during make install. You can
-                            change this any time in your config file.
-
-                            Specify debugging level. Normally you can safely
-                            switch debugging off by setting the level to 0.
-                            This will increase speed (although only marginally)
-                            and save space in the executable (only about 12kB).
-                            However, more significant may be the savings in
-                            stack space, especially if pdnsd is put under heavy
-                            load and there are many simultaneous running
-                            threads.
-                            Presently the only defined debug levels are in the
-                            range 0 - 9. Setting the level to 9 enables hex
---with-debug=level          dumps of the queries and replies pdnsd receives and
-                            should normally not be needed. Debug output will
-                            only be generated if you turn on special switches;
-                            it might be useful for debugging your config files,
-                            so I recommend using the default (1). However, if
-                            you use pdnsd under heavy load, a better strategy
-                            may be to compile one version of pdnsd without
-                            debug support (configured with --with-debug=0) for
-                            production use, and one version with with debug
-                            support (e.g. --with-debug=9) for diagnostic
-                            purposes.
-
---with-verbosity=level      Specify default message verbosity. The default
-                            should be ok.
-
-                            Enable RCS IDs in executables (default=disabled).
---enable-rcsids             For personal use, there is no need to do this. If
-                            you build rpm's, it might have advantages.
-
-                            Enable subsequent tcp queries. The DNS protocol
-                            standard requires that servers must be capable of
-                            answering multiple subsequent queries that are sent
-                            over the same tcp connection, and that the server
-                            may only close the connection by himself after a
-                            certain timeout. This feature is rarely used, but
---enable-tcp-subseq         may make denial-of-service attacks easier, as it
-                            allows for an attacker to hold a connection open a
-                            long time (although the attacker's IP is most
-                            likely revealed then). For full standard
-                            compliance, you should use this option. If you do
-                            not use --enable-tcp-server, is option is not
-                            honored.
-
-                            Specify default tcp query timeout after which the
-                            connection is closed if no full query has been
---with-tcp-qtimeout=secs    received. The default is 30s. You can also change
-                            this option at run time using the tcp_qtimeout
-                            config file option. If you do not use
-                            --enable-tcp-server, is option is not honored.
-
-                            Specify the default number of queries that can be
-                            executed in parallel. You can also change this
---with-par-queries=num      option at run time using the par_queries config
-                            file option. See the description of that option for
-                            an explanation of what it really does.
-                            The default for this option is 2.
-
-                            New in version 1.2.9b: Specify the maximum number
-                            of IP addresses that can be used per nameserver
-                            obtained from NS records (when resolving names
-                            recursively). Just one IP address per nameserver is
-                            sufficient in the vast majority of cases (and this
---with-max-nameserver-ips   was the strategy used by pdnsd in previous
-=num                        versions), but in rare cases this will cause
-                            unnecessary resolve failures if the address chosen
-                            for each nameserver happens to be unreachable while
-                            the other addresses would lead to successful
-                            resolution.
-                            The default for this option is 3.
-
-                            Added by Paul Rombouts: Use this option if you
-                            experience problems with signal handling under
-                            Linux. The usual symptom is that pdnsd fails to
-                            save the cache to disk, and /var/cache/pdnsd/
-                            pdnsd.cache remains empty. If you experience this
-                            kind of trouble, try reconfiguring with different
-                            values for the --with-thread-lib option. The
-                            allowable values are linuxthreads (or lt for
-                            short), linuxthreads2 (or lt2 for short), and nptl.
-                            By default the configure script tries to detect
---with-thread-lib=lib       automatically whether linuxthreads or nptl is more
-                            appropriate for your system, but the method used is
-                            not foolproof. Look for the line: checking if this
-                            is an NPTL-based system...
-                            If the automatic test mistakenly indentifies the
-                            thread library on your system as NPTL based, you
-                            should reconfigure with --with-thread-lib=lt and
-                            recompile. If the result of the automatic test is
-                            "no" or if --with-thread-lib=lt does not have the
-                            desired effect, try again using --with-thread-lib=
-                            lt2 .
-
-Normally, you will need only --prefix, --sysconfdir and --with-distribution. If
-you specify your distribution using --with-distribution, this has the following
-effects:
-
-  * An rc script is copied in the appropriate localtion, which enables pdnsd to
-    start at machine boot time (see 0.4)
-  * Distribution-specific portions might be included in the generated
-    pdnsd.spec file (only important if you want to build rpm archives
-    yourself).
-
-If you choose Generic, no rc script is installed, and a generic spec file is
-generated.
-Further instructions are in the INSTALL document in the pdnsd source directory.
-./configure --help will give you a list of all supported command line options.
-
-Note added by Paul Rombouts: Some people may want change the compiler
-optimization flag. I use the -O2 flag, but it might be safer to use a lower
-level of optimization or no optimization at all. In that case prefix the
-configure command with the desired compiler flags like this (assuming you're
-using a bash shell):
-
-CFLAGS="-O1 -Wall" ./configure ...
-
-
-0.3.3 Building & installing
-
-Type make in the source directory. Should work by now.
-To install, type make install or do the installation by hand (see 0.3.4).
-make install will do the following ($prefix is the prefix directory; see
-above):
-
- 1. copies pdnsd to $(prefix)/sbin/
- 2. copies pdnsd-ctl to $(prefix)/sbin/
- 3. copies docs/pdnsd.conf.sample (a sample configuration) to the pdnsd config
-    directory.
- 4. creates your cache directory if it is not there. After installation, you
-    should check the file permissions and create or edit /etc/pdnsd.conf to fit
-    your needs (see below). If you use the run_as option, please make sure that
-    your cache directory is owned by the user you specified with this option!
-
-You must be root for this installation!
-Security notes: never make the pdnsd cache directory writeable for untrusted
-users, or you will get several security holes: the users might modify the cache
-contents, or plant dangerous links.
-If you use a pidfile, you should be aware that you introduce security problems
-if you place the pidfile in a directory in a NFS filesystem that is writeable
-for untrusted users. Generally, the pidfile directory (typically /var/run)
-should not be writeable for untrusted users.
-
-0.3.4 Manual installation
-
-For a manual installation, you need to do the following steps:
-
- 1. Copy pdnsd and pdnsd-ctl from your build directory to an appropriate
-    location (e.g. /usr/sbin).
- 2. Copy docs/pdnsd.conf into the directory you want it to reside (/etc by
-    default, and change it according to your needs (see below).
- 3. Create your caching directory; default is /var/cache/pdnsd (you may change
-    this in your pdnsd.conf); Permissions should be at max rwxr-xr-x (if you
-    want to protect your cache and status socket, make it rwx------).
-
-Thats it!
-
-0.4 Start at boot time
-
-In the src/rc folder of the pdnsd distribution are start scripts for pdnsd
-designed for different Linux distros. There are scripts for SuSE, Redhat,
-Debian, Arch Linux and Slackware now.
-The start scripts are automatically installed during RPM install, and also
-during make install if you specified your distro.
-For Slackware Linux there is a start-up script contributed by Nikola Kotur, but
-presently it must be installed manually. See src/rc/README and src/rc/Slackware
-/rc.pdnsd for details.
-
-0.4.1 SuSE Linux startup
-
-rc/SuSE/pdnsd is a start script for SuSE Linux. It was tested for 6.? but
-should run on some versions below. You can do make install as root in the rc/
-SuSE directory to install it, or you can install manually:
-
-manual installation
-
-For manual installation, copy rc/SuSE/pdnsd into /sbin/init.d/, go to /sbin/
-init.d/rc2.d/ and create there the following two symlinks:
-S11pdnsd to ../pdnsd (do ln -s ../pdnsd S11pdnsd in that dir)
-K34pdnsd to ../pdnsd (do ln -s ../pdnsd K34pdnsd in that dir)
-The numbers dictate the order different services are started and might need to
-be modified. Then edit your /etc/rc.config file and add the line START_PDNSD=
-yes to start pdnsd at boot time.
-
-If you used the make install command, START_PDNSD=yes has been appended to your
-/etc/rc.config file, causing pdnsd to be started at boot time. If you don't
-want that, change the yes into no.
-
-This start script was created from /sbin/init.d/skeleton by me, so the most is
-copyrighted by SuSE. They put it under the GPL, however, so the license stated
-in COPYING also applies to this script. There is NO WARRANTY OF ANY KIND on
-these scripts. This is no official SuSE script, and SuSE naturally does NO
-support for it.
-
-0.4.2 Red Hat Linux startup
-
-rc/Redhat/pdnsd is a start script for Red Hat Linux. It was contibuted by
-Torben Janssen.
-This was tested for 6.1 but should run on 5.0+. You can do make install as root
-in the rc/Redhat directory to install it, or you can install manually:
-
-manual installation
-
-For manual installation, copy rc/Redhat/pdnsd into /etc/rc.d/init.d/
-Then go to /etc/rc.d/rc3.d and create there the following symlink:
-S78pdnsd -> ../init.d/pdnsd (do ln -f -s ../init.d/pdnsd S78pdnsd in that dir)
-Then go to /etc/rc.d/rc0.d and create there the following symlink:
-K78pdnsd -> ../init.d/pdnsd (do ln -f -s ../init.d/pdnsd K78pdnsd in that dir)
-Then go to /etc/rc.d/rc6.d and create there the following symlink:
-K78pdnsd -> ../init.d/pdnsd (do ln -f -s ../init.d/pdnsd K78pdnsd in that dir)
-
-This script is also covered by license stated in COPYING. Again, there is NO
-WARRANTY OF ANY KIND on these scripts. This is no offical Redhat script, and
-Redhat naturally does NO support for it
-
-0.5 Notes for FreeBSD users
-
-The special handling of ISDN ppp devices is only supported on Linux. It is not
-needed in FreeBSD, the normal device handling also works fine with isdn4bsd
-devices.
-When compiled for FreeBSD, pdnsd as a small RFC compatability issue: RFC2181
-demands answers on dns querys to be sent with the same source address the query
-packet went to. In seldom cases, this will not be the case, because the kernel
-selects the source address depending on the interface that was used for sending
-the answer.
-Setting the source address currently does not work for IPv4. I have written a
-kernel patch that will provide an easy way to program this. We'll see if or
-when it gets commited.
-
-
-
-1 Invocation
-
-When invoking pdnsd, you can specify various options at the command line.
-Command line options always override config file options. The various --noX
-options are present to override config file options.
-
-pdnsd --help (or -h) gives you an overview of the pdnsd command line options.
-
-pdnsd --version (or -V for short) prints licence and version information.
-
-To start pdnsd as background daemon, specifiy --daemon (or -d for short) on the
-command line. Diagnostic and error messages after the actual daemon start will
-be printed to the syslog instead of the console. --nodaemon will disable this.
-
-When starting pdnsd as a daemon, the -p option may be helpful: It writes the
-pid of the server process to the file of the name given as argument to this
-option.
-Example: pdnsd -d -p /var/run/pdnsd.pid
-
-If you want to specify a configuration file other than /etc/pdnsd.conf, specify
--c or --config-file on the command line, followed by a filename.
-
-If pdnsd was compiled with debugging support, you may specify -g or --debug on
-the command line. This will cause extra diagnostic messages to be printed. When
-pdnsd runs in daemon mode, the messages will be written to the pdnsd.debug file
-in your cache directory. --nodebug disables debugging.
-
-pdnsd -vn sets the verbosity level of pdnsd. n is normally a digit from 0 to 3,
-where 0 means normal operation, while 3 will most verbose. Level 9 can be used
-in combination with the --debug option for very extensive debug information.
-Note: The current implementation mostly ignores the verbosity level, so you may
-not notice much difference between the various levels.
-
-The option -s or --status enables the status control socket. This is a named
-socket in the cache directory called pdnsd.status. This socket allows run-time
-configuration of pdnsd using the utility pdnsd-ctl. See below for more details
-about pdnsd-ctl. --nostatus disables status control. See also the configuration
-option status_ctl in the global section.
-
-The option --notcp disables the seldom needed TCP server thread, which may save
-you some resources. -t or --tcp will enable it. See also the tcp_server
-configuration option.
-
-Using the -m option, you can select the method pdnsd uses to query other name
-servers. Following methods are supported (see also the query_method
-configuration option):
--muo: pdnsd will use UDP only. This is the fastest method, and should be
-supported by all name servers on the Internet.
--mto: pdnsd will use TCP only. TCP queries usually take longer time than UDP
-queries, but are more secure against certain attacks, where an attacker tries
-to guess your query id and to send forged answers. TCP queries are not
-supported by some name servers.
--mtu: pdnsd will try to use TCP, and will fall back to UDP if its connection is
-refused or times out.
--mut: New in version 1.2.5: pdnsd will try to use UDP, and will repeat the
-query using TCP if the UDP reply was truncated (i.e. the tc bit is set). This
-is the behaviour recommended by the DNS standards.
-
-The -4 option switches to IPv4 mode, providing pdnsd was compiled with IPv4
-support.
-The -6 option switches to IPv6 mode, providing pdnsd was compiled with IPv6
-support.
-The -a option is only available when pdnsd was compiled with both IPv4 and IPv6
-support. With this option, pdnsd will try to detect automatically if a system
-supports IPv6, and fall back to IPv4 otherwise.
-
-With -i prefix or --ipv4_6_prefix=prefix you can set the prefix pdnsd uses
-(when running in IPv6 mode) to map IPv4 addresses in the configuration file to
-IPv6 addresses. There is also a corresponding option for the config file, see
-below. Must be a valid IPv6 address. The default is ::ffff:0.0.0.0
-
-2 The configuration file
-
-This section describes the layout of the configuration file and the available
-configuration options. The default location of the file is /etc/pdnsd.conf.
-This may be changed with the -c command line option. An example pdnsd.conf
-comes with the pdnsd distribution in the docs directory and will be installed
-to /etc/ by make install.
-
-2.1 Layout
-
-The configuration file is divided into sections. Each section is prefixed with
-the section name and opening curlies ({) and closed with closing curlies (}).
-In each section, configuration options can be given in the form
-option_name=option_value;
-Option value may be a string literal, a number, a time specification or a
-constant. In previous versions of pdnsd strings had to be enclosed in quotes
-("), but since version 1.1.10 this is no longer necessary, unless a string
-contains a special character such as whitespace, a token that normally starts a
-comment, or one of ",;{}\". Since version 1.2.9 a backslash (\) inside a string
-is interpreted as an escape character, so it is possible to include special
-characters in strings (both quoted or unquoted) by preceding them with a
-backslash. Some escape sequences are in interpreted as in the C programming
-language, e.g. \t becomes a tab, \n becomes a new-line control char.
-A time specification consists a sequence of digits followed by a one-letter
-suffix. The following suffixes are recognized: s (seconds), m (minutes), h
-(hours), d (days) and w (weeks). If the suffix is missing, seconds are assumed.
-If several time specifications are concatenated, their values are added
-together; e.g. 2h30m is interpreted as 2*60*60 + 30*60 = 9000 seconds.
-Some options take more than one value; in this case, the values are separated
-with commas.
-If you may supply one of a set of possible values to an option, this is noted
-in the documentation as (option1|option2|option3|...)
-The constants true|false and yes|no are accepted as synonyms for the constants
-on|off.
-Comments may be enclosed in /* and */, nested comments are possible. If the #
-sign or two slashes (//) appear in the configuration file, everything from
-these signs to the end of the current line is regarded as a comment and
-ignored.
-There are examples for nearly all options in the sample config file.
-
-2.1.1 global Section
-
-The global section specifies parameters that affect the overall behaviour of
-the server. If you specify multiple global sections, the settings of those
-later in the file will overwrite the earlier given values.
-These are the possible options:
-
-
-perm_cache=(number|off);
-Switch the disk cache off or supply a maximum cache size in kB. If the disk
-cache is switched off, 8 bytes will still be written to disk. The memory cache
-is always 10kB larger than the file cache. This value is 2048 (2 MB) by
-default.
-
-cache_dir=string;
-Set the directory you want to keep the cache in. The default is "/var/cache/
-pdnsd" (unless pdnsd was compiled with a different default).
-
-server_port=number;
-Set the server port. This is especially useful when you want to start the
-server and are not root. Note that you may also not specify uptest=ping in the
-server section as non-root.
-The default port is 53, the RFC-standard one. Note that you should only use
-non-standard ports when you only need clients on your machine to communicate
-with the server; others will probably fail if the try to contact the server on
-the basis of an NS record, since the A record that supplies the address for
-(among others) name servers does not have a port number specification.
-
-server_ip=string;
-or
-interface=string;
-Set the IP address pdnsd listens on for requests. This can be useful when the
-host has several interfaces and you want pdnsd not to listen on all interfaces.
-For example, it is possible to bind pdnsd to listen on 127.0.0.2 to allow pdnsd
-to be a forwarder for BIND. The default setting for this option is server_ip=
-any, which means that pdnsd will listen on all of your local interfaces.
-Presently you can only specify one address here; if you want pdnsd to listen on
-multiple interfaces but not all you will have to specify server_ip=any and use
-firewall rules to restrict access.
-The IP address used to need quotation marks around it, but since version 1.1.10
-this is no longer necessary.
-If pdnsd has been compiled with both IPv4 and IPv6 support, and you want to
-specify an IPv6 address here, then unless pdnsd was compiled to start up in
-IPv6 mode by default, you will need to use the -6 command-line option or set
-run_ipv4=off first (see below) in order to ensure that the IPv6 address is
-parsed correctly.
-If pdnsd is running in IPv6 mode and you specify an IPv4 address here, it will
-automatically be mapped to an IPv6 address.
-New in version 1.2: You may also give the name of an interface such as "lo" or
-"eth0" here, instead of an IP address (this has been tested on Linux, and may
-or may not work on other platforms). pdnsd will not bind to the interface name,
-but will look up the address of the interface at start-up and listen on that
-address. If the address of the interface changes while pdnsd is running, pdnsd
-will not notice that. You will need to restart pdnsd in that case.
-
-outgoing_ip=string;
-or
-outside_interface=string;
-New in version 1.2.9: Set the IP address of the interface used by pdnsd for
-outgoing queries. This can be useful when the host has several interfaces and
-you want pdnsd to send outgoing queries via only one of them. For example, if
-pdnsd is running on a host with one interface with IP address 192.168.1.1
-connected to the local network, and another with IP address 123.xxx.yyy.zzz
-connected to the internet, you may specify server_ip=192.168.1.1 and
-outgoing_ip=123.xxx.yyy.zzz to enforce that pdnsd only responds to queries
-received from the local network, and only sends outgoing queries via the
-interface connected to the internet.
-The default setting for this option is any, which means that the kernel is free
-to decide which interface to use. Like with the server_ip option, you may also
-give the name of an interface here, instead of an IP address.
-
-linkdown_kluge=(on|off);
-This option enables a kluge that some people might need: when all servers are
-marked down, with this option set the cache is not even used when a query is
-received, and a DNS error is returned in any case. The only exception from this
-is that local records (as specified in rr and source sections are still served
-normally. In general, you probably want to get cached entries even when the
-network is down, so this defaults to off.
-
-max_ttl=timespec;
-This option sets the maximum time a record is held in cache. All dns resource
-records have a time to live field that says for what period of time the record
-may be cached before it needs to be requeried. If this is more than the value
-given with max_ttl, this time to live value is set to max_ttl. This is done to
-prevent records from being cached an inappropriate long period of time, because
-that is almost never a good thing to do. Default is 604800s (one week).
-
-min_ttl=timespec;
-This option sets the minimum time a record is held in cache. All dns resource
-records have a time to live field that says for what period of time the record
-may be cached before it needs to be requeried. If this is less than the value
-given with min_ttl, this time to live value is set to min_ttl. Default is 120
-seconds.
-
-neg_ttl=timespec;
-This option sets the time that negatively cached records will remain valid in
-the cache if no time to live can be determined. This is always the case when
-whole domains are being cached negatively, and additionally when record types
-are cached negatively for a domain for which no SOA record is known to pdnsd.
-If a SOA is present, the ttl of the SOA is taken.
-
-neg_rrs_pol=(on|off|auth|default);
-This sets the RR set policy for negative caching; this tells pdnsd under which
-circumstances it should cache a record type negatively for a certain domain.
-off will turn the negative caching of record types off, on will always add a
-negative cache entry when a name server did not return a record type we asked
-it for, and auth will only add such entries if the answer came from an
-authoritative name server for that domain.
-New in version 1.2.8: The default setting will add a negatively cached record
-if either the answer was authoritive or the answer indicated the name server
-had "recursion available" while the query explicitly requested such recursion.
-The preset is "default" (used to be auth).
-
-neg_domain_pol=(on|off|auth);
-This is analogue to neg_rrs_pol for whole domain negative caching. It should be
-safe to set this on, because I have not seen a caching server that will falsely
-claim that a domain does not exist.
-The default is auth.
-
-run_as=string;
-This option allows you to let pdnsd change its user and group id after
-operations that needed privileges have been done. This helps minimize security
-risks and is therefore recommended. The supplied string gives a user name whose
-user id and primary group id are taken.
-A little more details: after reading the config file, becoming a daemon (if
-specified) and starting the server status thread, the main thread changes its
-gid and uid, as do all newly created threads thereafter. By taking another uid
-and gid, those threads run with the privileges of the specified user. Under
-Linux and FreeBSD, the server status thread runs with the original privileges
-only when the strict_setuid option is set to off (see below, on by default),
-because these may be needed for exec uptests. The manager thread also retains
-its original privileges in this case. You should take care that the user you
-specify has write permissions on your cache file and status pipe (if you need a
-status pipe). You should look out for error messages like "permission denied"
-and "operation not permitted" to discover permission problems.
-
-strict_setuid=(on|off);
-When used together with the run_as option, this option lets you specify that
-all threads of the program will run with the privileges of the run_as user.
-This provides higher security than the normal run_as option, but is not always
-possible. See the run_as option for further discussion.
-This option is on by default.
-Note that this option has no effect on Non-Linux systems.
-
-paranoid=(on|off);
-Normally, pdnsd queries all servers in recursive mode (i.e. instructs servers
-to query other servers themselves if possible, and to give back answers for
-domains that may not be in its authority), and accepts additional records with
-information for servers that are not in the authority of the queried server.
-This opens the possibility of so-called cache poisoning: a malicious attacker
-might set up a dns server that, when queried, returns forged additional
-records. This way, he might replace trusted servers with his own ones by making
-your dns server return bad IP addresses. This option protects you from cache
-poisoning by rejecting additional records that do not describe domains in the
-queried servers authority space and not doing recursive queries any more. An
-exception to this rule are the servers you specify in your config file, which
-are trusted.
-The penalty is a possible performance decrease, in particular, more queries
-might be necessary for the same operation.
-You should also notice that there may be other similar security problems, which
-are essentially problems of the DNS, i.e. any "traditional" server has them
-(the DNS security extensions solve these problems, but are not widely
-supported). One of this vulnerabilities is that an attacker may bombard you
-with forged answers in hopes that one may match a query you have done. If you
-have done such a query, one in 65536 forged packets will be succesful (i.e. an
-average packet count of 32768 is needed for that attack). pdnsd can use TCP for
-queries, which has a slightly higher overhead, but is much less vulnerable to
-such attacks on sane operating systems. Also, pdnsd chooses random query ids,
-so that an attacker cannot take a shortcut. If the attacker is able to listen
-to your network traffic, this attack is relatively easy, though.
-This vulnerability is not pdnsd's fault, and is possible using any conventional
-name server (pdnsd is perhaps a little more secured against this type of
-attacks if you make it use TCP).
-The paranoid option is off by default.
-
-ignore_cd=(on|off);
-New in version 1.2.8: This option lets you specify that the CD bit of a DNS
-query will be ignored. Otherwise pdnsd will reply FORMERR to clients that set
-this bit in a query. It is safe to enable this option, as the CD bit refers to
-'Checking Disabled' which means that the client will accept non-authenticated
-data.
-This option is on by default. Turn it off if you want the old behaviour (before
-version 1.2.8).
-
-scheme_file=string;
-In addition to normal uptests, you may specify that some servers shall only be
-queried when a certain pcmcia-cs scheme is active (only under linux). For that,
-pdnsd needs to know where the file resides that holds the pcmcia scheme
-information. Normally, this is either /var/lib/pcmcia/scheme or /var/state/
-pcmcia/scheme.
-
-status_ctl=(on|off);
-This has the same effect as the -s command line option: the status control is
-enabled when on is specified.
-Added by Paul Rombouts: Note that pdnsd-ctl allows run-time configuration of
-pdnsd, even the IP addesses of the name servers can be changed. If you're not
-using pdnsd-ctl and you want maximum security, you should not enable this
-option. It is disabled by default.
-
-daemon=(on|off);
-This has the same effect as the -d command line option: the daemon mode is
-enabled when on is specified.
-Default is off.
-
-tcp_server=(on|off);
-tcp_server=on has the same effect as the -t or --tcp command-line option: it
-enables TCP serving. Similarly, tcp_server=off is like the --notcp command-line
-option.
-Default is on.
-
-pid_file=string;
-This has the same effect as the -p command line option: you can specify a file
-that pdnsd will write its pid into when it starts in daemon mode.
-
-verbosity=number;
-This has the same effect as the -v command line option: you can set the
-verbosity of pdnsd's messages with it. The argument is a number between 0 (few
-messages) to 3 (most messages).
-
-query_method=(tcp_only|udp_only|tcp_udp|udp_tcp);
-This has the same effect as the -m command line option. Read the documentation
-for the command line option on this. tcp_only corresponds to the to, udp_only
-to the uo, tcp_udp to the tu and udp_tcp to the ut argument of the command line
-option.
-If you use query_method=tcp_udp, it is recommended that you also set the global
-timeout option to at least twice the longest server timeout.
-
-run_ipv4=(on|off);
-This has the same effect as the -4 or -6 command line option: if on is
-specified, IPv4 support is enabled, and IPv6 support is disabled (if
-available). If off is specified, IPv4 will be disabled and IPv6 will be
-enabled. For this option to be meaningful, pdnsd needs to be compiled with
-support for the protocol you choose. If pdnsd was compiled with both IPv4 and
-IPv6 support, and you want to include IPv6 addresses in the configuration file,
-you will probably need to specify run_ipv4=off first to ensure that the IPv6
-addresses are parsed correctly.
-
-debug=(on|off);
-This has the same effect as the -g command line option: the debugging messages
-are enabled when on is specified.
-
-ctl_perms=number;
-This option allows you to set the file permissions that the pdnsd status
-control socket will have. These are the same as file permissions. The owner of
-the file will be the run_as user, or, if none is specified, the user who
-started pdnsd. If you want to specify the permissions in octal (as usual),
-don't forget the leading zero (0600 instead of 600!). To use the status
-control, write access is needed. The default is 0600 (only the owner may read
-or write).
-Please note that the socket is kept in the cache directory, and that the cache
-directory permissions might also need to be adjusted. Please ensure that the
-cache directory is not writeable for untrusted users.
-
-proc_limit=number;
-With this option, you can set a limit on the pdnsd threads that will be active
-simultaneously. If this number is exceeded, queries are queued and may be
-delayed some time. See also the procq_limit option.
-The default for this option is 40.
-
-procq_limit=number;
-When the query thread limit proc_limit is exceeded, connection attempts to
-pdnsd will be queued. With this option, you can set the maximum queue length.
-If this length is also exceeded, the incoming queries will be dropped. That
-means that tcp connections will be closed and udp queries will just be dropped,
-which will probably cause the querying resolver to wait for an answer until it
-times out.
-See also the proc_limit option. A maximum of proc_limit+procq_limit query
-threads will exist at any one time (plus 3 to 6 threads that will always be
-present depending on your configuration).
-The default for this option is 60.
-
-tcp_qtimeout=timespec;
-This option sets a timeout for tcp queries. If no full query has been received
-on a tcp connection after that time has passed, the connection will be closed.
-The default is set using the --with-tcp-qtimeout option to configure.
-
-par_queries=number;
-This option used to set the maximum number of remote servers that would be
-queried simultaneously, for every query that pdnsd receives.
-Since version 1.1.11, the meaning of this option has changed slightly. It is
-now the increment with which the number of parallel queries is increased when
-the previous set of servers has timed out. For example, if we have a list
-server1, server2, server3, etc. of available servers and par_queries=2, then
-pdnsd will first send queries to server1 and server2, and listen for responses
-from these servers.
-If these servers do not send a reply within their timeout period, pdnsd will
-send additional queries to server3 and server4, and listen for responses from
-server1, server2, server3 and server4, and so on until a useful reply is
-received or the list is exhausted.
-In the worst case there will be pending queries to all the servers in the list
-of available servers. We may be using more system resources this way (but only
-if the first servers in the list are slow or unresponsive), but the advantage
-is that we have a greater chance of catching a reply. After all, if we wait
-longer anyway, why not for more servers.
-See also the explanation of the global timeout option below.
-1 or 2 are good values for this option. The default is set at compile time
-using the --with-par-queries option to configure.
-
-timeout=timespec;
-This is the global timeout parameter for dns queries. This specifies the
-minimum period of time pdnsd will wait after sending the first query to a
-remote server before giving up without having received a reply. The timeout
-options in the configuration file are now only minimum timeout intervals.
-Setting the global timeout option makes it possible to specify quite short
-timeout intervals in the server sections (see below). This will have the effect
-that pdnsd will start querying additional servers fairly quickly if the first
-servers are slow to respond (but will still continue to listen for responses
-from the first ones). This may allow pdnsd to get an answer more quickly in
-certain situations.
-If you use query_method=tcp_udp it is recommended that you make the global
-timeout at least twice as large as the largest server timeout, otherwise pdnsd
-may not have time to try a UDP query if a TCP connection times out.
-Default value is 0.
-
-randomize_recs=(on|off);
-If this option is turned on, pdnsd will randomly reorder the cached records of
-one type when creating an answer. This supports round-robin DNS schemes and
-increases fail safety for hosts with multiple IP addresses, so this is usually
-a good idea.
-On by default.
-
-query_port_start=(number|none);
-If a number is given, this defines the start of the port range used for queries
-of pdnsd. The value given must be >= 1024. The purpose of this option is to aid
-certain firewall configurations that are based on the source port. Please keep
-in mind that another application may bind a port in that range, so a stateful
-firewall using target port and/or process uid may be more effective. In case a
-query start port is given pdnsd uses this port as the first port of a specified
-port range (see query_port_end) used for queries. pdnsd will try to randomly
-select a free port from this range as local port for the query.
-To ensure that there are enough ports for pdnsd to use, the range between
-query_port_start and query_port_end should be adjusted to at least (par_queries
-* proc_limit). A larger range is highly recommended for security reasons, and
-also because other applications may allocate ports in that range. If possible,
-this range should be kept out of the space that other applications usually use.
-The default for this option is 1024. Together with the default value of
-query_port_end, this makes it the hardest for an attacker to guess the source
-port used by the pdnsd resolver. If you specify none here, pdnsd will let the
-kernel choose the source port, but this may leave pdnsd more vulnerable to an
-attack.
-
-query_port_end=number;
-Used if query_port_start is not none. Defines the last port of the range
-started by query_port_start used for querys by pdnsd. The default is 65535,
-which is also the maximum legal value for this option. For details see the
-description of query_port_start.
-
-delegation_only=string;
-Added by Paul Rombouts: This option specifies a "delegation-only" zone. This
-means that if pdnsd receives a query for a name that is in a subdomain of a
-"delegation-only" zone but the remote name server returns an answer with an
-authority section lacking any NS RRs for subdomains of that zone, pdnsd will
-answer NXDOMAIN (unknown domain). This feature can be used for undoing the
-undesired effects of DNS "wildcards". Several "delegation-only" zones may be
-specified together. If you specify root servers in a server section it is
-important that you set root_server=on in such a section.
-Example:
-
-delegation_only="com","net";
-
-This feature is off by default. It is recommended that you only use this
-feature if you actually need it, because there is a risk that some legitimate
-names will be blocked, especially if the remote name servers queried by pdnsd
-return answers with empty authority sections.
-
-ipv4_6_prefix=string;
-This option has the same effect as the -i command-line option. When pdnsd runs
-in IPv6 mode, this option specifies the prefix pdnsd uses to convert IPv4
-addresses in the configuration file (or addresses specified with pdnsd-ctl) to
-IPv6-mapped addresses. The string must be a valid IPv6 address. Only the first
-96 bits are used. Note that this only effects the parsing of IPv4 addresses
-listed after this option.
-The default is "::ffff.0.0.0.0".
-
-use_nss=(on|off);
-If this option is turned on, pdnsd will call initgroups() to set up the group
-access list, whenever pdnsd changes its user and group id (see run_as option).
-There is a possible snag, though, if initgroups() uses NSS (Name Service
-Switch) and NSS in turn uses DNS. In such a case you may experience lengthy
-timeouts and stalls. By setting use_nss=off, you can disable the initgroups()
-call (only possible in versions 1.2.5 and later).
-This option was contributed by Jan-Marek Glogowski.
-On by default.
-
-udpbufsize=number;
-New in version 1.2.9: This option sets the upper limit on the size of UDP DNS
-messages. The default is 1024.
-See also the edns_query server option below.
-
-
-2.1.2 server Section
-
-Each server section specifies a set of name servers that pdnsd should try to
-get resource records or authoritative name server information from. The servers
-are queried in the order of their appearance (or parallel to a limited extend).
-If one fails, the next one is taken and so on.
-You probably want to specify the dns server in your LAN, the caching dns
-servers of your internet provider or even a list of root servers in one or more
-server sections.
-The supported options in this section are:
-
-
-label=string;
-Specify a label for the server section. This can be used to refer to this
-section when using pdnsd-ctl, the pdnsd control utility.
-You can give several server sections the same label, but if you want to change
-the addresses of a server section (see ip option below) during run-time with
-"pdnsd-ctl server label up dns1,dns2,...", the label must be unique.
-
-ip=string;
-Give the IP (the address, not the host name) of the server.
-Multiple IP addresses can be given per server section. This can be done by
-entering multiple lines of the form ip=string; or a single line like this:
-
-ip=string,string,string;
-
-IP addresses do not have to be specified in the configuration file. A server
-section without IP addresses will remain inactive until it is assigned one or
-more addresses with pdnsd-ctl, the pdnsd control utility.
-If pdnsd has been compiled with both IPv4 and IPv6 support, any IPv6 addresses
-you specify here will be skipped with a warning message, unless pdnsd is
-running in IPv6 mode. Thus, unless pdnsd was compiled to startup in IPv6 mode
-by default, you need to use the command-line option -6 or set run_ipv4=off
-first (see global section) in order to ensure that IPv6 addresses are parsed
-correctly.
-If pdnsd is running in IPv6 mode and you specify an IPv4 address here, it will
-automatically be mapped to an IPv6 address.
-
-file=string;
-New in version 1.2: This option allows you to give the name of a
-resolv.conf-style file. Of the lines beginning with the nameserver keyword, the
-second field will be parsed as an IP address, as if it were specified with the
-ip= option. The remaining lines will be ignored. If the contents of the file
-changes while pdnsd is running, you can make pdnsd aware of the changes through
-the use of pdnsd-ctl, the pdnsd control utility. This is usually most
-conveniently done by placing the command "pdnsd-ctl config" in a script that is
-automatically run whenever the DNS configuration changes.
-For example, suppose you have a ppp client that writes the DNS configuration
-for your ISP to the file /etc/ppp/resolv.conf and runs the script /etc/ppp/
-ip-up when a new connection is established. One way of ensuring that pdnsd is
-automatically reconfigured is to add a server section in the config file with
-file=/etc/ppp/resolv.conf and to add the command "pdnsd-ctl config" to /etc/ppp
-/ip-up.
-
-port=number;
-Give the port the remote name server listens on. Default is 53 (the official
-dns port)
-
-uptest=(ping|none|if|dev|diald|exec|query);
-Determine the method to check whether the server is available. Currently
-defined methods are:
-
-  * ping: Send an ICMP_ECHO request to the server. If it doesn't respond within
-    the timeout, it is regarded to be unavailable until the next probe.
-  * none: The availability status is not changed, only the time stamp is
-    updated.
-  * if: Check whether the interface (specified in the interface= option) is
-    existent, up and running. This currently works for all "ordinary" network
-    interfaces, interfaces that disappear when down (e.g. ppp?), and
-    additionally for Linux isdn interfaces (as of kernel 2.2). Note that you
-    need a /dev/isdninfo device file (major#45, minor#255), or the isdn uptest
-    will always fail.
-  * dev and diald: Perform an if uptest, and, if that was succesful,
-    additionally check whether a program is running that has locked a given
-    (modem-) device. The needed parameters are an interface (specified as for
-    the if uptest, e.g. "ppp0") and a device relative to /dev (e.g. "modem" for
-    /dev/modem specified using the device= option. pdnsd will then look for a
-    pid file for the given interface in /var/lock (e.g. /var/run/ppp0.pid) and
-    for a lockfile for the given device (e.g. /var/lock/LCK..modem), and then
-    test whether the locking process is the process that created the pid file
-    and this process is still alive. If this is the case, the normal if uptest
-    is executed for the given interface.
-    The dev option is for pppd dial-on-demand, diald is the same for diald
-    users.
-  * exec: Executes a given command in the /bin/sh shell (as /bin/sh -c
-    <command>) and evaluates the result (the return code of the last command)
-    in the shell's way of handling return codes, i.e. 0 indicates success, all
-    other indicate failure. The shell's process name will be uptest_sh. The
-    command is given with the uptest_cmd option (see below). For secuity
-    issues, also see that entry.
-  * query: New in version 1.2: This works like the ping test, except it sends
-    an (empty) DNS query to the remote server. If the server sends a
-    well-formed response back within the timeout period (except SERVFAIL), it
-    will be regarded as available. This test is useful if a remote server does
-    not respond to ICMP_ECHO requests at all, which unfortunately is quite
-    common these days. It can also happen that a remote server is online but
-    ignores empty DNS queries. Then you will need the set the query_test_name
-    option (see below). In many cases this test will be a more reliable
-    indicator of availability than the ones mentioned before.
-
-The default value is none.
-
-NOTE: If you use on-demand dialing, use none, if, dev, diald or exec, since
-ping or query will send packets in the specified interval and the interface
-will thus frequently dial!
-
-ping_timeout=number;
-Sets the timeout for the ping test in tenths of seconds (this unit is used for
-legacy reasons; actually the current implementation is only accurate to a
-second).
-The default is 600 (one minute).
-
-ping_ip=string;
-The IP address for the ping test. The default is the IP of the name server.
-
-query_test_name=string;
-New in version 1.2.9: Sets the name to be queried when using uptest=query
-availability test. If the string is the unquoted constant none, an empty query
-is used (this the default), otherwise a query of type A will be sent for the
-domain name specified here. It is not necessary for the domain name to exist or
-have a record of type A in order for the uptest to succeed.
-If the the remote server ignores empty queries, you will probably want to set
-query_test_name="." (the root domain).
-
-uptest_cmd=string,string;
-or
-uptest_cmd=string;
-Sets the command for the uptest=exec function to the first string. If the
-second string is given, it specifies a user with whose user id and primary
-group id the command is executed.
-This is especially useful if you are executing the server as root, but do not
-want the uptest to be performed with root privileges. In fact, you should never
-execute the uptest as root if you can help it.
-If the server is running setuid or setgid, the privileges thus gained are
-attempted to be dropped even before changing identity to the specified user to
-prevent setuid/gid security holes (otherwise, any user might execute commands
-as root if you setuid the executable).
-Note that this is not always possible, and that pdnsd should never be installed
-as setuid or setgid. The command is executed using /bin/sh, so you should be
-able to use shell builtin commands.
-
-interval=(timespec|onquery|ontimeout);
-Sets the interval for the server up-test. The default is 900 seconds; however,
-a test is forced when a query times out and the timestamp is reset then.
-If you specify onquery instead of a timeout, the interface will be tested
-before every query. This is to prevent automatically dialing interfaces (diald/
-pppd or ippp) to dial on dns queries. It is intended to be used in connection
-with an interface-testing uptest ;-)
-Note that using uptest=exec, you might run into performance problems on slow
-machines when you use that option. DON'T use onquery with uptest=ping or uptest
-=query, as it may cause delays if the server does not answer (btw, it doesn't
-make sense anyway). Note also that using onquery is no guarantee that the
-interface will not be used. When another (reachable) dns server tells pdnsd to
-query a third dns server for data, pdnsd will do that and has no means of
-checking whether this will dial up the interface or not. This however should be
-a rare situation.
-New in version 1.2.3: A third possibility is to specify interval=ontimeout. In
-this case the server is not tested at startup/reconfiguration, nor at regular
-intervals, but only after a DNS query to a server times out. Certain types of
-network problems such as a refused connection will also cause the server to be
-considered unavailable. However, once a server is declared dead it is never
-considered again unless it is revived using a pdnsd-ctl config or server
-command. The idea behind this option is to minimize uptests by assuming all
-servers are available until there is reason to believe otherwise.
-
-interface=string;
-The network interface (or network device, e.g. "eth0") for the uptest=if
-option. Must be specified if uptest=if is given.
-
-device=string;
-The (modem-) device that is used for the dev uptest. If you use this for a
-dial-on-demand ppp uptest (together with uptest=dev), you need to enter the
-device you are using for your pppd here, e.g. modem for /dev/modem.
-Must be specified if uptest=dev is given.
-
-timeout=timespec;
-Set the timeout for the dns query. The default is 120 seconds. You probably
-want to set this lower.
-Timeouts specified in the configuration file are only treated as the minimum
-period of time to wait for a reply. A queries to a remote server are not
-canceled until a useful reply has been received, or all the other queries have
-timed out or failed.
-If you have also set the global timeout option, you may consider setting a
-fairly small value here. See the explanation of the timeout option in the
-global section for what that means.
-
-purge_cache=(on|off);
-In every fetched dns record, there is a cache timeout given, which specifies
-how long the fetched data may be cached until it needs to be reloaded. If
-purge_cache is set to off, the stale records are not purged (unless the cache
-size would be exceeded, in this case the oldest records are purged). Instead,
-they are still served if they cannot succesfully be updated (e.g. because all
-servers are down).
-Default is off.
-
-caching=(on|off);
-Specifies if caching shall be performed for this server at all. Default is on.
-
-lean_query=(on|off);
-Specifies whether to use the "lean" query mode. In this mode, only the
-information actually queried from pdnsd is resolved and cached. This has the
-advantage that usually less cache space is used and the query is usually
-faster. In 90% of the cases, only address (A) records are needed anyway. If
-switched off, pdnsd will always cache all data about a host it can find and
-will specifically ask for all available records (well, at least it is a good
-approximation for what it really does ;-) This will of course increase the
-answer packet sizes.
-Some buggy name servers may not deliver CNAME records when not asked for all
-records. I do not know if such servers are around, but if you have trouble
-resolving certain host names, try turning this option off.
-A last note: If you use multiple pdnsd's that access each other, turning this
-option on is probably a big win.
-This on by default.
-
-edns_query=(on|off);
-New in version 1.2.9: Specifies whether to use EDNS (Extension mechanisms for
-DNS) for outgoing queries. Currently this is only useful for allowing UDP
-message sizes larger than 512 bytes. Note that setting this option on can give
-problems in combination with some legacy systems or software, including,
-embarrassingly enough, previous versions of pdnsd.
-The default is off, but if your network can handle UDP payloads significantly
-larger than 512 bytes, the recommended value is on.
-Note that this option only effects outgoing queries. If pdnsd receives a query
-using EDNS, it will reply using EDNS regardless of the value of this option.
-See also the udpbufsize option above.
-
-scheme=string;
-You can specify a pcmcia-cs scheme that is used in addition to the uptests. If
-you specify a scheme here, the server this section is for will only be queries
-if the given scheme is active. Shell wildcards (* and ?) are allowed in the
-string under their special meanings. You need to use the scheme_file option on
-the global section to make this option work.
-
-preset=(on|off);
-This allows you to specify the initial state of a server before any uptest is
-performed. on specifies that the server is regarded available. The default is
-on. This is especially useful when you set uptest=none; and want to change the
-status of a server only via pdnsd-ctl.
-
-proxy_only=(on|off);
-When this option is set to on, answers given by the servers are always
-accepted, and no other servers (as, for example, specified in the NS records of
-the query domain) are queried. If you do not turn this option on, pdnsd will do
-such queries in some cases (in particular when processing ANY queries).
-This option is useful when you do not want pdnsd to make connections to outside
-servers for some reasons (e.g. when a firewall is blocking such queries).
-I recommend that you turn on lean_query when using this option.
-Default is off.
-
-root_server=(on|off|discover);
-Set this option to on if the servers specified in a section are root servers. A
-root server will typically only give the name servers for the top-level domain
-in its reply. Setting root_server=on will cause pdnsd to try to use cached
-information about top-level domains to reduce to number of queries to root
-servers, making the resolving of new names more efficient. You can get a list
-of available root servers by running the command "dig . ns".
-This option is also necessary if you use the delegation_only option.
-New in version 1.2.8: This option may also be set to "discover". This will
-cause pdnsd to query the servers provided with the ip= option to obtain the
-full list of root servers. The root-server addresses will replace the addresses
-specified with the ip= option. This will only be done once on startup, or after
-a "pdnsd-ctl config" command. In this case the name servers specified with the
-ip= option don't have to be root servers, they just have to know the names and
-addresses of the root servers. After root-server discovery pdnsd will behave
-just as if root_server=on had been specified.
-Default is off.
-
-randomize_servers=(on|off);
-New in version 1.2.6: Set this option to on to give each name server in this
-section an equal chance of being queried. If this option is off, the name
-servers are always queried starting with the first one specified. Even with
-this option on, the query order is not truly random. Only the first server is
-selected randomly; the following ones are queried in consecutive order,
-wrapping around to the beginning of the list when the end is reached. Note that
-this option only effects the order within a section. The servers in the first
-(active) section are always queried before those in the second one, etc.
-The default is off, but if you are resolving from root servers setting this
-option on is highly recommended. If root_server=on this option also effects the
-query order of the name servers for the top-level domains.
-
-reject=string;
-New in version 1.2.6: This option can be used to make pdnsd reject replies that
-contain certain IP addresses. You can specify a single IP address, which will
-be matched exactly, or a range of addresses using an address/mask pair. The
-mask can be specified as a simple integer, indicating the number of initial 1
-bits in the mask, or in the usual IP address notation. IP addresses may be
-either IPv4 or IPv6 (provided there is sufficient support in the C libraries
-and support for AAAA records was not disabled). When addresses in the reject
-list are compared with those in a reply, only the bits corresponding to those
-set in the netmask are significant, the rest are ignored.
-Multiple addresses or address/mask pairs may be specified; this can be done by
-entering multiple lines of the form reject=string; or a single line like this:
-
-reject=string,string,string;
-
-How pdnsd reacts when an address in the reply matches one in the reject list,
-depends on the reject_policy option, see below.
-
-reject_policy=(fail|negate);
-New in version 1.2.6: This option determines what pdnsd does when an address in
-the reply from a name server matches the reject list (see above). If this
-option is set to fail, pdnsd will try another server, or, if there no more
-servers to try, return the answer SERVFAIL. If this option is set to negate,
-pdnsd will immediately return the answer NXDOMAIN (unknown domain) without
-querying additional servers. The fail setting is useful if you don't always
-trust the servers in this section, but do trust the servers in the following
-section. The negate setting can be used to completely censor certain IP
-addresses. In this case you should put the same reject list in every server
-section, and also set the reject_recursively option (see below) to true.
-The default is fail.
-
-reject_recursively=(on|off);
-New in version 1.2.6: Normally pdnsd checks for addresses in the reject list
-(see above) only when the reply comes directly from a name server listed in the
-configuration file. With this option set to on, pdnsd will also do this check
-for name servers that where obtained from NS records in the authority section
-of a previous reply (which was incomplete and non-authoritative).
-Default is off.
-
-policy=(included|excluded|simple_only|fqdn_only);
-pdnsd supports inclusion/exclusion lists for server sections: with include= and
-exclude= (see below) you can specify domain names for which this server will be
-used or will not be used. The first match counts (i.e., the first include or
-exclude rule in a server section that matches a domain name is applied, and the
-search for other rules is terminated). If no rule matched a given domain name,
-the policy= option determines whether this server is used for the lookup for
-that domain name; when included is given, the server will be asked, and when
-excluded is given, it will not. If simple_only is given the server will be used
-if the name to lookup is a simple (single-label) domain name, on the other hand
-if fqdn_only is given the server will be used only for names consisting of two
-or more labels (i.e. the name has at least one dot in-between).
-If no server is available for a queried domain, pdnsd will return an error
-message to the client that usually will stop the client's attempts to resolve a
-specific domain from this server (the libc resolver will e.g. return an error
-to the application that tried to resolve the domain if no other servers are
-available in the resolv.conf). This may be of use sometimes.
-Note: the simple_only and fqdn_only constants were added by Paul Rombouts. They
-are useful for controlling which name servers (if any) will be used by pdnsd
-for resolving simple (single-label) host names. fqdn_only used to stand for
-"fully qualified domain name only", but this is actually a misnomer. The names
-in queries received by pdnsd are always considered to be fully qualified. If
-you do not exactly understand what the options simple_only and fqdn_only are
-good for, you are probably better off not using them.
-The default for this option is included.
-
-include=string;
-This option adds an entry to the exclusion/inclusion list. If a domain matches
-the name given as string, the server is queried if this was the first matching
-rule (see also the entry for policy).
-If the given name starts with a dot, the whole subdomain of the given name
-including the one of that name is matched, e.g. ".foo.bar." will match the
-domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.
-If it does not start in a dot, only exactly the given name (ignoring the case,
-of course) will be matched (hint: if you want to include all subdomains, but
-not the domain of the given name itself, place an exact-match exclude rule
-before the include rule, e.g: exclude="foo.bar."; include=".foo.bar.";
-Previous versions of pdnsd required that names given with this and the next
-option ended in a dot, but since version 1.1.8b1-par8, pdnsd automatically adds
-a dot at the end if it is missing.
-pdnsd now also accepts a more compact notation for adding several "include"
-entries in one line, e.g.:
-
-include=".foo",".bar",".my.dom";
-
-exclude=string;
-This option adds an entry to the exclusion/inclusion list. If a domain matches
-the name given as string, the server is not queried if this was the first
-matching rule (see also the entry for policy).
-If the given name starts with a dot, the whole subdomain of the given name
-including the one of that name is matched, e.g. ".foo.bar." will match the
-domain names a.foo.bar., a.b.c.foo.bar. and foo.bar.
-If it does not start in a dot, only exactly the given name (ignoring the case,
-of course) will be matched (hint: if you want to exclude all subdomains, but
-not the domain of the given name itself, place an exact-match include rule
-before the exclude rule, e.g: include="foo.bar."; exclude=".foo.bar.";
-pdnsd now also accepts a more compact notation for adding several "exclude"
-entries in one line, e.g.:
-
-exclude=".foo",".bar",".my.dom";
-
-
-2.1.3 rr Section
-
-Every rr section specifies a dns resource record that is stored locally. It
-allows you to specify own dns records that are served by pdnsd in a limited
-way. Only A, PTR, CNAME, MX, NS and SOA records are implemented.
-This option is intended to allow you to define RRs for 1.0.0.127.in-addr.arpa.
-and localhost. (and perhaps even one or two hosts) without having to start an
-extra named if your cached name servers do not serve those records. It is NOT
-intended and not capable to work as a full-featured name server.
-
-
-name=string;
-Specifies the name of the resource records, i.e. the domain name of the
-resource the record describes. This option must be specified before any a, ptr,
-cname, mx, ns or soa records. Names are interpreted as absolute domain names
-(i.e. pdnsd assumes they end in the root domain). For this and all following
-arguments that take domain names, you need to specify domain names in dotted
-notation (example venera.isi.edu.).
-Previous versions of pdnsd required that domain names given in the
-configuration file ended in a dot, but since version 1.1.8b1-par8, pdnsd
-automatically assumes a dot at the end if it is missing.
-New in version 1.2: It is also possible to specify a name starting with the
-label *. Such a name is called a wildcard. The * in a wildcard can match one or
-more labels in a queried name, but only whole labels. Any other * characters in
-a wildcard, apart from the leading one, will only match a literal *.
-For example, *.mydomain will match a.mydomain or www.a.mydomain, but not
-mydomain. *.a*.mydomain will match www.a*.mydomain, but not www.ab.mydomain.
-*a.mydomain will only match itself.
-Before you can specify an rr section with name=*.mydomain you must define some
-records for mydomain, typically NS and/or SOA records. Example:
-
-    rr {
-        name = mydomain;
-        ns = localhost;
-        soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
-    }
-    rr {
-        name = *.mydomain;
-        a = 192.168.1.10;
-    }
-
-In this example, www.mydomain and ftp.mydomain will resolve to the numeric
-address 192.168.1.10 (unless you add rr sections explicitly specifying
-different addresses for www.mydomain or ftp.mydomain). If you want mydomain
-also to resolve to a numeric address, add an A record to the first rr section.
-
-ttl=timespec;
-Specifies the ttl (time to live) for all resource records in this section after
-this entry. This may be redefined. The default is 86400 seconds (=1 day).
-
-authrec=(on|off);
-If this is turned on, pdnsd will create authoritative local records for this rr
-section. This means that pdnsd flags the domain record so that records of this
-domain that are not present in the cache are treated as non-existent, i.e. no
-other servers are queried for that record type, and an response containing none
-of those records is returned. This is most time what people want: if you add an
-A record for a host, and it has no AAAA record (thus no IPv6 address), you
-normally don't want other name servers to be queried for it.
-This is on by default.
-Please note that this only has an effect if it precedes the name option!
-
-reverse=(on|off);
-New in version 1.2: If you want a locally defined name to resolve to a numeric
-address and vice versa, you can achieve this by setting reverse=on before
-defining the A record (see below). The alternative is to define a separate PTR
-record, but you will probably find this option much more convenient.
-The default is off.
-
-a=string;
-Defines an A (host address) record. The argument is an IPv4 address in dotted
-notation. pdnsd will serve this address for the host name given in the name
-option.
-Provided there is sufficient support in the C libraries and support for AAAA
-records was not disabled, the argument string may also be an IPv6 address, in
-which case an AAAA record will be defined.
-This option be may used multiple times within an rr section, causing multiple
-addresses to be defined for the name. However, if you put the different
-addresses in different rr sections for the same name, the definition in the
-last rr section will cancel the definitions in the previous ones.
-
-ptr=string;
-Defines a PTR (domain name pointer) record. The argument is a host name in
-dotted notation (see name). The ptr record is for resolving adresses into
-names. For example, if you want the adress 127.0.0.1 to resolve into localhost,
-and localhost into 127.0.0.1, you need something like the following sections:
-
-    rr {
-        name = localhost;
-        a = 127.0.0.1;
-        owner = localhost;
-        soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
-    }
-    rr {
-        name = 1.0.0.127.in-addr.arpa;
-        ptr = localhost;
-        owner = localhost;
-        soa = localhost, root.localhost, 42, 86400, 900, 86400, 86400;
-    }
-
-The second section is for reverse resolving and uses the ptr option. Note that
-you can get the same effect by specifying only the first rr section with
-reverse=on.
-There is something special about the name in the second section: when a
-resolver wants to get a host name from an internet address, it composes an
-address that is built of the IP address in reverse byte order (1.0.0.127
-instead of 127.0.0.1) where each byte of the adress written as number
-constitutes a sub-domain under the domain in-addr.arpa.
-So, if you want to compose an adress for reverse resolving, take your ip in
-dotted notation (e.g. 1.2.3.4), reverse the byte order (4.3.2.1) and append
-in-addr.arpa. (4.3.2.1.in-addr.arpa.) Then, define an rr section giving this
-address as name and the domain name corresponding to that ip in the ptr option.
-
-cname=string;
-Defines a CNAME (canonical name) record. The argument should be a
-fully-qualified host name in dotted notation (see name). A CNAME is the DNS
-equivalent of an alias or symbolic link.
-A useful application for CNAMEs is giving short, easy to remember nicknames to
-hosts with complicated names. For example, you might want the name "news" to
-refer to your ISP's news server "nntp2.myisp.com". Instead of adding an A
-record for "news" with the same address as "nntp2.myisp.com", you could put in
-a CNAME pointing to "nntp2.myisp.com", so that if the IP address of the news
-server changes, there is no need to update the record for "news".
-To implement this with pdnsd, you could add the following section to your
-configuration file:
-
-    rr {
-        name = news;
-        cname = nntp2.myisp.com;
-        owner = localhost;
-    }
-
-mx=string,number;
-Defines an MX (mail exchange) record. The string is the host name of the mail
-server in dotted notation (see name). The number specifies the preference
-level.
-When you send mail to someone, your mail typically goes from your E-mail client
-to an SMTP server. The SMTP server then checks for the MX record of the domain
-in the E-mail address. For example, with joe at example.com, it would look for the
-MX record for example.com and find that the name of mail server for that domain
-is, say, mail.example.com. The SMTP server then gets the A record for
-mail.example.com, and connects to the mail server.
-If there are multiple MX records, the SMTP server will pick one based on the
-preference level (starting with the lowest preference number, working its way
-up).
-Don't define MX records with pdnsd unless you know what you're doing.
-
-owner=string;
-or
-ns=string;
-Defines an NS (name server) record. Specifies the name of the host which should
-be authoritative for the records you defined in the rr section. This is
-typically the host pdnsd runs on.
-Note: In previous versions of pdnsd this option had to be specified before any
-a, ptr, cname, mx or soa entries. In version 1.2, the restrictions on this
-option are same as the options just mentioned, and it must listed after the
-name= option. This can be a pain if you want to use an old config file which
-specifies owner= before name= (sorry about that). Apart from greater
-consistency, the advantage is that you can now specify as many NS records as
-you like (including zero).
-
-soa=string,string,number,timespec,timespec,timespec,timespec;
-This defines a soa (start of authority) record. The first string is the domain
-name of the server and should be equal to the name you specified as owner.
-The second string specifies the email address of the maintainer of the name
-server. It is also specified as a domain name, so you will have to replace the
-@ sign in the name with a dot (.) to get the name you have to specify here. The
-next parameter (the first number) is the serial number of the record. You
-should increment this number if you change the record.
-The 4th parameter is the refresh timeout. It specifies after what amount of
-time a caching server should attempt to refresh the cached record.
-The 5th parameter specifies a time after which a caching server should attempt
-to refresh the record after a refresh failure.
-The 6th parameter defines the timeout after which a cached record expires if it
-has not been refreshed.
-The 7th parameter is the ttl that is specified in every rr and should be the
-same as given with the ttl option (if you do not specify a ttl, use the default
-86400).
-
-txt=string,...,string;
-New in version 1.2.9: Defines an TXT record. You can specify one or more
-strings here.
-
-
-2.1.4 neg Section
-
-Every neg section specifies a dns resource record or a dns domain that should
-be cached negatively locally. Queries for negatively cached records are always
-answered immediatley with an error or an empty answer without querying other
-hosts as long as the record is valid. The records defined with neg sections
-remain valid until they are explicitely invalidated or deleted by the user
-using pdnsd-ctl.
-This is useful if a certain application asks periodically for nonexisting hosts
-or RR types and you do not want a query to go out every time the cached record
-has timed out. Example: Netscape Communicator will ask for the servers news and
-mail on startup if unconfigured. If you do not have a dns search list for your
-network, you can inhibit outgoing queries for these by specifying
-
-    neg {
-        name = news;
-        types = domain;
-    }
-    neg {
-        name = mail;
-        types = domain;
-    }
-
-in your config file. If you have a search list, you have to repeat that for any
-entry in your search list in addition to the entries given above!
-In versions 1.1.11 and later, if you negate whole domains this way, all
-subdomains will be negated as well. Thus if you specify
-neg {name=example.com; types=domain;} in the config file, this will also negate
-www.example.com, xxx.adserver.example.com, etc.
-
-
-name=string;
-Specifies the name of the domain for which negative cache entries are created.
-This option must be specified before the types option. Names are interpreted as
-absolute domain names (i.e. pdnsd assumes they end in the root domain). You
-need to specify domain names in dotted notation (example venera.isi.edu.).
-Previous versions of pdnsd required that domain names given in the
-configuration file ended in a dot, but since version 1.1.8b1-par8, pdnsd
-automatically assumes a dot at the end if it is missing.
-
-ttl=timespec;
-Specifies the ttl (time to live) for all resource records in this section after
-this entry. This may be redefined. The default is 86400 seconds (=1 day).
-
-types=(domain|rr_type[,rr_type[,rr_type[,...]]]);
-Specifies what is to be cached negatively: domain will cache the whole domain
-negatively; alternatively, you can specify a comma-separated list of RR types
-which are to be cached negatively. You may specify multiple types options, but
-domain and the RR types are mutually exclusive.
-The RR types are specified using their official names from the RFC's in
-capitals, e.g. A, CNAME, NS, PTR, MX, AAAA, ...
-The command pdnsd-ctl list-rrtypes will give you a complete list of those
-types. pdnsd-ctl is built along with pdnsd and will be installed in the same
-directory as the pdnsd binary during make install.
-
-
-2.1.5 source Section
-
-Every source section allows you to let pdnsd read the records from a file in an
-/etc/hosts-like format. pdnsd will generate records to resolve the entries
-address from its host name and vice versa for every entry in the file. This is
-normally easier than defining an rr for every of your addresses, since
-localhost and your other FQDNs are normally given in /etc/hosts.
-The accepted format is as follows: The #-sign initiates a comment, the rest of
-the line from the first occurence of this character on is ignored. Empty lines
-are tolerated.
-The first entry on a line (predeceded by an arbitrary number of tabs and
-spaces) is the IP in dotted notation, the second entry on one line (separated
-by the first by an arbitrary number of tabs and spaces) is the FQDN (fully
-qualified domain name) for that ip. The rest of the line is ignored by default
-(in the original /etc/hosts, it may contain information not needed by pdnsd).
-
-
-owner=string;
-Specifies the name of the host pdnsd runs on and that are specified in dns
-answers (specifically, nameserver records). Must be specified before any file
-entries.
-Names are interpreted as absolute domain names (i.e. pdnsd assumes they end in
-the root domain). You need to specify domain names in dotted notation (example
-venera.isi.edu.).
-Previous versions of pdnsd required that domain names given in the
-configuration file ended in a dot, but since version 1.1.8b1-par8, pdnsd
-automatically assumes a dot at the end if it is missing.
-
-ttl=timespec;
-Specifies the ttl (time to live) for all resource records in this section after
-this entry. This may be redefined. The default is 86400 seconds (=1 day).
-
-file=string;
-The string specifies a file name. For every file entry in a source section,
-pdnsd will try to load the given file as described above. Failure is indicated
-only when the file cannot be opened, malformed entries will be ignored.
-
-serve_aliases=(on|off);
-If this is turned on pdnsd will serve the aliases given in a hosts-style file.
-These are the third entry in a line of a hosts-style file, which usually give a
-"short name" for the host. This may be used to support broken clients without a
-proper domain-search option. If no aliases are given in a line of the file,
-pdnsd behaves as without this option for this line.
-This feature was suggested by Bert Frederiks.
-It is off by default.
-
-authrec=(on|off);
-If this is turned on, pdnsd will create authoritative local records with the
-data from the hosts file. Please see the description of the option of the same
-name in the rr section for a closer description of what this means. Please note
-that this only has an effect for files sourced with file options subsequent to
-this option.
-This is on by default.
-
-
-2.1.6 include Section
-
-A configuration file may include other configuration files. However, only the
-top-level configuration file may contain global and server sections, thus
-include files are effectively limited to sections that add local definitions to
-the cache.
-Include sections currently only have one type of option, which may be given
-multiple times within a single section.
-
-
-file=string;
-The string specifies a file name. For every file option in an include section,
-pdnsd will parse the given file as described above. The file may contain
-include sections itself, but as a precaution pdnsd checks that a certain
-maximum depth is not exceeded to guard against the possibility of infinite
-recursion.
-
-
-3 pdnsd-ctl
-
-pdnsd-ctl allows you to configure pdnsd at run time. To make this work, you
-have to start pdnsd with the -s option (or use the status_ctl option in the
-config file). You also should make sure that you have appropriate permissions
-on the control socket (use the ctl_perms option to make this sure) and of your
-pdnsd cache directory (pdnsd keeps its socket there). Please make sure the
-pdnsd cache directory is not writeable for untrusted users!
-
-pdnsd-ctl accepts two command-line options starting with a dash.
--c may be used to specify the cache directory (and takes this as argument). The
-default for this setting is the pdnsd default cache directory (specified at
-compile time). The cache directory for pdnsd-ctl must be the same pdnsd uses!
--q can be used to make the output of pdnsd-ctl less verbose.
-
-The following table lists the commands that pdnsd-ctl supports. The command
-must always be the first command-line option (not starting with a dash), the
-arguments to the command must follow in the given order.
-In the following table, keywords are in a normal font, while placeholders are
-in italics.
-Alternatives are specified like (alt1|alt2|alt3). Optional arguments are placed
-between square brackets [].
-
-Command        Arguments                Description
-
-help                                    Print a command summary.
-
-version                                 Print version and license info.
-
-status                                  Print a description of pdnsd's cache status, thread status
-                                        and configuration. Also shows which remote name servers
-                                        are assumed to be available.
-
-server         (index|label)  (up|      Set the status of the server with the given index or label
-               down|retest)  [dns1[,    (where the given label matches the one given with the
-               dns2[,...]]]             label option in the respective server section in the
-                                        config file) to up or down, or force a retest. The index
-                                        is assigned in the order of definition in pdnsd.conf
-                                        starting with 0. Use the status command to view the
-                                        indices and labels. You can specify all instead of an
-                                        index or label to perform the action for all servers
-                                        registered with pdnsd. Example:
-                                        pdnsd-ctl server 0 retest
-                                        An optional third argument consisting of a list of IP
-                                        addresses (separated by commas or white-space characters)
-                                        can be given. This list will replace the previous list of
-                                        addresses of name servers used by pdnsd in the specified
-                                        section of the config file. For example in the /etc/ppp/
-                                        ip-up script called by pppd you could place the following
-                                        line:
-                                        pdnsd-ctl server isplabel up $DNS1,$DNS2
-                                        If white space is used to separate addresses the list will
-                                        have to be quoted. Spurious commas and white-space
-                                        characters are ignored. The last argument may also be an
-                                        empty string, in which case the existing IP addresses are
-                                        removed and the corresponding server section becomes
-                                        inactive.
-
-record         name  (delete|           Delete or invalidate the records of the given domain name
-               invalidate)              if it is in the cache. Invalidation means that the records
-                                        are marked as timed out, and will be reloaded if possible
-                                        (if purge_cache is set to on, they will be deleted in any
-                                        case).
-                                        For local records (i.e., records that were given in the
-                                        config file using a rr section, records read from a
-                                        hosts-style file and records added using pdnsd-ctl),
-                                        invalidation has no effect. Deletion will work, though.
-                                        Example:
-                                        pdnsd-ctl record localhost. delete
-
-source         fn  owner  [ttl]  [(on   Load a hosts-style file. Works like using the pdnsd source
-               |off)]  [noauth]         configuration section. owner and ttl are used as in the
-                                        source section. ttl has a default of 900 (it does not need
-                                        to be specified). The next to last argument corresponds to
-                                        the serve_aliases option, and is off by default (i.e. if
-                                        it is not specified). noauth is used to make the domains
-                                        non-authoritative - please see the description of the
-                                        authrec config file options for a description of what that
-                                        means. fn is the filename. The file must be readable by
-                                        pdnsd! Example:
-                                        pdnsd-ctl source /etc/hosts localhost. 900 off
-
-add            a  addr  name  [ttl]
-               [noauth]
-                                        Add a record of the given type to the pdnsd cache,
-                                        replacing existing records for the same name and type. The
-add            aaaa  addr  name  [ttl   2nd argument corresponds to the value of the option in the
-               ]  [noauth]              rr section that is named like the first argument: a is a
-                                        record for hostname-to-address mapping, aaaa is the same
-                                        thing for IPv6 addresses, and ptr is for
-add            ptr  host  name  [ttl]   address-to-hostname mapping. See the documentation for the
-                 [noauth]               rr section for more details. In case of A and AAAA
-                                        records, the addr argument may be a list of IP addresses,
-                                        separated by commas or white space, causing multiple
-add            cname  host  name  [     addresses to be defined for the same name. The ttl is
-               ttl]  [noauth]           optional, the default is 900 seconds. noauth is used to
-                                        make the domains non-authoritative - please see the
-                                        description of the authrec config file options for a
-add            mx  host  name  pref     description of what that means. If you want no other
-               [ttl]  [noauth]          record than the newly added in the cache, do
-                                        pdnsd-ctl record name delete before adding records. This
-                                        is also better when overwriting local records. Example:
-add            ns  host  name  [ttl]    pdnsd-ctl add a 127.0.0.1 localhost. 900
-                 [noauth]
-
-
-neg            name  [type]  [ttl]      Add a negatively cached record to pdnsd's cache, replacing
-                                        existing records for the same name and type. If no type is
-                                        given, the whole domain is cached negatively. For
-                                        negatively cached records, errors are immediately returned
-                                        on a query, without querying other servers first. The ttl
-                                        is optional, the default is 900 seconds.
-                                        You can get a list of all types you can pass to this
-                                        command using pdnsd-ctl list-rrtypes. The type is treated
-                                        case-sensitive! Example:
-                                        pdnsd-ctl neg foo.bar A 900
-                                        pdnsd-ctl neg foo.baz 900
-
-config         [filename]               Reload pdnsd's configuration file.
-                                        The config file must be owned by the uid that pdnsd had
-                                        when it was started, and be readable by pdnsd's run_as
-                                        uid. If no file name is specified, the config file used at
-                                        start-up is reloaded.
-                                        Note that some configuration changes, like the port or IP
-                                        address pdnsd listens on, cannot be made this way and you
-                                        will receive an error message. In these cases, you will
-                                        have to restart pdnsd instead.
-
-include        filename                 Parse the given file as an include file, see the
-                                        documentation on include sections for a description what
-                                        this file may contain.
-                                        This command is useful for adding definitions to the cache
-                                        without reconfiguring pdnsd.
-
-eval           string                   Parse the given string as if it were part of pdnsd's
-                                        configuration file. The string should hold one or more
-                                        complete configuration sections. However, global and
-                                        server sections are not allowed, just as in include files.
-                                        If multiple strings are given, they will be joined using
-                                        newline chars and parsed together.
-                                        This command is useful for adding records interactively to
-                                        the cache that cannot be defined using the "pdnsd-ctl add"
-                                        command, (e.g. soa records).
-
-empty-cache    [[+|-]name ...]          If no arguments are provided, the cache will be completely
-                                        emptied, freeing all existing entries. Note that this also
-                                        removes local records, as defined by the config file. To
-                                        restore local records, run "pdnsd-ctl config" or
-                                        "pdnsd-ctl include filename" immediately afterwards.
-                                        The "pdnsd-ctl empty-cache" command now accepts additional
-                                        arguments; these are interpreted as include/exclude names.
-                                        If an argument starts with a '+' the name will be
-                                        included. If an argument starts with a '-' it will be
-                                        excluded. If an argument does not begin with '+' or '-', a
-                                        '+' is assumed. If the domain name of a cache entry ends
-                                        in one of the names in the list, the first match will
-                                        determine what happens. If the matching name is to be
-                                        included, the cache entry is deleted, otherwise not. If
-                                        there are no matches, the default action is not to delete.
-                                        Note that if you want to delete exactly one name and no
-                                        others, you should use "pdnsd-ctl record name delete",
-                                        this is also much more efficient.
-                                        Examples:
-                                        pdnsd-ctl empty-cache
-                                        This command will remove all cache entries.
-
-                                        pdnsd-ctl empty-cache microsoft.com msft.net
-                                        This will remove all entries ending in microsoft.com or
-                                        msft.net.
-
-                                        pdnsd-ctl empty-cache -localdomain -168.192.in-addr.arpa .
-                                        This will remove all entries except those ending in
-                                        localdomain or 168.192.in-addr.arpa. Note that '.' is the
-                                        root domain which matches any domain name.
-
-dump           [name]                   Print information stored in the cache about name. If name
-                                        begins with a dot and is not the root domain, information
-                                        about the names in the cache ending in name (including
-                                        name without the leading dot) will be printed. If name is
-                                        not specified, information about all the names in the
-                                        cache will be printed.
-                                        For each RR record the time and date that this record has
-                                        been added to the cache will be printed in the form mm/dd
-                                        HH:MM:SS (locally defined records are printed without a
-                                        time stamp). After that the type of record is printed with
-                                        the data. For the more common types of RR records the data
-                                        will be printed in human readable form, the remaining ones
-                                        in a hexadecimal representation.
-                                        This command is mainly useful for diagnostic purposes.
-                                        Note that if you pipe the output of this command through
-                                        an application that reads only part of the output and then
-                                        blocks (such as more or less), pdnsd will not be able to
-                                        add new entries to the cache until the pipe is closed. It
-                                        is preferable to capture the output in a file in such a
-                                        case.
-
-list-rrtypes                            List available rr types for the neg command. Note that
-                                        those are only used for the neg command, not for add!
-
-
-
-4 contrib/
-
-The contrib directory in the pdnsd distribution contains useful
-user-contributed scripts.
-So far, there are scripts contributed by Marko Stolle and Paul Rombouts that
-make pdnsd usable in a DHCP setup. Please take a look into the README file in
-the contrib directory for further information.
-
-
-5 Problems...
-
-If you have problems with configuring or running pdnsd, be sure to read the FAQ
-. If this does not help you, pdnsd crashes or you find bugs, please mail one of
-the authors.
-Note added by Paul A. Rombouts: Thomas Moestl no longer maintains the code. I
-have revised the code and added new features. See README.par and the ChangeLog
-in the source directory (or /usr/share/doc/pdnsd-<version> if you have
-installed a binary package) for more details. If you have questions about my
-modifications, you can find my email address at the end of README.par.
-
-
-6 Hacking
-
-Here comes some information you might find useful for hacking pdnsd.
-
-6.1 Source files
-
-Makefile.am,          autoconf/automake/autoheader scripts. Makefile.am's are in
-configure.in,         most subdirectories.
-acconfig.h
-
-pdnsd.spec.in         A template from which configure generates a spec file for
-                      building rpm's for various distributions.
-
-version               Contains only the program version string. Needed for
-                      several templates.
-
-src/rc/*              rc (start-up) scripts for various linux distributions.
-
-                      The pdnsd cache subsystem(s) as defined in src/cache.h.
-src/cache.c           This is the "traditional" pdnsd system which keeps the
-                      cache in memory and uses hash tables for accesses. Sourav
-                      K. Mandal is working on a system using gdbm.
-
-src/pdnsd-ctl/*       Contains the code for pdnsd-ctl, a program that allows you
-                      to control pdnsd at run time.
-
-                      The lex/flex source file for the config file lexer. This is
-src/conf-lex.l.in     a template because there might be inserted "%option
-                      yylineno" for proper flex support. (obsolete, superseded by
-                      src/conf-parser.c)
-
-                      This is automatically generated by configure from
-src/conf-lex.l        conf-lex.l.in. It may be overwritten in any make, so never
-                      modify this, but conf-lex.l.in instead! (obsolete,
-                      superseded by src/conf-parser.c)
-
-src/conf-parse.y      The yacc/bison source of the config file parser. (obsolete,
-                      superseded by src/conf-parser.c)
-
-src/conf-parser.c,    The config file parser written purely in C (versions
-src/conf-parser.h,    1.1.10-par and later).
-src/conf-keywords.h
-
-src/conff.c, src/     The configuration handler functions and their prototypes.
-conff.h               The parser is called from here.
-
-src/consts.h          Some constants used by the parser, config file handler
-                      functions and in the server status thread, among others.
-
-                      Define dns message structures, constants, and some common
-src/dns.c, src/dns.h  dns data handlers. dns.h contains gcc-specific code (in
-                      praticular, "__attribute__((packed))").
-
-src/dns_answer.c,     Define functions that answer incoming dns queries.
-src/dns_answer.h
-
-src/dns_query.c, src  Define functions to manage outgoing dns queries.
-/dns_query.h
-
-src/error.c, src/     Functions for error output to stderr or the syslog, and
-error.h               debug output to stderr or pdnsd.debug.
-
-src/hash.c, src/      Contains the code for storing and looking up cache entries
-hash.h                in the hash table.
-
-src/helpers.c, src/   Define miscellaneous helper functions.
-helpers.h
-
-src/icmp.c, src/      Define a function for performing a ping test. This contains
-icmp.h                OS-specific code.
-
-src/main.c            Contains main(), which holds the command line parser,
-                      performs initialisations and signal handling.
-
-                      Contains the code for the executable make_hashconvtable,
-src/                  which is only run once, during build time, to generate the
-make_hashconvtable.c  file hashconvtable.h, used by src/hash.c (versions
-                      1.1.10-par and later). (obsolete since version 1.2)
-
-                      A perl script for generating src/rr_types.h, a C header
-src/                  file containing macro definitions and tables needed for
-make_rr_types_h.pl    handling the RR types known to pdnsd, from the text file
-                      src/rr_types.in.
-
-src/rr_types.c, src/  These define tables and macros needed for handling the RR
-rr_types.h, src/      types known to pdnsd. Since version 1.2.9, rr_types.h is an
-rr_types.in           automatically generated file, see make_rr_types_h.pl.
-
-src/netdev.c, src/    Define functions for network device handling. OS-specific.
-netdev.h
-
-src/servers.c, src/   Define functions for the server status thread that performs
-servers.h             the periodical uptests.
-
-src/status.c, src/    Define functions for the status control thread. This is
-status.h              pdnsd's interface to pdnsd-ctl.
-
-
--------------------------------------------------------------------------------
-
-Copyright (C) 2000, 2001 Thomas Moestl
-Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2012 Paul A. Rombouts
-
-Last revised: 19 April 2012 by Paul A. Rombouts
-
diff --git a/jni/pdnsd/file-list.base.in b/jni/pdnsd/file-list.base.in
deleted file mode 100644
index 409ba33..0000000
--- a/jni/pdnsd/file-list.base.in
+++ /dev/null
@@ -1,5 +0,0 @@
-%defattr(-,root,root)
-%doc AUTHORS THANKS COPYING COPYING.BSD ChangeLog ChangeLog.old INSTALL NEWS README README.par README.par.old TODO
-%config /etc/pdnsd.conf.sample
-%attr(750, @def_id@, @def_id@) %dir @cachedir@
-%attr(640, @def_id@, @def_id@) %config @cachedir@/pdnsd.cache
diff --git a/jni/pdnsd/install-sh b/jni/pdnsd/install-sh
deleted file mode 100644
index 4d4a951..0000000
--- a/jni/pdnsd/install-sh
+++ /dev/null
@@ -1,323 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2005-05-14.22
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# 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
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.  It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-chmodcmd="$chmodprog 0755"
-chowncmd=
-chgrpcmd=
-stripcmd=
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=
-dst=
-dir_arg=
-dstarg=
-no_target_directory=
-
-usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
-   or: $0 [OPTION]... SRCFILES... DIRECTORY
-   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
-   or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
--c         (ignored)
--d         create directories instead of installing files.
--g GROUP   $chgrpprog installed files to GROUP.
--m MODE    $chmodprog installed files to MODE.
--o USER    $chownprog installed files to USER.
--s         $stripprog installed files.
--t DIRECTORY  install into DIRECTORY.
--T         report an error if DSTFILE is a directory.
---help     display this help and exit.
---version  display version info and exit.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
-"
-
-while test -n "$1"; do
-  case $1 in
-    -c) shift
-        continue;;
-
-    -d) dir_arg=true
-        shift
-        continue;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-        shift
-        shift
-        continue;;
-
-    --help) echo "$usage"; exit $?;;
-
-    -m) chmodcmd="$chmodprog $2"
-        shift
-        shift
-        continue;;
-
-    -o) chowncmd="$chownprog $2"
-        shift
-        shift
-        continue;;
-
-    -s) stripcmd=$stripprog
-        shift
-        continue;;
-
-    -t) dstarg=$2
-	shift
-	shift
-	continue;;
-
-    -T) no_target_directory=true
-	shift
-	continue;;
-
-    --version) echo "$0 $scriptversion"; exit $?;;
-
-    *)  # When -d is used, all remaining arguments are directories to create.
-	# When -t is used, the destination is already specified.
-	test -n "$dir_arg$dstarg" && break
-        # Otherwise, the last argument is the destination.  Remove it from $@.
-	for arg
-	do
-          if test -n "$dstarg"; then
-	    # $@ is not empty: it contains at least $arg.
-	    set fnord "$@" "$dstarg"
-	    shift # fnord
-	  fi
-	  shift # arg
-	  dstarg=$arg
-	done
-	break;;
-  esac
-done
-
-if test -z "$1"; then
-  if test -z "$dir_arg"; then
-    echo "$0: no input file specified." >&2
-    exit 1
-  fi
-  # It's OK to call `install-sh -d' without argument.
-  # This can happen when creating conditional directories.
-  exit 0
-fi
-
-for src
-do
-  # Protect names starting with `-'.
-  case $src in
-    -*) src=./$src ;;
-  esac
-
-  if test -n "$dir_arg"; then
-    dst=$src
-    src=
-
-    if test -d "$dst"; then
-      mkdircmd=:
-      chmodcmd=
-    else
-      mkdircmd=$mkdirprog
-    fi
-  else
-    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
-    # might cause directories to be created, which would be especially bad
-    # if $src (and thus $dsttmp) contains '*'.
-    if test ! -f "$src" && test ! -d "$src"; then
-      echo "$0: $src does not exist." >&2
-      exit 1
-    fi
-
-    if test -z "$dstarg"; then
-      echo "$0: no destination specified." >&2
-      exit 1
-    fi
-
-    dst=$dstarg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst ;;
-    esac
-
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
-    if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-	echo "$0: $dstarg: Is a directory" >&2
-	exit 1
-      fi
-      dst=$dst/`basename "$src"`
-    fi
-  fi
-
-  # This sed command emulates the dirname command.
-  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
-
-  # Make sure that the destination directory exists.
-
-  # Skip lots of stat calls in the usual case.
-  if test ! -d "$dstdir"; then
-    defaultIFS='
-	 '
-    IFS="${IFS-$defaultIFS}"
-
-    oIFS=$IFS
-    # Some sh's can't handle IFS=/ for some reason.
-    IFS='%'
-    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
-    shift
-    IFS=$oIFS
-
-    pathcomp=
-
-    while test $# -ne 0 ; do
-      pathcomp=$pathcomp$1
-      shift
-      if test ! -d "$pathcomp"; then
-        $mkdirprog "$pathcomp"
-	# mkdir can fail with a `File exist' error in case several
-	# install-sh are creating the directory concurrently.  This
-	# is OK.
-	test -d "$pathcomp" || exit
-      fi
-      pathcomp=$pathcomp/
-    done
-  fi
-
-  if test -n "$dir_arg"; then
-    $doit $mkdircmd "$dst" \
-      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
-      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
-      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
-      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
-
-  else
-    dstfile=`basename "$dst"`
-
-    # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
-
-    # Trap to clean up those temp files at exit.
-    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-    trap '(exit $?); exit' 1 2 13 15
-
-    # Copy the file name to the temp name.
-    $doit $cpprog "$src" "$dsttmp" &&
-
-    # and set any options; do chmod last to preserve setuid bits.
-    #
-    # If any of these fail, we abort the whole thing.  If we want to
-    # ignore errors from any of these, just make sure not to ignore
-    # errors from the above "$doit $cpprog $src $dsttmp" command.
-    #
-    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
-      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
-      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
-      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
-
-    # Now rename the file to the real destination.
-    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
-      || {
-	   # The rename failed, perhaps because mv can't rename something else
-	   # to itself, or perhaps because mv is so ancient that it does not
-	   # support -f.
-
-	   # Now remove or move aside any old file at destination location.
-	   # We try this two ways since rm can't unlink itself on some
-	   # systems and the destination file might be busy for other
-	   # reasons.  In this case, the final cleanup might fail but the new
-	   # file should still install successfully.
-	   {
-	     if test -f "$dstdir/$dstfile"; then
-	       $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
-	       || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
-	       || {
-		 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
-		 (exit 1); exit 1
-	       }
-	     else
-	       :
-	     fi
-	   } &&
-
-	   # Now rename the file to the real destination.
-	   $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
-	 }
-    }
-  fi || { (exit 1); exit 1; }
-done
-
-# The final little trick to "correctly" pass the exit status to the exit trap.
-{
-  (exit 0); exit 0
-}
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/jni/pdnsd/missing b/jni/pdnsd/missing
deleted file mode 100644
index 894e786..0000000
--- a/jni/pdnsd/missing
+++ /dev/null
@@ -1,360 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-
-scriptversion=2005-06-08.21
-
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
-#   Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
-
-# 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-
-# 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.
-
-if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
-  exit 1
-fi
-
-run=:
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
-
-msg="missing on your system"
-
-case "$1" in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
-
-  -h|--h|--he|--hel|--help)
-    echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
-
-Options:
-  -h, --help      display this help and exit
-  -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
-
-Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
-
-Send bug reports to <bug-automake at gnu.org>."
-    exit $?
-    ;;
-
-  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
-    echo "missing $scriptversion (GNU Automake)"
-    exit $?
-    ;;
-
-  -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
-    exit 1
-    ;;
-
-esac
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).
-case "$1" in
-  lex|yacc)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  tar)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case "$f" in
-      *:*) touch_files="$touch_files "`echo "$f" |
-				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-	   sed 's/\.am$/.in/' |
-	   while read f; do touch "$f"; done
-    ;;
-
-  autom4te)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
-    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo "#! /bin/sh"
-	echo "# Created by GNU Automake missing as a replacement of"
-	echo "#  $ $@"
-	echo "exit 0"
-	chmod +x $file
-	exit 1
-    fi
-    ;;
-
-  bison|yacc)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if [ $# -ne 1 ]; then
-        eval LASTARG="\${$#}"
-	case "$LASTARG" in
-	*.y)
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-	    if [ -f "$SRCFILE" ]; then
-	         cp "$SRCFILE" y.tab.c
-	    fi
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-	    if [ -f "$SRCFILE" ]; then
-	         cp "$SRCFILE" y.tab.h
-	    fi
-	  ;;
-	esac
-    fi
-    if [ ! -f y.tab.h ]; then
-	echo >y.tab.h
-    fi
-    if [ ! -f y.tab.c ]; then
-	echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex|flex)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if [ $# -ne 1 ]; then
-        eval LASTARG="\${$#}"
-	case "$LASTARG" in
-	*.l)
-	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-	    if [ -f "$SRCFILE" ]; then
-	         cp "$SRCFILE" lex.yy.c
-	    fi
-	  ;;
-	esac
-    fi
-    if [ ! -f lex.yy.c ]; then
-	echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-	 you modified a dependency of a manual page.  You may need the
-	 \`Help2man' package in order for those modifications to take
-	 effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
-    if test -z "$file"; then
-	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
-    fi
-    if [ -f "$file" ]; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo ".ab help2man is required to generate this page"
-	exit 1
-    fi
-    ;;
-
-  makeinfo)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  tar)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case "$firstarg" in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case "$firstarg" in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
-
-exit 0
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/jni/pdnsd/pdnsd.spec.in b/jni/pdnsd/pdnsd.spec.in
deleted file mode 100644
index 6af6cde..0000000
--- a/jni/pdnsd/pdnsd.spec.in
+++ /dev/null
@@ -1,244 +0,0 @@
-# rpmbuild spec file for pdnsd.
-# with modifications by Paul Rombouts.
-
-# Supported rpmbuild --define and --with options include:
-#
-# --with isdn                   Configure with --enable-isdn.
-#
-# --without poll                Configure with --disable-poll
-#
-# --without nptl                Configure with --with-thread-lib=linuxthreads.
-#
-# --with ipv6                   Configure with --enable-ipv6.
-#
-# --without tcpqueries          Configure with --disable-tcp-queries.
-#
-# --without debug 	        Configure with --with-debug=0.
-#
-# --define "distro <distro>" 	Configure with --with-distribution=<distro>.
-#
-# --define "run_as_user <user>" Configure with --with-default-id=<user>.
-#                               For RPMs the default <user> is "@def_id@".
-#
-# --define "run_as_uid <uid>" 	If the user defined by the previous option does not exist
-#                               when the RPM is installed, the pre-install script will try
-#                               to create a new user with numerical id <uid>.
-#
-# --define "cachedir <dir>" 	Configure with --with-cachedir=<dir>.
-#
-
-%{!?distro: %define distro @distribution@}
-
-# The default run_as ID to use
-%{!?run_as_user: %define run_as_user @def_id@}
-# By default, if a new run_as_user is to be created, we let
-# useradd choose the numerical uid, unless run_as_uid is defined.
-#define run_as_uid 96
-%{!?cachedir: %define cachedir @cachedir@}
-%define conffile %{_sysconfdir}/pdnsd.conf
-
-Summary: A caching dns proxy for small networks or dialin accounts
-Name: @PACKAGE@
-Version: @VERSION@
-Release: @packagerelease@
-License: GPLv3
-Group:  Daemons
-Source: http://members.home.nl/p.a.rombouts/pdnsd/releases/%{name}-%{version}-%{release}.tar.gz
-URL: http://members.home.nl/p.a.rombouts/pdnsd.html
-Vendor: Paul A. Rombouts
-Packager:  Paul A. Rombouts <p.a.rombouts at home.nl>
-Prefix: %{_prefix}
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-
-%description
-pdnsd is a proxy DNS daemon with permanent (disk-)cache and the ability
-to serve local records. It is designed to detect network outages or hangups
-and to prevent DNS-dependent applications like Netscape Navigator from hanging.
-
-The original author of pdnsd is Thomas Moestl, but pdnsd is no longer maintained
-by him. This is an extensively revised version by Paul A. Rombouts.
-For a description of the changes see http://members.home.nl/p.a.rombouts/pdnsd.html
-and the file README.par in %{_docdir}/%{name}-%{version}
-
-%{!?distro:You can specify the target distribution when you build the source RPM. For instance, if you're building for a Red Hat system call rpmbuild with:}
-%{!?distro:  --define "distro RedHat"}
-%{?distro:This package was built for a %{distro} distribution.}
-%{!?_with_isdn:It's possible to rebuild the source RPM with isdn support using the rpmbuild option:}
-%{!?_with_isdn:  --with isdn}
-%{?_with_isdn:This package was built with isdn support enabled.}
-%{!?_with_ipv6:It's possible to rebuild the source RPM with ipv6 support using the rpmbuild option:}
-%{!?_with_ipv6:  --with ipv6}
-%{?_with_ipv6:This package was built with ipv6 support.}
-%{?_without_poll:This package was built with the select(2) function instead of poll(2).}
-
-%prep
-%setup
-
-%build
-CFLAGS="${CFLAGS:-$RPM_OPT_FLAGS -Wall}" ./configure \
-	--prefix=%{_prefix} --sysconfdir=%{_sysconfdir} --mandir=%{_mandir} \
-	--with-cachedir="%{cachedir}" \
-	%{?distro:--with-distribution=%{distro}} --enable-specbuild \
-	--with-default-id=%{run_as_user} \
-	%{?_with_isdn:--enable-isdn} \
-	%{?_without_poll:--disable-poll} \
-	%{?_without_nptl:--with-thread-lib=linuxthreads} \
-	%{?_with_ipv6:--enable-ipv6} \
-	%{?_without_tcpqueries:--disable-tcp-queries} \
-	%{?_without_debug:--with-debug=0}
-
-make
-
-%install
-%if "%{run_as_user}" != "nobody"
-[ "$(id -un)" != root ] ||
-id -u %{run_as_user} > /dev/null 2>&1 ||
-/usr/sbin/useradd -c "Proxy DNS daemon" %{?run_as_uid:-u %{run_as_uid}} \
-	-s /sbin/nologin -r -d "%{cachedir}" %{run_as_user} || {
-  set +x
-  echo "Cannot create user \"%{run_as_user}\"%{?run_as_uid: with uid=%{run_as_uid}}"
-  echo "Please select another numerical uid and rebuild with --define \"run_as_uid uid\""
-  echo "or create a user named \"%{run_as_user}\" by hand and try again."
-  exit 1
-}
-%endif
-
-rm -rf "$RPM_BUILD_ROOT"
-make DESTDIR="$RPM_BUILD_ROOT" install
-cp -f file-list.base file-list
-find doc contrib -not -type d -not -iname '*makefile' -not -name '*.am' \
-                 -not -name '*.in' -not -path 'doc/*.pl' |
-sed -e 's/^/%doc --parents /'  >> file-list
-CURDIR=$PWD; cd "$RPM_BUILD_ROOT"
-find . -not -type d '(' -not -name 'pdnsd.conf*' -or -name 'pdnsd.conf.[1-9]*' ')' \
-       -not -path '.%{_docdir}/*' -not -path './var/*' |
-sed -e 's/^\.//
-        \:/man:{
-          /\.gz$/!s/$/.gz/
-        }'  >> "$CURDIR/file-list"
-
-%clean
-rm -rf "$RPM_BUILD_ROOT"
-#rm -rf %{_builddir}/%{name}-%{srcver}
-
-%files -f file-list
-
-%pre
-# First stop any running pdnsd daemons
-%if "%{distro}" == "SuSE"
-/sbin/init.d/pdnsd stop >/dev/null 2>&1
-%endif
-%if "%{distro}" == "RedHat"
-if [ -f /var/lock/subsys/pdnsd ]; then
-  if /sbin/pidof pdnsd > /dev/null; then
-    /sbin/service pdnsd stop >/dev/null 2>&1
-    if [ "$1" -ge 2 ]; then touch /var/lock/subsys/pdnsd; fi
-  else
-    rm -f /var/lock/subsys/pdnsd
-  fi
-fi
-%endif
-
-%if "%{run_as_user}" != "nobody"
-# Add the "pdnsd" user
-id -u %{run_as_user} > /dev/null 2>&1 ||
-/usr/sbin/useradd -c "Proxy DNS daemon" %{?run_as_uid:-u %{run_as_uid}} \
-	 -s /sbin/nologin -r -d "%{cachedir}" %{run_as_user} || {
-  echo "Cannot create user \"%{run_as_user}\"%{?run_as_uid: with uid=%{run_as_uid}}"
-  echo "Please create a user named \"%{run_as_user}\" by hand and try again."
-  exit 1
-}
-[ "$(id -gn %{run_as_user})" = %{run_as_user} ] || {
-  echo "user \"%{run_as_user}\" does not have an corresponding group called \"%{run_as_user}\""
-  echo "Please change the initial group of user \"%{run_as_user}\" to \"%{run_as_user}\" and try again."
-  exit 1
-}
-
-if [ -f "%{conffile}" ] &&
-    grep -v -e '^[[:blank:]]*\(#\|\/\/\)'  "%{conffile}" |
-    grep -q -e '\<run_as[[:blank:]]*=[[:blank:]]*"\?nobody"\?[[:blank:]]*;'
-then
-    echo "An existing pdnsd configuration file %{conffile} has been detected, containing the run_as user ID \"nobody\""
-    echo "For security reasons it is recommended that pdnsd run as a seperate user \"%{run_as_user}\""
-    mv -f "%{conffile}" "%{conffile}.rpmsave" &&
-    echo "Your original %{conffile} has been saved as %{conffile}.rpmsave" &&
-    sed -e '/^[[:blank:]]*\(#\|\/\/\)/!s/\(\<run_as[[:blank:]]*=[[:blank:]]*\)"\?nobody"\?[[:blank:]]*;/\1"%{run_as_user}";/g' \
-         "%{conffile}.rpmsave" > "%{conffile}" &&
-    echo "In %{conffile} runs_as=\"nobody\" has been replaced by run_as=\"%{run_as_user}\""
-fi
-%endif
-
-if [ -f "%{cachedir}/pdnsd.cache" ]; then
-    chown -c %{run_as_user}:%{run_as_user} "%{cachedir}/pdnsd.cache"
-fi
-
-%post
-%if "%{distro}" == "SuSE"
-if [ -w /etc/rc.config ]; then
-  grep "START_PDNSD" /etc/rc.config > /dev/null
-  if [ $? -ne 0 ] ; then
-    echo -e \
-"\n\n#\n# Set to yes to start pdnsd at boot time\n#\nSTART_PDNSD=yes" \
->> /etc/rc.config
-  fi
-fi
-%endif
-%if "%{distro}" == "RedHat"
-if [ "$1" = 1 ]; then
-  /sbin/chkconfig --add pdnsd
-fi
-%endif
-
-%preun
-%if "%{distro}" == "RedHat"
-if [ "$1" = 0 ]; then
-  /sbin/service pdnsd stop >/dev/null 2>&1
-  /sbin/chkconfig --del pdnsd
-fi
-%endif
-
-%postun
-%if "%{distro}" == "RedHat"
-if [ "$1" -ge 1 ]; then
-  /sbin/service pdnsd condrestart >/dev/null 2>&1
-fi
-%endif
-
-%changelog
-* Tue Jan 31 2012 Paul A. Rombouts <p.a.rombouts at home.nl>
-- Prevent makefiles and perl scripts from being installed
-  in the documentation directory.
-* Sat Jan 28 2012 Paul A. Rombouts <p.a.rombouts at home.nl>
-- Update the (Source) URLs.
-* Sat Aug  4 2007 Paul Rombouts <p.a.rombouts at home.nl>
-- License is now GPL version 3
-* Fri Mar 24 2006 Paul Rombouts <p.a.rombouts at home.nl>
-- Instead of using a fixed default value for run_as_uid,
-  I let useradd choose the uid if run_as_uid is undefined.
-* Thu Dec 29 2005 Paul Rombouts <p.a.rombouts at home.nl>
-- TCP-query support is now compiled in by default,
-  but can be disabled using "--without tcpqueries".
-* Sun Jul 20 2003 Paul Rombouts <p.a.rombouts at home.nl>
-- Changed default run_as ID from "nobody" to "pdnsd"
-* Fri Jun 20 2003 Paul Rombouts <p.a.rombouts at home.nl>
-- Added configuration option for NPTL.
-* Sat Jun 07 2003 Paul Rombouts <p.a.rombouts at home.nl>
-- Added automatic definition of distro using _vendor macro.
-* Thu May 22 2003 Paul Rombouts <p.a.rombouts at home.nl>
-- Ensured that modification times of acconfig.h and configure.in
-  are not changed by patching to avoid unwanted reconfigure during make phase.
-* Tue May 20 2003 Paul Rombouts <p.a.rombouts at home.nl>
-- Applied my customized patch file. See READ.par for details.
-* Sun May 16 2001 Thomas Moestl <tmoestl at gmx.net>
-- Make use of chkconfig for Red Hat (patch by Christian Engstler)
-* Sun Mar 25 2001 Thomas Moestl <tmoestl at gmx.net>
-- Merged SuSE fixes by Christian Engstler
-* Fri Feb 09 2001 Thomas Moestl <tmoestl at gmx.net>
-- Merged in a spec fix for mapage inclusion contributed by Sourav K.
-  Mandal
-* Sun Nov 26 2000 Thomas Moestl <tmoestl at gmx.net>
-- Added some patches contributed by Bernd Leibing
-* Tue Aug 15 2000 Thomas Moestl <tmoestl at gmx.net>
-- Added the distro for configure
-* Tue Jul 11 2000 Sourav K. Mandal <smandal at mit.edu>
-- autoconf/automake modifications
diff --git a/jni/pdnsd/src/Makefile.am b/jni/pdnsd/src/Makefile.am
deleted file mode 100644
index 959e669..0000000
--- a/jni/pdnsd/src/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-
-sbin_PROGRAMS = pdnsd
-
-pdnsd_CFLAGS = -DCONFDIR='"$(sysconfdir)"' $(thread_CFLAGS)
-
-pdnsd_SOURCES = conf-parser.c conff.c consts.c debug.c dns.c dns_answer.c \
-	dns_query.c error.c helpers.c icmp.c list.c main.c netdev.c rr_types.c \
-	status.c servers.c thread.c cache.c hash.c conf-parser.h \
-	conf-keywords.h conff.h consts.h debug.h dns.h dns_answer.h \
-	dns_query.h error.h helpers.h icmp.h ipvers.h list.h netdev.h \
-	rr_types.h servers.h status.h thread.h cache.h hash.h pdnsd_assert.h \
-	freebsd_netinet_ip_icmp.h
-
-EXTRA_DIST = make_rr_types_h.pl rr_types.in
-
-## Try to do this last
-
-SUBDIRS = . pdnsd-ctl rc test
-
-$(pdnsd_OBJECTS): rr_types.h
-
-rr_types.h: make_rr_types_h.pl rr_types.in
-	perl make_rr_types_h.pl rr_types.in > rr_types.h
-
diff --git a/jni/pdnsd/src/Makefile.in b/jni/pdnsd/src/Makefile.in
deleted file mode 100644
index 75569a4..0000000
--- a/jni/pdnsd/src/Makefile.in
+++ /dev/null
@@ -1,921 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-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 = :
-sbin_PROGRAMS = pdnsd$(EXEEXT)
-subdir = src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)"
-PROGRAMS = $(sbin_PROGRAMS)
-am_pdnsd_OBJECTS = pdnsd-conf-parser.$(OBJEXT) pdnsd-conff.$(OBJEXT) \
-	pdnsd-consts.$(OBJEXT) pdnsd-debug.$(OBJEXT) \
-	pdnsd-dns.$(OBJEXT) pdnsd-dns_answer.$(OBJEXT) \
-	pdnsd-dns_query.$(OBJEXT) pdnsd-error.$(OBJEXT) \
-	pdnsd-helpers.$(OBJEXT) pdnsd-icmp.$(OBJEXT) \
-	pdnsd-list.$(OBJEXT) pdnsd-main.$(OBJEXT) \
-	pdnsd-netdev.$(OBJEXT) pdnsd-rr_types.$(OBJEXT) \
-	pdnsd-status.$(OBJEXT) pdnsd-servers.$(OBJEXT) \
-	pdnsd-thread.$(OBJEXT) pdnsd-cache.$(OBJEXT) \
-	pdnsd-hash.$(OBJEXT)
-pdnsd_OBJECTS = $(am_pdnsd_OBJECTS)
-pdnsd_LDADD = $(LDADD)
-pdnsd_LINK = $(CCLD) $(pdnsd_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. at 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)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(pdnsd_SOURCES)
-DIST_SOURCES = $(pdnsd_SOURCES)
-RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-pdnsd_CFLAGS = -DCONFDIR='"$(sysconfdir)"' $(thread_CFLAGS)
-pdnsd_SOURCES = conf-parser.c conff.c consts.c debug.c dns.c dns_answer.c \
-	dns_query.c error.c helpers.c icmp.c list.c main.c netdev.c rr_types.c \
-	status.c servers.c thread.c cache.c hash.c conf-parser.h \
-	conf-keywords.h conff.h consts.h debug.h dns.h dns_answer.h \
-	dns_query.h error.h helpers.h icmp.h ipvers.h list.h netdev.h \
-	rr_types.h servers.h status.h thread.h cache.h hash.h pdnsd_assert.h \
-	freebsd_netinet_ip_icmp.h
-
-EXTRA_DIST = make_rr_types_h.pl rr_types.in
-SUBDIRS = . pdnsd-ctl rc test
-all: all-recursive
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in:  $(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) --gnu src/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-sbinPROGRAMS: $(sbin_PROGRAMS)
-	@$(NORMAL_INSTALL)
-	test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
-	@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
-	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)$(sbindir)$$dir'"; \
-	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
-	    } \
-	; done
-
-uninstall-sbinPROGRAMS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || 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)$(sbindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(sbindir)" && rm -f $$files
-
-clean-sbinPROGRAMS:
-	-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
-pdnsd$(EXEEXT): $(pdnsd_OBJECTS) $(pdnsd_DEPENDENCIES) 
-	@rm -f pdnsd$(EXEEXT)
-	$(pdnsd_LINK) $(pdnsd_OBJECTS) $(pdnsd_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-cache.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-conf-parser.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-conff.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-consts.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-debug.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-dns.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-dns_answer.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-dns_query.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-error.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-hash.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-helpers.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-icmp.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-list.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-main.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-netdev.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-rr_types.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-servers.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-status.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-thread.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-pdnsd-conf-parser.o: conf-parser.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-conf-parser.o -MD -MP -MF $(DEPDIR)/pdnsd-conf-parser.Tpo -c -o pdnsd-conf-parser.o `test -f 'conf-parser.c' || echo '$(srcdir)/'`conf-parser.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-conf-parser.Tpo $(DEPDIR)/pdnsd-conf-parser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='conf-parser.c' object='pdnsd-conf-parser.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-conf-parser.o `test -f 'conf-parser.c' || echo '$(srcdir)/'`conf-parser.c
-
-pdnsd-conf-parser.obj: conf-parser.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-conf-parser.obj -MD -MP -MF $(DEPDIR)/pdnsd-conf-parser.Tpo -c -o pdnsd-conf-parser.obj `if test -f 'conf-parser.c'; then $(CYGPATH_W) 'conf-parser.c'; else $(CYGPATH_W) '$(srcdir)/conf-parser.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-conf-parser.Tpo $(DEPDIR)/pdnsd-conf-parser.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='conf-parser.c' object='pdnsd-conf-parser.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-conf-parser.obj `if test -f 'conf-parser.c'; then $(CYGPATH_W) 'conf-parser.c'; else $(CYGPATH_W) '$(srcdir)/conf-parser.c'; fi`
-
-pdnsd-conff.o: conff.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-conff.o -MD -MP -MF $(DEPDIR)/pdnsd-conff.Tpo -c -o pdnsd-conff.o `test -f 'conff.c' || echo '$(srcdir)/'`conff.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-conff.Tpo $(DEPDIR)/pdnsd-conff.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='conff.c' object='pdnsd-conff.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-conff.o `test -f 'conff.c' || echo '$(srcdir)/'`conff.c
-
-pdnsd-conff.obj: conff.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-conff.obj -MD -MP -MF $(DEPDIR)/pdnsd-conff.Tpo -c -o pdnsd-conff.obj `if test -f 'conff.c'; then $(CYGPATH_W) 'conff.c'; else $(CYGPATH_W) '$(srcdir)/conff.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-conff.Tpo $(DEPDIR)/pdnsd-conff.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='conff.c' object='pdnsd-conff.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-conff.obj `if test -f 'conff.c'; then $(CYGPATH_W) 'conff.c'; else $(CYGPATH_W) '$(srcdir)/conff.c'; fi`
-
-pdnsd-consts.o: consts.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-consts.o -MD -MP -MF $(DEPDIR)/pdnsd-consts.Tpo -c -o pdnsd-consts.o `test -f 'consts.c' || echo '$(srcdir)/'`consts.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-consts.Tpo $(DEPDIR)/pdnsd-consts.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='consts.c' object='pdnsd-consts.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-consts.o `test -f 'consts.c' || echo '$(srcdir)/'`consts.c
-
-pdnsd-consts.obj: consts.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-consts.obj -MD -MP -MF $(DEPDIR)/pdnsd-consts.Tpo -c -o pdnsd-consts.obj `if test -f 'consts.c'; then $(CYGPATH_W) 'consts.c'; else $(CYGPATH_W) '$(srcdir)/consts.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-consts.Tpo $(DEPDIR)/pdnsd-consts.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='consts.c' object='pdnsd-consts.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-consts.obj `if test -f 'consts.c'; then $(CYGPATH_W) 'consts.c'; else $(CYGPATH_W) '$(srcdir)/consts.c'; fi`
-
-pdnsd-debug.o: debug.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-debug.o -MD -MP -MF $(DEPDIR)/pdnsd-debug.Tpo -c -o pdnsd-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-debug.Tpo $(DEPDIR)/pdnsd-debug.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='debug.c' object='pdnsd-debug.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-debug.o `test -f 'debug.c' || echo '$(srcdir)/'`debug.c
-
-pdnsd-debug.obj: debug.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-debug.obj -MD -MP -MF $(DEPDIR)/pdnsd-debug.Tpo -c -o pdnsd-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else $(CYGPATH_W) '$(srcdir)/debug.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-debug.Tpo $(DEPDIR)/pdnsd-debug.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='debug.c' object='pdnsd-debug.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-debug.obj `if test -f 'debug.c'; then $(CYGPATH_W) 'debug.c'; else $(CYGPATH_W) '$(srcdir)/debug.c'; fi`
-
-pdnsd-dns.o: dns.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns.o -MD -MP -MF $(DEPDIR)/pdnsd-dns.Tpo -c -o pdnsd-dns.o `test -f 'dns.c' || echo '$(srcdir)/'`dns.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-dns.Tpo $(DEPDIR)/pdnsd-dns.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dns.c' object='pdnsd-dns.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns.o `test -f 'dns.c' || echo '$(srcdir)/'`dns.c
-
-pdnsd-dns.obj: dns.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns.obj -MD -MP -MF $(DEPDIR)/pdnsd-dns.Tpo -c -o pdnsd-dns.obj `if test -f 'dns.c'; then $(CYGPATH_W) 'dns.c'; else $(CYGPATH_W) '$(srcdir)/dns.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-dns.Tpo $(DEPDIR)/pdnsd-dns.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dns.c' object='pdnsd-dns.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns.obj `if test -f 'dns.c'; then $(CYGPATH_W) 'dns.c'; else $(CYGPATH_W) '$(srcdir)/dns.c'; fi`
-
-pdnsd-dns_answer.o: dns_answer.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns_answer.o -MD -MP -MF $(DEPDIR)/pdnsd-dns_answer.Tpo -c -o pdnsd-dns_answer.o `test -f 'dns_answer.c' || echo '$(srcdir)/'`dns_answer.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-dns_answer.Tpo $(DEPDIR)/pdnsd-dns_answer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dns_answer.c' object='pdnsd-dns_answer.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns_answer.o `test -f 'dns_answer.c' || echo '$(srcdir)/'`dns_answer.c
-
-pdnsd-dns_answer.obj: dns_answer.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns_answer.obj -MD -MP -MF $(DEPDIR)/pdnsd-dns_answer.Tpo -c -o pdnsd-dns_answer.obj `if test -f 'dns_answer.c'; then $(CYGPATH_W) 'dns_answer.c'; else $(CYGPATH_W) '$(srcdir)/dns_answer.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-dns_answer.Tpo $(DEPDIR)/pdnsd-dns_answer.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dns_answer.c' object='pdnsd-dns_answer.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns_answer.obj `if test -f 'dns_answer.c'; then $(CYGPATH_W) 'dns_answer.c'; else $(CYGPATH_W) '$(srcdir)/dns_answer.c'; fi`
-
-pdnsd-dns_query.o: dns_query.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns_query.o -MD -MP -MF $(DEPDIR)/pdnsd-dns_query.Tpo -c -o pdnsd-dns_query.o `test -f 'dns_query.c' || echo '$(srcdir)/'`dns_query.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-dns_query.Tpo $(DEPDIR)/pdnsd-dns_query.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dns_query.c' object='pdnsd-dns_query.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns_query.o `test -f 'dns_query.c' || echo '$(srcdir)/'`dns_query.c
-
-pdnsd-dns_query.obj: dns_query.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-dns_query.obj -MD -MP -MF $(DEPDIR)/pdnsd-dns_query.Tpo -c -o pdnsd-dns_query.obj `if test -f 'dns_query.c'; then $(CYGPATH_W) 'dns_query.c'; else $(CYGPATH_W) '$(srcdir)/dns_query.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-dns_query.Tpo $(DEPDIR)/pdnsd-dns_query.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dns_query.c' object='pdnsd-dns_query.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-dns_query.obj `if test -f 'dns_query.c'; then $(CYGPATH_W) 'dns_query.c'; else $(CYGPATH_W) '$(srcdir)/dns_query.c'; fi`
-
-pdnsd-error.o: error.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-error.o -MD -MP -MF $(DEPDIR)/pdnsd-error.Tpo -c -o pdnsd-error.o `test -f 'error.c' || echo '$(srcdir)/'`error.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-error.Tpo $(DEPDIR)/pdnsd-error.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='error.c' object='pdnsd-error.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-error.o `test -f 'error.c' || echo '$(srcdir)/'`error.c
-
-pdnsd-error.obj: error.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-error.obj -MD -MP -MF $(DEPDIR)/pdnsd-error.Tpo -c -o pdnsd-error.obj `if test -f 'error.c'; then $(CYGPATH_W) 'error.c'; else $(CYGPATH_W) '$(srcdir)/error.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-error.Tpo $(DEPDIR)/pdnsd-error.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='error.c' object='pdnsd-error.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-error.obj `if test -f 'error.c'; then $(CYGPATH_W) 'error.c'; else $(CYGPATH_W) '$(srcdir)/error.c'; fi`
-
-pdnsd-helpers.o: helpers.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-helpers.o -MD -MP -MF $(DEPDIR)/pdnsd-helpers.Tpo -c -o pdnsd-helpers.o `test -f 'helpers.c' || echo '$(srcdir)/'`helpers.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-helpers.Tpo $(DEPDIR)/pdnsd-helpers.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='helpers.c' object='pdnsd-helpers.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-helpers.o `test -f 'helpers.c' || echo '$(srcdir)/'`helpers.c
-
-pdnsd-helpers.obj: helpers.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-helpers.obj -MD -MP -MF $(DEPDIR)/pdnsd-helpers.Tpo -c -o pdnsd-helpers.obj `if test -f 'helpers.c'; then $(CYGPATH_W) 'helpers.c'; else $(CYGPATH_W) '$(srcdir)/helpers.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-helpers.Tpo $(DEPDIR)/pdnsd-helpers.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='helpers.c' object='pdnsd-helpers.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-helpers.obj `if test -f 'helpers.c'; then $(CYGPATH_W) 'helpers.c'; else $(CYGPATH_W) '$(srcdir)/helpers.c'; fi`
-
-pdnsd-icmp.o: icmp.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-icmp.o -MD -MP -MF $(DEPDIR)/pdnsd-icmp.Tpo -c -o pdnsd-icmp.o `test -f 'icmp.c' || echo '$(srcdir)/'`icmp.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-icmp.Tpo $(DEPDIR)/pdnsd-icmp.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='icmp.c' object='pdnsd-icmp.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-icmp.o `test -f 'icmp.c' || echo '$(srcdir)/'`icmp.c
-
-pdnsd-icmp.obj: icmp.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-icmp.obj -MD -MP -MF $(DEPDIR)/pdnsd-icmp.Tpo -c -o pdnsd-icmp.obj `if test -f 'icmp.c'; then $(CYGPATH_W) 'icmp.c'; else $(CYGPATH_W) '$(srcdir)/icmp.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-icmp.Tpo $(DEPDIR)/pdnsd-icmp.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='icmp.c' object='pdnsd-icmp.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-icmp.obj `if test -f 'icmp.c'; then $(CYGPATH_W) 'icmp.c'; else $(CYGPATH_W) '$(srcdir)/icmp.c'; fi`
-
-pdnsd-list.o: list.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-list.o -MD -MP -MF $(DEPDIR)/pdnsd-list.Tpo -c -o pdnsd-list.o `test -f 'list.c' || echo '$(srcdir)/'`list.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-list.Tpo $(DEPDIR)/pdnsd-list.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='list.c' object='pdnsd-list.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-list.o `test -f 'list.c' || echo '$(srcdir)/'`list.c
-
-pdnsd-list.obj: list.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-list.obj -MD -MP -MF $(DEPDIR)/pdnsd-list.Tpo -c -o pdnsd-list.obj `if test -f 'list.c'; then $(CYGPATH_W) 'list.c'; else $(CYGPATH_W) '$(srcdir)/list.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-list.Tpo $(DEPDIR)/pdnsd-list.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='list.c' object='pdnsd-list.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-list.obj `if test -f 'list.c'; then $(CYGPATH_W) 'list.c'; else $(CYGPATH_W) '$(srcdir)/list.c'; fi`
-
-pdnsd-main.o: main.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-main.o -MD -MP -MF $(DEPDIR)/pdnsd-main.Tpo -c -o pdnsd-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-main.Tpo $(DEPDIR)/pdnsd-main.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='main.c' object='pdnsd-main.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c
-
-pdnsd-main.obj: main.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-main.obj -MD -MP -MF $(DEPDIR)/pdnsd-main.Tpo -c -o pdnsd-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-main.Tpo $(DEPDIR)/pdnsd-main.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='main.c' object='pdnsd-main.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`
-
-pdnsd-netdev.o: netdev.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-netdev.o -MD -MP -MF $(DEPDIR)/pdnsd-netdev.Tpo -c -o pdnsd-netdev.o `test -f 'netdev.c' || echo '$(srcdir)/'`netdev.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-netdev.Tpo $(DEPDIR)/pdnsd-netdev.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='netdev.c' object='pdnsd-netdev.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-netdev.o `test -f 'netdev.c' || echo '$(srcdir)/'`netdev.c
-
-pdnsd-netdev.obj: netdev.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-netdev.obj -MD -MP -MF $(DEPDIR)/pdnsd-netdev.Tpo -c -o pdnsd-netdev.obj `if test -f 'netdev.c'; then $(CYGPATH_W) 'netdev.c'; else $(CYGPATH_W) '$(srcdir)/netdev.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-netdev.Tpo $(DEPDIR)/pdnsd-netdev.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='netdev.c' object='pdnsd-netdev.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-netdev.obj `if test -f 'netdev.c'; then $(CYGPATH_W) 'netdev.c'; else $(CYGPATH_W) '$(srcdir)/netdev.c'; fi`
-
-pdnsd-rr_types.o: rr_types.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-rr_types.o -MD -MP -MF $(DEPDIR)/pdnsd-rr_types.Tpo -c -o pdnsd-rr_types.o `test -f 'rr_types.c' || echo '$(srcdir)/'`rr_types.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-rr_types.Tpo $(DEPDIR)/pdnsd-rr_types.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='rr_types.c' object='pdnsd-rr_types.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-rr_types.o `test -f 'rr_types.c' || echo '$(srcdir)/'`rr_types.c
-
-pdnsd-rr_types.obj: rr_types.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-rr_types.obj -MD -MP -MF $(DEPDIR)/pdnsd-rr_types.Tpo -c -o pdnsd-rr_types.obj `if test -f 'rr_types.c'; then $(CYGPATH_W) 'rr_types.c'; else $(CYGPATH_W) '$(srcdir)/rr_types.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-rr_types.Tpo $(DEPDIR)/pdnsd-rr_types.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='rr_types.c' object='pdnsd-rr_types.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-rr_types.obj `if test -f 'rr_types.c'; then $(CYGPATH_W) 'rr_types.c'; else $(CYGPATH_W) '$(srcdir)/rr_types.c'; fi`
-
-pdnsd-status.o: status.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-status.o -MD -MP -MF $(DEPDIR)/pdnsd-status.Tpo -c -o pdnsd-status.o `test -f 'status.c' || echo '$(srcdir)/'`status.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-status.Tpo $(DEPDIR)/pdnsd-status.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='status.c' object='pdnsd-status.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-status.o `test -f 'status.c' || echo '$(srcdir)/'`status.c
-
-pdnsd-status.obj: status.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-status.obj -MD -MP -MF $(DEPDIR)/pdnsd-status.Tpo -c -o pdnsd-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-status.Tpo $(DEPDIR)/pdnsd-status.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='status.c' object='pdnsd-status.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-status.obj `if test -f 'status.c'; then $(CYGPATH_W) 'status.c'; else $(CYGPATH_W) '$(srcdir)/status.c'; fi`
-
-pdnsd-servers.o: servers.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-servers.o -MD -MP -MF $(DEPDIR)/pdnsd-servers.Tpo -c -o pdnsd-servers.o `test -f 'servers.c' || echo '$(srcdir)/'`servers.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-servers.Tpo $(DEPDIR)/pdnsd-servers.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='servers.c' object='pdnsd-servers.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-servers.o `test -f 'servers.c' || echo '$(srcdir)/'`servers.c
-
-pdnsd-servers.obj: servers.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-servers.obj -MD -MP -MF $(DEPDIR)/pdnsd-servers.Tpo -c -o pdnsd-servers.obj `if test -f 'servers.c'; then $(CYGPATH_W) 'servers.c'; else $(CYGPATH_W) '$(srcdir)/servers.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-servers.Tpo $(DEPDIR)/pdnsd-servers.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='servers.c' object='pdnsd-servers.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-servers.obj `if test -f 'servers.c'; then $(CYGPATH_W) 'servers.c'; else $(CYGPATH_W) '$(srcdir)/servers.c'; fi`
-
-pdnsd-thread.o: thread.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-thread.o -MD -MP -MF $(DEPDIR)/pdnsd-thread.Tpo -c -o pdnsd-thread.o `test -f 'thread.c' || echo '$(srcdir)/'`thread.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-thread.Tpo $(DEPDIR)/pdnsd-thread.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='thread.c' object='pdnsd-thread.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-thread.o `test -f 'thread.c' || echo '$(srcdir)/'`thread.c
-
-pdnsd-thread.obj: thread.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-thread.obj -MD -MP -MF $(DEPDIR)/pdnsd-thread.Tpo -c -o pdnsd-thread.obj `if test -f 'thread.c'; then $(CYGPATH_W) 'thread.c'; else $(CYGPATH_W) '$(srcdir)/thread.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-thread.Tpo $(DEPDIR)/pdnsd-thread.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='thread.c' object='pdnsd-thread.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-thread.obj `if test -f 'thread.c'; then $(CYGPATH_W) 'thread.c'; else $(CYGPATH_W) '$(srcdir)/thread.c'; fi`
-
-pdnsd-cache.o: cache.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-cache.o -MD -MP -MF $(DEPDIR)/pdnsd-cache.Tpo -c -o pdnsd-cache.o `test -f 'cache.c' || echo '$(srcdir)/'`cache.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-cache.Tpo $(DEPDIR)/pdnsd-cache.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cache.c' object='pdnsd-cache.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-cache.o `test -f 'cache.c' || echo '$(srcdir)/'`cache.c
-
-pdnsd-cache.obj: cache.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-cache.obj -MD -MP -MF $(DEPDIR)/pdnsd-cache.Tpo -c -o pdnsd-cache.obj `if test -f 'cache.c'; then $(CYGPATH_W) 'cache.c'; else $(CYGPATH_W) '$(srcdir)/cache.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-cache.Tpo $(DEPDIR)/pdnsd-cache.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='cache.c' object='pdnsd-cache.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-cache.obj `if test -f 'cache.c'; then $(CYGPATH_W) 'cache.c'; else $(CYGPATH_W) '$(srcdir)/cache.c'; fi`
-
-pdnsd-hash.o: hash.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-hash.o -MD -MP -MF $(DEPDIR)/pdnsd-hash.Tpo -c -o pdnsd-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-hash.Tpo $(DEPDIR)/pdnsd-hash.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='hash.c' object='pdnsd-hash.o' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
-
-pdnsd-hash.obj: hash.c
- at am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -MT pdnsd-hash.obj -MD -MP -MF $(DEPDIR)/pdnsd-hash.Tpo -c -o pdnsd-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/pdnsd-hash.Tpo $(DEPDIR)/pdnsd-hash.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='hash.c' object='pdnsd-hash.obj' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pdnsd_CFLAGS) $(CFLAGS) -c -o pdnsd-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
-
-# 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.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; 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"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	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; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(PROGRAMS)
-installdirs: installdirs-recursive
-installdirs-am:
-	for dir in "$(DESTDIR)$(sbindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-recursive
-
-clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am: install-sbinPROGRAMS
-
-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 -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-sbinPROGRAMS
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic \
-	clean-sbinPROGRAMS ctags ctags-recursive distclean \
-	distclean-compile distclean-generic distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am 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-sbinPROGRAMS \
-	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-recursive uninstall uninstall-am \
-	uninstall-sbinPROGRAMS
-
-
-$(pdnsd_OBJECTS): rr_types.h
-
-rr_types.h: make_rr_types_h.pl rr_types.in
-	perl make_rr_types_h.pl rr_types.in > rr_types.h
-
-# 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:
diff --git a/jni/pdnsd/src/cache.c b/jni/pdnsd/src/cache.c
deleted file mode 100644
index 32d28cc..0000000
--- a/jni/pdnsd/src/cache.c
+++ /dev/null
@@ -1,2731 +0,0 @@
-/* cache.c - Keep the dns caches.
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2003, 2004, 2005, 2007, 2010, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-#include <errno.h>
-#include <pthread.h>
-#include <signal.h>
-#include <string.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <sys/time.h>
-#include "cache.h"
-#include "hash.h"
-#include "conff.h"
-#include "helpers.h"
-#include "dns.h"
-#include "error.h"
-#include "debug.h"
-#include "thread.h"
-#include "ipvers.h"
-
-
-/* A version identifier to prevent reading incompatible cache files */
-static const char cachverid[] = {'p','d','1','3'};
-
-/* CACHE STRUCTURE CHANGES IN PDNSD 1.0.0
- * Prior to version 1.0.0, the cache was managed at domain granularity (all records of a domain were handled as a unit),
- * which was suboptimal after the lean query feature and the additional record management were included.
- * From 1.0.0 on, the cache management was switched to act with RR set granularity. The API of the cache handlers was
- * slightly modified, in particular the rr_bucket_t was modified and some parameter list were changed. The cache
- * file format had to be changed and is incompatible now. This means that post-1.0.0p1 versions will not read the cache
- * files of older versions and vice versa. In addition, cache files from 1.0.0p5 on are incompatible to those of 1.0.0p1
- * to 1.0.0p4.  Better delete them before upgrading.
- * The "cent" lists common to old versions have vanished; the only access point to the cent's is the hash.
- * However, there are now double linked rrset lists. Thus, rrs can be acces through the hash or through the rrset lists.
- * The rrset list entries need some additional entries to manage the deletion from rrs lists as well as from the cents.
- *
- * Nearly all cache functions had to be changed significantly or even to be rewritten for that. Expect some beta time
- * because of that.
- * There are bonuses visible to the users resulting from this changes however: more consistent cache handling (under
- * some circumstances, rrs could be in the cache more than once) and reduced memory requirements, as no rr needs
- * to have stored its oname any more. There are more pointers however, and in some cases (CNAMES) the memory require-
- * ments for some records may increase. The total should be lower, however.
- *
- * RRSET_L LIST STRUCTURE:
- * The rrset_l rrset list is a simple double-linked list. The oldest entries are at the first positions, the list is sorted
- * by age in descending order. Search is done only on insert.
- * The rationale for this form is:
- * - the purging operation needs to be fast (this way, the first records are the oldest and can easily be purged)
- * - the append operation is common and needs to be fast (in normal operation, an appended record was just retrieved
- *   and therefore is the newest, so it can be appended at the end of the list without search. Only in the case of
- *   reading a disk cache file, searches are necessary)
- * The rrset list is excusively used for purging purposes.
- *
- * THE DISK CACHE FILES:
- * The disk cache file consists of cent's, i.e. structures for every known hostnames with a header and rrs attached to it.
- * Therefore, the rr's are not ordered by their age and a search must be performed to insert the into the rr_l in the
- * right positions. This operations has some costs (although not all too much), but the other way (rrs stored in order
- * of their age and the cent headers separated from them), the rrs would need to be attached to the cent headers, which
- * would be even more costly, also in means of disk space.
- *
- * CHANGES AFTER 1.0.0p1
- * In 1.0.0p5, the cache granularity was changed from rr level to rr set level. This was done because rfc2181 demands
- * rr set consistency constraints on rr set level and if we are doing so we can as well save space (and eliminate some
- * error-prone algorithms).
- *
- * CHANGES FOR 1.1.0p1
- * In this version, negative caching support was introduced. Following things were changed for that:
- * - new members ts, ttl and flags in dns_cent_t and dns_file_t
- * - new caching flag CF_NEGATIVE
- * - all functions must accept and deal correctly with empty cents with DF_NEGATIVE set.
- * - all functions must accept and deal correctly with empty rrsets with CF_NEGATIVE set.
- */
-
-
-/*
- * This is the size the memory cache may exceed the size of the permanent cache.
- */
-#define MCSZ 10240
-
-/* Some structs used for storing cache entries in a file. */
-typedef struct {
-	unsigned short   rdlen;
-/*	data (with length rdlen) follows here;*/
-} rr_fbucket_t;
-
-typedef struct {
-	unsigned char    tp;                      /* RR type */
-	unsigned char    num_rr;                  /* Number of records in RR set. */
-	unsigned short   flags;                   /* Flags for RR set. */
-	time_t           ttl;
-	time_t           ts;
-}  __attribute__((packed))
-rr_fset_t;
-
-#if NRRTOT>255
-#warning "Number of cache-able RR types is greater than 255. This can give problems when saving the cache to file."
-#endif
-
-typedef struct {
-	unsigned char    qlen;                    /* Length of the domain name which follows after the struct. */
-	unsigned char    num_rrs;                 /* Number of RR-sets. */
-	unsigned short   flags;                   /* Flags for the whole cent. */
-	unsigned char    c_ns,c_soa;              /* Number of trailing name elements in qname to use to find NS or SOA
-						     records to add to the authority section of a response. */
-     /* ttl and ts follow but only for negatively cached domains. */
-     /* qname (with length qlen) follows here. */
-}  __attribute__((packed))
-dns_file_t;
-
-
-/* TTL and timestamp for negatively cached domains. */
-typedef struct {
-	time_t           ttl;
-	time_t           ts;
-}  __attribute__((packed))
-dom_fttlts_t;
-
-/*
- * This has two modes: Normally, we have rrset, cent and idx filled in;
- * for negatively cached cents, we have rrset set to NULL and idx set to -1.
- */
-typedef struct rr_lent_s {
-	struct rr_lent_s *next;
-	struct rr_lent_s *prev;
-	rr_set_t         *rrset;
-	dns_cent_t       *cent;
-	int              idx;    /* This is the array index, not the type of the RR-set. */
-} rr_lent_t;
-
-
-static rr_lent_t *rrset_l=NULL;
-static rr_lent_t *rrset_l_tail=NULL;
-
-/*
- * We do not count the hash table sizes here. Those are very small compared
- * to the cache entries.
- */
-static volatile long cache_size=0;
-static volatile long ent_num=0;
-
-static volatile int cache_w_lock=0;
-static volatile int cache_r_lock=0;
-
-pthread_mutex_t lock_mutex = PTHREAD_MUTEX_INITIALIZER;
-/*
- * These are condition variables for lock coordination, so that normal lock
- * routines do not need to loop. Basically, a process wanting to acquire a lock
- * tries first to lock, and if the lock is busy, sleeps on one of the conds.
- * If the r lock count has gone to zero one process sleeping on the rw cond
- * will be awankened.
- * If the rw lock is lifted, either all threads waiting on the r lock or one
- * thread waiting on the rw lock is/are awakened. This is determined by policy.
- */
-pthread_cond_t  rw_cond = PTHREAD_COND_INITIALIZER;
-pthread_cond_t  r_cond = PTHREAD_COND_INITIALIZER;
-
-/* This is to suspend the r lock to avoid lock contention by reading threads */
-static volatile int r_pend=0;
-static volatile int rw_pend=0;
-static volatile int r_susp=0;
-
-/* This threshold is used to temporarily suspend r locking to give rw locking
- * a chance. */
-#define SUSP_THRESH(r_pend) (r_pend/2+2)
-
-/*
- * This is set to 1 once the lock is intialized. This must happen before we get
- * multiple threads.
- */
-volatile short int use_cache_lock=0;
-
-/*
-  This is set to 0 while cache is read from disk.
-  This must be set to 1 before we start adding new entries.
-*/
-static short int insert_sort=1;
-
-
-#ifdef ALLOC_DEBUG
-#define cache_free(ptr)		{ if (dbg) pdnsd_free(ptr); else free(ptr); }
-#define cache_malloc(sz)	((dbg)?(pdnsd_malloc(sz)):(malloc(sz)))
-#define cache_calloc(n,sz)	((dbg)?(pdnsd_calloc(n,sz)):(calloc(n,sz)))
-#define cache_realloc(ptr,sz)	((dbg)?(pdnsd_realloc(ptr,sz)):(realloc(ptr,sz)))
-#else
-#define cache_free(ptr)		{free(ptr);}
-#define cache_malloc(sz)	(malloc(sz))
-#define cache_calloc(n,sz)	(calloc(n,sz))
-#define cache_realloc(ptr,sz)	(realloc(ptr,sz))
-#endif
-
-
-/*
- * Prototypes for internal use
- */
-static void purge_cache(long sz, int lazy);
-static void del_cache_ent(dns_cent_t *cent,dns_hash_loc_t *loc);
-static void remove_rrl(rr_lent_t *le  DBGPARAM);
-
-/*
- * Locking functions.
- */
-
-/*
- * Lock/unlock cache for reading. Concurrent reads are allowed, while writes are forbidden.
- * DO NOT MIX THE LOCK TYPES UP WHEN LOCKING/UNLOCKING!
- *
- * We use a mutex to lock the access to the locks ;-).
- * This is because we do not allow read and write to interfere (for which a normal mutex would be
- * fine), but we also want to allow concurrent reads.
- * We use condition variables, and readlock contention protection.
- */
-static void lock_cache_r(void)
-{
-	if (!use_cache_lock)
-		return;
-	pthread_mutex_lock(&lock_mutex);
-	r_pend++;
-	while(((rw_pend>SUSP_THRESH(r_pend))?(r_susp=1):r_susp) || cache_w_lock) {
-		/* This will unlock the mutex while sleeping and relock it before exit */
-		pthread_cond_wait(&r_cond, &lock_mutex);
-	}
-	cache_r_lock++;
-	r_pend--;
-	pthread_mutex_unlock(&lock_mutex);
-}
-
-static void unlock_cache_r(void)
-{
-	if (!use_cache_lock)
-		return;
-	pthread_mutex_lock(&lock_mutex);
-	if (cache_r_lock>0)
-		cache_r_lock--;
-	/* wakeup threads waiting to write */
-	if (!cache_r_lock)
-		pthread_cond_signal(&rw_cond);
-	pthread_mutex_unlock(&lock_mutex);
-}
-
-/*
- * Lock/unlock cache for reading and writing. Concurrent reads and writes are forbidden.
- * Do this only if you actually modify the cache.
- * DO NOT MIX THE LOCK TYPES UP WHEN LOCKING/UNLOCKING!
- * (cant say it often enough)
- */
-static void lock_cache_rw(void)
-{
-	if (!use_cache_lock)
-		return;
-	pthread_mutex_lock(&lock_mutex);
-	rw_pend++;
-	while(cache_w_lock || cache_r_lock) {
-		/* This will unlock the mutex while sleeping and relock it before exit */
-		pthread_cond_wait(&rw_cond, &lock_mutex);
-	}
-	cache_w_lock=1;
-	rw_pend--;
-	pthread_mutex_unlock(&lock_mutex);
-}
-
-/* Lock cache for reading and writing, or time out after tm seconds. */
-static int timedlock_cache_rw(int tm)
-{
-	int retval=0;
-	struct timeval now;
-	struct timespec timeout;
-
-	if (!use_cache_lock)
-		return 0;
-	pthread_mutex_lock(&lock_mutex);
-	gettimeofday(&now,NULL);
-	timeout.tv_sec = now.tv_sec + tm;
-	timeout.tv_nsec = now.tv_usec * 1000;
-	rw_pend++;
-	while(cache_w_lock || cache_r_lock) {
-		/* This will unlock the mutex while sleeping and relock it before exit */
-		if(pthread_cond_timedwait(&rw_cond, &lock_mutex, &timeout) == ETIMEDOUT)
-			goto cleanup_return;
-	}
-	cache_w_lock=1;
-	retval=1;
- cleanup_return:
-	rw_pend--;
-	pthread_mutex_unlock(&lock_mutex);
-	return retval;
-}
-
-static void unlock_cache_rw(void)
-{
-	if (!use_cache_lock)
-		return;
-	pthread_mutex_lock(&lock_mutex);
-	cache_w_lock=0;
-	/* always reset r suspension (r locking code will set it again) */
-	r_susp=0;
-	/* wakeup threads waiting to read or write */
-	if (r_pend==0 || rw_pend>SUSP_THRESH(r_pend))
-		pthread_cond_signal(&rw_cond); /* schedule another rw proc */
-	else
-		pthread_cond_broadcast(&r_cond); /* let 'em all read */
-	pthread_mutex_unlock(&lock_mutex);
-}
-
-
-/*
-  If there are other threads waiting to read from or write to
-  the cache, give up the read/write lock on the cache to give another
-  thread a chance; then try to get the lock back again.
-  This can be called regularly during a process that takes
-  a lot of processor time but has low priority, in order to improve
-  overall responsiveness.
-*/
-static void yield_lock_cache_rw()
-{
-	if (!use_cache_lock || (!r_pend && !rw_pend))
-		return;
-
-	/* Give up the lock */
-	pthread_mutex_lock(&lock_mutex);
-	cache_w_lock=0;
-	/* always reset r suspension (r locking code will set it again) */
-	r_susp=0;
-	/* wakeup threads waiting to read or write */
-	if (r_pend==0 || rw_pend>SUSP_THRESH(r_pend))
-		pthread_cond_signal(&rw_cond); /* schedule another rw proc */
-	else
-		pthread_cond_broadcast(&r_cond); /* let 'em all read */
-	pthread_mutex_unlock(&lock_mutex);
-
-	usleep_r(1000);
-
-	/* Now try to get the lock back again */
-	pthread_mutex_lock(&lock_mutex);
-	rw_pend++;
-	while(cache_w_lock || cache_r_lock) {
-		/* This will unlock the mutex while sleeping and relock it before exit */
-		pthread_cond_wait(&rw_cond, &lock_mutex);
-	}
-	cache_w_lock=1;
-	rw_pend--;
-	pthread_mutex_unlock(&lock_mutex);
-}
-
-/* These are a special version of the ordinary read lock functions. The lock "soft" to avoid deadlocks: they will give up
- * after a certain number of bad trials. You have to check the exit status though.
- * To avoid blocking mutexes, we cannot use condition variables here. Never mind, these are only used on
- * exit. */
-static int softlock_cache_r(void)
-{
-	if (!use_cache_lock)
-		return 0;
-	{
-		int lk=0,tr=0;
-
-		for(;;) {
-			if (!softlock_mutex(&lock_mutex))
-				return 0;
-			if(!cache_w_lock) {
-				lk=1;
-				cache_r_lock++;
-			}
-			pthread_mutex_unlock(&lock_mutex);
-			if (lk) break;
-			if (++tr>=SOFTLOCK_MAXTRIES)
-				return 0;
-			usleep_r(1000); /*give contol back to the scheduler instead of hammering the lock close*/
-		}
-	}
-	return 1;
-}
-
-/* On unlocking, we do not wake others. We are about to exit! */
-static int softunlock_cache_r(void)
-{
-	if (!use_cache_lock)
-		return 0;
-	if (!softlock_mutex(&lock_mutex))
-		return 0;
-	if (cache_r_lock>0)
-		cache_r_lock--;
-	pthread_mutex_unlock(&lock_mutex);
-	return 1;
-}
-
-static int softlock_cache_rw(void)
-{
-	if (!use_cache_lock)
-		return 0;
-	{
-		int lk=0,tr=0;
-
-		for(;;) {
-			if (!softlock_mutex(&lock_mutex))
-				return 0;
-			if (!(cache_w_lock || cache_r_lock)) {
-				lk=1;
-				cache_w_lock=1;
-			}
-			pthread_mutex_unlock(&lock_mutex);
-			if(lk) break;
-			if (++tr>=SOFTLOCK_MAXTRIES)
-				return 0;
-			usleep_r(1000); /*give contol back to the scheduler instead of hammering the lock close*/
-		}
-	}
-	return 1;
-}
-
-static int softunlock_cache_rw(void)
-{
-	if (!use_cache_lock)
-		return 0;
-	if (!softlock_mutex(&lock_mutex))
-		return 0;
-	cache_w_lock=0;
-	pthread_mutex_unlock(&lock_mutex);
-	return 1;
-}
-
-/*
- * Serial numbers: Serial numbers are used when additional records are added to the cache: serial numbers are unique to each
- * query, so we can determine whether data was added by the query just executed (records can coexist) or not (records must
- * be replaced). A serial of 0 is special and will not be used by any query. All records added added authoritatively (as
- * chunk) or read from a file can have no query in process and therefore have serial 0, which is != any other serial.
- */
-#if 0
-unsigned long l_serial=1;
-
-unsigned long get_serial()
-{
-	unsigned long rv;
-	lock_cache_rw();
-	rv=l_serial++;
-	unlock_cache_rw();
-	return rv;
-}
-#endif
-
-/*
- * Cache/cent handlers
- */
-
-/* Initialize the cache. Call only once. */
-#if 0
-void init_cache()
-{
-	mk_hash_ctable();
-	mk_dns_hash();
-}
-#endif
-
-/* Initialize the cache lock. Call only once. */
-/* This is now defined as an inline function in cache.h */
-#if 0
-void init_cache_lock()
-{
-
-	use_cache_lock=1;
-}
-#endif
-
-/* Empty the cache, freeing all entries that match the include/exclude list. */
-int empty_cache(slist_array sla)
-{
-	int i;
-
-	/* Wait at most 60 seconds to obtain a lock. */
-	if(!timedlock_cache_rw(60))
-		return 0;
-
-	for(i=0; ; ) {
-		if(sla)
-			free_dns_hash_selected(i,sla);
-		else
-			free_dns_hash_bucket(i);
-		if(++i>=HASH_NUM_BUCKETS)
-			break;
-		/* Give another thread a chance */
-		yield_lock_cache_rw();
-	}
-
-	unlock_cache_rw();
-	return 1;
-}
-
-/* Delete the cache. Call only once */
-void destroy_cache()
-{
-	/* lock the cache, in case that any thread is still accessing. */
-	if(!softlock_cache_rw()) {
-		log_error("Lock failed; could not destroy cache on exit.");
-		return;
-	}
-	free_dns_hash();
-#if DEBUG>0
-	if(ent_num || cache_size) {
-		DEBUG_MSG("After destroying cache, %ld entries (%ld bytes) remaining.\n",ent_num,cache_size);
-	}
-#endif
-
-#if 0
-#if (TARGET!=TARGET_LINUX)
-	/* under Linux, this frees no resources but may hang on a crash */
-	pthread_mutex_destroy(&lock_mutex);
-	pthread_cond_destroy(&rw_cond);
-	pthread_cond_destroy(&r_cond);
-#endif
-#endif
-}
-
-/* Make a flag value for a dns_cent_t (dns cache entry) from a server record */
-/* Now defined as inline function in cache.h */
-#if 0
-unsigned int mk_flag_val(servparm_t *server)
-{
-	unsigned int fl=0;
-	if (!server->purge_cache)
-		fl|=CF_NOPURGE;
-	if (server->nocache)
-		fl|=CF_NOCACHE;
-	if (server->rootserver)
-		fl|=CF_ROOTSERV;
-	return fl;
-}
-#endif
-
-/* Initialize a dns cache record (dns_cent_t) with the query name (in
- * transport format), a flag value, a timestamp indicating
- * the time the query was done, and a TTL. The timestamp and TTL
- * are only used if DF_NEGATIVE is set in the flags. Otherwise,
- * the timestamps of the individual records are used. DF_NEGATIVE
- * is used for whole-domain negative caching.
- * By convention, ttl and ts should be set to 0, unless the
- * DF_NEGATIVE bit is set. */
-int init_cent(dns_cent_t *cent, const unsigned char *qname, time_t ttl, time_t ts, unsigned flags  DBGPARAM)
-{
-	int i;
-	size_t namesz=rhnlen(qname);
-
-	cent->qname=cache_malloc(namesz);
-	if (cent->qname == NULL)
-		return 0;
-	memcpy(cent->qname,qname,namesz);
-	cent->cs=sizeof(dns_cent_t)+namesz;
-	cent->num_rrs=0;
-	cent->flags=flags;
-	if(flags&DF_NEGATIVE) {
-		cent->neg.lent=NULL;
-		cent->neg.ttl=ttl;
-		cent->neg.ts=ts;
-	}
-	else {
-		for(i=0; i<NRRMU; ++i)
-			cent->rr.rrmu[i]=NULL;
-		cent->rr.rrext=NULL;
-	}
-	cent->c_ns=cundef;
-	cent->c_soa=cundef;
-	return 1;
-}
-
-/*
- * Create a rr record holder using the given values.
- */
-static rr_bucket_t *create_rr(unsigned dlen, void *data  DBGPARAM)
-{
-	rr_bucket_t *rrb;
-	rrb=(rr_bucket_t *)cache_malloc(sizeof(rr_bucket_t)+dlen);
-	if (rrb == NULL)
-		return NULL;
-	rrb->next=NULL;
-
-	rrb->rdlen=dlen;
-	memcpy(rrb->data,data,dlen);
-	return rrb;
-}
-
-/*
- * Adds an empty rrset_t with the requested data to a cent. This is exactly what you need to
- * do to create a negatively cached cent.
- */
-static int add_cent_rrset_by_index(dns_cent_t *cent, unsigned int idx, time_t ttl, time_t ts, unsigned flags  DBGPARAM)
-{
-	rr_set_t **rrext, **rrsetpa, *rrset;
-
-	/* If we add a rrset, even a negative one, the domain is not negative any more. */
-	if (cent->flags&DF_NEGATIVE) {
-		int i;
-		/* need to remove the cent from the lent list. */
-		if (cent->neg.lent)
-			remove_rrl(cent->neg.lent  DBGARG);
-		cent->flags &= ~DF_NEGATIVE;
-		for(i=0; i<NRRMU; ++i)
-			cent->rr.rrmu[i]=NULL;
-		cent->rr.rrext=NULL;
-	}
-
-	if(idx < NRRMU)
-		rrsetpa = &cent->rr.rrmu[idx];
-	else {
-		idx -= NRRMU;
-		PDNSD_ASSERT(idx < NRREXT, "add_cent_rrset_by_index: rr-set index out of range");
-		rrext = cent->rr.rrext;
-		if(!rrext) {
-			int i;
-			cent->rr.rrext = rrext = cache_malloc(sizeof(rr_set_t*)*NRREXT);
-			if(!rrext)
-				return 0;
-			for(i=0; i<NRREXT; ++i)
-				rrext[i]=NULL;
-			cent->cs += sizeof(rr_set_t*)*NRREXT;
-		}
-		rrsetpa = &rrext[idx];
-	}
-
-#if 0
-	if(*rrsetpa) del_rrset(*rrsetpa);
-#endif
-	*rrsetpa = rrset = cache_malloc(sizeof(rr_set_t));
-	if (!rrset)
-		return 0;
-	rrset->lent=NULL;
-	rrset->ttl=ttl;
-	rrset->ts=ts;
-	rrset->flags=flags;
-	rrset->rrs=NULL;
-	cent->cs += sizeof(rr_set_t);
-	++cent->num_rrs;
-	return 1;
-}
-
-int add_cent_rrset_by_type(dns_cent_t *cent, int type, time_t ttl, time_t ts, unsigned flags  DBGPARAM)
-{
-	int tpi = type - T_MIN;
-
-	PDNSD_ASSERT(tpi>=0 && tpi<T_NUM, "add_cent_rrset_by_type: rr type value out of range");
-	return add_cent_rrset_by_index(cent, rrlkuptab[tpi], ttl, ts, flags  DBGARG);
-}
-
-
-/*
- * Adds a rr record to a cent. For cache.c internal use.
- * idx is the internally used RR-set index, not the RR type!
- */
-static int add_cent_rr_int(dns_cent_t *cent, unsigned int idx, time_t ttl, time_t ts, unsigned flags,
-			   unsigned dlen, void *data, rr_bucket_t **rtail  DBGPARAM)
-{
-	rr_bucket_t *rr;
-	rr_set_t *rrset;
-
-	if (!(rr=create_rr(dlen,data  DBGARG)))
-		return 0;
-	if(!(rtail && *rtail)) {
-		rrset = RRARR_INDEX_TESTEXT(cent,idx);
-		if (!rrset) {
-			if (!add_cent_rrset_by_index(cent, idx, ttl, ts, flags  DBGARG))
-				goto cleanup_return;
-			rrset = RRARR_INDEX(cent,idx);
-		}
-		/* do the linking work */
-		rr->next=rrset->rrs;
-		rrset->rrs=rr;
-	}
-	else {
-		/* append at the end */
-		rr->next=(*rtail)->next;
-		(*rtail)->next=rr;
-	}
-	if(rtail) *rtail=rr;
-	cent->cs += sizeof(rr_bucket_t)+rr->rdlen;
-#if DEBUG>0
-	if(debug_p) {
-		rrset = RRARR_INDEX(cent,idx);
-		if (rrset->flags&CF_NEGATIVE) {
-			char cflagstr[CFLAGSTRLEN];
-			DEBUG_MSG("Tried to add rr to a rrset with CF_NEGATIVE set! flags=%s\n",cflags2str(rrset->flags,cflagstr));
-		}
-	}
-#endif
-	return 1;
-
- cleanup_return:
-	free_rr(*rr);
-	free(rr);
-	return 0;
-}
-
-
-/* Add an rr to a cache entry, giving the ttl, the data length, the rr type
- * and a pointer to the data. A record is allocated, and the data is copied into
- * it. Do this for all rrs in a cache entry.
- * The return value will be 1 in case of success, or 0 in case of a memory allocation
- * problem.
- */
-int add_cent_rr(dns_cent_t *cent, int type, time_t ttl, time_t ts, unsigned flags,
-		unsigned dlen, void *data  DBGPARAM)
-{
-	int tpi;
-	unsigned int idx;
-	rr_set_t *rrset;
-	rr_bucket_t *rtail, *rrb;
-
-	if ((cent->flags&DF_LOCAL) && !(flags&CF_LOCAL))
-		return 1;  /* ignore. Local has precedence. */
-
-	tpi = type - T_MIN;
-	PDNSD_ASSERT(tpi>=0 && tpi<T_NUM, "add_cent_rr: rr type value out of range");
-	idx= rrlkuptab[tpi];
-	PDNSD_ASSERT(idx < NRRTOT, "add_cent_rr: illegal rr type value for caching");
-	rrset= RRARR_INDEX_TESTEXT(cent,idx);
-	rtail=NULL;
-
-	if (rrset) {
-		if(ttl<rrset->ttl)
-			/* The ttl timestamps should be identical.
-			   In case they are not, we will use the smallest one. */
-			rrset->ttl= ttl;
-
-		/* OK, some stupid nameservers feel inclined to return the same address twice. Grmbl... */
-		rrb=rrset->rrs;
-		while (rrb) {
-			if (rrb->rdlen==dlen && memcmp(rrb->data,data,dlen)==0)
-				return 1;
-			rtail=rrb;
-			rrb=rrb->next;
-		}
-	}
-	return add_cent_rr_int(cent,idx,ttl,ts,flags,dlen,data,&rtail  DBGARG);
-}
-
-/* Free a complete rrset including all memory. Returns the size of the memory freed */
-int del_rrset(rr_set_t *rrs  DBGPARAM)
-{
-	int rv=sizeof(rr_set_t);
-	rr_bucket_t *rrb,*rrn;
-
-	if(rrs->lent) remove_rrl(rrs->lent  DBGARG);
-	rrb=rrs->rrs;
-	while (rrb) {
-		rv+=sizeof(rr_bucket_t)+rrb->rdlen;
-		rrn=rrb->next;
-		free_rr(*rrb);
-		cache_free(rrb);
-		rrb=rrn;
-	}
-	cache_free(rrs);
-	return rv;
-}
-
-/* Remove a complete rrset from a cent, freeing the memory.
-   The second argument should be an RR-set array index, not an RR type!
-   Returns the size of the memory freed */
-static int del_cent_rrset_by_index(dns_cent_t *cent, int i  DBGPARAM)
-{
-	int rv=0;
-	rr_set_t **rrspa = RRARR_INDEX_PA_TESTEXT(cent,i);
-
-	if(rrspa) {
-		rr_set_t *rrs = *rrspa;
-		if(rrs) {
-			rv= del_rrset(rrs  DBGARG);
-			*rrspa=NULL;
-			--cent->num_rrs;
-			cent->cs -= rv;
-			cent->flags &= ~DF_AUTH;
-		}
-	}
-	return rv;
-}
-
-#if 0
-static int del_cent_rrset_by_type(dns_cent_t *cent, int type  DBGPARAM)
-{
-	return del_cent_rrset_by_index(cent, rrlkuptab[type-T_MIN]  DBGARG);
-}
-#endif
-
-#if 0
-/* Free the pointers contained in an rr record. If the rr record is on the heap,
- * don't forget to delete itself. This is done extra mainly for extensibility
- * -- This is not here any more. The definition is actually an empty macro in
- * cache.h.
- */
-void free_rr(rr_bucket_t rr)
-{
-}
-#endif
-
-/* Free all data referred by a cache entry. */
-void free_cent(dns_cent_t *cent  DBGPARAM)
-{
-	cache_free(cent->qname);
-	if(cent->flags&DF_NEGATIVE) {
-		if(cent->neg.lent)
-			remove_rrl(cent->neg.lent  DBGARG);
-	}
-	else {
-		int i;
-		for (i=0; i<NRRMU; ++i) {
-			rr_set_t *rrs=cent->rr.rrmu[i];
-			if (rrs) del_rrset(rrs  DBG0);
-		}
-		{
-			rr_set_t **rrext = cent->rr.rrext;
-			if(rrext) {
-				for(i=0; i<NRREXT; ++i) {
-					rr_set_t *rrs=rrext[i];
-					if (rrs) del_rrset(rrs  DBG0);
-				}
-				cache_free(rrext);
-			}
-		}
-	}
-}
-
-/* Same as free_cent, but is suitable as cleanup handler */
-void free_cent0(void *ptr)
-{
-	free_cent(ptr  DBG0);
-}
-
-/* Negate an existing cache entry and free any existing rr sets. */
-void negate_cent(dns_cent_t *cent, time_t ttl, time_t ts)
-{
-	int i;
-
-	if(!(cent->flags&DF_NEGATIVE)) {
-		for (i=0; i<NRRMU; ++i) {
-			rr_set_t *rrs=cent->rr.rrmu[i];
-			if (rrs) {
-				cent->cs -= del_rrset(rrs  DBG0);
-				/* cent->rr.rrmu[i]=NULL; */
-			}
-		}
-		{
-			rr_set_t **rrext = cent->rr.rrext;
-			if(rrext) {
-				for(i=0; i<NRREXT; ++i) {
-					rr_set_t *rrs=rrext[i];
-					if (rrs)
-						cent->cs -= del_rrset(rrs  DBG0);
-				}
-				cache_free(rrext);
-				/* cent->rr.rrext=NULL; */
-				cent->cs -= sizeof(rr_set_t*)*NRREXT;
-			}
-		}
-		cent->num_rrs=0;
-		cent->flags |= DF_NEGATIVE;
-		cent->neg.lent=NULL;
-	}
-
-	cent->neg.ttl=ttl;
-	cent->neg.ts=ts;
-}
-
-inline static time_t get_rrlent_ts(rr_lent_t *le)
-{
-	return (le->rrset)?(le->rrset->ts):(le->cent->neg.ts);
-}
-
-/* insert a rrset into the rr_l list. This modifies the rr_set_t if rrs is not NULL!
- * The rrset address needs to be constant afterwards.
- * idx is the internally used RR-set index, not the RR type!
- * Call with locks applied. */
-static int insert_rrl(rr_set_t *rrs, dns_cent_t *cent, int idx)
-{
-	time_t ts;
-	rr_lent_t *le,*ne;
-
-	/* No need to add local records to the rr_l list, because purge_cache() ignores them anyway. */
-	if((rrs && (rrs->flags&CF_LOCAL)) || (cent->flags&DF_LOCAL))
-		return 1;
-
-	if (!(ne=malloc(sizeof(rr_lent_t))))
-		return 0;
-	ne->rrset=rrs;
-	ne->cent=cent;
-	ne->idx=idx;
-	ne->next=NULL;
-	ne->prev=NULL;
-
-	if(insert_sort) {
-		/* Since the append at the and is a very common case (and we want this case to be fast), we search back-to-forth.
-		 * Since rr_l is a list and we don't really have fast access to all elements, we do not perform an advanced algorithm
-		 * like binary search.*/
-		ts=get_rrlent_ts(ne);
-		le=rrset_l_tail;
-		while (le) {
-			if (ts>=get_rrlent_ts(le)) goto found;
-			le=le->prev;
-		}
-		/* not found, so it needs to be inserted at the start of the list. */
-		ne->next=rrset_l;
-		if (rrset_l)
-			rrset_l->prev=ne;
-		else
-			rrset_l_tail=ne;
-		rrset_l=ne;
-		goto finish;
-	found:
-		ne->next=le->next;
-		ne->prev=le;
-		if (le->next)
-			le->next->prev=ne;
-		else
-			rrset_l_tail=ne;
-		le->next=ne;
-	finish:;
-	}
-	else {
-		/* simply append at the end, sorting will be done later with a more efficient algorithm. */
-		ne->prev=rrset_l_tail;
-		if(rrset_l_tail)
-			rrset_l_tail->next=ne;
-		else
-			rrset_l=ne;
-		rrset_l_tail=ne;
-	}
-
-	if (rrs)
-		rrs->lent=ne;
-	else
-		cent->neg.lent=ne;
-
-	return 1;
-}
-
-/* Remove a rr from the rr_l list. Call with locks applied. */
-static void remove_rrl(rr_lent_t *le  DBGPARAM)
-{
-	rr_lent_t *next=le->next,*prev=le->prev;
-	if (next)
-		next->prev=prev;
-	else
-		rrset_l_tail=prev;
-	if (prev)
-		prev->next=next;
-	else
-		rrset_l=next;
-	cache_free(le);
-}
-
-
-/* Merge two sorted rr_l lists to make a larger sorted list.
-   The lists are sorted according to increasing time-stamp.
-   The back links are ignored, these must be fixed using a separate pass.
-*/
-static rr_lent_t *listmerge(rr_lent_t *p, rr_lent_t *q)
-{
-
-	if(!p)
-		return q;
-	else if(!q)
-		return p;
-	else {
-		rr_lent_t *l=NULL, **s= &l;
-
-		for(;;) {
-			if(get_rrlent_ts(p) <= get_rrlent_ts(q)) {
-				*s= p;
-				s= &p->next;
-				p= *s;
-				if(!p) {
-					*s= q;
-					break;
-				}
-			}
-			else { /* get_rrlent_ts(p) > get_rrlent_ts(q) */
-				*s= q;
-				s= &q->next;
-				q= *s;
-				if(!q) {
-					*s= p;
-					break;
-				}
-			}
-		}
-
-		return l;
-	}
-}
-
-/* Sort the rr_l list using merge sort, which can be more efficient than insertion sort used by rr_insert().
-   This algorithm is adapted from the GNU C++ STL implementation for list containers.
-   Call with locks applied.
-   Written by Paul Rombouts.
-*/
-static void sort_rrl()
-{
-	/* Do nothing unless the list has length >= 2. */
-	if(rrset_l && rrset_l->next) {
-		/* First sort the list ignoring the back links, these will be fixed later. */
-#               define NTMPSORT 32
-		/* Because we use an array of fixed length, the length of the list we can sort
-		   is bounded by pow(2,NTMPSORT)-1. */
-		rr_lent_t *tmp[NTMPSORT];  /* tmp[i] will either be NULL or point to a sorted list of length pow(2,i). */
-		rr_lent_t **fill= tmp, **end=tmp+NTMPSORT, **counter;
-		rr_lent_t *rem= rrset_l, *carry;
-
-		do {
-			carry=rem; rem=rem->next;
-			carry->next=NULL;
-			for(counter = tmp; counter!=fill && *counter!=NULL; ++counter) {
-				carry=listmerge(*counter,carry);
-				*counter=NULL;
-			}
-
-			PDNSD_ASSERT(counter!=end, "sort_rrl: tmp array overflowed");
-
-			*counter=carry;
-
-			if(counter==fill) ++fill;
-		}
-		while(rem);
-
-		/* Merge together all the remaining list fragments contained in array tmp. */
-		carry= tmp[0];
-		counter= tmp;
-		while(++counter!=fill)
-			carry=listmerge(*counter,carry);
-
-		rrset_l= carry;
-
-		{
-			/* Restore the backward links. */
-			rr_lent_t *p,*q=NULL;
-			for(p=rrset_l; p; p=p->next) {p->prev=q; q=p;}
-			rrset_l_tail=q;
-		}
-	}
-}
-
-
-/* Copy a rr_bucket_t into newly allocated memory */
-inline static rr_bucket_t *copy_rr(rr_bucket_t *rr  DBGPARAM)
-{
-	rr_bucket_t *rrn;
-	rrn=cache_malloc(sizeof(rr_bucket_t)+rr->rdlen);
-	if (rrn == NULL)
-		return NULL;
-	memcpy(rrn,rr,sizeof(rr_bucket_t)+rr->rdlen);
-	rrn->next=NULL;
-	return rrn;
-}
-
-
-/* Copy an RR set into newly allocated memory */
-static rr_set_t *copy_rrset(rr_set_t *rrset  DBGPARAM)
-{
-	rr_set_t *rrsc=cache_malloc(sizeof(rr_set_t));
-	rr_bucket_t *rr,**rrp;
-	if (rrsc) {
-		*rrsc=*rrset;
-		rrsc->lent=NULL;
-		rrp=&rrsc->rrs;
-		rr=rrset->rrs;
-		while(rr) {
-			rr_bucket_t *rrc=copy_rr(rr  DBGARG);
-			*rrp=rrc;
-			if (!rrc) goto cleanup_return;
-			rrp=&rrc->next;
-			rr=rr->next;
-		}
-	}
-	return rrsc;
-
-cleanup_return:
-	del_rrset(rrsc  DBG0);
-	return NULL;
-}
-
-
-/* Copy a cache entry into newly allocated memory */
-dns_cent_t *copy_cent(dns_cent_t *cent  DBGPARAM)
-{
-	dns_cent_t *copy;
-
-	/*
-	 * We do not debug cache internals with it, as mallocs seem to be
-	 * "lost" when they enter the cache for a longer time.
-	 */
-	if (!(copy=cache_malloc(sizeof(dns_cent_t))))
-		return NULL;
-
-	{
-		/* copy the name */
-		size_t namesz=rhnlen(cent->qname);
-		if (!(copy->qname=cache_malloc(namesz)))
-			goto free_return_null;
-
-		memcpy(copy->qname,cent->qname,namesz);
-	}
-	copy->cs= cent->cs;
-	copy->num_rrs= cent->num_rrs;
-	copy->flags= cent->flags;
-	copy->c_ns = cent->c_ns;
-	copy->c_soa= cent->c_soa;
-	if(cent->flags&DF_NEGATIVE) {
-		copy->neg.lent=NULL;
-		copy->neg.ttl= cent->neg.ttl;
-		copy->neg.ts = cent->neg.ts;
-	}
-	else {
-		int i, ilim;
-		for (i=0; i<NRRMU; ++i)
-			copy->rr.rrmu[i]=NULL;
-		copy->rr.rrext=NULL;
-
-		ilim = NRRMU;
-		if(cent->rr.rrext) {
-			rr_set_t **rrextc;
-			ilim = NRRTOT;
-			copy->rr.rrext = rrextc = cache_malloc(sizeof(rr_set_t*)*NRREXT);
-			if(!rrextc) goto free_cent_return_null;
-
-			for (i=0; i<NRREXT; ++i)
-				rrextc[i]=NULL;
-		}
-
-		for (i=0; i<ilim; ++i) {
-			rr_set_t *rrset= RRARR_INDEX(cent,i);
-			if (rrset) {
-				rr_set_t *rrsc=cache_malloc(sizeof(rr_set_t));
-				rr_bucket_t *rr,**rrp;
-				*RRARR_INDEX_PA(copy,i)=rrsc;
-				if (!rrsc)
-					goto free_cent_return_null;
-				*rrsc=*rrset;
-				rrsc->lent=NULL;
-				rrp=&rrsc->rrs;
-				rr=rrset->rrs;
-				while(rr) {
-					rr_bucket_t *rrc=copy_rr(rr  DBGARG);
-					*rrp=rrc;
-					if (!rrc) goto free_cent_return_null;
-					rrp=&rrc->next;
-					rr=rr->next;
-				}
-			}
-		}
-	}
-	return copy;
-
- free_cent_return_null:
-	free_cent(copy  DBGARG);
- free_return_null:
-	cache_free(copy);
-	return NULL;
-}
-
-/*
- * Remove all timed out entries of the RR set with the given index.
- * idx is the internally used RR-set index, not the RR type!
- * Follow some rules based on flags etc.
- * This will either delete the whole rrset, or will leave it as a whole (RFC2181 seems to
- * go in that direction)
- * This was pretty large once upon a time ;-), but now, since we operate in rrsets, was
- * shrunk drastically.
- * If test is zero and the record is in the cache, we need rw-locks applied.
- * If test is nonzero, nothing will actually be deleted.
- * Substracts the size of the freed memory from cache_size (if test is zero).
- * Returns 1 if the rrset has been (or would have been) deleted.
- */
-static int purge_rrset(dns_cent_t *cent, int idx, int test)
-{
-	rr_set_t *rrs= RRARR_INDEX_TESTEXT(cent,idx);
-	if (rrs && !(rrs->flags&CF_NOPURGE || rrs->flags&CF_LOCAL) && timedout(rrs)) {
-		/* well, it must go. */
-		if(!test)
-			cache_size -= del_cent_rrset_by_index(cent,idx  DBG0);
-		return 1;
-	}
-	return 0;
-}
-
-/*
-  Remove all timed out entries of alls RR sets of a cache entry.
-  The test flag works the same as in purge_rrset().
-  Substracts the size of the freed memory from cache_size, just as purge_rrset().
-  *numrrsrem is set to the number of remaining RR sets (or the number that would have remained).
-  Returns the number of items (RR sets or RR set arrays) that have been (or would have been) deleted.
-*/
-static int purge_all_rrsets(dns_cent_t *cent, int test, int *numrrsrem)
-{
-	int rv=0, numrrs=0, numrrext=0;
-
-	if(!(cent->flags&DF_NEGATIVE)) {
-		int i, ilim= RRARR_LEN(cent);
-		for(i=0; i<ilim; ++i) {
-			rr_set_t *rrs= RRARR_INDEX(cent,i);
-			if (rrs) {
-				if(!(rrs->flags&CF_NOPURGE || rrs->flags&CF_LOCAL) && timedout(rrs)) {
-					/* well, it must go. */
-					if(!test)
-						cache_size -= del_cent_rrset_by_index(cent, i  DBG0);
-					++rv;
-				}
-				else {
-					++numrrs;
-					if(i>=NRRMU) ++numrrext;
-				}
-			}
-		}
-
-		/* If the array of less frequently used RRs has become empty, free it. */
-		if(cent->rr.rrext && numrrext==0) {
-			if(!test) {
-				cache_free(cent->rr.rrext);
-				cent->rr.rrext=NULL;
-				cent->cs -= sizeof(rr_set_t*)*NRREXT;
-				cache_size -= sizeof(rr_set_t*)*NRREXT;
-			}
-			++rv;
-		}
-	}
-
-	if(numrrsrem) *numrrsrem=numrrs;
-	return rv;
-}
-
-
-/*
- * Purge a cent, deleting timed-out rrs (following the constraints noted in "purge_rrset").
- * Since the cent may actually become empty and be deleted, you may not use it after this call until
- * you refetch its address from the hash (if it is still there).
- * If test is zero and the record is in the cache, we need rw-locks applied.
- * If test is nonzero, nothing will actually be deleted.
- * Substracts the size of the freed memory from cache_size (if test is zero).
- * If delete is nonzero and the cent was purged empty and no longer needed, it is removed from the cache.
- * Returns -1 if the cent was (or would have been) completely removed,
- * otherwise returns the number of items that were (or would have been) deleted.
- */
-static int purge_cent(dns_cent_t *cent, int delete, int test)
-{
-	int npurge, numrrs;
-
-	npurge = purge_all_rrsets(cent,test, &numrrs);
-
-	/* If the cache entry was purged empty, delete it from the cache. */
-	if (delete && numrrs==0
-	    && (!(cent->flags&DF_NEGATIVE) ||
-		(!(cent->flags&DF_LOCAL) && timedout_nxdom(cent))))
-	{
-		if(!test)
-			del_cache_ent(cent,NULL); /* this will subtract the cent's left size from cache_size */
-		return -1;
-	}
-
-	if(!(cent->flags&DF_LOCAL)) {
-		/* Set stale references to NS or SOA records back to undefined. */
-		unsigned scnt=rhnsegcnt(cent->qname);
-		if(cent->c_ns!=cundef) {
-			rr_set_t *rrset=NULL;
-			if(cent->c_ns==scnt)
-				rrset=getrrset_NS(cent);
-			else if(cent->c_ns<scnt) {
-				dns_cent_t *ce=dns_lookup(skipsegs(cent->qname,scnt-cent->c_ns),NULL);
-				if(ce) rrset=getrrset_NS(ce);
-			}
-			if(!rrset || !rrset->rrs || (!(rrset->flags&CF_LOCAL) && timedout(rrset))) {
-				if(!test)
-					cent->c_ns=cundef;
-				++npurge;
-			}
-		}
-		if(cent->c_soa!=cundef) {
-			rr_set_t *rrset=NULL;
-			if(cent->c_soa==scnt)
-				rrset=getrrset_SOA(cent);
-			else if(cent->c_soa<scnt) {
-				dns_cent_t *ce=dns_lookup(skipsegs(cent->qname,scnt-cent->c_soa),NULL);
-				if(ce) rrset=getrrset_SOA(ce);
-			}
-			if(!rrset || !rrset->rrs || (!(rrset->flags&CF_LOCAL) && timedout(rrset))) {
-				if(!test)
-					cent->c_soa=cundef;
-				++npurge;
-			}
-		}
-	}
-
-	return npurge;
-}
-
-/*
- * Bring cache to a size below or equal the cache size limit (sz). There are two strategies:
- * - for cached sets with CF_NOPURGE not set: delete if timed out
- * - additional: delete oldest sets.
- */
-static void purge_cache(long sz, int lazy)
-{
-	rr_lent_t *le;
-
-	/* Walk the cache list from the oldest entries to the newest, deleting timed-out
-	 * records.
-	 * XXX: We walk the list a second time if this did not free up enough space - this
-	 * should be done better. */
-	le=rrset_l;
-	while (le && (!lazy || cache_size>sz)) {
-		/* Note by Paul Rombouts:
-		 * If data integrity is ensured, at most one node is removed from the rrset_l
-		 * per iteration, and this node is the one referenced by le. */
-		rr_lent_t *next=le->next;
-		if (!((le->rrset && (le->rrset->flags&CF_LOCAL)) ||
-		      (le->cent->flags&DF_LOCAL))) {
-			dns_cent_t *ce = le->cent;
-			if (le->rrset)
-				purge_rrset(ce, le->idx,0);
-			/* Side effect: if purge_rrset called del_cent_rrset then le has been freed.
-			 * ce, however, is still guaranteed to be valid. */
-			if (ce->num_rrs==0 && (!(ce->flags&DF_NEGATIVE) ||
-					       (!(ce->flags&DF_LOCAL) && timedout_nxdom(ce))))
-				del_cache_ent(ce,NULL);
-		}
-		le=next;
-	}
-	if (cache_size<=sz)
-		return;
-
-	/* we are still above the desired cache size. Well, delete records from the oldest to
-	 * the newest. This is the case where nopurge records are deleted anyway. Only local
-	 * records are kept in any case.*/
-	if(!insert_sort) {
-		sort_rrl();
-		insert_sort=1; /* use insertion sort from now on */
-	}
-
-	le=rrset_l;
-	while (le && cache_size>sz) {
-		rr_lent_t *next=le->next;
-		if (!((le->rrset && (le->rrset->flags&CF_LOCAL)) ||
-		      (le->cent->flags&DF_LOCAL))) {
-			dns_cent_t *ce = le->cent;
-			if (le->rrset)
-				cache_size -= del_cent_rrset_by_index(ce, le->idx  DBG0);
-			/* this will also delete negative cache entries */
-			if (ce->num_rrs==0)
-				del_cache_ent(ce,NULL);
-		}
-		le=next;
-	}
-}
-
-#define log_warn_read_error(f,item) \
-        log_warn("%s encountered while reading %s from disk cache file.", \
-        ferror(f)?"Error":feof(f)?"EOF":"Incomplete item",item)
-
-/*
- * Load cache from disk and rebuild the hash tables.
- */
-void read_disk_cache()
-{
-	/* The locks are done when we add items. */
-	dns_cent_t ce;
-	int dtsz=512;
-	unsigned char *data;
-	unsigned long cnt;
-	FILE *f;
-
-	char path[strlen(global.cache_dir)+sizeof("/pdnsd.cache")];
-
-	stpcpy(stpcpy(path,global.cache_dir),"/pdnsd.cache");
-
-	if (!(f=fopen(path,"r"))) {
-		log_warn("Could not open disk cache file %s: %s",path,strerror(errno));
-		return;
-	}
-
-	if (!(data = malloc(dtsz))) {
-		goto fclose_exit;
-	}
-
-	/* Don't use insertion sort while reading caches entries from disk, because this can be
-	   noticeably inefficient with large cache files.
-	   Entries are simply appended at the end of the rr_l list.
-	   The rr_l list is sorted using a more efficient merge sort after we are done reading.
-	*/
-	insert_sort=0;
-
-	{
-		unsigned nb;
-		char buf[sizeof(cachverid)];
-
-		/* check cache version identifier */
-		nb=fread(buf,1,sizeof(cachverid),f);
-		if (nb!=sizeof(cachverid)) {
-			/* Don't complain about empty files */
-			if(nb!=0 || !feof(f)) {
-				log_warn_read_error(f,"cache version identifier");
-			}
-			goto free_data_fclose;
-		}
-		if(memcmp(buf,cachverid,sizeof(cachverid))) {
-			log_warn("Cache file %s ignored because of incompatible version identifier",path);
-			goto free_data_fclose;
-		}
-	}
-
-	if (fread(&cnt,sizeof(cnt),1,f)!=1) {
-		log_warn_read_error(f,"entry count");
-		goto free_data_fclose;
-	}
-
-	for(;cnt>0;--cnt) {
-		dns_file_t fe;
-		dom_fttlts_t fttlts = {0,0};
-		unsigned char nb[256];
-		unsigned num_rrs;
-		unsigned char prevtp;
-		if (fread(&fe,sizeof(fe),1,f)!=1) {
-			log_warn_read_error(f,"cache entry header");
-			goto free_data_fclose;
-		}
-		if(fe.flags&DF_NEGATIVE) {
-			if (fread(&fttlts,sizeof(fttlts),1,f)!=1) {
-				log_warn_read_error(f,"cache TTL and timestamp");
-				goto free_data_fclose;
-			}
-		}
-		if (fe.qlen) {
-			int i;
-			/* Because of its type qlen should be <=255. */
-			if (fread(nb,fe.qlen,1,f)!=1) {
-				log_warn_read_error(f,"domain name");
-				goto free_data_fclose;
-			}
-			for(i=0;i<fe.qlen;) {
-				unsigned lb=nb[i];
-				if(!lb || lb>63 || (i += lb+1)>fe.qlen) {
-					log_warn("Invalid domain name encountered while reading disk cache file.");
-					goto free_data_fclose;
-				}
-			}
-		}
-		nb[fe.qlen]='\0';
-		if (!init_cent(&ce, nb, fttlts.ttl, fttlts.ts, fe.flags  DBG0)) {
-			goto free_data_fclose_exit;
-		}
-		ce.c_ns=fe.c_ns; ce.c_soa=fe.c_soa;
-
-		/* now, read the rr's */
-		prevtp=0;
-		for (num_rrs=fe.num_rrs;num_rrs;--num_rrs) {
-			rr_fset_t sh;
-			unsigned num_rr;
-			if (fread(&sh,sizeof(sh),1,f)!=1) {
-				log_warn_read_error(f,"rr header");
-				goto free_cent_data_fclose;
-			}
-			if(PDNSD_NOT_CACHED_TYPE(sh.tp)) {
-				log_warn("Invalid rr type encountered while reading disk cache file.");
-				goto free_data_fclose;
-			}
-			if(sh.tp<=prevtp) {
-				log_warn("Unexpected rr type encountered (not in strict ascending order) while reading disk cache file.");
-				goto free_data_fclose;
-			}
-			prevtp=sh.tp;
-			/* Add the rrset header in any case (needed for negative caching) */
-			if(!add_cent_rrset_by_type(&ce, sh.tp, sh.ttl, sh.ts, sh.flags  DBG0)) {
-				goto free_cent_data_fclose_exit;
-			}
-			for (num_rr=sh.num_rr;num_rr;--num_rr) {
-				rr_fbucket_t rr;
-				if (fread(&rr,sizeof(rr),1,f)!=1) {
-					log_warn_read_error(f,"rr data length");
-					goto free_cent_data_fclose;
-				}
-				if (rr.rdlen>dtsz) {
-					unsigned char *tmp;
-					dtsz=rr.rdlen;
-					tmp=realloc(data,dtsz);
-					if (!tmp) {
-						goto free_cent_data_fclose_exit;
-					}
-					data=tmp;
-				}
-				if (rr.rdlen && fread(data,rr.rdlen,1,f)!=1) {
-					log_warn_read_error(f,"rr data");
-					goto free_cent_data_fclose;
-				}
-				if (!add_cent_rr(&ce,sh.tp,sh.ttl,sh.ts,sh.flags,rr.rdlen,data  DBG0)) {
-					goto free_cent_data_fclose_exit;
-				}
-			}
-		}
-		add_cache(&ce);
-		free_cent(&ce  DBG0);
-	}
-#ifdef DEBUG_HASH
-	free(data);
-	fclose(f);
-	dumphash();
-	goto sort_return;
-#else
-	goto free_data_fclose;
-#endif
-
- free_cent_data_fclose:
-	free_cent(&ce  DBG0);
- free_data_fclose:
-	free(data);
-	fclose(f);
-#ifdef DEBUG_HASH
- sort_return:
-#endif
-	/* Do we need read/write locks to sort the rr_l list?
-	   As long as at most one thread is sorting, it is OK for the other threads
-	   to read the cache, providing they do not add or delete anything.
-	*/
-	lock_cache_r();
-	if(!insert_sort) {
-		sort_rrl();
-		insert_sort=1;
-	}
-	unlock_cache_r();
-	return;
-
- free_cent_data_fclose_exit:
-	free_cent(&ce  DBG0);
- free_data_fclose_exit:
-	free(data);
- fclose_exit:
-	fclose(f);
-	log_error("Out of memory in reading cache file. Exiting.");
-	pdnsd_exit();
-}
-
-/* write an rr to the file f */
-static int write_rrset(int tp, rr_set_t *rrs, FILE *f)
-{
-	rr_bucket_t *rr;
-	rr_fset_t sh;
-	rr_fbucket_t rf;
-	unsigned num_rr;
-
-	sh.tp=tp;
-
-	num_rr=0;
-	for(rr=rrs->rrs; rr && num_rr<255; rr=rr->next) ++num_rr;
-	sh.num_rr=num_rr;
-	sh.flags=rrs->flags;
-	sh.ttl=rrs->ttl;
-	sh.ts=rrs->ts;
-
-	if (fwrite(&sh,sizeof(sh),1,f)!=1) {
-		log_error("Error while writing rr header to disk cache: %s", strerror(errno));
-		return 0;
-	}
-
-	rr=rrs->rrs;
-	for(; num_rr; --num_rr) {
-		rf.rdlen=rr->rdlen;
-		if (fwrite(&rf,sizeof(rf),1,f)!=1 || (rf.rdlen && fwrite((rr->data),rf.rdlen,1,f)!=1)) {
-			log_error("Error while writing rr data to disk cache: %s", strerror(errno));
-			return 0;
-		}
-		rr=rr->next;
-	}
-
-	return 1;
-}
-
-
-/*
- * Write cache to disk on termination. The hash table is lost and needs to be regenerated
- * on reload.
- *
- * The locks are not very fine grained here, but I don't think this needs fixing as this routine
- * is only called on exit.
- *
- */
-void write_disk_cache()
-{
-	int j, jlim;
-	dns_cent_t *le;
-	unsigned long en=0;
-	dns_hash_pos_t pos;
-	FILE *f;
-	unsigned long num_rrs_errs=0;
-#	define MAX_NUM_RRS_ERRS 10
-
-	char path[strlen(global.cache_dir)+sizeof("/pdnsd.cache")];
-
-	stpcpy(stpcpy(path,global.cache_dir),"/pdnsd.cache");
-
-	DEBUG_MSG("Writing cache to %s\n",path);
-
-	if (!softlock_cache_rw()) {
-		goto lock_failed;
-	}
-	/* purge cache down to allowed size*/
-	purge_cache((long)global.perm_cache*1024, 0);
-	if (!softunlock_cache_rw()) {
-		goto lock_failed;
-	}
-
-	if (!softlock_cache_r()) {
-		goto lock_failed;
-	}
-
-	if (!(f=fopen(path,"w"))) {
-		log_warn("Could not open disk cache file %s: %s",path,strerror(errno));
-		goto softunlock_return;
-	}
-
-	/* Write the cache version identifier */
-	if (fwrite(cachverid,sizeof(cachverid),1,f)!=1) {
-		log_error("Error while writing cache version identifier to disk cache: %s", strerror(errno));
-		goto fclose_unlock;
-	}
-
-	for (le=fetch_first(&pos); le; le=fetch_next(&pos)) {
-		/* count the rr's */
-		if(le->flags&DF_NEGATIVE) {
-			if(!(le->flags&DF_LOCAL))
-				++en;
-		}
-		else {
-			jlim= RRARR_LEN(le);
-			for (j=0; j<jlim; ++j) {
-				rr_set_t *rrset= RRARR_INDEX(le,j);
-				if (rrset && !(rrset->flags&CF_LOCAL)) {
-					++en;
-					break;
-				}
-			}
-		}
-	}
-	if (fwrite(&en,sizeof(en),1,f)!=1) {
-		log_error("Error while writing entry count to disk cache: %s", strerror(errno));
-		goto fclose_unlock;
-	}
-
-	for (le=fetch_first(&pos); le; le=fetch_next(&pos)) {
-		/* now, write the rr's */
-		if(le->flags&DF_NEGATIVE) {
-			if(!(le->flags&DF_LOCAL))
-				goto write_rrs;
-		}
-		else {
-			jlim= RRARR_LEN(le);
-			for (j=0; j<jlim; ++j) {
-				rr_set_t *rrset= RRARR_INDEX(le,j);
-				if (rrset && !(rrset->flags&CF_LOCAL)) {
-					goto write_rrs;
-				}
-			}
-		}
-		continue;
-	       write_rrs:
-		{
-			dns_file_t df;
-			int num_rrs;
-			const unsigned short *iterlist;
-			df.qlen=rhnlen(le->qname)-1; /* Don't include the null byte at the end */
-			df.num_rrs=0;
-			df.flags=le->flags;
-			df.c_ns=le->c_ns; df.c_soa=le->c_soa;
-			num_rrs=0;
-			jlim=RRARR_LEN(le);
-			for (j=0; j<jlim; ++j) {
-				rr_set_t *rrset= RRARR_INDEX(le,j);
-				if(rrset) {
-					++num_rrs;
-					if(!(rrset->flags&CF_LOCAL))
-						++df.num_rrs;
-				}
-			}
-			if(num_rrs!=le->num_rrs && ++num_rrs_errs<=MAX_NUM_RRS_ERRS) {
-				unsigned char buf[DNSNAMEBUFSIZE];
-				log_warn("Counted %d rr record types for %s but cached counter=%d",
-					 num_rrs,rhn2str(le->qname,buf,sizeof(buf)),le->num_rrs);
-			}
-			if (fwrite(&df,sizeof(df),1,f)!=1) {
-				log_error("Error while writing cache entry header to disk cache: %s", strerror(errno));
-				goto fclose_unlock;
-			}
-			if(le->flags&DF_NEGATIVE) {
-				dom_fttlts_t fttlts= {le->neg.ttl,le->neg.ts};
-				if (fwrite(&fttlts,sizeof(fttlts),1,f)!=1) {
-					log_error("Error while writing cache TTL and timestamp to disk cache: %s", strerror(errno));
-					goto fclose_unlock;
-				}
-			}
-			if (df.qlen && fwrite(le->qname,df.qlen,1,f)!=1) {
-				log_error("Error while writing domain name to disk cache: %s", strerror(errno));
-				goto fclose_unlock;
-			}
-
-			jlim= NRRITERLIST(le);
-			iterlist= RRITERLIST(le);
-			for (j=0; j<jlim; ++j) {
-				int tp= iterlist[j];
-				rr_set_t *rrset= getrrset_eff(le,tp);
-				if(rrset && !(rrset->flags&CF_LOCAL)) {
-					if(!write_rrset(tp,rrset,f))
-						goto fclose_unlock;
-				}
-			}
-		}
-	}
-	if(fclose(f)) {
-		log_error("Could not close cache file %s after writing cache: %s", path,strerror(errno));
-	}
-	softunlock_cache_r();
-	DEBUG_MSG("Finished writing cache to disk.\n");
-	return;
-
- fclose_unlock:
-	fclose(f);
- softunlock_return:
-	softunlock_cache_r();
-	return;
-
- lock_failed:
-	crash_msg("Lock failed; could not write disk cache.");
-}
-
-/*
- * Conflict Resolution.
- * The first function is the actual checker; the latter two are wrappers for the respective
- * function for convenience only.
- *
- * We check for conflicts by checking the new data rrset by rrset against the cent.
- * This is not bad when considering that new records are hopefully consistent; if they are not,
- * we might end up deleteing too much of the old data, which is probably added back through the
- * new query, though.
- * Having checked additions rrset by rrset, we are at least sure that the resulting record is OK.
- * cr_check_add returns 1 if the addition is OK, 0 otherwise.
- * This is for records that are already in the cache!
- *
- * idx is the internally used RR-set index, not the RR type!
- */
-static int cr_check_add(dns_cent_t *cent, int idx, time_t ttl, time_t ts, unsigned flags)
-{
-	time_t nttl;
-	const struct rr_infos *rri;
-
-	if (flags & CF_NEGATIVE)
-		return 1;		/* no constraints here. */
-
-	nttl = 0;
-	rri = &rr_info[idx];
-
-	if (!(flags & CF_LOCAL)) {
-		int i, ilim, ncf;
-
-		if(cent->flags & DF_LOCAL)
-			return 0;   /* Local has precedence. */
-
-		ncf = 0; ilim = RRARR_LEN(cent);
-		for (i = 0; i < ilim; ++i) {
-			rr_set_t *rrs= RRARR_INDEX(cent,i);
-			/* Should be symmetric; check both ways anyway. */
-			if (rrs && !(rrs->flags & CF_NEGATIVE) &&
-			    ((rri->class & rr_info[i].excludes) ||
-			    (rri->excludes & rr_info[i].class)))
-			{
-				time_t rttl;
-				if (rrs->flags & CF_LOCAL)
-					return 0;   /* old was authoritative. */
-				++ncf;
-				rttl = rrs->ttl + rrs->ts - time(NULL);
-				if(rttl > 0) nttl += rttl;
-			}
-		}
-		if (ncf == 0)	/* no conflicts */
-			return 1;
-		/* Medium ttl of conflicting records */
-		nttl /= ncf;
-	}
-	if ((flags & CF_LOCAL) || ttl > nttl) {
-		int i, ilim= RRARR_LEN(cent);
-
-		/* Remove the old records, so that the new one can be added. */
-		for (i = 0; i < ilim; ++i) {
-			rr_set_t *rrs= RRARR_INDEX(cent,i);
-			/* Should be symmetric; check both ways anyway. */
-			if (rrs && !(rrs->flags & CF_NEGATIVE) &&
-			    ((rri->class & rr_info[i].excludes) ||
-			    (rri->excludes & rr_info[i].class))) {
-				del_cent_rrset_by_index(cent, i  DBG0);
-			}
-		}
-		return 1;
-	}
-	/* old records precede */
-	return 0;
-}
-
-
-inline static void adjust_ttl(rr_set_t *rrset)
-{
-	if (rrset->flags&CF_NOCACHE) {
-		rrset->flags &= ~CF_NOCACHE;
-		rrset->ttl=0;
-	}
-	else {
-		time_t min_ttl= global.min_ttl, neg_ttl=global.neg_ttl;
-		if((rrset->flags&CF_NEGATIVE) && neg_ttl<min_ttl)
-			min_ttl=neg_ttl;
-		if(rrset->ttl<min_ttl)
-			rrset->ttl=min_ttl;
-		else {
-			time_t max_ttl= global.max_ttl;
-			if(rrset->ttl>max_ttl)
-				rrset->ttl=max_ttl;
-		}
-	}
-}
-
-
-/* Only use for negatively cached domains, thus only
-   if the DF_NEGATIVE bit is set! */
-inline static void adjust_dom_ttl(dns_cent_t *cent)
-{
-	if (cent->flags&DF_NOCACHE) {
-		cent->flags &= ~DF_NOCACHE;
-		cent->neg.ttl=0;
-	}
-	else {
-		time_t min_ttl= global.min_ttl, neg_ttl=global.neg_ttl;
-		if(/* (cent->flags&DF_NEGATIVE) && */ neg_ttl<min_ttl)
-			min_ttl=neg_ttl;
-		if(cent->neg.ttl<min_ttl)
-			cent->neg.ttl=min_ttl;
-		else {
-			time_t max_ttl= global.max_ttl;
-			if(cent->neg.ttl>max_ttl)
-				cent->neg.ttl=max_ttl;
-		}
-	}
-}
-
-/*
- * Add a ready built dns_cent_t to the hashes, purge if necessary to not exceed cache size
- * limits, and add the entries to the hashes.
- * As memory is already reserved for the rrs, we only need to wrap up the dns_cent_t and
- * alloc memory for it.
- * New entries are appended, so we easiliy know the oldest for purging. For fast acces,
- * we use hashes instead of ordered storage.
- *
- * This does not free the argument, and it uses a copy of it, so the caller must do free_cent()
- * on it.
- *
- * The new entries rr sets replace the old ones, i.e. old rr sets with the same key are deleted
- * before the new ones are added.
- */
-void add_cache(dns_cent_t *cent)
-{
-	dns_cent_t *ce;
-	dns_hash_loc_t loc;
-	int i,ilim;
-
-	lock_cache_rw();
- retry:
-	if (!(ce=dns_lookup(cent->qname,&loc))) {
-		/* if the new entry doesn't contain any information,
-		   don't try to add it to the cache because purge_cache() will not
-		   be able to get rid of it.
-		*/
-		if(cent->num_rrs==0 && !(cent->flags&DF_NEGATIVE))
-			goto purge_cache_return;
-
-		if(!(ce=copy_cent(cent  DBG0)))
-			goto warn_unlock_cache_return;
-
-		if(!(ce->flags&DF_NEGATIVE)) {
-			ilim= RRARR_LEN(ce);
-			/* Add the rrs to the rr list */
-			for (i=0; i<ilim; ++i) {
-				rr_set_t *rrset= RRARR_INDEX(ce,i);
-				if (rrset) {
-					adjust_ttl(rrset);
-					if (!insert_rrl(rrset,ce,i))
-						goto free_cent_unlock_cache_return;
-				}
-			}
-		}
-		else {
-			/* If this domain is negatively cached, add the cent to the rr_l list. */
-			adjust_dom_ttl(ce);
-			if (!insert_rrl(NULL,ce,-1))
-				goto free_cent_unlock_cache_return;
-		}
-		if (!add_dns_hash(ce,&loc))
-			goto free_cent_unlock_cache_return;
-		++ent_num;
-	} else {
-		if (cent->flags&DF_NEGATIVE) {
-			/* the new entry is negative. So, we need to delete the whole cent,
-			 * and then generate a new one. */
-			ilim= RRARR_LEN(ce);
-			for (i=0; i<ilim; ++i) {
-				rr_set_t *cerrs= RRARR_INDEX(ce,i);
-				if (cerrs && cerrs->flags&CF_LOCAL) {
-					goto unlock_cache_return; /* Do not clobber local records */
-				}
-			}
-			del_cache_ent(ce,&loc);
-			goto retry;
-		}
-		purge_cent(ce, 0,0);
-		/* We have a record; add the rrsets replacing old ones */
-		cache_size-=ce->cs;
-
-		ilim= RRARR_LEN(cent);
-		for (i=0; i<ilim; ++i) {
-			rr_set_t *centrrs= RRARR_INDEX(cent,i);
-			if(centrrs) {
-				rr_set_t *cerrs= RRARR_INDEX_TESTEXT(ce,i);
-				/* Local records have precedence.
-				   Records from answer sections have precedence over additional (off-topic) records.
-				   Answers obtained from root servers have precedence over additional records
-				   from other servers. */
-				if (!(cerrs &&
-				      ((!(centrrs->flags&CF_LOCAL) && (cerrs->flags&CF_LOCAL)) ||
-				       ((centrrs->flags&CF_ADDITIONAL) && (!(cerrs->flags&CF_ADDITIONAL) ||
-									   (!(centrrs->flags&CF_ROOTSERV) &&
-									    (cerrs->flags&CF_ROOTSERV))) &&
-					!timedout(cerrs)))))
-				{
-					rr_bucket_t *rr,*rtail;
-
-					del_cent_rrset_by_index(ce,i  DBG0);
-
-					if (!cr_check_add(ce, i, centrrs->ttl, centrrs->ts, centrrs->flags))
-						continue;  /* the new record has been deleted as a conflict resolution measure. */
-
-					/* pre-initialize a rrset_t for the case we have a negative cached
-					 * rrset, in which case no further rrs will be added. */
-					if (!add_cent_rrset_by_index(ce, i, centrrs->ttl, centrrs->ts, centrrs->flags  DBG0)) {
-						goto addsize_unlock_cache_return;
-					}
-					rtail=NULL;
-					for (rr=centrrs->rrs; rr; rr=rr->next) {
-						if (!add_cent_rr_int(ce,i,centrrs->ttl, centrrs->ts, centrrs->flags,
-								     rr->rdlen, rr->data, &rtail  DBG0))
-						{
-							/* cleanup this entry */
-							goto cleanup_cent_unlock_cache_return;
-						}
-					}
-					cerrs= RRARR_INDEX(ce,i);
-					adjust_ttl(cerrs);
-					if (!insert_rrl(cerrs,ce,i)) {
-						goto cleanup_cent_unlock_cache_return;
-					}
-				}
-			}
-		}
-		ce->flags |= (cent->flags&(DF_AUTH|DF_WILD));
-		if(cent->c_ns!=cundef && (ce->c_ns==cundef || ce->c_ns<cent->c_ns))
-			ce->c_ns=cent->c_ns;
-		if(cent->c_soa!=cundef && (ce->c_soa==cundef || ce->c_soa<cent->c_soa))
-			ce->c_soa=cent->c_soa;
-	}
-
-	cache_size += ce->cs;
- purge_cache_return:
-	purge_cache((long)global.perm_cache*1024+MCSZ, 1);
-	goto unlock_cache_return;
-
- cleanup_cent_unlock_cache_return:
-	del_cent_rrset_by_index(ce, i  DBG0);
- addsize_unlock_cache_return:
-	cache_size += ce->cs;
-	goto warn_unlock_cache_return;
-
- free_cent_unlock_cache_return:
-	free_cent(ce  DBG0);
-	pdnsd_free(ce);
- warn_unlock_cache_return:
-	log_warn("Out of cache memory.");
- unlock_cache_return:
-	unlock_cache_rw();
-}
-
-/*
-  Convert A (and AAAA) records in a ready built cache entry to PTR records suitable for reverse resolving
-  of numeric addresses and add them to the cache.
-*/
-int add_reverse_cache(dns_cent_t * cent)
-{
-	int tp=T_A;
-	rr_set_t *rrset= getrrset_A(cent);
-
-	for(;;) {
-		if(rrset) {
-			rr_bucket_t *rr;
-			for(rr=rrset->rrs; rr; rr=rr->next) {
-				dns_cent_t ce;
-				unsigned char buf[DNSNAMEBUFSIZE],rhn[DNSNAMEBUFSIZE];
-				if(!a2ptrstr((pdnsd_ca *)(rr->data),tp,buf) || !str2rhn(buf,rhn))
-					return 0;
-				if(!init_cent(&ce, rhn, 0, 0, cent->flags  DBG0))
-					return 0;
-				if(!add_cent_rr(&ce,T_PTR,rrset->ttl,rrset->ts,rrset->flags,rhnlen(cent->qname),cent->qname  DBG0)) {
-					free_cent(&ce  DBG0);
-					return 0;
-				}
-#ifdef RRMUINDEX_NS
-				ce.rr.rrmu[RRMUINDEX_NS]=cent->rr.rrmu[RRMUINDEX_NS];
-#endif
-#ifdef RRMUINDEX_SOA
-				ce.rr.rrmu[RRMUINDEX_SOA]=cent->rr.rrmu[RRMUINDEX_SOA];
-#endif
-				add_cache(&ce);
-#ifdef RRMUINDEX_NS
-				ce.rr.rrmu[RRMUINDEX_NS]=NULL;
-#endif
-#ifdef RRMUINDEX_SOA
-				ce.rr.rrmu[RRMUINDEX_SOA]=NULL;
-#endif
-				free_cent(&ce  DBG0);
-			}
-		}
-#if ALLOW_LOCAL_AAAA
-		if(tp==T_AAAA)
-			break;
-		tp=T_AAAA;
-		rrset= getrrset_AAAA(cent);
-#else
-		break;
-#endif
-	}
-	return 1;
-}
-
-
-/*
-   Delete a cent from the cache. Call with write locks applied.
-   Does not delete corresponding entry in hash table, call del_cache_ent()
-   or del_cache() for that.
-*/
-void del_cent(dns_cent_t *cent)
-{
-	cache_size -= cent->cs;
-
-	/* free the data referred by the cent and the cent itself */
-	free_cent(cent  DBG0);
-	free(cent);
-
-	--ent_num;
-}
-
-/*
- * Delete a cent from the cache. Call with write locks applied.
- */
-static void del_cache_ent(dns_cent_t *cent,dns_hash_loc_t *loc)
-{
-	dns_cent_t *data;
-
-	/* Delete from the hash */
-	if(loc)
-		data=del_dns_hash_ent(loc);
-	else
-		data=del_dns_hash(cent->qname);
-	if(!data) {
-		log_warn("Cache entry not found by del_dns_hash() in %s, line %d",__FILE__,__LINE__);
-	}
-	else if(data!=cent) {
-		log_warn("pointer returned by del_dns_hash() does not match cache entry in %s, line %d",__FILE__,__LINE__);
-	}
-	del_cent(cent);
-}
-
-/* Delete a cached record. Performs locking. Call this from the outside, NOT del_cache_ent */
-void del_cache(const unsigned char *name)
-{
-	dns_cent_t *cent;
-
-	lock_cache_rw();
-	if ((cent=del_dns_hash(name))) {
-		del_cent(cent);
-	}
-	unlock_cache_rw();
-}
-
-
-/* Invalidate a record by resetting the fetch time to 0. This means that it will be refreshed
- * if possible (and will only be served when purge_cache=off;) */
-void invalidate_record(const unsigned char *name)
-{
-	dns_cent_t *ce;
-	int i, ilim;
-
-	lock_cache_rw();
-	if ((ce=dns_lookup(name,NULL))) {
-		if(!(ce->flags&DF_NEGATIVE)) {
-			ilim= RRARR_LEN(ce);
-			for (i=0; i<ilim; ++i) {
-				rr_set_t *rrs= RRARR_INDEX(ce,i);
-				if (rrs) {
-					rrs->ts=0;
-					rrs->flags &= ~CF_AUTH;
-				}
-			}
-		}
-		else {
-			/* set the cent time to 0 (for the case that this was negative) */
-			ce->neg.ts=0;
-		}
-		ce->flags &= ~DF_AUTH;
-	}
-	unlock_cache_rw();
-}
-
-
-/*
-  Set flags of the cache entry with the specified name.
-  Don't use this to set the DF_NEGATIVE flag, or you will
-  risk leaving the cache in an inconsistent state.
-  Returns 0 if the cache entry cannot be found, otherwise 1.
- */
-int set_cent_flags(const unsigned char *name, unsigned flags)
-{
-	dns_cent_t *ret;
-	lock_cache_rw();
-	ret=dns_lookup(name,NULL);
-	if (ret) {
-		ret->flags |= flags;
-	}
-	unlock_cache_rw();
-	return ret!=NULL;
-}
-
-unsigned char *getlocalowner(unsigned char *name,int tp)
-{
-	unsigned char *ret=NULL;
-	dns_cent_t *ce;
-	unsigned lb;
-
-	lock_cache_r();
-	if((lb = *name)) {
-		while(name += lb+1, lb = *name) {
-			if((ce=dns_lookup(name,NULL))) {
-				if(!(ce->flags&DF_LOCAL))
-					break;
-				if(have_rr(ce,tp)) {
-					ret=name;
-					break;
-				}
-			}
-		}
-	}
-	unlock_cache_r();
-
-	return ret;
-}
-
-
-/* Lookup an entry in the cache using name (in length byte -  string notation).
- * For thread safety, a copy must be returned, so delete it after use, by first doing
- * free_cent to remove the rrs and then by freeing the returned pointer.
- * If wild is nonzero, and name can't be found in the cache, lookup_cache()
- * will search up the name hierarchy for a record with the DF_NEGATIVE or DF_WILD flag set.
- */
-dns_cent_t *lookup_cache(const unsigned char *name, int *wild)
-{
-	int purge=0;
-	dns_cent_t *ret;
-
-	/* First try with only read access to the cache. */
-	lock_cache_r();
-	ret=dns_lookup(name,NULL);
-	if(wild) {
-		*wild=0;
-		if(!ret) {
-			const unsigned char *nm=name;
-			unsigned lb=*nm;
-			if(lb) {
-				while(nm += lb+1, lb = *nm) {
-					if ((ret=dns_lookup(nm,NULL))) {
-						if(ret->flags&DF_NEGATIVE)
-							/* use this entry */
-							*wild=w_neg;
-						else if(ret->flags&DF_WILD) {
-							unsigned char buf[DNSNAMEBUFSIZE];
-							buf[0]=1; buf[1]='*';
-							/* When we get here, at least one element of name
-							   has been removed, so assuming name is not longer
-							   than DNSNAMEBUFSIZE bytes, the remainder is guaranteed to
-							   fit into DNSNAMEBUFSIZE-2 bytes */
-							rhncpy(&buf[2],nm);
-							ret=dns_lookup(buf,NULL);
-							if(ret)
-								*wild=w_wild;
-						}
-						else if(ret->flags&DF_LOCAL)
-							*wild=w_locnerr;
-						else
-							ret=NULL;
-						break;
-					}
-				}
-			}
-		}
-	}
-	if (ret) {
-		if(!(purge=purge_cent(ret, 1,1))) /* test only, don't remove anything yet! */
-			ret=copy_cent(ret  DBG1);
-	}
-	unlock_cache_r();
-
-	if(purge) {
-		/* we need exclusive read and write access before we delete anything. */
-		lock_cache_rw();
-		ret=dns_lookup(name,NULL);
-		if(wild) {
-			*wild=0;
-			if(!ret) {
-				const unsigned char *nm=name;
-				unsigned lb=*nm;
-				if(lb) {
-					while(nm += lb+1, lb = *nm) {
-						if ((ret=dns_lookup(nm,NULL))) {
-							if(ret->flags&DF_NEGATIVE)
-								/* use this entry */
-								*wild=w_neg;
-							else if(ret->flags&DF_WILD) {
-								unsigned char buf[DNSNAMEBUFSIZE];
-								buf[0]=1; buf[1]='*';
-								rhncpy(&buf[2],nm);
-								ret=dns_lookup(buf,NULL);
-								if(ret)
-									*wild=w_wild;
-							}
-							else if(ret->flags&DF_LOCAL)
-								*wild=w_locnerr;
-							else
-								ret=NULL;
-							break;
-						}
-					}
-				}
-			}
-		}
-		if (ret) {
-			if(purge_cent(ret, 1,0)<0)
-				ret=NULL;
-			else
-				ret=copy_cent(ret  DBG1);
-		}
-		unlock_cache_rw();
-	}
-
-	return ret;
-}
-
-/* lookup_cache_local_rrset() check if there is locally defined RR set of a specific RR type
-   for name, and if so, returns a copy of the RR set. After use, the copy should be cleaned
-   up using del_rrset().
-   This is potentially much more efficient than using lookup_cache(), if the name is likely
-   to have a cache entry, but unlikely to have locally defined RR sets.
-*/
-rr_set_t *lookup_cache_local_rrset(const unsigned char *name, int type)
-{
-	rr_set_t *ret=NULL;
-	dns_cent_t *cent;
-
-	lock_cache_r();
-	cent= dns_lookup(name,NULL);
-	if(cent) {
-		rr_set_t *rrset=getrrset(cent,type);
-		if(rrset && (rrset->flags&CF_LOCAL)) {
-			ret= copy_rrset(rrset);
-		}
-	}
-	unlock_cache_r();
-
-	return ret;
-}
-
-
-#if 0
-/* Add an rr to an existing cache entry or create a new entry if necessary.
- * The rr is treated with the precedence of an additional or off-topic record, ie. regularly retrieved
- * have precedence.
- * You cannot add a negative additional record. Makes no sense anyway. */
-int add_cache_rr_add(const unsigned char *name, int tp, time_t ttl, time_t ts, unsigned flags, unsigned dlen, void *data, unsigned long serial)
-{
-	dns_hash_loc_t loc;
-	dns_cent_t *ret;
-	rr_set_t *rrs;
-	int rv=0;
-
-	lock_cache_rw();
-	if (!(ret=dns_lookup(name,&loc))) {
-		if (!(ret=cache_malloc(sizeof(dns_cent_t))))
-			goto unlock_return;
-		if(!init_cent(ret, name, 0, 0, 0  DBG0)) {
-			pdnsd_free(ret);
-			goto unlock_return;
-		}
-		if(!add_dns_hash(ret,&loc)) {
-			free_cent(ret  DBG0);
-			pdnsd_free(ret);
-			goto unlock_return;
-		}
-		++ent_num;
-	}
-	else {
-		/* purge the record. */
-		purge_cent(ret,0,0);
-		cache_size-=ret->cs;
-	}
-	rrs=getrrset(ret,tp);
-	if (rrs &&
-	    ((rrs->flags&CF_NEGATIVE && !(rrs->flags&CF_LOCAL)) ||
-	     (rrs->flags&CF_NOPURGE && timedout(rrs)) ||
-	     (rrs->flags&CF_ADDITIONAL && rrs->serial!=serial) ||
-	     (rrs->serial==serial && rrs->ttl!=(ttl<global.min_ttl?global.min_ttl:(ttl>global.max_ttl?global.max_ttl:ttl))))) {
-		del_cent_rrset_by_type(ret,tp  DBG0);
-		rrs=NULL;
-	}
-	if (rrs==NULL || rrs->serial==serial) {
-		if (cr_check_add(ret,rrlkuptab[tp-T_MIN],ttl,ts,flags)) {
-			if (add_cent_rr(ret,tp,ttl,ts,flags,dlen,data,serial  DBG0)) {
-				rr_set_t *rrsnew;
-				if (!rrs && (rrsnew=getrrset(ret,tp)) && !insert_rrl(rrsnew,ret,rrlkuptab[tp-T_MIN])) {
-					del_cent_rrset_by_type(ret,tp  DBG0);
-				}
-				else {
-					cache_size+=ret->cs;
-					purge_cent(ret,1,0);
-					rv=1;
-					goto unlock_return;
-				}
-			}
-		}
-	} else {
-		rv=1;
-	}
-	cache_size+=ret->cs;
-
- unlock_return:
-	unlock_cache_rw();
-	return rv;
-}
-#endif
-
-/* Report the cache status to the file descriptor f, for the status fifo (see status.c) */
-int report_cache_stat(int f)
-{
-	/* Cache size and entry counters are volatile (and even the entries
-	   in the global struct can change), so make copies to get consistent data.
-	   Even better would be to use locks, but that could be rather costly. */
-	long csz= cache_size, en= ent_num;
-	long pc= global.perm_cache;
-	long mc= pc*1024+MCSZ;
-
-	fsprintf_or_return(f,"\nCache status:\n=============\n");
-	fsprintf_or_return(f,"%ld kB maximum disk cache size.\n",pc);
-	fsprintf_or_return(f,"%ld of %ld bytes (%.3g%%) memory cache used in %ld entries"
-			   " (avg %.5g bytes/entry).\n",
-			   csz, mc, (((double)csz)/mc)*100, en,
-			   ((double)csz)/en);
-	return 0;
-}
-
-
-#define timestamp2str(ts,now,buf)								\
-{												\
-	struct tm tstm;										\
-	if(!((ts) && localtime_r(&(ts), &tstm) &&						\
-	     strftime(buf, sizeof(buf),								\
-		      ((ts)<=(now) && (now)-(ts)<365*24*60*60/2)?"    %m/%d %T":"%Y/%m/%d %T",	\
-		      &tstm)>0))								\
-		strcpy(buf,"                  ");						\
-}
-
-/* Dump contents of a cache entry to file descriptor fd.
-   Returns 1 on success, -1 if there is an IO error.
-*/
-static int dump_cent(int fd, dns_cent_t *cent)
-{
-	time_t now;
-	char tstr[sizeof "2000/12/31 23:59:59"],dbuf[1024];
-
-	fsprintf_or_return(fd,"%s\n",rhn2str(cent->qname,ucharp dbuf,sizeof(dbuf)));
-	now=time(NULL);
-
-	if(cent->flags&DF_NEGATIVE) {
-		timestamp2str(cent->neg.ts,now,tstr);
-		fsprintf_or_return(fd,"%s    (domain negated)\n",tstr);
-	}
-	else {
-		int i, n= NRRITERLIST(cent);
-		const unsigned short *iterlist= RRITERLIST(cent);
-		for(i=0; i<n; ++i) {
-			int tp= iterlist[i];
-			rr_set_t *rrset=getrrset_eff(cent,tp);
-			if (rrset) {
-				timestamp2str(rrset->ts,now,tstr);
-				if(rrset->flags&CF_NEGATIVE) {
-					fsprintf_or_return(fd,"%s    %-7s (negated)\n",tstr,rrnames[tp-T_MIN]);
-				}
-				else {
-					rr_bucket_t *rr;
-					for(rr=rrset->rrs; rr; rr=rr->next) {
-						switch (tp) {
-						case T_CNAME:
-						case T_MB:
-						case T_MD:
-						case T_MF:
-						case T_MG:
-						case T_MR:
-						case T_NS:
-						case T_PTR:
-							rhn2str((unsigned char *)(rr->data),ucharp dbuf,sizeof(dbuf));
-							break;
-#if IS_CACHED_MINFO || IS_CACHED_RP
-#if IS_CACHED_MINFO
-						case T_MINFO:
-#endif
-#if IS_CACHED_RP
-						case T_RP:
-#endif
-						{
-							unsigned char *p=(unsigned char *)(rr->data);
-							int n;
-							rhn2str(p,ucharp dbuf,sizeof(dbuf));
-							n=strlen(dbuf);
-							dbuf[n++] = ' ';
-							if(n>=sizeof(dbuf))
-								goto hex_dump;
-							rhn2str(skiprhn(p),ucharp dbuf+n,sizeof(dbuf)-n);
-						}
-						break;
-#endif
-						case T_MX:
-#if IS_CACHED_AFSDB
-						case T_AFSDB:
-#endif
-#if IS_CACHED_RT
-						case T_RT:
-#endif
-#if IS_CACHED_KX
-						case T_KX:
-#endif
-						{
-							unsigned char *p=(unsigned char *)(rr->data);
-							unsigned pref;
-							int n;
-							GETINT16(pref,p);
-							n=sprintf(dbuf,"%u ",pref);
-							if(n<0) goto hex_dump;
-							rhn2str(p,ucharp dbuf+n,sizeof(dbuf)-n);
-						}
-						break;
-						case T_SOA:
-						{
-							unsigned char *p=(unsigned char *)(rr->data);
-							char *q;
-							int n,rem;
-							uint32_t serial,refresh,retry,expire,minimum;
-							rhn2str(p,ucharp dbuf,sizeof(dbuf));
-							n=strlen(dbuf);
-							dbuf[n++] = ' ';
-							if(n>=sizeof(dbuf))
-								goto hex_dump;
-							q=dbuf+n;
-							rem=sizeof(dbuf)-n;
-							p=skiprhn(p);
-							rhn2str(p,ucharp q,rem);
-							n=strlen(q);
-							q[n++] = ' ';
-							if(n>=rem)
-								goto hex_dump;
-							q += n;
-							rem -= n;
-							p=skiprhn(p);
-							GETINT32(serial,p);
-							GETINT32(refresh,p);
-							GETINT32(retry,p);
-							GETINT32(expire,p);
-							GETINT32(minimum,p);
-							n=snprintf(q,rem,"%lu %lu %lu %lu %lu",
-								   (unsigned long)serial,(unsigned long)refresh,
-								   (unsigned long)retry,(unsigned long)expire,
-								   (unsigned long)minimum);
-							if(n<0 || n>=rem)
-								goto hex_dump;
-						}
-						break;
-#if IS_CACHED_HINFO || IS_CACHED_TXT || IS_CACHED_SPF
-#if IS_CACHED_HINFO
-						case T_HINFO:
-#endif
-#if IS_CACHED_TXT
-						case T_TXT:
-#endif
-#if IS_CACHED_SPF
-						case T_SPF:
-#endif
-						{
-							/* TXT records are not necessarily validated
-							   before they are stored in the cache, so
-							   we need to be careful. */
-							unsigned char *p=(unsigned char *)(rr->data);
-							char *q=dbuf;
-							int j=0,n,rem=sizeof(dbuf);
-							while(j<rr->rdlen) {
-								unsigned lb;
-								if(rem<3)
-									goto hex_dump;
-								if(j) {
-									*q++ = ' ';
-									--rem;
-								}
-								*q++ = '"';
-								--rem;
-								lb=*p++;
-								if((j += lb+1)>rr->rdlen)
-									goto hex_dump;
-								n=escapestr(charp p,lb,q,rem);
-								if(n<0 || n+1>=rem)
-									goto hex_dump;
-								q += n;
-								*q++ = '"';
-								rem -= n+1;
-								p += lb;
-							}
-							*q=0;
-						}
-						break;
-#endif
-#if IS_CACHED_PX
-						case T_PX:
-						{
-							unsigned char *p=(unsigned char *)(rr->data);
-							char *q;
-							unsigned pref;
-							int n,rem;
-							GETINT16(pref,p);
-							n=sprintf(dbuf,"%u ",pref);
-							if(n<0) goto hex_dump;
-							q=dbuf+n;
-							rem=sizeof(dbuf)-n;
-							rhn2str(p,ucharp q,rem);
-							n=strlen(q);
-							q[n++] = ' ';
-							if(n>=rem)
-								goto hex_dump;
-							rhn2str(skiprhn(p),ucharp q+n,rem-n);
-						}
-						break;
-#endif
-#if IS_CACHED_SRV
-						case T_SRV:
-						{
-							unsigned char *p=(unsigned char *)(rr->data);
-							unsigned priority,weight,port;
-							int n;
-							GETINT16(priority,p);
-							GETINT16(weight,p);
-							GETINT16(port,p);
-							n=sprintf(dbuf,"%u %u %u ",priority,weight,port);
-							if(n<0) goto hex_dump;
-							rhn2str(p,ucharp dbuf+n,sizeof(dbuf)-n);
-						}
-						break;
-#endif
-#if IS_CACHED_NXT
-						case T_NXT:
-						{
-							unsigned char *p=(unsigned char *)(rr->data);
-							int n,rlen;
-							rhn2str(p,ucharp dbuf,sizeof(dbuf));
-							n=strlen(dbuf);
-							dbuf[n++] = ' ';
-							if(n>=sizeof(dbuf))
-								goto hex_dump;
-							rlen=rhnlen(p);
-							hexdump(p+rlen,rr->rdlen-rlen,dbuf+n,sizeof(dbuf)-n);
-						}
-						break;
-#endif
-#if IS_CACHED_NAPTR
-						case T_NAPTR:
-						{
-							unsigned char *p=(unsigned char *)(rr->data);
-							char *q;
-							unsigned order,pref;
-							int n,rem,j;
-							GETINT16(order,p);
-							GETINT16(pref,p);
-							n=sprintf(dbuf,"%u %u ",order,pref);
-							if(n<0) goto hex_dump;
-							q=dbuf+n;
-							rem=sizeof(dbuf)-n;
-							for (j=0;j<3;++j) {
-								unsigned lb;
-								if(rem<2)
-									goto hex_dump;
-								*q++ = '"';
-								--rem;
-								lb=*p++;
-								n=escapestr(charp p,lb,q,rem);
-								if(n<0 || n+2>=rem)
-									goto hex_dump;
-								q += n;
-								*q++ = '"';
-								*q++ = ' ';
-								rem -= n+2;
-								p += lb;
-							}
-							rhn2str(p,ucharp q,rem);
-						}
-						break;
-#endif
-#if IS_CACHED_LOC
-						case T_LOC:
-							/* Binary data length has not necessarily been validated */
-							if(rr->rdlen!=16)
-								goto hex_dump;
-							if(!loc2str(rr->data,dbuf,sizeof(dbuf)))
-								goto hex_dump;
-							break;
-#endif
-						case T_A:
-							if (!inet_ntop(AF_INET,rr->data,dbuf,sizeof(dbuf)))
-								goto hex_dump;
-							break;
-#if IS_CACHED_AAAA && defined(AF_INET6)
-						case T_AAAA:
-							if (!inet_ntop(AF_INET6,rr->data,dbuf,sizeof(dbuf)))
-								goto hex_dump;
-							break;
-#endif
-						default:
-						hex_dump:
-							hexdump(rr->data,rr->rdlen,dbuf,sizeof(dbuf));
-						}
-						fsprintf_or_return(fd,"%s    %-7s %s\n",tstr,rrnames[tp-T_MIN],dbuf);
-					}
-				}
-			}
-		}
-	}
-	fsprintf_or_return(fd,"\n");
-	return 1;
-}
-
-/* Dump cache contents to file descriptor fd.
-   If name is not null, restricts information to that name,
-   otherwise dumps information about all names found in the cache.
-   Returns 1 on success, 0 if the name is not found, -1 is there is an IO error.
-   Mainly for debugging purposes.
-*/
-int dump_cache(int fd, const unsigned char *name, int exact)
-{
-	int rv=0;
-	lock_cache_r();
-	if(name && exact) {
-		dns_cent_t *cent=dns_lookup(name,NULL);
-		if(cent)
-			rv=dump_cent(fd,cent);
-	}
-	else {
-		dns_cent_t *cent;
-		dns_hash_pos_t pos;
-		for (cent=fetch_first(&pos); cent; cent=fetch_next(&pos)) {
-			unsigned int nrem;
-			if(!name || (domain_match(name,cent->qname,&nrem,NULL),nrem==0))
-				if((rv=dump_cent(fd,cent))<0)
-					break;
-		}
-	}
-	unlock_cache_r();
-	return rv;
-}
-
-char *stpcpy(char *dest, char const *src)
-{
-  size_t src_len = strlen(src);
-  return memcpy(dest, src, src_len) + src_len;
- // strcpy(dest, src);
- // return dest + strlen(dest);
-}
-
-
-#if DEBUG>0
-
-/* Added by Paul Rombouts: This is only used in debug messages. */
-const char cflgnames[NCFLAGS*3]={'N','E','G','L','O','C','A','U','T','N','O','C','A','D','D','N','O','P','R','T','S'};
-const char dflgnames[NDFLAGS*3]={'N','E','G','L','O','C','A','U','T','N','O','C','W','L','D'};
-
-char *flags2str(unsigned flags,char *buf,int nflags,const char *flgnames)
-{
-	char *p=buf;
-	int i,nflgchars=3*nflags;
-	for(i=0;i<nflgchars;i+=3) {
-		if(flags&1) {
-			if(p>buf) *p++='|';
-			p=mempcpy(p,&flgnames[i],3);
-		}
-		flags >>= 1;
-	}
-	if(p==buf)
-		*p++='0';
-	*p=0;
-	return buf;
-}
-#endif
diff --git a/jni/pdnsd/src/cache.h b/jni/pdnsd/src/cache.h
deleted file mode 100644
index 5056dec..0000000
--- a/jni/pdnsd/src/cache.h
+++ /dev/null
@@ -1,306 +0,0 @@
-/* cache.h - Definitions for the dns cache
-
-   Copyright (C) 2000 Thomas Moestl
-   Copyright (C) 2003, 2004, 2005, 2010, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _CACHE_H_
-#define _CACHE_H_
-
-#include <config.h>
-#include "ipvers.h"
-#include <stdio.h>
-#include "list.h"
-#include "dns.h"
-#include "conff.h"
-
-struct rr_lent_s;
-
-/*
- * These values are converted to host byte order. the data is _not_.
- */
-typedef struct rr_b_s  {
-	struct rr_b_s    *next;                   /* this is the next pointer in the dns_cent_t list. */
-	unsigned         rdlen;
-#if ALLOW_LOCAL_AAAA || defined(ENABLE_IPV6)
-	struct in6_addr  data[0];                 /* dummy for alignment */
-#else
-	struct in_addr   data[0];
-#endif
-} rr_bucket_t;
-
-typedef struct {
-	struct rr_lent_s *lent;                   /* this points to the list entry */
-	time_t           ttl;
-	time_t           ts;
-	unsigned short   flags;
-	rr_bucket_t      *rrs;
-} rr_set_t;
-
-
-typedef struct {
-	unsigned char    *qname;                  /* Name of the domain in length byte - string notation. */
-	size_t           cs;                      /* Size of the cache entry, including RR sets. */
-	unsigned short   num_rrs;                 /* The number of RR sets. When this decreases to 0, the cent is deleted. */
-	unsigned short   flags;                   /* Flags for the whole domain. */
-	union {
-		struct {                          /* Fields used only for negatively cached domains. */
-			struct rr_lent_s *lent;   /* list entry for the whole cent. */
-			time_t           ttl;     /* TTL for negative caching. */
-			time_t           ts;      /* Timestamp. */
-		} neg;
-		struct {                          /* Fields used only for domains that actually exist. */
-			rr_set_t         *(rrmu[NRRMU]); /* The most used records.
-							    Use the the value obtained from rrlkuptab[] as index. */
-			rr_set_t         **rrext; /* Pointer (may be NULL) to an array of size NNRREXT storing the
-						     less frequently used records. */
-		} rr;
-	};
-	unsigned char    c_ns,c_soa;              /* Number of trailing name elements in qname to use to find NS or SOA
-						     records to add to the authority section of a response. */
-} dns_cent_t;
-
-/* This value is used to represent an undefined c_ns or c_soa field. */
-#define cundef 0xff
-
-/*
- * the flag values for RR sets in the cache
- */
-#define CF_NEGATIVE    1       /* this one is for per-RRset negative caching*/
-#define CF_LOCAL       2       /* Local zone entry */
-#define CF_AUTH        4       /* authoritative record */
-#define CF_NOCACHE     8       /* Only hold for the cache latency time period, then purge.
-				* Not really written to cache, but used by add_cache. */
-#define CF_ADDITIONAL 16       /* This was fetched as an additional or "off-topic" record. */
-#define CF_NOPURGE    32       /* Do not purge this record */
-#define CF_ROOTSERV   64       /* This record was directly obtained from a root server */
-
-#define CFF_NOINHERIT (CF_LOCAL|CF_AUTH|CF_ADDITIONAL|CF_ROOTSERV) /* not to be inherited on requery */
-
-/*
- * the flag values for whole domains in the cache
- */
-#define DF_NEGATIVE    1       /* this one is for whole-domain negative caching (created on NXDOMAIN)*/
-#define DF_LOCAL       2       /* local record (in conj. with DF_NEGATIVE) */
-#define DF_AUTH        4       /* authoritative record */
-#define DF_NOCACHE     8       /* Only hold for the cache latency time period, then purge.
-				* Only used for negatively cached domains.
-				* Not really written to cache, but used by add_cache. */
-#define DF_WILD       16       /* subdomains of this domain have wildcard records */
-
-/* #define DFF_NOINHERIT (DF_NEGATIVE) */ /* not to be inherited on requery */
-
-enum {w_wild=1, w_neg, w_locnerr};  /* Used to distinguish different types of wildcard records. */
-
-#if DEBUG>0
-#define NCFLAGS 7
-#define NDFLAGS 5
-#define CFLAGSTRLEN (NCFLAGS*4)
-#define DFLAGSTRLEN (NDFLAGS*4)
-extern const char cflgnames[];
-extern const char dflgnames[];
-char *flags2str(unsigned flags,char *buf,int nflags,const char *flgnames);
-#define cflags2str(flags,buf) flags2str(flags,buf,NCFLAGS,cflgnames)
-#define dflags2str(flags,buf) flags2str(flags,buf,NDFLAGS,dflgnames)
-#endif
-
-/*
- * This is the time in secs any record remains at least in the cache before it is purged.
- * (exception is that the cache is full)
- */
-#define CACHE_LAT 120
-#define CLAT_ADJ(ttl) ((ttl)<CACHE_LAT?CACHE_LAT:(ttl))
-/* This is used internally to check if a rrset has timed out. */
-#define timedout(rrset) ((rrset)->ts+CLAT_ADJ((rrset)->ttl)<time(NULL))
-/* This is used internally to check if a negatively cached domain has timed out.
-   Only use if the DF_NEGATIVE bit is set! */
-#define timedout_nxdom(cent) ((cent)->neg.ts+CLAT_ADJ((cent)->neg.ttl)<time(NULL))
-
-extern volatile short int use_cache_lock;
-
-
-#ifdef ALLOC_DEBUG
-#define DBGPARAM ,int dbg
-#define DBGARG ,dbg
-#define DBG0 ,0
-#define DBG1 ,1
-#else
-#define DBGPARAM
-#define DBGARG
-#define DBG0
-#define DBG1
-#endif
-
-
-/* Initialize the cache. Call only once. */
-#define init_cache mk_dns_hash
-
-/* Initialize the cache lock. Call only once. */
-inline static void init_cache_lock()  __attribute__((always_inline));
-inline static void init_cache_lock()
-{
-	use_cache_lock=1;
-}
-
-int empty_cache(slist_array sla);
-void destroy_cache(void);
-void read_disk_cache(void);
-void write_disk_cache(void);
-
-int report_cache_stat(int f);
-int dump_cache(int fd, const unsigned char *name, int exact);
-
-/*
- *  add_cache expects the dns_cent_t to be filled.
- */
-void add_cache(dns_cent_t *cent);
-int add_reverse_cache(dns_cent_t * cent);
-void del_cache(const unsigned char *name);
-void invalidate_record(const unsigned char *name);
-int set_cent_flags(const unsigned char *name, unsigned flags);
-unsigned char *getlocalowner(unsigned char *name,int tp);
-dns_cent_t *lookup_cache(const unsigned char *name, int *wild);
-rr_set_t *lookup_cache_local_rrset(const unsigned char *name, int type);
-#if 0
-int add_cache_rr_add(const unsigned char *name, int tp, time_t ttl, time_t ts, unsigned flags, unsigned dlen, void *data, unsigned long serial);
-#endif
-
-inline static unsigned int mk_flag_val(servparm_t *server)
-  __attribute__((always_inline));
-inline static unsigned int mk_flag_val(servparm_t *server)
-{
-	unsigned int fl=0;
-	if (!server->purge_cache)
-		fl|=CF_NOPURGE;
-	if (server->nocache)
-		fl|=CF_NOCACHE;
-	if (server->rootserver)
-		fl|=CF_ROOTSERV;
-	return fl;
-}
-
-int init_cent(dns_cent_t *cent, const unsigned char *qname, time_t ttl, time_t ts, unsigned flags  DBGPARAM);
-int add_cent_rrset_by_type(dns_cent_t *cent,  int type, time_t ttl, time_t ts, unsigned flags  DBGPARAM);
-int add_cent_rr(dns_cent_t *cent, int type, time_t ttl, time_t ts, unsigned flags,unsigned dlen, void *data  DBGPARAM);
-int del_rrset(rr_set_t *rrs  DBGPARAM);
-void free_cent(dns_cent_t *cent  DBGPARAM);
-void free_cent0(void *ptr);
-void negate_cent(dns_cent_t *cent, time_t ttl, time_t ts);
-void del_cent(dns_cent_t *cent);
-
-/* Because this is empty by now, it is defined as an empty macro to save overhead.*/
-/*void free_rr(rr_bucket_t cent);*/
-#define free_rr(x)
-
-dns_cent_t *copy_cent(dns_cent_t *cent  DBGPARAM);
-
-#if 0
-unsigned long get_serial(void);
-#endif
-
-/* Get pointer to rrset given cache entry and rr type value. */
-inline static rr_set_t *getrrset(dns_cent_t *cent, int type)
-  __attribute__((always_inline));
-inline static rr_set_t *getrrset(dns_cent_t *cent, int type)
-{
-	if(!(cent->flags&DF_NEGATIVE)) {
-		int tpi= type - T_MIN;
-
-		if(tpi>=0 && tpi<T_NUM) {
-			unsigned int idx = rrlkuptab[tpi];
-			if(idx < NRRMU)
-				return cent->rr.rrmu[idx];
-			else {
-				idx -= NRRMU;
-				if(idx < NRREXT) {
-					rr_set_t **rrext= cent->rr.rrext;
-					if(rrext)
-						return rrext[idx];
-				}
-			}
-		}
-	}
-
-	return NULL;
-}
-
-/* This version of getrrset is slightly more efficient,
-   but also more dangerous, because it performs less checks.
-   It is safe to use if T_MIN <= type <= T_MAX and cent
-   is not negative.
-*/
-inline static rr_set_t *getrrset_eff(dns_cent_t *cent, int type)
-  __attribute__((always_inline));
-inline static rr_set_t *getrrset_eff(dns_cent_t *cent, int type)
-{
-	unsigned int idx = rrlkuptab[type-T_MIN];
-	if(idx < NRRMU)
-		return cent->rr.rrmu[idx];
-	else {
-		idx -= NRRMU;
-		if(idx < NRREXT) {
-			rr_set_t **rrext= cent->rr.rrext;
-			if(rrext)
-				return rrext[idx];
-		}
-	}
-
-	return NULL;
-}
-
-
-/* have_rr() tests whether a cache entry has at least one record of a given type.
-   Only use if T_MIN <= type <=T_MAX
-*/
-inline static int have_rr(dns_cent_t *cent, int type)
-  __attribute__((always_inline));
-inline static int have_rr(dns_cent_t *cent, int type)
-{
-	rr_set_t *rrset;
-	return !(cent->flags&DF_NEGATIVE) && (rrset=getrrset_eff(cent, type)) && rrset->rrs;
-}
-
-/* Some quick and dirty and hopefully fast macros. */
-#define PDNSD_NOT_CACHED_TYPE(type) ((type)<T_MIN || (type)>T_MAX || rrlkuptab[(type)-T_MIN]>=NRRTOT)
-
-/* This is useful for iterating over all the RR types in a cache entry in strict ascending order. */
-#define NRRITERLIST(cent) ((cent)->flags&DF_NEGATIVE?0:(cent)->rr.rrext?NRRTOT:NRRMU)
-#define RRITERLIST(cent)  ((cent)->flags&DF_NEGATIVE?NULL:(cent)->rr.rrext?rrcachiterlist:rrmuiterlist)
-
-/* The following macros use array indices as arguments, not RR type values! */
-#define GET_RRSMU(cent,i)  (!((cent)->flags&DF_NEGATIVE)?(cent)->rr.rrmu[i]:NULL)
-#define GET_RRSEXT(cent,i) (!((cent)->flags&DF_NEGATIVE) && (cent)->rr.rrext?(cent)->rr.rrext[i]:NULL)
-#define HAVE_RRMU(cent,i)  (!((cent)->flags&DF_NEGATIVE) && (cent)->rr.rrmu[i] && (cent)->rr.rrmu[i]->rrs)
-#define HAVE_RREXT(cent,i) (!((cent)->flags&DF_NEGATIVE) && (cent)->rr.rrext && (cent)->rr.rrext[i] && (cent)->rr.rrext[i]->rrs)
-
-#define RRARR_LEN(cent) ((cent)->flags&DF_NEGATIVE?0:(cent)->rr.rrext?NRRTOT:NRRMU)
-
-/* This allows us to index the RR-set arrays in a cache entry as if they formed one contiguous array. */
-#define RRARR_INDEX_TESTEXT(cent,i)    ((cent)->flags&DF_NEGATIVE?NULL:(i)<NRRMU?(cent)->rr.rrmu[i]:(cent)->rr.rrext?(cent)->rr.rrext[(i)-NRRMU]:NULL)
-/* This gets the address where the pointer to an RR-set is stored in a cache entry,
-   given the cache entry and an RR-set index.
-   Address may be NULL if no storage space for the type has been allocated. */
-#define RRARR_INDEX_PA_TESTEXT(cent,i) ((cent)->flags&DF_NEGATIVE?NULL:(i)<NRRMU?&(cent)->rr.rrmu[i]:(cent)->rr.rrext?&(cent)->rr.rrext[(i)-NRRMU]:NULL)
-
-/* The following macros should only be used if 0 <= i < RRARR_LEN(cent) ! */
-#define RRARR_INDEX(cent,i)    ((i)<NRRMU?(cent)->rr.rrmu[i]:(cent)->rr.rrext[(i)-NRRMU])
-#define RRARR_INDEX_PA(cent,i) ((i)<NRRMU?&(cent)->rr.rrmu[i]:&(cent)->rr.rrext[(i)-NRRMU])
-
-#endif
diff --git a/jni/pdnsd/src/conf-keywords.h b/jni/pdnsd/src/conf-keywords.h
deleted file mode 100644
index 2bcdacf..0000000
--- a/jni/pdnsd/src/conf-keywords.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/* conf-keywords.h - Tables used by parser of configuration file.
-   Based on information previously contained in conf-lex.y and conf-parse.y
-
-   Copyright (C) 2004,2005,2006,2007,2008,2009,2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-enum {
-	ERROR,
-
-	GLOBAL,
-	SERVER,
-	RR,
-	NEG,
-	SOURCE,
-	INCLUDE_F,
-
-	PERM_CACHE,
-	CACHE_DIR,
-	SERVER_PORT,
-	SERVER_IP,
-	OUTGOING_IP,
-	SCHEME_FILE,
-	LINKDOWN_KLUGE,
-	MAX_TTL,
-	MIN_TTL,
-	RUN_AS,
-	STRICT_SETUID,
-	USE_NSS,
-	PARANOID,
-	IGNORE_CD,
-	STATUS_CTL,
-	DAEMON,
-	C_TCP_SERVER,
-	PID_FILE,
-	C_VERBOSITY,
-	C_QUERY_METHOD,
-	RUN_IPV4,
-	IPV4_6_PREFIX,
-	C_DEBUG,
-	C_CTL_PERMS,
-	C_PROC_LIMIT,
-	C_PROCQ_LIMIT,
-	TCP_QTIMEOUT,
-	C_PAR_QUERIES,
-	C_RAND_RECS,
-	NEG_TTL,
-	NEG_RRS_POL,
-	NEG_DOMAIN_POL,
-	QUERY_PORT_START,
-	QUERY_PORT_END,
-	UDP_BUFSIZE,
-	DELEGATION_ONLY,
-
-	IP,
-	PORT,
-	SCHEME,
-	UPTEST,
-	TIMEOUT,
-	PING_TIMEOUT,
-	PING_IP,
-	UPTEST_CMD,
-	QUERY_TEST_NAME,
-	INTERVAL,
-	INTERFACE,
-	DEVICE,
-	PURGE_CACHE,
-	CACHING,
-	LEAN_QUERY,
-	EDNS_QUERY,
-	PRESET,
-	PROXY_ONLY,
-	ROOT_SERVER,
-	RANDOMIZE_SERVERS,
-	INCLUDE,
-	EXCLUDE,
-	POLICY,
-	REJECTLIST,
-	REJECTPOLICY,
-	REJECTRECURSIVELY,
-	LABEL,
-
-	A,
-	PTR,
-	MX,
-	SOA,
-	CNAME,
-	TXT,
-	SPF,
-	NAME,
-	OWNER,
-	TTL,
-	TYPES,
-	FILET,
-	SERVE_ALIASES,
-	AUTHREC,
-	REVERSE
-};
-
-
-/* Table for looking up section headers. Order alphabetically! */
-static const namevalue_t section_headers[]= {
-	{"global",  GLOBAL},
-	{"include", INCLUDE_F},
-	{"neg",     NEG},
-	{"rr",      RR},
-	{"server",  SERVER},
-	{"source",  SOURCE}
-};
-
-/* Table for looking up global options. Order alphabetically! */
-static const namevalue_t global_options[]= {
-	{"cache_dir",         CACHE_DIR},
-	{"ctl_perms",         C_CTL_PERMS},
-	{"daemon",            DAEMON},
-	{"debug",             C_DEBUG},
-	{"delegation_only",   DELEGATION_ONLY},
-	{"ignore_cd",         IGNORE_CD},
-	{"interface",         SERVER_IP},
-	{"ipv4_6_prefix",     IPV4_6_PREFIX},
-	{"linkdown_kluge",    LINKDOWN_KLUGE},
-	{"max_ttl",           MAX_TTL},
-	{"min_ttl",           MIN_TTL},
-	{"neg_domain_pol",    NEG_DOMAIN_POL},
-	{"neg_rrs_pol",       NEG_RRS_POL},
-	{"neg_ttl",           NEG_TTL},
-	{"outgoing_ip",       OUTGOING_IP},
-	{"outside_interface", OUTGOING_IP},
-	{"par_queries",       C_PAR_QUERIES},
-	{"paranoid",          PARANOID},
-	{"perm_cache",        PERM_CACHE},
-	{"pid_file",          PID_FILE},
-	{"proc_limit",        C_PROC_LIMIT},
-	{"procq_limit",       C_PROCQ_LIMIT},
-	{"query_method",      C_QUERY_METHOD},
-	{"query_port_end",    QUERY_PORT_END},
-	{"query_port_start",  QUERY_PORT_START},
-	{"randomize_recs",    C_RAND_RECS},
-	{"run_as",            RUN_AS},
-	{"run_ipv4",          RUN_IPV4},
-	{"scheme_file",       SCHEME_FILE},
-	{"server_ip",         SERVER_IP},
-	{"server_port",       SERVER_PORT},
-	{"status_ctl",        STATUS_CTL},
-	{"strict_setuid",     STRICT_SETUID},
-	{"tcp_qtimeout",      TCP_QTIMEOUT},
-	{"tcp_server",        C_TCP_SERVER},
-	{"timeout",           TIMEOUT},
-	{"udpbufsize",        UDP_BUFSIZE},
-	{"use_nss",           USE_NSS},
-	{"verbosity",         C_VERBOSITY}
-};
-
-/* Table for looking up server options. Order alphabetically! */
-static const namevalue_t server_options[]= {
-	{"caching",            CACHING},
-	{"device",             DEVICE},
-	{"edns_query",         EDNS_QUERY},
-	{"exclude",            EXCLUDE},
-	{"file",               FILET},
-	{"include",            INCLUDE},
-	{"interface",          INTERFACE},
-	{"interval",           INTERVAL},
-	{"ip",                 IP},
-	{"label",              LABEL},
-	{"lean_query",         LEAN_QUERY},
-	{"ping_ip",            PING_IP},
-	{"ping_timeout",       PING_TIMEOUT},
-	{"policy",             POLICY},
-	{"port",               PORT},
-	{"preset",             PRESET},
-	{"proxy_only",         PROXY_ONLY},
-	{"purge_cache",        PURGE_CACHE},
-	{"query_test_name",    QUERY_TEST_NAME},
-	{"randomize_servers",  RANDOMIZE_SERVERS},
-	{"reject",             REJECTLIST},
-	{"reject_policy",      REJECTPOLICY},
-	{"reject_recursively", REJECTRECURSIVELY},
-	{"root_server",        ROOT_SERVER},
-	{"scheme",             SCHEME},
-	{"timeout",            TIMEOUT},
-	{"uptest",             UPTEST},
-	{"uptest_cmd",         UPTEST_CMD}
-};
-
-/* Table for looking up rr options. Order alphabetically! */
-static const namevalue_t rr_options[]= {
-	{"a",       A},
-	{"authrec", AUTHREC},
-	{"cname",   CNAME},
-	{"mx",      MX},
-	{"name",    NAME},
-	{"ns",      OWNER},
-	{"owner",   OWNER},
-	{"ptr",     PTR},
-	{"reverse", REVERSE},
-	{"soa",     SOA},
-	{"spf",     SPF},
-	{"ttl",     TTL},
-	{"txt",     TXT}
-};
-
-/* Table for looking up source options. Order alphabetically! */
-static const namevalue_t source_options[]= {
-	{"authrec",       AUTHREC},
-	{"file",          FILET},
-	{"ns",            OWNER},
-	{"owner",         OWNER},
-	{"serve_aliases", SERVE_ALIASES},
-	{"ttl",           TTL}
-};
-
-/* Table for looking up include options. Order alphabetically! */
-static const namevalue_t include_options[]= {
-	{"file",          FILET}
-};
-
-/* Table for looking up neg options. Order alphabetically! */
-static const namevalue_t neg_options[]= {
-	{"name",  NAME},
-	{"ttl",   TTL},
-	{"types", TYPES}
-};
diff --git a/jni/pdnsd/src/conf-parser.c b/jni/pdnsd/src/conf-parser.c
deleted file mode 100644
index 9cf9180..0000000
--- a/jni/pdnsd/src/conf-parser.c
+++ /dev/null
@@ -1,2118 +0,0 @@
-/* conf-parser.c - Parser for pdnsd config files.
-   Based on the files conf-lex.l and conf-parse.y written by
-   Thomas Moestl.
-   This version was rewritten in C from scratch by Paul A. Rombouts
-   and doesn't require (f)lex or yacc/bison.
-
-   Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011 Paul A. Rombouts.
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include "ipvers.h"
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <stdarg.h>
-#if defined(HAVE_STRUCT_IFREQ)
-#include <sys/ioctl.h>
-#endif
-#include "conff.h"
-#include "consts.h"
-#include "cache.h"
-#include "dns.h"
-#include "helpers.h"
-#include "rr_types.h"
-#include "netdev.h"
-#include "conf-keywords.h"
-#include "conf-parser.h"
-
-
-/* Check that include files are not nested deeper than MAXINCLUDEDEPTH,
-   as a precaution against infinite recursion. */
-#define MAXINCLUDEDEPTH 100
-
-static char *report_error (const char *conftype, unsigned linenr, const char *msg)
-{
-  char *retval;
-  if(linenr) {
-    if(asprintf(&retval, "Error in %s (line %u): %s",conftype,linenr,msg)<0)
-      retval=NULL;
-  }
-  else {
-    if(asprintf(&retval, "Error in %s: %s",conftype,msg)<0)
-      retval=NULL;
-  }
-
-  return retval;
-}
-
-static char *report_errorf (const char *conftype, unsigned linenr, const char *frm,...) printfunc(3, 4);
-static char *report_errorf (const char *conftype, unsigned linenr, const char *frm,...)
-{
-  char *msg,*retval; int mlen;
-  va_list va;
-  va_start(va,frm);
-  mlen=vasprintf(&msg,frm,va);
-  va_end(va);
-  if(mlen<0) return NULL;
-  retval=report_error(conftype,linenr,msg);
-  free(msg);
-  return retval;
-}
-
-/* return pointer to next character in linebuffer after skipping blanks and comments */
-static char* getnextp(char **buf, size_t *n, FILE* in, char *p, unsigned *linenr, char **errstr)
-{
-  if(!p) goto nextline;
- tryagain:
-  if(!*p) {
-  nextline:
-    do {
-      if(!in || getline(buf,n,in)<0) {
-	*errstr=NULL;
-	return NULL;
-      }
-      ++*linenr;
-      p=*buf;
-    } while(!*p);
-  }
-  if(isspace(*p)) {
-    ++p; goto tryagain;
-  }
-  if(*p=='#') {
-  skip_rest_of_line:
-    if(*linenr)
-      goto nextline;
-    else {
-      p=strchr(p,'\n');
-      if(p) {
-	++p;
-	goto tryagain;
-      }
-      else
-	goto nextline;
-    }
-  }
-  if(*p=='/') {
-    if(*(p+1)=='/')
-      goto skip_rest_of_line;
-    if(*(p+1)=='*') {
-      int lev=1;
-      p +=2;
-      for(;;) {
-	while(*p) {
-	  if(*p=='/' && *(p+1)=='*') {
-	    ++lev;
-	    p +=2;
-	    continue;
-	  }
-	  else if(*p=='*' && *(p+1)=='/') {
-	    p +=2;
-	    if(--lev==0) goto tryagain;
-	    continue;
-	  }
-	  ++p;
-	}
-	if(!in || getline(buf,n,in)<0) {
-	  *errstr="comment without closing */";
-	  return NULL;
-	}
-	++*linenr;
-	p=*buf;
-      }
-    }
-  }
-
-  return p;
-}
-
-static char translescapedchar(char c)
-{
-  switch(c) {
-  case 'f': return '\f';
-  case 'n': return '\n';
-  case 'r': return '\r';
-  case 't': return '\t';
-  case 'v': return '\v';
-  }
-  return c;
-}
-
-/* Scan a buffer for a string and copy the decoded (i.e. unescaped) version into
-   another buffer.
-
-   A string either begins after and ends before a double-quote ("),
-   or simply consists of a sequence of "non-special" characters,
-   starting at the current position.
-   A back-slash (\) acts as an escape character, preventing any character
-   following it from terminating the string. Thus, for example,
-   back-slash double-quote (\") may be used to include double-quotes
-   in a string.
-   A number of escape sequences are interpreted as in C, e.g.
-   \t, \n, \r yield control-chars as in C.
-
-   char **curp should point to the position in the buffer where
-               the scanning should begin. It will be updated to point
-               to the first character past the scanned string.
-
-   char *outbuf is used to store the decoded string.
-   size_t outbufsz should be the size of outbuf.
-
-   The return value is the length of the decoded string, unless an error occurs,
-   in which case -1 is returned and *errstr is assigned an error message.
-   The returned length may be larger than outbufsz, in which case the buffer
-   is filled with only the first outbufsz chars of the string.
-*/
-static int scan_string(char **curp,char *outbuf, unsigned outbufsz, char **errstr)
-{
-  char *cur=*curp;
-  unsigned i=0;
-
-  if(*cur=='"') {
-    /* Double-quoted string. */
-    ++cur; /* Skip opening quote. */
-    for(;; ++i,++cur) {
-      if(!*cur) goto noclosingquote;
-      if(*cur=='"') break;
-      if(*cur=='\\') {
-	if(!*++cur) goto nofollowingchar;
-	if(i<outbufsz)
-	  outbuf[i]= translescapedchar(*cur);
-      }
-      else if(i<outbufsz)
-	outbuf[i]= *cur;
-    }
-    ++cur; /* Skip closing quote. */
-  }
-  else {
-    /* Bare (unquoted) string. */
-    for(; *cur; ++i,++cur) {
-      if(*cur=='\\') {
-	/* Accept any non-null char following a back-slash. */
-	if(!*++cur) goto nofollowingchar;
-	if(i<outbufsz)
-	  outbuf[i]= translescapedchar(*cur);
-      }
-      else if(isspace(*cur) ||
-	      *cur==',' || *cur==';' ||
-	      *cur=='{' || *cur=='}' ||
-	      *cur=='"' || *cur=='#' ||
-	      (*cur=='/' && (*(cur+1)=='/'|| *(cur+1)=='*')))
-	break;
-      else if(i<outbufsz)
-	outbuf[i]= *cur;
-    }
-  }
-
-  if(i<outbufsz)
-    outbuf[i]=0;
-  *curp=cur;
-  return i;
-
- noclosingquote:
-  *errstr="quoted string without closing quote";
-  return -1;
- nofollowingchar:
-  *errstr="may not use backslash to escape end-of-line";
-  return -1;
-}
-
-
-/* Convert a string to a time value in seconds.
-   The string referred to by nptr is scanned for a sequence of components,
-   where each component contains a non-empty sequence of digits followed
-   by a possible one-letter suffix.
-   The position where the scanning stops is returned in endptr.
-   If an error is detected during scanning, a pointer to a
-   (static) error message is returned in errstr.
-*/
-static time_t strtotime(char *nptr, char **endptr, char **errstr)
-{
-  time_t retval=0,t;
-  char c;
-
-  *errstr=NULL;
-  while(isalnum(c=*nptr)) {
-    if(!isdigit(c)) {
-	*errstr="no digits before suffix.";
-	break;
-    }
-
-    t=strtol(nptr,&nptr,10);
-
-    if(isalpha(c=*nptr)) {
-      if(c=='s') /* seconds */
-	;
-      else if(c=='m') /* minutes */
-	t *= 60;
-      else if(c=='h') /* hours */
-	t *= 60*60;
-      else if(c=='d') /* days */
-	t *= 24*60*60;
-      else if(c=='w') /* weeks */
-	t *= 7*24*60*60;
-      else {
-	*errstr="allowed suffixes are w,d,h,m,s.";
-	break;
-      }
-      ++nptr;
-    }
-
-    retval += t;
-  }
-
-  if(endptr) *endptr=nptr;
-  return retval;
-}
-
-
-#define lookup_keyword(name,len,dic) binsearch_keyword(name,len,dic,sizeof(dic)/sizeof(namevalue_t))
-static const char *parse_ip(const char *ipstr, pdnsd_a *a);
-static const char *addr_add(atup_array *ata, const char *ipstr);
-#define addr_add_(ata,ipstr,len) addr_add(ata,ipstr)
-static const char *reject_add(servparm_t *serv, const char *ipstr);
-#define reject_add_(serv,ipstr,len) reject_add(serv,ipstr)
-static void check_localaddrs(servparm_t *serv);
-static int read_resolv_conf(const char *fn, atup_array *ata, char **errstr);
-static const char *slist_add(slist_array *sla, const char *nm, unsigned int len, int tp);
-#define include_list_add(sla,nm,len) slist_add(sla,nm,len,C_INCLUDED)
-#define exclude_list_add(sla,nm,len) slist_add(sla,nm,len,C_EXCLUDED)
-static const char *zone_add(zone_array *za, const char *zone, unsigned int len);
-
-#define CONCAT(a,b) a ## b
-/* a macro for concatenating tokens that expands its arguments */
-#define XCONCAT(a,b) CONCAT(a,b)
-/* a macro for generating (mostly) unique labels using line number */
-#define N_LABEL(pre) XCONCAT(pre,__LINE__)
-
-
-#define SCAN_ALPHANUM(start,cur,len)			\
-{							\
-  (start)=(cur);					\
-  do {							\
-    ++(cur);						\
-  } while(*(cur) && (isalnum(*(cur)) || *(cur)=='_'));	\
-  (len)=(cur)-(start);					\
-}
-
-#define STRNDUP(dst,src,len)			\
-{						\
-  if(dst) free(dst);				\
-  if(!((dst)=strndup(src,len))) {		\
-    OUTOFMEMERROR;				\
-  }						\
-}
-
-#define STRNCP(dst,src,len,errmsg)		\
-{						\
-  if ((len)<sizeof(dst)) {			\
-    memcpy(dst,src,len);			\
-    (dst)[len]=0;				\
-  }						\
-  else {					\
-    REPORT_ERROR(errmsg ": string too long");	\
-    PARSERROR;					\
-  }						\
-}
-
-/* TEMPSTRNCPY declares dst as a variable length array */
-#define TEMPSTRNCPY(dst,src,len)		\
-  char dst[(len)+1];				\
-  memcpy(dst,src,len);				\
-  dst[len]=0;
-
-#define SCAN_STRING_LIST(dst,cur,strbuf,len,addfunc)	\
-{							\
-  for(;;) {						\
-    const char *_err;					\
-    SCAN_STRING(cur,strbuf,len);			\
-    if((_err=addfunc(dst,strbuf,len))) {		\
-      REPORT_ERROR(_err);				\
-      PARSERROR;					\
-    }							\
-    SKIP_BLANKS(cur);					\
-    if(*(cur)!=',') break;				\
-    ++(cur);						\
-    SKIP_BLANKS(cur);					\
-  }							\
-}
-
-#define ASSIGN_ON_OFF(dst,cur,onoff,errmsg)	\
-{						\
-  if(isalpha(*(cur))) {				\
-    char *_str;					\
-    size_t _len;				\
-    int _cnst;					\
-    SCAN_ALPHANUM(_str,cur,_len);		\
-    _cnst=lookup_const(_str,_len);		\
-    if(_cnst==C_ON || _cnst==C_OFF) {		\
-      (dst)=(_cnst==(onoff));			\
-    }						\
-    else {					\
-      goto N_LABEL(ASSIGN_ON_OFF_) ;		\
-    }						\
-  }						\
-  else {					\
-  N_LABEL(ASSIGN_ON_OFF_) :			\
-    REPORT_ERROR(errmsg);			\
-    PARSERROR;					\
-  }						\
-}
-
-#define ASSIGN_CONST(dst,cur,test,errmsg)	\
-{						\
-  if(isalpha(*(cur))) {				\
-    char *_str;					\
-    size_t _len;				\
-    SCAN_ALPHANUM(_str,cur,_len);		\
-    (dst)=lookup_const(_str,_len);		\
-    if(!(test)) {				\
-      goto N_LABEL(ASSIGN_CONST_) ;		\
-    }						\
-  }						\
-  else {					\
-  N_LABEL(ASSIGN_CONST_) :			\
-    REPORT_ERROR(errmsg);			\
-    PARSERROR;					\
-  }						\
-}
-
-#define SCAN_UNSIGNED_NUM(dst,cur,errmsg)				\
-{									\
-  if(isdigit(*(cur))) {							\
-    dst=strtol(cur,&(cur),0);						\
-  }									\
-  else {								\
-    REPORT_ERROR("expected unsigned integer value for " errmsg);	\
-    PARSERROR;								\
-  }									\
-}
-
-#define SCAN_TIMESECS(dst,cur,errmsg)						\
-{										\
-  if(isdigit(*(cur))) {								\
-    char *_err;									\
-    dst=strtotime(cur,&(cur),&_err);						\
-    if(_err) {									\
-      REPORT_ERRORF("invalid time specification for %s: %s",errmsg,_err);	\
-      PARSERROR;								\
-    }										\
-  }										\
-  else {									\
-    REPORT_ERROR("expected a time specification for " errmsg);			\
-    PARSERROR;									\
-  }										\
-}
-
-#define PARSESTR2RHN(src,len,dst)		\
-{						\
-  const char *_err;				\
-  if ((_err=parsestr2rhn(src,len,dst))) {	\
-    REPORT_ERROR(_err);				\
-    PARSERROR;					\
-  }						\
-}
-
-
-#if 0
-/* Copy a domain name, adding a dot at the end if necessary.
-   The format of the name (including the length) is checked with parsestr2rhn()
-*/
-#define DOM_NAME_CPY(dst,src,len)		\
-{						\
-  unsigned char _buf[DNSNAMEBUFSIZE];		\
-  PARSESTR2RHN(src,len,_buf);			\
-  memcpy(dst,src,len);				\
-  (dst)[len]=0;					\
-  if((len)==0 || (dst)[(len)-1]!='.') {		\
-    (dst)[len]='.'; (dst)[(len)+1]=0;		\
-  }						\
-}
-#endif
-
-# define SKIP_COMMA(cur,errmsg)			\
-{						\
-  SKIP_BLANKS(cur);				\
-  if(*(cur)!=',') {				\
-    REPORT_ERROR(errmsg);			\
-    PARSERROR;					\
-  }						\
-  ++(cur);					\
-  SKIP_BLANKS(cur);				\
-}
-
-
-/* Parse a configuration file, adding data to a (separate) global section and servers array,
-   and the cache.
-
-   FILE *in should point to the input stream. It may be NULL, in which case no file is read.
-
-   char *prestr may be NULL or point to a string which will be parsed before the input file.
-
-   globparm_t *global should point to a struct which will be used to store the data of the
-                      global section(s). If it is NULL, no global sections are allowed in the
-		      input.
-
-   servparm_array *servers should point to a dynamic array which will be grown to store the data
-                           of the server sections. If it is NULL, no server sections are allowed
-			   in the input.
-
-   int includedepth is used to track how deeply recursive calls of confparse are nested.
-                    Should be 0 for a top-level call.
-
-   char **errstr is used to return a possible error message.
-                 In case of failure, *errstr will refer to a newly allocated string.
-
-   confparse returns 1 on success, 0 on failure.
-*/
-int confparse(FILE* in, char *prestr, globparm_t *global, servparm_array *servers, int includedepth, char **errstr)
-{
-  char *linebuf=NULL,*p,*ps,*getnextperr=NULL,*scanstrerr=NULL;
-  const char *conftype;
-  size_t buflen=256;
-  unsigned linenr=0;
-  int retval=0,sechdr,option,len;
-  char strbuf[1024];
-# define CLEANUP_HANDLER
-# define CLEANUP_HANDLER2
-# define CLEANUP_HANDLERS CLEANUP_HANDLER2;CLEANUP_HANDLER
-# define SKIP_BLANKS(cur) {if(!((cur)=getnextp(&linebuf,&buflen,in,cur,&linenr,&getnextperr))) {CLEANUP_HANDLERS; goto unexpected_eof;}}
-# define SCAN_STRING(cur,buf,len) {					\
-    if(((len)=scan_string(&(cur),buf,sizeof(buf),&scanstrerr))==-1)	\
-      {CLEANUP_HANDLERS; goto string_err;}				\
-    else if((len)>=sizeof(buf))						\
-      {CLEANUP_HANDLERS; goto string_too_long;}				\
-  }
-# define REPORT_ERROR(msg) (*errstr=report_error(conftype,linenr,msg))
-# if !defined(CPP_C99_VARIADIC_MACROS)
-   /* GNU C Macro Varargs style. */
-#  define REPORT_ERRORF(args...) (*errstr=report_errorf(conftype,linenr,args))
-#else
-   /* ANSI C99 style. */
-#  define REPORT_ERRORF(...) (*errstr=report_errorf(conftype,linenr,__VA_ARGS__))
-# endif
-# define PARSERROR {CLEANUP_HANDLERS; goto free_linebuf_return;}
-# define OUTOFMEMERROR {CLEANUP_HANDLERS; goto out_of_memory;}
-# define CLEANUP_GOTO(lab) {CLEANUP_HANDLERS; goto lab;}
-
-  *errstr=NULL;
-  if(in) {
-    linebuf=malloc(buflen);
-    if(!linebuf) {
-      /* If malloc() just failed, allocating space for an error message is unlikely to succeed. */
-      return 0;
-    }
-    if(global)
-      conftype="config file";
-    else
-      conftype="include file";
-  }
-  else
-    conftype="config string";
-
-  p=prestr;
-  while((p=getnextp(&linebuf,&buflen,in,p,&linenr,&getnextperr))) {
-    if(isalpha(*p)) {
-      SCAN_ALPHANUM(ps,p,len);
-      sechdr=lookup_keyword(ps,len,section_headers);
-      if(!sechdr) {
-	REPORT_ERRORF("invalid section header: %.*s",(int)len,ps);
-	PARSERROR;
-      }
-      SKIP_BLANKS(p);
-      if(*p!='{') goto expected_bropen;
-      ++p;
-      SKIP_BLANKS(p);
-
-      switch(sechdr) {
-      case GLOBAL:
-	if(!global) {
-	  REPORT_ERROR(in?"global section not allowed in include file":
-		       "global section not allowed in eval string");
-	  PARSERROR;
-	}
-
-	while(isalpha(*p)) {
-	  SCAN_ALPHANUM(ps,p,len);
-	  option=lookup_keyword(ps,len,global_options);
-	  if(!option) {
-	    REPORT_ERRORF("invalid option for global section: %.*s",(int)len,ps);
-	    PARSERROR;
-	  }
-	  SKIP_BLANKS(p);
-	  if(*p!='=') goto expected_equals;
-	  ++p;
-	  SKIP_BLANKS(p);
-
-	  switch(option) {
-	    pdnsd_a *ipaddrp;
-
-	  case PERM_CACHE:
-	    if (isalpha(*p)) {
-	      int cnst;
-	      SCAN_ALPHANUM(ps,p,len);
-	      cnst=lookup_const(ps,len);
-	      if(cnst==C_OFF) {
-		global->perm_cache=0;
-	      }
-	      else
-		goto bad_perm_cache_option;
-	    }
-	    else if(isdigit(*p)) {
-	      global->perm_cache=strtol(p,&p,0);
-	    }
-	    else {
-	    bad_perm_cache_option:
-	      REPORT_ERROR("bad qualifier in perm_cache= option.");
-	      PARSERROR;
-	    }
-	    break;
-
-	  case CACHE_DIR:
-	    SCAN_STRING(p,strbuf,len);
-	    STRNDUP(global->cache_dir,strbuf,len);
-	    break;
-
-	  case SERVER_PORT:
-	    SCAN_UNSIGNED_NUM(global->port,p,"server_port option")
-	    break;
-
-	  case OUTGOING_IP:
-	    ipaddrp= &global->out_a;
-	    goto scan_ip_or_interface;
-
-	  case SERVER_IP:
-	    ipaddrp= &global->a;
-	  scan_ip_or_interface:
-	    SCAN_STRING(p,strbuf,len);
-	    {
-	      const char *err;
-	      if ((err=parse_ip(strbuf,ipaddrp))) {
-#if defined(HAVE_STRUCT_IFREQ) && defined(IFNAMSIZ) && defined(SIOCGIFADDR)
-		if(!strcmp(err,"bad IP address") && len<IFNAMSIZ) {
-		  /* Treat the string argument as the name of an interface
-		     and try to find its IP address.
-		  */
-		  int fd;
-		  struct ifreq req;
-		  memcpy(req.ifr_name, strbuf, len);
-		  req.ifr_name[len]=0;
-		  req.ifr_addr.sa_family = PDNSD_AF_INET;
-
-
-		  if ((fd = socket(PDNSD_PF_INET, SOCK_DGRAM, 0))!=-1 && ioctl(fd, SIOCGIFADDR, &req)!=-1) {
-# ifdef ENABLE_IPV4
-		    if (run_ipv4)
-		      ipaddrp->ipv4= ((struct sockaddr_in *)&req.ifr_addr)->sin_addr;
-# endif
-# ifdef ENABLE_IPV6
-		    ELSE_IPV6
-		      ipaddrp->ipv6= ((struct sockaddr_in6 *)&req.ifr_addr)->sin6_addr;
-# endif
-		    close(fd);
-		  }
-		  else {
-		    REPORT_ERRORF("Failed to get IP address of %s: %s",req.ifr_name,strerror(errno));
-		    if(fd!=-1) close(fd);
-		    PARSERROR;
-		  }
-		}
-		else
-#endif
-		  {
-		    REPORT_ERRORF("%s for the %s= option.",err,option==SERVER_IP?"server_ip":"outgoing_ip");
-		    PARSERROR;
-		  }
-	      }
-	    }
-	    break;
-
-	  case SCHEME_FILE:
-	    SCAN_STRING(p,strbuf,len);
-	    STRNDUP(global->scheme_file, strbuf,len);
-	    break;
-
-	  case LINKDOWN_KLUGE:
-	    ASSIGN_ON_OFF(global->lndown_kluge,p,C_ON,"bad qualifier in linkdown_kluge= option.");
-	    break;
-
-	  case MAX_TTL:
-	    SCAN_TIMESECS(global->max_ttl,p,"max_ttl option");
-	    break;
-
-	  case MIN_TTL:
-	    SCAN_TIMESECS(global->min_ttl,p,"min_ttl option");
-	    break;
-
-	  case RUN_AS:
-	    SCAN_STRING(p,strbuf,len);
-	    STRNCP(global->run_as, strbuf,len, "run_as");
-	    break;
-
-	  case STRICT_SETUID:
-	    ASSIGN_ON_OFF(global->strict_suid, p,C_ON,"bad qualifier in strict_setuid= option.");
-	    break;
-
-	  case USE_NSS:
-	    ASSIGN_ON_OFF(global->use_nss, p,C_ON,"bad qualifier in use_nss= option.");
-	    break;
-
-	  case PARANOID:
-	    ASSIGN_ON_OFF(global->paranoid, p,C_ON,"bad qualifier in paranoid= option.");
-	    break;
-
-	  case IGNORE_CD: {
-	    int ignore_cd;
-	    ASSIGN_ON_OFF(ignore_cd, p,C_ON,"bad qualifier in ignore_cd= option.");
-	    fprintf(stderr, "Warning: ignore_cd option in configuration file is obsolete and currently has no effect.\n");
-	  }
-	    break;
-
-	  case STATUS_CTL: {
-	    int cnst;
-	    ASSIGN_CONST(cnst, p,cnst==C_ON || cnst==C_OFF ,"bad qualifier in status_pipe= option.");
-	    if(!cmdline.stat_pipe) global->stat_pipe=(cnst==C_ON);
-	  }
-	    break;
-
-	  case DAEMON: {
-	    int cnst;
-	    ASSIGN_CONST(cnst, p,cnst==C_ON || cnst==C_OFF ,"bad qualifier in daemon= option.");
-	    if(!cmdline.daemon) global->daemon=(cnst==C_ON);
-	  }
-	    break;
-
-	  case C_TCP_SERVER: {
-	    int cnst;
-	    ASSIGN_CONST(cnst, p,cnst==C_ON || cnst==C_OFF ,"bad qualifier in tcp_server= option.");
-	    if(!cmdline.notcp) {
-	      global->notcp=(cnst==C_OFF);
-#ifdef NO_TCP_SERVER
-	      if(!global->notcp) {
-		REPORT_ERROR("pdnsd was compiled without TCP server support. tcp_server=on is not allowed.");
-		PARSERROR;
-	      }
-#endif
-	    }
-	  }
-	    break;
-
-	  case PID_FILE:
-	    SCAN_STRING(p,strbuf,len);
-	    if(!cmdline.pidfile) {STRNDUP(global->pidfile,strbuf,len);}
-	    break;
-
-	  case C_VERBOSITY: {
-	    int val;
-	    SCAN_UNSIGNED_NUM(val,p,"verbosity option");
-	    if(!cmdline.verbosity) global->verbosity=val;
-	  }
-	    break;
-
-	  case C_QUERY_METHOD: {
-	    int cnst;
-	    ASSIGN_CONST(cnst,p,cnst==TCP_ONLY || cnst==UDP_ONLY || cnst==TCP_UDP || cnst==UDP_TCP,"bad qualifier in query_method= option.");
-#ifdef NO_TCP_QUERIES
-	    if (cnst==TCP_ONLY) {
-	      REPORT_ERROR("the tcp_only option is only available when pdnsd is compiled with TCP support.");
-	      PARSERROR;
-	    }
-	    else
-#endif
-#ifdef NO_UDP_QUERIES
-	      if (cnst==UDP_ONLY) {
-		REPORT_ERROR("the udp_only option is only available when pdnsd is compiled with UDP support.");
-		PARSERROR;
-	      }
-	      else
-#endif
-#if defined(NO_TCP_QUERIES) || defined(NO_UDP_QUERIES)
-		if (cnst==TCP_UDP) {
-		  REPORT_ERROR("the tcp_udp option is only available when pdnsd is compiled with both TCP and UDP support.");
-		  PARSERROR;
-		}
-		else if (cnst==UDP_TCP) {
-		  REPORT_ERROR("the udp_tcp option is only available when pdnsd is compiled with both TCP and UDP support.");
-		  PARSERROR;
-		}
-		else
-#endif
-		  if(!cmdline.query_method) global->query_method=cnst;
-	  }
-	    break;
-
-	  case RUN_IPV4: {
-	    int cnst;
-	    ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF,"bad qualifier in run_ipv4= option.");
-#ifndef ENABLE_IPV4
-	    if(cnst==C_ON) {
-	      REPORT_ERROR("You can only set run_ipv4=on when pdnsd is compiled with IPv4 support.");
-	      PARSERROR;
-	    }
-#endif
-#ifndef ENABLE_IPV6
-	    if(cnst==C_OFF) {
-	      REPORT_ERROR("You can only set run_ipv4=off when pdnsd is compiled with IPv6 support.");
-	      PARSERROR;
-	    }
-#endif
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-	    if(!cmdlineipv) {
-	      run_ipv4=(cnst==C_ON); cmdlineipv=-1;
-	    }
-	    else if(cmdlineipv<0 && run_ipv4!=(cnst==C_ON)) {
-	      REPORT_ERROR(cmdlineipv==-1?
-			   "IPv4/IPv6 conflict: you are trying to set run_ipv4 to a value that conflicts with a previous run_ipv4 setting.":
-			   "You must set the run_ipv4 option before specifying IP addresses.");
-	      PARSERROR;
-	    }
-#endif
-	  }
-	    break;
-
-	  case IPV4_6_PREFIX:
-	    SCAN_STRING(p,strbuf,len);
-#ifdef ENABLE_IPV6
-	    if(!cmdline.prefix) {
-	      if(inet_pton(AF_INET6,strbuf,&global->ipv4_6_prefix)<=0) {
-		REPORT_ERROR("ipv4_6_prefix: argument not a valid IPv6 address.");
-		PARSERROR;
-	      }
-	    }
-#else
-	    fprintf(stderr,"pdnsd was compiled without IPv6 support. ipv4_6_prefix option in config file will be ignored.\n");
-#endif
-	    break;
-
-	  case C_DEBUG: {
-	    int cnst;
-	    ASSIGN_CONST(cnst, p,cnst==C_ON || cnst==C_OFF ,"bad qualifier in debug= option.");
-	    if(!cmdline.debug) {
-	      global->debug=(cnst==C_ON);
-#if !DEBUG
-	      if(global->debug)
-		fprintf(stderr,"pdnsd was compiled without debugging support. debug=on has no effect.\n");
-#endif
-	    }
-	  }
-	    break;
-
-	  case C_CTL_PERMS:
-	    SCAN_UNSIGNED_NUM(global->ctl_perms, p,"ctl_perms option");
-	    break;
-
-	  case C_PROC_LIMIT:
-	    SCAN_UNSIGNED_NUM(global->proc_limit, p,"proc_limit option");
-	    break;
-
-	  case C_PROCQ_LIMIT:
-	    SCAN_UNSIGNED_NUM(global->procq_limit, p,"procq_limit option");
-	    break;
-
-	  case TCP_QTIMEOUT:
-	    SCAN_TIMESECS(global->tcp_qtimeout, p,"tcp_qtimeout option");
-	    break;
-
-	  case TIMEOUT:
-	    SCAN_TIMESECS(global->timeout, p,"global timeout option");
-	    break;
-
-	  case C_PAR_QUERIES: {
-	    int val;
-	    SCAN_UNSIGNED_NUM(val, p,"par_queries option");
-	    if(val<=0) {
-	      REPORT_ERROR("bad value for par_queries.");
-	      PARSERROR;
-	    } else {
-	      global->par_queries=val;
-	    }
-	  }
-	    break;
-
-	  case C_RAND_RECS:
-	    ASSIGN_ON_OFF(global->rnd_recs, p,C_ON,"bad qualifier in randomize_recs= option.");
-	    break;
-
-	  case NEG_TTL:
-	    SCAN_TIMESECS(global->neg_ttl, p,"neg_ttl option");
-	    break;
-
-	  case NEG_RRS_POL: {
-	    int cnst;
-	    ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF || cnst==C_DEFAULT || cnst==C_AUTH,
-			 "bad qualifier in neg_rrs_pol= option.");
-	    global->neg_rrs_pol=cnst;
-	  }
-	    break;
-
-	  case NEG_DOMAIN_POL: {
-	    int cnst;
-	    ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF || cnst==C_AUTH,"bad qualifier in neg_domain_pol= option.");
-	    global->neg_domain_pol=cnst;
-	  }
-	    break;
-
-	  case QUERY_PORT_START: {
-	    int val;
-	    if(isalpha(*p)) {
-	      int cnst;
-	      SCAN_ALPHANUM(ps,p,len);
-	      cnst=lookup_const(ps,len);
-	      if(cnst==C_NONE)
-		val=-1;
-	      else
-		goto bad_port_start_option;
-	    }
-	    else if(isdigit(*p)) {
-	      val=strtol(p,&p,0);
-	      if(val>65535) {
-		REPORT_ERROR("value for query_port_start out of range.");
-		PARSERROR;
-	      }
-	      else if(val<1024)
-		fprintf(stderr,"Warning: query_port_start=%i but source ports <1204 can only be used as root.\n",
-			val);
-	    }
-	    else {
-	    bad_port_start_option:
-	      REPORT_ERROR("bad qualifier in query_port_start= option.");
-	      PARSERROR;
-	    }
-	    global->query_port_start=val;
-	  }
-	    break;
-
-	  case QUERY_PORT_END: {
-	    int val;
-	    SCAN_UNSIGNED_NUM(val,p,"query_port_end option");
-	    if(val>65535) {
-	      REPORT_ERROR("value for query_port_end out of range.");
-	      PARSERROR;
-	    }
-	    global->query_port_end=val;
-	  }
-	    break;
-
-	  case UDP_BUFSIZE: {
-	    int val;
-	    SCAN_UNSIGNED_NUM(val,p,"udpbufsize");
-	    if(val<512 || val>65535-(20+8)) {
-	      REPORT_ERROR("value for udpbufsize out of range.");
-	      PARSERROR;
-	    }
-	    global->udpbufsize=val;
-	  }
-	    break;
-
-	  case DELEGATION_ONLY:
-	    SCAN_STRING_LIST(&global->deleg_only_zones,p,strbuf,len,zone_add)
-	    break;
-
-	  default: /* we should never get here */
-	    goto internal_parse_error;
-	  } /* end of switch(option) */
-
-	  SKIP_BLANKS(p);
-	  if(*p!=';') goto expected_semicolon;
-	  ++p;
-	  SKIP_BLANKS(p);
-	}
-
-	if(*p!='}') goto expected_closing_brace;
-	if (global->query_port_end < global->query_port_start) {
-	  REPORT_ERROR("query_port_end may not be smaller than query_port_start.");
-	  PARSERROR;
-	}
-	break;
-
-      case SERVER: {
-	servparm_t server;
-
-	if(!servers) {
-	  REPORT_ERROR(in?"server section not allowed in include file":
-		       "server section not allowed in eval string");
-	  PARSERROR;
-	}
-
-	server=serv_presets;
-#	undef  CLEANUP_HANDLER
-#	define CLEANUP_HANDLER (free_servparm(&server))
-
-	while(isalpha(*p)) {
-	  SCAN_ALPHANUM(ps,p,len);
-	  option=lookup_keyword(ps,len,server_options);
-	  if(!option) {
-	    REPORT_ERRORF("invalid option for server section: %.*s",(int)len,ps);
-	    PARSERROR;
-	  }
-	  SKIP_BLANKS(p);
-	  if(*p!='=') CLEANUP_GOTO(expected_equals);
-	  ++p;
-	  SKIP_BLANKS(p);
-
-	  switch(option) {
-	  case IP:
-	    SCAN_STRING_LIST(&server.atup_a,p,strbuf,len,addr_add_);
-	    break;
-
-	  case FILET:
-	    SCAN_STRING(p,strbuf,len);
-	    {
-	      char *errmsg;
-	      if (!read_resolv_conf(strbuf, &server.atup_a, &errmsg)) {
-		if(errmsg) {REPORT_ERROR(errmsg); free(errmsg);}
-		else *errstr=NULL;
-		PARSERROR;
-	      }
-	    }
-	    break;
-
-	  case PORT:
-	    SCAN_UNSIGNED_NUM(server.port,p,"port option");
-	    break;
-
-	  case SCHEME:
-	    SCAN_STRING(p,strbuf,len);
-	    STRNCP(server.scheme, strbuf,len, "scheme");
-	    break;
-
-	  case UPTEST: {
-	    int cnst;
-	    ASSIGN_CONST(cnst,p,cnst==C_PING || cnst==C_NONE || cnst==C_IF || cnst==C_EXEC || cnst==C_DEV || cnst==C_DIALD || cnst==C_QUERY,"bad qualifier in uptest= option.");
-	    server.uptest=cnst;
-	  }
-	    break;
-
-	  case TIMEOUT:
-	    SCAN_TIMESECS(server.timeout,p,"timeout option");
-	    break;
-
-	  case PING_TIMEOUT:
-	    SCAN_UNSIGNED_NUM(server.ping_timeout,p,"ping_timeout option");
-	    break;
-
-	  case PING_IP:
-	    SCAN_STRING(p,strbuf,len);
-	    {
-	      const char *err;
-	      if ((err=parse_ip(strbuf,&server.ping_a))) {
-		REPORT_ERRORF("%s for the ping_ip= option.",err);
-		PARSERROR;
-	      }
-	    }
-	    break;
-
-	  case UPTEST_CMD:
-	    SCAN_STRING(p,strbuf,len);
-	    STRNDUP(server.uptest_cmd, strbuf,len);
-	    SKIP_BLANKS(p);
-	    if(*p==',') {
-	      ++p;
-	      SKIP_BLANKS(p);
-	      SCAN_STRING(p,strbuf,len);
-	      STRNCP(server.uptest_usr, strbuf,len, "second argument of uptest_cmd");
-	    }
-	    break;
-
-	  case QUERY_TEST_NAME:
-	    if(isalpha(*p)) {
-	      int cnst;
-	      SCAN_ALPHANUM(ps,p,len);
-	      if(*p!='.' && *p!='-') {
-		cnst=lookup_const(ps,len);
-		if(cnst==C_NONE) {
-		  if(server.query_test_name)
-		    free(server.query_test_name);
-		  server.query_test_name=NULL;
-		  break;
-		}
-	      }
-	      p=ps;  /* reset current char pointer and try again. */
-	    }
-	    {
-	      unsigned char tname[DNSNAMEBUFSIZE], *copy;
-	      unsigned sz;
-
-	      SCAN_STRING(p,strbuf,len);
-	      PARSESTR2RHN(ucharp strbuf,len,tname);
-	      sz=rhnlen(tname);
-	      copy= malloc(sz);
-	      if(!copy) {
-		OUTOFMEMERROR;
-	      }
-	      memcpy(copy,tname,sz);
-	      if(server.query_test_name)
-		free(server.query_test_name);
-	      server.query_test_name=copy;
-	    }
-	    break;
-
-	  case INTERVAL:
-	    if(isalpha(*p)) {
-	      int cnst;
-	      SCAN_ALPHANUM(ps,p,len);
-	      cnst=lookup_const(ps,len);
-	      if(cnst==C_ONQUERY) {
-		server.interval=-1;
-	      }
-	      else if(cnst==C_ONTIMEOUT) {
-		server.interval=-2;
-	      }
-	      else {
-		goto bad_interval_option;
-	      }
-	    }
-	    else if(isdigit(*p)) {
-	      char *err;
-	      server.interval=strtotime(p,&p,&err);
-	      if(err) {
-		REPORT_ERRORF("bad time specification in interval= option: %s",err);
-		PARSERROR;
-	      }
-	    }
-	    else {
-	    bad_interval_option:
-	      REPORT_ERROR("bad qualifier in interval= option.");
-	      PARSERROR;
-	    }
-	    break;
-
-	  case INTERFACE:
-	    SCAN_STRING(p,strbuf,len);
-	    STRNCP(server.interface, strbuf,len, "interface");
-	    break;
-
-	  case DEVICE:
-	    SCAN_STRING(p,strbuf,len);
-	    STRNCP(server.device, strbuf,len, "device");
-	    break;
-
-	  case PURGE_CACHE:
-	    ASSIGN_ON_OFF(server.purge_cache,p,C_ON,"bad qualifier in purge_cache= option.");
-	    break;
-
-	  case CACHING:
-	    ASSIGN_ON_OFF(server.nocache,p,C_OFF,"bad qualifier in caching= option.");
-	    break;
-
-	  case LEAN_QUERY:
-	    ASSIGN_ON_OFF(server.lean_query,p,C_ON,"bad qualifier in lean_query= option.");
-	    break;
-
-	  case EDNS_QUERY:
-	    ASSIGN_ON_OFF(server.edns_query,p,C_ON,"bad qualifier in edns_query= option.");
-	    break;
-
-	  case PRESET:
-	    ASSIGN_ON_OFF(server.preset,p,C_ON,"bad qualifier in preset= option.");
-	    break;
-
-	  case PROXY_ONLY:
-	    ASSIGN_ON_OFF(server.is_proxy,p,C_ON,"bad qualifier in proxy_only= option.");
-	    break;
-
-	  case ROOT_SERVER: {
-	    int cnst;
-	    ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF || cnst==C_DISCOVER,"bad qualifier in root_server= option.");
-	    server.rootserver= (cnst==C_DISCOVER? 2: cnst==C_ON);
-	  }
-	    break;
-
-	  case RANDOMIZE_SERVERS:
-	    ASSIGN_ON_OFF(server.rand_servers,p,C_ON,"bad qualifier in randomize_servers= option.");
-	    break;
-
-	  case POLICY: {
-	    int cnst;
-	    ASSIGN_CONST(cnst,p,cnst==C_INCLUDED || cnst==C_EXCLUDED || cnst==C_SIMPLE_ONLY || cnst==C_FQDN_ONLY,"bad qualifier in policy= option.");
-	    server.policy=cnst;
-	  }
-	    break;
-
-	  case INCLUDE:
-	    SCAN_STRING_LIST(&server.alist,p,strbuf,len,include_list_add)
-	    break;
-
-	  case EXCLUDE:
-	    SCAN_STRING_LIST(&server.alist,p,strbuf,len,exclude_list_add)
-	    break;
-
-	  case REJECTLIST:
-	    SCAN_STRING_LIST(&server,p,strbuf,len,reject_add_);
-	    break;
-
-	  case REJECTPOLICY: {
-	    int cnst;
-	    ASSIGN_CONST(cnst,p,cnst==C_FAIL || cnst==C_NEGATE,"bad qualifier in reject_policy= option.");
-	    server.rejectpolicy=cnst;
-	  }
-	    break;
-
-	  case REJECTRECURSIVELY:
-	    ASSIGN_ON_OFF(server.rejectrecursively,p,C_ON,"bad qualifier in reject_recursively= option.");
-	    break;
-
-	  case LABEL:
-	    SCAN_STRING(p,strbuf,len);
-	    STRNDUP(server.label,strbuf,len);
-	    break;
-
-	  default: /* we should never get here */
-	    CLEANUP_GOTO(internal_parse_error);
-	  } /* end of switch(option) */
-
-	  SKIP_BLANKS(p);
-	  if(*p!=';') CLEANUP_GOTO(expected_semicolon);
-	  ++p;
-	  SKIP_BLANKS(p);
-	}
-
-	if(*p!='}') CLEANUP_GOTO(expected_closing_brace);
-	if (server.uptest==C_EXEC) {
-	  if (!server.uptest_cmd) {
-	    REPORT_ERROR("you must specify uptest_cmd if you specify uptest=exec!");
-	    PARSERROR;
-	  }
-	}
-	if (server.is_proxy && server.rootserver) {
-	  REPORT_ERROR("A server may not be specified as both a proxy and a root-server.");
-	  PARSERROR;
-	}
-	if(server.rootserver && (server.policy==C_SIMPLE_ONLY || server.policy==C_FQDN_ONLY))
-	  fprintf(stderr,"Warning: using policy=%s with a root-server usually makes no sense.",
-		  const_name(server.policy));
-	if (DA_NEL(server.atup_a)) {
-	  check_localaddrs(&server);
-	  if(!DA_NEL(server.atup_a)) {
-	    REPORT_ERROR("Server section contains only local IP addresses.\n"
-			 "Bind pdnsd to a different local IP address or specify different port numbers"
-			 " in global section and server section if you want pdnsd to query servers on"
-			 " the same machine.");
-	    PARSERROR;
-	  }
-	}
-	{
-	  int j,n=DA_NEL(server.atup_a);
-	  for(j=0;j<n;++j) {
-	    atup_t *at= &DA_INDEX(server.atup_a,j);
-	    at->is_up=server.preset;
-	    /* A negative test interval means don't test at startup or reconfig. */
-	    if(server.interval<0) at->i_ts=time(NULL);
-	  }
-	}
-	if(server.interval==-1) global->onquery=1;
-
-	if (!(*servers=DA_GROW1_F(*servers,(void(*)(void*))free_servparm))) {
-	  OUTOFMEMERROR;
-	}
-	DA_LAST(*servers)= server;
-#	undef  CLEANUP_HANDLER
-#	define CLEANUP_HANDLER
-      }
-	break;
-
-      case RR: {
-	/* Initialize c_cent to all zeros.
-	   Then it should be safe to call free_cent() on it, even before calling init_cent(). */
-	dns_cent_t c_cent={0};
-	time_t c_ttl=86400;
-	unsigned c_flags=DF_LOCAL;
-	unsigned char reverse=0;
-
-#	undef  CLEANUP_HANDLER
-#	define CLEANUP_HANDLER (free_cent(&c_cent DBG0))
-
-	while(isalpha(*p)) {
-	  SCAN_ALPHANUM(ps,p,len);
-	  option=lookup_keyword(ps,len,rr_options);
-	  if(!option) {
-	    REPORT_ERRORF("invalid option for rr section: %.*s",(int)len,ps);
-	    PARSERROR;
-	  }
-	  SKIP_BLANKS(p);
-	  if(*p!='=') CLEANUP_GOTO(expected_equals);
-	  ++p;
-	  SKIP_BLANKS(p);
-
-	  switch(option) {
-	    int tp; const char *tpname;
-	  case NAME: {
-	    unsigned char c_name[DNSNAMEBUFSIZE];
-	    if (c_cent.qname) {
-	      REPORT_ERROR("You may specify only one name in a rr section.");
-	      PARSERROR;
-	    }
-	    SCAN_STRING(p,strbuf,len);
-	    PARSESTR2RHN(ucharp strbuf,len,c_name);
-	    if (!init_cent(&c_cent, c_name, 0, 0, c_flags  DBG0))
-	      goto out_of_memory;
-	  }
-	    break;
-
-	  case TTL:
-	    SCAN_TIMESECS(c_ttl,p, "ttl option");
-	    break;
-
-	  case AUTHREC: {
-	    int cnst;
-	    if (c_cent.qname) {
-	      REPORT_ERROR("The authrec= option has no effect unless it precedes name= in a rr section.");
-	      PARSERROR;
-	    }
-	    ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF,"Bad qualifier in authrec= option.");
-	    c_flags=(cnst==C_ON)?DF_LOCAL:0;
-	  }
-	    break;
-
-	  case REVERSE:
-	    ASSIGN_ON_OFF(reverse,p,C_ON,"bad qualifier in reverse= option.");
-	    break;
-
-	  case A: {
-	    unsigned int sz;
-	    pdnsd_ca c_a;
-
-	    if (!c_cent.qname)
-	      goto no_name_spec;
-	    SCAN_STRING(p,strbuf,len);
-	    if (inet_aton(strbuf,&c_a.ipv4)) {
-	      tp=T_A;
-	      sz=sizeof(struct in_addr);
-	    }
-	    else
-#if ALLOW_LOCAL_AAAA
-	      if (inet_pton(AF_INET6,strbuf,&c_a.ipv6)>0) {
-		tp=T_AAAA;
-		sz=sizeof(struct in6_addr);
-	      }
-	      else
-#endif
-		{
-		  REPORT_ERROR("bad IP address in a= option.");
-		  PARSERROR;
-		}
-
-	    if(!add_cent_rr(&c_cent,tp,c_ttl,0,CF_LOCAL,sz,&c_a  DBG0))
-	      goto add_rr_failed;
-	  }
-	    break;
-
-	  case OWNER:
-	    tp=T_NS;
-	    goto scan_name;
-	  case CNAME:
-	    tp=T_CNAME;
-	    goto scan_name;
-	  case PTR:
-	    tp=T_PTR;
-	  scan_name:
-	    {
-	      unsigned char c_name[DNSNAMEBUFSIZE];
-
-	      if (!c_cent.qname)
-		goto no_name_spec;
-	      SCAN_STRING(p,strbuf,len);
-	      PARSESTR2RHN(ucharp strbuf,len,c_name);
-	      if(!add_cent_rr(&c_cent,tp,c_ttl,0,CF_LOCAL,rhnlen(c_name),c_name  DBG0))
-		goto add_rr_failed;
-	    }
-	    break;
-
-	  case MX: {
-	    unsigned char *cp;
-	    unsigned pref;
-	    unsigned char c_mx[2+DNSNAMEBUFSIZE];
-
-	    if (!c_cent.qname)
-	      goto no_name_spec;
-	    cp=c_mx+2;
-	    SCAN_STRING(p,strbuf,len);
-	    PARSESTR2RHN(ucharp strbuf,len,cp);
-	    SKIP_COMMA(p,"missing second argument (preference level) of mx= option");
-	    SCAN_UNSIGNED_NUM(pref,p,"second argument of mx= option");
-	    cp=c_mx;
-	    PUTINT16(pref,cp);
-	    if(!add_cent_rr(&c_cent,T_MX,c_ttl,0,CF_LOCAL,2+rhnlen(cp),c_mx  DBG0))
-	      goto add_rr_failed;
-	  }
-	    break;
-
-	  case SOA: {
-	    unsigned int blen,rlen;
-	    unsigned char *bp;
-	    uint32_t val;
-	    unsigned char buf[2*DNSNAMEBUFSIZE+20];
-
-	    if (!c_cent.qname)
-	      goto no_name_spec;
-	    SCAN_STRING(p,strbuf,len);
-	    PARSESTR2RHN(ucharp strbuf,len,buf);
-	    rlen=rhnlen(buf);
-	    blen=rlen;
-	    bp=buf+rlen;
-	    SKIP_COMMA(p,"missing 2nd argument of soa= option");
-	    SCAN_STRING(p,strbuf,len);
-	    PARSESTR2RHN(ucharp strbuf,len,bp);
-	    rlen=rhnlen(bp);
-	    blen += rlen;
-	    bp += rlen;
-	    SKIP_COMMA(p,"missing 3rd argument of soa= option");
-	    SCAN_UNSIGNED_NUM(val,p,"3rd argument of soa= option");
-	    PUTINT32(val,bp);
-	    SKIP_COMMA(p,"missing 4th argument of soa= option");
-	    SCAN_TIMESECS(val,p,"4th argument of soa= option");
-	    PUTINT32(val,bp);
-	    SKIP_COMMA(p,"missing 5th argument of soa= option");
-	    SCAN_TIMESECS(val,p,"5th argument of soa= option");
-	    PUTINT32(val,bp);
-	    SKIP_COMMA(p,"missing 6th argument of soa= option");
-	    SCAN_TIMESECS(val,p,"6th argument of soa= option");
-	    PUTINT32(val,bp);
-	    SKIP_COMMA(p,"missing 7th argument of soa= option");
-	    SCAN_TIMESECS(val,p,"7th argument of soa= option");
-	    PUTINT32(val,bp);
-	    blen += 20;
-	    if(!add_cent_rr(&c_cent,T_SOA,c_ttl,0,CF_LOCAL,blen,buf  DBG0))
-	      goto add_rr_failed;
-	  }
-	    break;
-	  case SPF:
-#if IS_CACHED_SPF
-	    tp=T_SPF; tpname="spf";
-	    goto define_txt_rr;
-#else
-	    REPORT_ERROR("Missing support for caching SPF records in rr section");
-	    PARSERROR;
-#endif
-	  case TXT:
-#if IS_CACHED_TXT
-	    tp=T_TXT; tpname="txt";
-#else
-	    REPORT_ERROR("Missing support for caching TXT records in rr section");
-	    PARSERROR;
-#endif
-#if IS_CACHED_TXT || IS_CACHED_SPF
-#if IS_CACHED_SPF
-	  define_txt_rr:
-#endif
-	  {
-	    unsigned char *rbuf;
-	    unsigned sz,allocsz;
-	    int rv;
-
-	    if (!c_cent.qname)
-	      goto no_name_spec;
-	    rbuf=NULL;
-	    sz=allocsz=0;
-#           undef  CLEANUP_HANDLER2
-#           define CLEANUP_HANDLER2 (free(rbuf))
-
-	    for(;;) {
-	      unsigned char *newbuf,*cp;
-	      unsigned newsz=sz+256;
-	      int n;
-	      if(newsz>allocsz) {
-		allocsz += 512;
-		newbuf=realloc(rbuf,allocsz);
-		if(!newbuf) {
-		  OUTOFMEMERROR;
-		}
-		rbuf=newbuf;
-	      }
-	      cp = rbuf+sz;
-	      n=scan_string(&p, charp (cp+1), 255, &scanstrerr);
-	      if(n==-1) {
-		REPORT_ERRORF("%s in %s= option", scanstrerr, tpname);
-		PARSERROR;
-	      }
-	      if(n>255) {
-		REPORT_ERRORF("string longer than 255 bytes in %s= option", tpname);
-		PARSERROR;
-	      }
-	      *cp=n;
-	      sz += n+1;
-	      if(sz>0xffff) {
-		REPORT_ERRORF("data exceeds maximum size (65535 bytes) in %s= option", tpname);
-		PARSERROR;
-	      }
-	      SKIP_BLANKS(p);
-	      if(*p!=',') break;
-	      ++p;
-	      SKIP_BLANKS(p);
-	    }
-	    rv=add_cent_rr(&c_cent,tp,c_ttl,0,CF_LOCAL,sz,rbuf  DBG0);
-	    CLEANUP_HANDLER2;
-#           undef  CLEANUP_HANDLER2
-#           define CLEANUP_HANDLER2
-	    if(!rv)
-	      goto add_rr_failed;
-	  }
-	    break;
-#endif
-	  default: /* we should never get here */
-	    CLEANUP_GOTO(internal_parse_error);
-	  } /* end of switch(option) */
-
-	  SKIP_BLANKS(p);
-	  if(*p!=';') CLEANUP_GOTO(expected_semicolon);
-	  ++p;
-	  SKIP_BLANKS(p);
-	}
-
-	if(*p!='}') CLEANUP_GOTO(expected_closing_brace);
-	if (!c_cent.qname)
-	  goto no_name_spec;
-	if(c_cent.qname[0]==1 && c_cent.qname[1]=='*') {
-	  /* Wild card record. Set the DF_WILD flag for the name with '*.' removed. */
-	  if(!set_cent_flags(&c_cent.qname[2],DF_WILD)) {
-	    unsigned char buf[DNSNAMEBUFSIZE];
-	    rhn2str(c_cent.qname,buf,sizeof(buf));
-	    REPORT_ERRORF("You must define some records for '%s'"
-			  " before you can define records for the wildcard name '%s'",
-			  &buf[2],buf);
-	    PARSERROR;
-	  }
-	}
-
-	add_cache(&c_cent);
-	if(reverse) {
-	  if(!add_reverse_cache(&c_cent)) {
-		    REPORT_ERROR("Can't convert IP address in a= option"
-				 " into form suitable for reverse resolving.");
-		    PARSERROR;
-	  }
-	}
-	CLEANUP_HANDLER;
-	break;
-
-      add_rr_failed:
-	OUTOFMEMERROR;
-#	undef  CLEANUP_HANDLER
-#	define CLEANUP_HANDLER
-      }
-
-      case SOURCE: {
-	unsigned char c_owner[DNSNAMEBUFSIZE];
-	time_t c_ttl;
-	unsigned c_flags;
-	unsigned char c_aliases;
-
-	c_owner[0]='\0';
-	c_ttl=86400;
-	c_flags=DF_LOCAL;
-	c_aliases=0;
-
-	while(isalpha(*p)) {
-	  SCAN_ALPHANUM(ps,p,len);
-	  option=lookup_keyword(ps,len,source_options);
-	  if(!option) {
-	    REPORT_ERRORF("invalid option for source section: %.*s",(int)len,ps);
-	    PARSERROR;
-	  }
-	  SKIP_BLANKS(p);
-	  if(*p!='=') goto expected_equals;
-	  ++p;
-	  SKIP_BLANKS(p);
-
-	  switch(option) {
-	  case OWNER:
-	    SCAN_STRING(p,strbuf,len);
-	    PARSESTR2RHN(ucharp strbuf,len,c_owner);
-	    break;
-
-	  case TTL:
-	    SCAN_TIMESECS(c_ttl,p,"ttl option");
-	    break;
-
-	  case FILET:
-	    if (!c_owner[0]) {
-	      REPORT_ERROR("you must specify owner before file= in source records.");
-	      PARSERROR;
-	    }
-	    SCAN_STRING(p,strbuf,len);
-	    {
-	      char *errmsg;
-	      if (!read_hosts(strbuf, c_owner, c_ttl, c_flags, c_aliases, &errmsg)) {
-		if(errmsg) { REPORT_ERROR(errmsg); free(errmsg); }
-		else *errstr=NULL;
-		PARSERROR;
-	      }
-	    }
-	    break;
-
-	  case SERVE_ALIASES:
-	    ASSIGN_ON_OFF(c_aliases,p,C_ON,"Bad qualifier in serve_aliases= option.");
-	    break;
-
-	  case AUTHREC: {
-	    int cnst;
-	    ASSIGN_CONST(cnst,p,cnst==C_ON || cnst==C_OFF,"Bad qualifier in authrec= option.");
-	    c_flags=(cnst==C_ON)?DF_LOCAL:0;
-	  }
-	    break;
-
-	  default: /* we should never get here */
-	    goto internal_parse_error;
-	  } /* end of switch(option) */
-
-	  SKIP_BLANKS(p);
-	  if(*p!=';') goto expected_semicolon;
-	  ++p;
-	  SKIP_BLANKS(p);
-	}
-      }
-	break;
-
-      case INCLUDE_F: {
-	while(isalpha(*p)) {
-	  SCAN_ALPHANUM(ps,p,len);
-	  option=lookup_keyword(ps,len,include_options);
-	  if(!option) {
-	    REPORT_ERRORF("invalid option for include section: %.*s",(int)len,ps);
-	    PARSERROR;
-	  }
-	  SKIP_BLANKS(p);
-	  if(*p!='=') goto expected_equals;
-	  ++p;
-	  SKIP_BLANKS(p);
-
-	  switch(option) {
-	  case FILET:
-	    if(includedepth>=MAXINCLUDEDEPTH) {
-	      REPORT_ERRORF("maximum include depth (%d) exceeded.",MAXINCLUDEDEPTH);
-	      PARSERROR;
-	    }
-	    SCAN_STRING(p,strbuf,len);
-	    {
-	      char *errmsg;
-	      if (!read_config_file(strbuf, NULL, NULL, includedepth+1, &errmsg)) {
-		if(errmsg) {
-		  if(linenr) {
-		    if(asprintf(errstr, "In file %s included at line %u:\n%s",strbuf,linenr,errmsg)<0)
-		      *errstr=NULL;
-		  }
-		  else {
-		    if(asprintf(errstr, "In file %s:\n%s",strbuf,errmsg)<0)
-		      *errstr=NULL;
-		  }
-		  free(errmsg);
-		}
-		else
-		  *errstr=NULL;
-		PARSERROR;
-	      }
-	    }
-	    break;
-
-	  default: /* we should never get here */
-	    goto internal_parse_error;
-	  } /* end of switch(option) */
-
-	  SKIP_BLANKS(p);
-	  if(*p!=';') goto expected_semicolon;
-	  ++p;
-	  SKIP_BLANKS(p);
-	}
-      }
-	break;
-
-      case NEG: {
-	unsigned char c_name[DNSNAMEBUFSIZE];
-	time_t c_ttl;
-	unsigned char htp,hdtp;
-
-	htp=0;
-	hdtp=0;
-	c_name[0]='\0';
-	c_ttl=86400;
-
-	while(isalpha(*p)) {
-	  SCAN_ALPHANUM(ps,p,len);
-	  option=lookup_keyword(ps,len,neg_options);
-	  if(!option) {
-	    REPORT_ERRORF("invalid option for neg section: %.*s",(int)len,ps);
-	    PARSERROR;
-	  }
-	  SKIP_BLANKS(p);
-	  if(*p!='=') goto expected_equals;
-	  ++p;
-	  SKIP_BLANKS(p);
-
-	  switch(option) {
-	  case NAME:
-	    SCAN_STRING(p,strbuf,len);
-	    PARSESTR2RHN(ucharp strbuf,len,c_name);
-	    break;
-
-	  case TTL:
-	    SCAN_TIMESECS(c_ttl,p, "ttl option");
-	    break;
-
-	  case TYPES:
-	    if (!c_name[0]) {
-	      REPORT_ERROR("you must specify a name before the types= option.");
-	      PARSERROR;
-	    }
-	    if (isalpha(*p)) {
-	      int cnst;
-	      dns_cent_t c_cent /* ={0} */;
-	      SCAN_ALPHANUM(ps,p,len);
-	      cnst=lookup_const(ps,len);
-	      if(cnst==C_DOMAIN) {
-		if (htp) {
-		  REPORT_ERROR("You may not specify types=domain together with other types!");
-		  PARSERROR;
-		}
-		hdtp=1;
-		if (!init_cent(&c_cent, c_name, c_ttl, 0, DF_LOCAL|DF_NEGATIVE  DBG0))
-		  goto out_of_memory;
-	      }
-	      else if(cnst==0) {
-		if (hdtp) {
-		  REPORT_ERROR("You may not specify types=domain together with other types!");
-		  PARSERROR;
-		}
-		htp=1;
-		if (!init_cent(&c_cent, c_name, 0, 0, 0  DBG0))
-		  goto out_of_memory;
-#		undef  CLEANUP_HANDLER
-#		define CLEANUP_HANDLER (free_cent(&c_cent DBG0))
-		for(;;) {
-		  {
-		    TEMPSTRNCPY(buf,ps,len);
-		    cnst=rr_tp_byname(buf);
-		  }
-		  if(cnst==-1) {
-		    REPORT_ERRORF("unrecognized rr type '%.*s' used as argument for types= option.",(int)len,ps);
-		    PARSERROR;
-		  }
-		  if(PDNSD_NOT_CACHED_TYPE(cnst)) {
-		    REPORT_ERRORF("illegal rr type '%.*s' used as argument for types= option.",(int)len,ps);
-		    PARSERROR;
-		  }
-		  if (!getrrset_eff(&c_cent,cnst) && !add_cent_rrset_by_type(&c_cent,cnst,c_ttl,0,CF_LOCAL|CF_NEGATIVE  DBG0)) {
-		    OUTOFMEMERROR;
-		  }
-		  SKIP_BLANKS(p);
-		  if(*p!=',') break;
-		  ++p;
-		  SKIP_BLANKS(p);
-		  if (!isalpha(*p))
-		    {CLEANUP_GOTO(bad_types_option);}
-		  SCAN_ALPHANUM(ps,p,len);
-		}
-	      }
-	      else
-		goto bad_types_option;
-
-	      add_cache(&c_cent);
-	      CLEANUP_HANDLER;
-#	      undef  CLEANUP_HANDLER
-#	      define CLEANUP_HANDLER
-	    }
-	    else {
-	    bad_types_option:
-	      REPORT_ERROR("Bad argument for types= option.");
-	      PARSERROR;
-	    }
-	    break;
-
-	  default: /* we should never get here */
-	    goto internal_parse_error;
-	  } /* end of switch(option) */
-
-	  SKIP_BLANKS(p);
-	  if(*p!=';') goto expected_semicolon;
-	  ++p;
-	  SKIP_BLANKS(p);
-	}
-      }
-	break;
-
-      default: /* we should never get here */
-	goto internal_parse_error;
-      } /* end of switch(sechdr) */
-
-      if(*p!='}') goto expected_closing_brace;
-      ++p;
-    }
-    else {
-      REPORT_ERROR("expected section header");
-      PARSERROR;
-    }
-  }
-
-  if(!in || feof(in)) {
-    if(getnextperr) {
-      REPORT_ERROR(getnextperr);
-      PARSERROR;
-    }
-    retval=1; /* success */
-  }
-  else
-    goto input_error;
-
-  goto free_linebuf_return;
-
- expected_bropen:
-  REPORT_ERROR("expected opening brace after section name");
-  PARSERROR;
-
- expected_closing_brace:
-  REPORT_ERROR("expected beginning of new option or closing brace");
-  PARSERROR;
-
- expected_equals:
-  REPORT_ERROR("expected equals sign after option name");
-  PARSERROR;
-
- expected_semicolon:
-  REPORT_ERROR("too many arguments to option or missing semicolon");
-  PARSERROR;
-
- string_err:
-  REPORT_ERROR(scanstrerr);
-  PARSERROR;
-
- string_too_long:
-  REPORT_ERROR("string length exceeds buffer size");
-  PARSERROR;
-
- no_name_spec:
-  REPORT_ERROR("you must specify a name before a,ptr,cname,mx,ns(owner) and soa records.");
-  PARSERROR;
-
- internal_parse_error:
-  if(asprintf(errstr,"Internal inconsistency detected while parsing line %u of %s.\n"
-	      "Please consider reporting this error to one of the maintainers.\n",linenr,conftype)<0)
-    *errstr=NULL;
-  PARSERROR;
-
- out_of_memory:
-  /* If malloc() just failed, allocating space for an error message is unlikely to succeed. */
-  *errstr=NULL;
-  PARSERROR;
-
- unexpected_eof:
-  if(!in || feof(in)) {
-    REPORT_ERROR(getnextperr?getnextperr:in?"unexpected end of file":"unexpected end of input string");
-  }
-  else
-    input_error: {
-    if(asprintf(errstr,"Error while reading config file: %s",strerror(errno))<0)
-      *errstr=NULL;
-  }
-
- free_linebuf_return:
-  free(linebuf);
-  return retval;
-
-#undef SKIP_BLANKS
-#undef SCAN_STRING
-#undef REPORT_ERROR
-#undef REPORT_ERRORF
-#undef PARSERROR
-#undef OUTOFMEMERROR
-#undef CLEANUP_GOTO
-}
-
-
-/* Convert a string representation of an IP address into a binary format. */
-static const char* parse_ip(const char *ipstr, pdnsd_a *a)
-{
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-  if(!cmdlineipv) cmdlineipv=-2;
-#endif
-  {
-    if(!strcmp(ipstr,"any")) {
-#ifdef ENABLE_IPV4
-      if (run_ipv4)
-	a->ipv4.s_addr=INADDR_ANY;
-#endif
-#ifdef ENABLE_IPV6
-      ELSE_IPV6
-	a->ipv6=in6addr_any;
-#endif
-    }
-    else if(!str2pdnsd_a(ipstr,a)) {
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-      if(run_ipv4 && inet_pton(AF_INET6,ipstr,&a->ipv6)>0) {
-	return "You should set run_ipv4=off or use the command-line option -6"
-	  " before specifying an IPv6 address";
-      }
-#endif
-      return "bad IP address";
-    }
-  }
-  return NULL;
-}
-
-/* Add an IP address to the list of name servers. */
-static const char *addr_add(atup_array *ata, const char *ipstr)
-{
-  atup_t *at;
-  pdnsd_a addr;
-
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-  if(!cmdlineipv) cmdlineipv=-2;
-#endif
-  {
-    if(!str2pdnsd_a(ipstr,&addr)) {
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-      if(run_ipv4 && inet_pton(AF_INET6,ipstr,&addr.ipv6)>0) {
-	fprintf(stderr,"IPv6 address \"%s\" in config file ignored while running in IPv4 mode.\n",ipstr);
-	return NULL;
-      }
-#endif
-      return "bad IP address";
-    }
-  }
-
-  if (!(*ata=DA_GROW1(*ata))) {
-    return "out of memory!";
-  }
-  at=&DA_LAST(*ata);
-  SET_PDNSD_A2(&at->a, &addr);
-  at->is_up=0;
-  at->i_ts=0;
-  return NULL;
-}
-
-
-/* Helper functions for making netmasks */
-inline static uint32_t mk_netmask4(int len)
-{
-  uint32_t m;
-
-  if(len<=0)
-    return 0;
-
-  m= ~(uint32_t)0;
-  return (len<32)? htonl(m<<(32-len)): m;
-}
-
-#if ALLOW_LOCAL_AAAA
-inline static void mk_netmask6(struct in6_addr *m, int len)
-{
-  uint32_t *ma = (uint32_t *)m;
-  ma[0] = mk_netmask4(len);
-  ma[1] = mk_netmask4(len -= 32);
-  ma[2] = mk_netmask4(len -= 32);
-  ma[3] = mk_netmask4(len -= 32);
-}
-#endif
-
-/* Add an IP address/mask to the reject lists. */
-static const char *reject_add(servparm_t *serv, const char *ipstr)
-{
-  char *slash=strchr(ipstr,'/'); int mlen=0;
-
-  if(slash) {
-    *slash++=0;
-
-    if(*slash && isdigit(*slash)) {
-      char *endptr;
-      int l = strtol(slash,&endptr,10);
-      if(!*endptr) {
-	mlen=l;
-	slash=NULL;
-      }
-    }
-  }
-  else
-    mlen=128; /* Works for both IPv4 and IPv6 */
-
-  {
-    addr4maskpair_t am;
-
-    am.mask.s_addr = mk_netmask4(mlen);
-    if(inet_aton(ipstr,&am.a) && (!slash || inet_aton(slash,&am.mask))) {
-      if(!(serv->reject_a4=DA_GROW1(serv->reject_a4)))
-	return "out of memory!";
-
-      DA_LAST(serv->reject_a4) = am;
-      return NULL;
-    }
-  }
-#if ALLOW_LOCAL_AAAA
-  {
-    addr6maskpair_t am;
-
-    mk_netmask6(&am.mask,mlen);
-    if(inet_pton(AF_INET6,ipstr,&am.a)>0 && (!slash || inet_pton(AF_INET6,slash,&am.mask)>0)) {
-      if(!(serv->reject_a6=DA_GROW1(serv->reject_a6)))
-	return "out of memory!";
-
-      DA_LAST(serv->reject_a6) = am;
-      return NULL;
-    }
-  }
-#endif
-
-  return "bad IP address";
-}
-
-/* Try to avoid the possibility that pdnsd will query itself. */
-static void check_localaddrs(servparm_t *serv)
-{
-  if(serv->port == global.port) {
-    atup_array ata=serv->atup_a;
-    int i,j=0,n=DA_NEL(ata);
-    for(i=0;i<n;++i) {
-      atup_t *at=&DA_INDEX(ata,i);
-      if(is_inaddr_any(&global.a)) {
-	if(is_local_addr(PDNSD_A2_TO_A(&at->a))) {
-	  char buf[ADDRSTR_MAXLEN];
-	  fprintf(stderr,"Local name-server address \"%s\" ignored in config file.\n",
-		  pdnsd_a2str(PDNSD_A2_TO_A(&at->a),buf,ADDRSTR_MAXLEN));
-	  continue;
-	}
-      }
-      else {
-	if(equiv_inaddr2(&global.a,&at->a)) {
-	  char buf[ADDRSTR_MAXLEN];
-	  fprintf(stderr,"Ignoring name-server address \"%s\" in config file (identical to server_ip address).\n",
-		  pdnsd_a2str(PDNSD_A2_TO_A(&at->a),buf,ADDRSTR_MAXLEN));
-	  continue;
-	}
-      }
-      if(j<i)
-	DA_INDEX(ata,j)=*at;
-      ++j;
-    }
-    if(j<n)
-      serv->atup_a=DA_RESIZE(ata,j);
-  }
-}
-
-/* Read the name server addresses from a resolv.conf-style file. */
-static int read_resolv_conf(const char *fn, atup_array *ata, char **errstr)
-{
-  int rv=0;
-  FILE *f;
-  char *buf;
-  size_t buflen=256;
-  unsigned linenr=0;
-
-  if (!(f=fopen(fn,"r"))) {
-    if(asprintf(errstr, "Failed to open %s: %s", fn, strerror(errno))<0)
-      *errstr=NULL;
-    return 0;
-  }
-  buf=malloc(buflen);
-  if(!buf) {
-    *errstr=NULL;
-    goto fclose_return;
-  }
-  while(getline(&buf,&buflen,f)>=0) {
-    size_t len;
-    char *p,*ps;
-    ++linenr;
-    p=buf;
-    for(;; ++p) {
-      if(!*p) goto nextline;
-      if(!isspace(*p)) break;
-    }
-    ps=p;
-    do {
-      if(!*++p) goto nextline;
-    } while(!isspace(*p));
-    len=p-ps;
-    if(len==strlitlen("nameserver") && !strncmp(ps,"nameserver",len)) {
-      const char *errmsg;
-      do {
-	if(!*++p) goto nextline;
-      } while (isspace(*p));
-      ps=p;
-      do {
-	++p;
-      } while(*p && !isspace(*p));
-      len=p-ps;
-      {
-	TEMPSTRNCPY(ipstr,ps,len);
-	errmsg=addr_add(ata, ipstr);
-      }
-      if(errmsg) {
-	if(asprintf(errstr, "%s in line %u of file %s", errmsg,linenr,fn)<0)
-	  *errstr=NULL;
-	goto cleanup_return;
-      }
-    }
-  nextline:;
-  }
-  if (feof(f))
-    rv=1;
-  else if(asprintf(errstr, "Failed to read %s: %s", fn, strerror(errno))<0)
-    *errstr=NULL;
- cleanup_return:
-  free(buf);
- fclose_return:
-  fclose(f);
-  return rv;
-}
-
-static const char *slist_add(slist_array *sla, const char *nm, unsigned int len, int tp)
-{
-  slist_t *sl;
-  int exact=1;
-  const char *err;
-  size_t sz;
-  unsigned char rhn[DNSNAMEBUFSIZE];
-
-  if (len>1 && *nm=='.') {
-    exact=0;
-    ++nm;
-    --len;
-  }
-  if((err=parsestr2rhn(ucharp nm,len,rhn)))
-    return err;
-  sz=rhnlen(rhn);
-  if (!(*sla=DA_GROW1_F(*sla,free_slist_domain))) {
-    return "out of memory!";
-  }
-  sl=&DA_LAST(*sla);
-
-  sl->exact=exact;
-  sl->rule=tp;
-  if (!(sl->domain=malloc(sz)))
-    return "out of memory!";
-  memcpy(sl->domain,rhn,sz);
-  return NULL;
-}
-
-static const char *zone_add(zone_array *za, const char *zone, unsigned int len)
-{
-  zone_t z;
-  const char *err;
-  size_t sz;
-  unsigned char rhn[DNSNAMEBUFSIZE];
-
-  if((err=parsestr2rhn(ucharp zone,len,rhn)))
-    return err;
-  sz=rhnlen(rhn);
-  if(!(*za=DA_GROW1_F(*za,free_zone)) || !(DA_LAST(*za)=z=malloc(sz)))
-    return "out of memory!";
-  memcpy(z,rhn,sz);
-  return NULL;
-}
-
diff --git a/jni/pdnsd/src/conf-parser.h b/jni/pdnsd/src/conf-parser.h
deleted file mode 100644
index d3a3e99..0000000
--- a/jni/pdnsd/src/conf-parser.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* conf-parser.h - definitions for parser of pdnsd config files.
-   The parser was rewritten in C from scratch and doesn't require (f)lex
-   or yacc/bison.
-
-   Copyright (C) 2004,2008 Paul A. Rombouts.
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef CONF_PARSER_H
-#define CONF_PARSER_H
-
-int confparse(FILE* in, char *prestr, globparm_t *global, servparm_array *servers, int includedepth, char **errstr);
-
-#endif /* CONF_PARSER_H */
diff --git a/jni/pdnsd/src/conff.c b/jni/pdnsd/src/conff.c
deleted file mode 100644
index db6c5d1..0000000
--- a/jni/pdnsd/src/conff.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/* conff.c - Maintain configuration information
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <pwd.h>
-#include "ipvers.h"
-#include "conff.h"
-#include "consts.h"
-#include "helpers.h"
-#include "conf-parser.h"
-#include "servers.h"
-#include "icmp.h"
-
-
-globparm_t global={
-  perm_cache:        2048,
-  cache_dir:         NULL,
-  pidfile:           NULL,
-  port:              53,
-  a:                 PDNSD_A_INITIALIZER,
-  out_a:             PDNSD_A_INITIALIZER,
-#ifdef ENABLE_IPV6
-  ipv4_6_prefix:     IN6ADDR_ANY_INIT,
-#endif
-  max_ttl:           604800,
-  min_ttl:           120,
-  neg_ttl:           900,
-  neg_rrs_pol:       C_DEFAULT,
-  neg_domain_pol:    C_AUTH,
-  verbosity:         VERBOSITY,
-  run_as:            "",
-  daemon:            0,
-  debug:             0,
-  stat_pipe:         0,
-  notcp:             0,
-  strict_suid:       1,
-  use_nss:           1,
-  paranoid:          0,
-  lndown_kluge:      0,
-  onquery:           0,
-  rnd_recs:          1,
-  ctl_perms:         0600,
-  scheme_file:       NULL,
-  proc_limit:        40,
-  procq_limit:       60,
-  tcp_qtimeout:      TCP_TIMEOUT,
-  timeout:           0,
-  par_queries:       PAR_QUERIES,
-  query_method:      M_PRESET,
-  query_port_start:  1024,
-  query_port_end:    65535,
-  udpbufsize:        1024,
-  deleg_only_zones:  NULL
-};
-
-servparm_t serv_presets={
-  port:              53,
-  uptest:            C_NONE,
-  timeout:           120,
-  interval:          900,
-  ping_timeout:      600,
-  scheme:            "",
-  uptest_cmd:        NULL,
-  uptest_usr:        "",
-  interface:         "",
-  device:            "",
-  query_test_name:   NULL,
-  label:             NULL,
-  purge_cache:       0,
-  nocache:           0,
-  lean_query:        1,
-  edns_query:        0,
-  is_proxy:          0,
-  rootserver:        0,
-  rand_servers:      0,
-  preset:            1,
-  rejectrecursively: 0,
-  rejectpolicy:      C_FAIL,
-  policy:            C_INCLUDED,
-  alist:             NULL,
-  atup_a:            NULL,
-  reject_a4:         NULL,
-#if ALLOW_LOCAL_AAAA
-  reject_a6:         NULL,
-#endif
-  ping_a:            PDNSD_A_INITIALIZER
-};
-
-servparm_array servers=NULL;
-
-static void free_zones(zone_array za);
-static void free_server_data(servparm_array sa);
-static int report_server_stat(int f,int i);
-
-
-/*
- * Read a configuration file, saving the results in a (separate) global section and servers array,
- * and the cache.
- *
- * char *nm should contain the name of the file to read. If it is NULL, the name of the config file
- *          read during startup is used.
- *
- * globparm_t *global should point to a struct which will be used to store the data of the
- *                    global section(s). If it is NULL, no global sections are allowed in the
- *		      file.
- *
- * servparm_array *servers should point to a dynamic array which will be grown to store the data
- *                         of the server sections. If it is NULL, no server sections are allowed
- *			   in the file.
- *
- * char **errstr is used to return a possible error message.
- *               In case of failure, *errstr will refer to a newly allocated string.
- *
- * read_config_file returns 1 on success, 0 on failure.
- */
-int read_config_file(const char *nm, globparm_t *global, servparm_array *servers, int includedepth, char **errstr)
-{
-	int retval=0;
-	const char *conftype= (global?"config":"include");
-	FILE *in;
-
-	if (nm==NULL)
-		nm=conf_file;
-
-	if (!(in=fopen(nm,"r"))) {
-		if(asprintf(errstr,"Error: Could not open %s file %s: %s",conftype,nm,strerror(errno))<0)
-			*errstr=NULL;
-		return 0;
-	}
-
-	retval=confparse(in,NULL,global,servers,includedepth,errstr);
-close_file:
-	if(fclose(in) && retval) {
-		if(asprintf(errstr,"Error: Could not close %s file %s: %s",
-			    conftype,nm,strerror(errno))<0)
-			*errstr=NULL;
-		return 0;
-	}
-	if(retval && servers && !DA_NEL(*servers)) {
-		if(asprintf(errstr,"Error: no server sections defined in config file %s",nm)<0)
-			*errstr=NULL;
-		return 0;
-	}
-	return retval;
-}
-
-/*
- * Re-Read the configuration file.
- * Return 1 on success, 0 on failure.
- * In case of failure, the old configuration will be unchanged (although the cache may not) and
- * **errstr will refer to a newly allocated string containing an error message.
- */
-int reload_config_file(const char *nm, char **errstr)
-{
-	globparm_t global_new;
-	servparm_array servers_new;
-
-	global_new=global;
-	global_new.cache_dir=NULL;
-	global_new.pidfile=NULL;
-	global_new.scheme_file=NULL;
-	global_new.deleg_only_zones=NULL;
-	global_new.onquery=0;
-	servers_new=NULL;
-	if(read_config_file(nm,&global_new,&servers_new,0,errstr)) {
-		if(global_new.cache_dir && strcmp(global_new.cache_dir,global.cache_dir)) {
-			*errstr=strdup("Cannot reload config file: the specified cache_dir directory has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-		if(global_new.pidfile && (!global.pidfile || strcmp(global_new.pidfile,global.pidfile))) {
-			*errstr=strdup("Cannot reload config file: the specified pid_file has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-		if(global_new.scheme_file && strcmp(global_new.scheme_file,global.scheme_file)) {
-			*errstr=strdup("Cannot reload config file: the specified scheme_file has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-		if(global_new.port!=global.port) {
-			*errstr=strdup("Cannot reload config file: the specified server_port has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-		if(!ADDR_EQUIV(&global_new.a,&global.a)) {
-			*errstr=strdup("Cannot reload config file: the specified interface address (server_ip) has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-#ifdef ENABLE_IPV6
-		if(!IN6_ARE_ADDR_EQUAL(&global_new.ipv4_6_prefix,&global.ipv4_6_prefix)) {
-			*errstr=strdup("Cannot reload config file: the specified ipv4_6_prefix has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-#endif
-		if(strcmp(global_new.run_as,global.run_as)) {
-			*errstr=strdup("Cannot reload config file: the specified run_as id has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-		if(global_new.daemon!=global.daemon) {
-			*errstr=strdup("Cannot reload config file: the daemon option has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-		if(global_new.debug!=global.debug) {
-			*errstr=strdup("Cannot reload config file: the debug option has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-		if(global_new.stat_pipe!=global.stat_pipe) {
-			*errstr=strdup("Cannot reload config file: the status_ctl option has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-		if(global_new.notcp!=global.notcp) {
-			*errstr=strdup("Cannot reload config file: the tcp_server option has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-		if(global_new.strict_suid!=global.strict_suid) {
-			*errstr=strdup("Cannot reload config file: the strict_setuid option has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-		if(global_new.ctl_perms!=global.ctl_perms) {
-			*errstr=strdup("Cannot reload config file: the specified ctl_perms has changed.\n"
-				       "Try restarting pdnsd instead.");
-			goto cleanup_return;
-		}
-		if(ping_isocket==-1
-#ifdef ENABLE_IPV6
-		   && ping6_isocket==-1
-#endif
-		  ) {
-			int i,n=DA_NEL(servers_new);
-			for (i=0;i<n;++i) {
-				if (DA_INDEX(servers_new,i).uptest==C_PING) {
-					if(asprintf(errstr,"Cannot reload config file: the ping socket is not initialized"
-						    " and the new config contains uptest=ping in server section %i.\n"
-						    "Try restarting pdnsd instead.",i)<0)
-						*errstr=NULL;
-					goto cleanup_return;
-				}
-			}
-		}
-
-		/* we need exclusive access to the server data to make the changes */
-		/* Wait at most 60 seconds to obtain a lock. */
-		if(!exclusive_lock_server_data(60)) {
-			*errstr=strdup("Cannot reload config file: Timed out while waiting for access to config data.");
-			goto cleanup_return;
-		}
-		free(global_new.cache_dir); global_new.cache_dir=global.cache_dir;
-		free(global_new.pidfile); global_new.pidfile=global.pidfile;
-		free(global_new.scheme_file); global_new.scheme_file=global.scheme_file;
-		free_zones(global.deleg_only_zones);
-		global=global_new;
-
-		free_server_data(servers);
-		servers=servers_new;
-		/* schedule a retest to check which servers are up,
-		   and free the lock. */
-		exclusive_unlock_server_data(1);
-
-		return 1;
-	}
-
- cleanup_return:
-	free(global_new.cache_dir);
-	free(global_new.pidfile);
-	free(global_new.scheme_file);
-	free_zones(global_new.deleg_only_zones);
-	free_server_data(servers_new);
-	return 0;
-}
-
-void free_zone(void *ptr)
-{
-  free(*((unsigned char **)ptr));
-}
-
-static void free_zones(zone_array za)
-{
-	int i,n=DA_NEL(za);
-	for(i=0;i<n;++i)
-		free(DA_INDEX(za,i));
-
-	da_free(za);
-}
-
-void free_slist_domain(void *ptr)
-{
-	free(((slist_t *)ptr)->domain);
-}
-
-void free_slist_array(slist_array sla)
-{
-	int j,m=DA_NEL(sla);
-	for(j=0;j<m;++j)
-		free(DA_INDEX(sla,j).domain);
-	da_free(sla);
-
-}
-
-void free_servparm(servparm_t *serv)
-{
-	free(serv->uptest_cmd);
-	free(serv->query_test_name);
-	free(serv->label);
-	da_free(serv->atup_a);
-	free_slist_array(serv->alist);
-	da_free(serv->reject_a4);
-#if ALLOW_LOCAL_AAAA
-	da_free(serv->reject_a6);
-#endif
-}
-
-static void free_server_data(servparm_array sa)
-{
-	int i,n=DA_NEL(sa);
-	for(i=0;i<n;++i)
-		free_servparm(&DA_INDEX(sa,i));
-	da_free(sa);
-}
-
-/* Report the current configuration to the file descriptor f (for the status fifo, see status.c) */
-int report_conf_stat(int f)
-{
-	int i,n,retval=0;
-
-	fsprintf_or_return(f,"\nConfiguration:\n==============\nGlobal:\n-------\n");
-	fsprintf_or_return(f,"\tCache size: %li kB\n",global.perm_cache);
-	fsprintf_or_return(f,"\tServer directory: %s\n",global.cache_dir);
-	fsprintf_or_return(f,"\tScheme file (for Linux pcmcia support): %s\n",global.scheme_file);
-	fsprintf_or_return(f,"\tServer port: %i\n",global.port);
-	{
-	  char buf[ADDRSTR_MAXLEN];
-	  fsprintf_or_return(f,"\tServer IP (%s=any available one): %s\n", SEL_IPVER("0.0.0.0","::"),
-			     pdnsd_a2str(&global.a,buf,ADDRSTR_MAXLEN));
-	  if(!is_inaddr_any(&global.out_a)) {
-	    fsprintf_or_return(f,"\tIP bound to interface used for querying remote servers: %s\n",
-			       pdnsd_a2str(&global.out_a,buf,ADDRSTR_MAXLEN));
-	  }
-	}
-#ifdef ENABLE_IPV6
-	if(!run_ipv4) {
-	  char buf[ADDRSTR_MAXLEN];
-	  fsprintf_or_return(f,"\tIPv4 to IPv6 prefix: %s\n",inet_ntop(AF_INET6,&global.ipv4_6_prefix,buf,ADDRSTR_MAXLEN)?:"?.?.?.?");
-	}
-#endif
-	fsprintf_or_return(f,"\tIgnore cache when link is down: %s\n",global.lndown_kluge?"on":"off");
-	fsprintf_or_return(f,"\tMaximum ttl: %li\n",(long)global.max_ttl);
-	fsprintf_or_return(f,"\tMinimum ttl: %li\n",(long)global.min_ttl);
-	fsprintf_or_return(f,"\tNegative ttl: %li\n",(long)global.neg_ttl);
-	fsprintf_or_return(f,"\tNegative RRS policy: %s\n",const_name(global.neg_rrs_pol));
-	fsprintf_or_return(f,"\tNegative domain policy: %s\n",const_name(global.neg_domain_pol));
-	fsprintf_or_return(f,"\tRun as: %s\n",global.run_as);
-	fsprintf_or_return(f,"\tStrict run as: %s\n",global.strict_suid?"on":"off");
-	fsprintf_or_return(f,"\tUse NSS: %s\n",global.use_nss?"on":"off");
-	fsprintf_or_return(f,"\tParanoid mode (cache pollution prevention): %s\n",global.paranoid?"on":"off");
-	fsprintf_or_return(f,"\tControl socket permissions (mode): %o\n",global.ctl_perms);
-	fsprintf_or_return(f,"\tMaximum parallel queries served: %i\n",global.proc_limit);
-	fsprintf_or_return(f,"\tMaximum queries queued for serving: %i\n",global.procq_limit);
-	fsprintf_or_return(f,"\tGlobal timeout setting: %li\n",(long)global.timeout);
-	fsprintf_or_return(f,"\tParallel queries increment: %i\n",global.par_queries);
-	fsprintf_or_return(f,"\tRandomize records in answer: %s\n",global.rnd_recs?"on":"off");
-	fsprintf_or_return(f,"\tQuery method: %s\n",const_name(global.query_method));
-	{
-		int query_port_start=global.query_port_start;
-		if(query_port_start==-1) {
-			fsprintf_or_return(f,"\tQuery port start: (let kernel choose)\n");
-		}
-		else {
-			fsprintf_or_return(f,"\tQuery port start: %i\n",query_port_start);
-			fsprintf_or_return(f,"\tQuery port end: %i\n",global.query_port_end);
-		}
-	}
-#ifndef NO_TCP_SERVER
-	fsprintf_or_return(f,"\tTCP server thread: %s\n",global.notcp?"off":"on");
-	if(!global.notcp)
-	  {fsprintf_or_return(f,"\tTCP query timeout: %li\n",(long)global.tcp_qtimeout);}
-#endif
-	fsprintf_or_return(f,"\tMaximum udp buffer size: %i\n",global.udpbufsize);
-
-	lock_server_data();
-	{
-		int rv=fsprintf(f,"\tDelegation-only zones: ");
-		if(rv<0) {retval=rv; goto unlock_return;}
-	}
-	if(global.deleg_only_zones==NULL) {
-		int rv=fsprintf(f,"(none)\n");
-		if(rv<0) {retval=rv; goto unlock_return;}
-	}
-	else {
-		int rv;
-		n=DA_NEL(global.deleg_only_zones);
-		for(i=0;i<n;++i) {
-			unsigned char buf[DNSNAMEBUFSIZE];
-			rv=fsprintf(f,i==0?"%s":", %s",
-					rhn2str(DA_INDEX(global.deleg_only_zones,i),buf,sizeof(buf)));
-			if(rv<0) {retval=rv; goto unlock_return;}
-		}
-		rv=fsprintf(f,"\n");
-		if(rv<0) {retval=rv; goto unlock_return;}
-	}
-
-	n=DA_NEL(servers);
-	for(i=0;i<n;++i) {
-		int rv=report_server_stat(f,i);
-		if(rv<0) {retval=rv; goto unlock_return;}
-	}
- unlock_return:
-	unlock_server_data();
-
-	return retval;
-}
-
-
-#if ALLOW_LOCAL_AAAA
-#define serv_has_rejectlist(s) ((s)->reject_a4!=NULL || (s)->reject_a6!=NULL)
-#else
-#define serv_has_rejectlist(s) ((s)->reject_a4!=NULL)
-#endif
-
-
-/* Report the current status of server i to the file descriptor f.
-   Call with locks applied.
-*/
-static int report_server_stat(int f,int i)
-{
-	servparm_t *st=&DA_INDEX(servers,i);
-	int j,m;
-
-	fsprintf_or_return(f,"Server %i:\n------\n",i);
-	fsprintf_or_return(f,"\tlabel: %s\n",st->label?st->label:"(none)");
-	m=DA_NEL(st->atup_a);
-	if(st->rootserver>1 && m)
-		fsprintf_or_return(f,"\tThe following name servers will be used for discovery of rootservers only:\n");
-	for(j=0;j<m;j++) {
-		atup_t *at=&DA_INDEX(st->atup_a,j);
-		{char buf[ADDRSTR_MAXLEN];
-		 fsprintf_or_return(f,"\tip: %s\n",pdnsd_a2str(PDNSD_A2_TO_A(&at->a),buf,ADDRSTR_MAXLEN));}
-		fsprintf_or_return(f,"\tserver assumed available: %s\n",at->is_up?"yes":"no");
-	}
-	fsprintf_or_return(f,"\tport: %hu\n",st->port);
-	fsprintf_or_return(f,"\tuptest: %s\n",const_name(st->uptest));
-	fsprintf_or_return(f,"\ttimeout: %li\n",(long)st->timeout);
-	if(st->interval>0) {
-		fsprintf_or_return(f,"\tuptest interval: %li\n",(long)st->interval);
-	} else {
-		fsprintf_or_return(f,"\tuptest interval: %s\n",
-				   st->interval==-1?"onquery":
-				   st->interval==-2?"ontimeout":
-				                    "(never retest)");
-	}
-	fsprintf_or_return(f,"\tping timeout: %li\n",(long)st->ping_timeout);
-	{char buf[ADDRSTR_MAXLEN];
-	 fsprintf_or_return(f,"\tping ip: %s\n",is_inaddr_any(&st->ping_a)?"(using server ip)":pdnsd_a2str(&st->ping_a,buf,ADDRSTR_MAXLEN));}
-	if(st->interface[0]) {
-		fsprintf_or_return(f,"\tinterface: %s\n",st->interface);
-	}
-	if(st->device[0]) {
-		fsprintf_or_return(f,"\tdevice (for special Linux ppp device support): %s\n",st->device);
-	}
-	if(st->uptest_cmd) {
-		fsprintf_or_return(f,"\tuptest command: %s\n",st->uptest_cmd);
-		fsprintf_or_return(f,"\tuptest user: %s\n",st->uptest_usr[0]?st->uptest_usr:"(process owner)");
-	}
-	if(st->query_test_name) {
-		unsigned char nmbuf[DNSNAMEBUFSIZE];
-		fsprintf_or_return(f,"\tname used in query uptest: %s\n",
-				   rhn2str(st->query_test_name,nmbuf,sizeof(nmbuf)));
-	}
-	if (st->scheme[0]) {
-		fsprintf_or_return(f,"\tscheme: %s\n", st->scheme);
-	}
-	fsprintf_or_return(f,"\tforce cache purging: %s\n",st->purge_cache?"on":"off");
-	fsprintf_or_return(f,"\tserver is cached: %s\n",st->nocache?"off":"on");
-	fsprintf_or_return(f,"\tlean query: %s\n",st->lean_query?"on":"off");
-	fsprintf_or_return(f,"\tUse EDNS in outgoing queries: %s\n",st->edns_query?"on":"off");
-	fsprintf_or_return(f,"\tUse only proxy?: %s\n",st->is_proxy?"on":"off");
-	fsprintf_or_return(f,"\tAssumed root server: %s\n",st->rootserver?(st->rootserver==1?"yes":"discover"):"no");
-	fsprintf_or_return(f,"\tRandomize server query order: %s\n",st->rand_servers?"yes":"no");
-	fsprintf_or_return(f,"\tDefault policy: %s\n",const_name(st->policy));
-	fsprintf_or_return(f,"\tPolicies:%s\n", st->alist?"":" (none)");
-	for (j=0;j<DA_NEL(st->alist);++j) {
-		slist_t *sl=&DA_INDEX(st->alist,j);
-		unsigned char buf[DNSNAMEBUFSIZE];
-		fsprintf_or_return(f,"\t\t%s: %s%s\n",
-				   sl->rule==C_INCLUDED?"include":"exclude",
-				   sl->exact?"":".",
-				   rhn2str(sl->domain,buf,sizeof(buf)));
-	}
-	if(serv_has_rejectlist(st)) {
-		fsprintf_or_return(f,"\tAddresses which should be rejected in replies:\n");
-		m=DA_NEL(st->reject_a4);
-		for (j=0;j<m;++j) {
-			addr4maskpair_t *am=&DA_INDEX(st->reject_a4,j);
-			char abuf[ADDRSTR_MAXLEN],mbuf[ADDRSTR_MAXLEN];
-			fsprintf_or_return(f,"\t\t%s/%s\n",inet_ntop(AF_INET,&am->a,abuf,sizeof(abuf)),
-					   inet_ntop(AF_INET,&am->mask,mbuf,sizeof(mbuf)));
-		}
-#if ALLOW_LOCAL_AAAA
-		m=DA_NEL(st->reject_a6);
-		for (j=0;j<m;++j) {
-			addr6maskpair_t *am=&DA_INDEX(st->reject_a6,j);
-			char abuf[INET6_ADDRSTRLEN],mbuf[INET6_ADDRSTRLEN];
-			fsprintf_or_return(f,"\t\t%s/%s\n",inet_ntop(AF_INET6,&am->a,abuf,sizeof(abuf)),
-					   inet_ntop(AF_INET6,&am->mask,mbuf,sizeof(mbuf)));
-		}
-#endif
-		fsprintf_or_return(f,"\tReject policy: %s\n",const_name(st->rejectpolicy));
-		fsprintf_or_return(f,"\tReject recursively: %s\n",st->rejectrecursively?"yes":"no");
-	}
-	return 0;
-}
diff --git a/jni/pdnsd/src/conff.h b/jni/pdnsd/src/conff.h
deleted file mode 100644
index a07b156..0000000
--- a/jni/pdnsd/src/conff.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/* conff.h - Definitions for configuration management.
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef CONFF_H
-#define CONFF_H
-
-/* XXX should use the system defined ones. */
-/* #define MAXPATH 1024 */
-/* #define MAXIFNAME 31 */
-
-#include <config.h>
-#include <stdio.h>
-#include <pthread.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include "ipvers.h"
-#include "list.h"
-
-/* From main.c */
-#if DEBUG>0
-extern short int debug_p;
-#else
-#define debug_p 0
-#endif
-extern short int stat_pipe;
-extern pthread_t main_thrid;
-extern uid_t init_uid;
-extern char *conf_file;
-
-/* ----------- */
-
-typedef DYNAMIC_ARRAY(pdnsd_a) *addr_array;
-typedef DYNAMIC_ARRAY(pdnsd_a2) *addr2_array;
-
-typedef struct {
-  time_t     i_ts;
-  char       is_up;
-  pdnsd_a2   a;
-} atup_t;
-typedef DYNAMIC_ARRAY(atup_t) *atup_array;
-
-typedef struct {
-	unsigned char   *domain;
-	short            exact;
-	short            rule;
-} slist_t;
-typedef DYNAMIC_ARRAY(slist_t) *slist_array;
-
-typedef struct {
-	struct in_addr   a,mask;
-} addr4maskpair_t;
-
-typedef DYNAMIC_ARRAY(addr4maskpair_t) *a4_array;
-
-#if ALLOW_LOCAL_AAAA
-typedef struct {
-	struct in6_addr  a,mask;
-} addr6maskpair_t;
-
-typedef DYNAMIC_ARRAY(addr6maskpair_t) *a6_array;
-#endif
-
-typedef struct {
-	unsigned short   port;
-	short            uptest;
-	time_t           timeout;
-	time_t           interval;
-	time_t           ping_timeout;
-        char             scheme[32];
-	char            *uptest_cmd;
-	char             uptest_usr[21];
-	char             interface[IFNAMSIZ];
- 	char             device[IFNAMSIZ];
-	unsigned char   *query_test_name;
-	char            *label;
-	char             purge_cache;
-	char             nocache;
-	char             lean_query;
-	char             edns_query;
-	char             is_proxy;
-	char             rootserver;
-	char             rand_servers;
-	char             preset;
-	char             rejectrecursively;
-	short            rejectpolicy;
-	short            policy;
-	slist_array      alist;
-	atup_array       atup_a;
-	a4_array         reject_a4;
-#if ALLOW_LOCAL_AAAA
-	a6_array         reject_a6;
-#endif
-	pdnsd_a          ping_a;
-} servparm_t;
-typedef DYNAMIC_ARRAY(servparm_t) *servparm_array;
-
-typedef unsigned char *zone_t;
-typedef DYNAMIC_ARRAY(zone_t) *zone_array;
-
-typedef struct {
-	long          perm_cache;
-	char         *cache_dir;
-	char         *pidfile;
-	int           port;
-	pdnsd_a       a;
-	pdnsd_a       out_a;
-#ifdef ENABLE_IPV6
-	struct in6_addr ipv4_6_prefix;
-#endif
-	time_t        max_ttl;
-	time_t        min_ttl;
-	time_t        neg_ttl;
-	short         neg_rrs_pol;
-	short         neg_domain_pol;
-	short         verbosity;
-	char          run_as[21];
-	char          daemon;
-	char          debug;
-	char          stat_pipe;
-	char          notcp;
-	char          strict_suid;
-	char          use_nss;
-	char          paranoid;
-	char          lndown_kluge;
-	char	      onquery;
-	char          rnd_recs;
-	int           ctl_perms;
-        char         *scheme_file;
-	int           proc_limit;
-	int           procq_limit;
-	time_t        tcp_qtimeout;
-	time_t        timeout;
-	int           par_queries;
-	int           query_method;
-	int           query_port_start;
-	int           query_port_end;
-	int           udpbufsize;
-	zone_array    deleg_only_zones;
-} globparm_t;
-
-typedef struct {
-	char
-#ifdef ENABLE_IPV6
-		prefix,
-#endif
-		pidfile,
-		verbosity,
-		pdnsduser,
-		daemon,
-		debug,
-		stat_pipe,
-		notcp,
-		query_method;
-} cmdlineflags_t;
-
-extern globparm_t global;
-extern cmdlineflags_t cmdline;
-extern servparm_t serv_presets;
-
-extern servparm_array servers;
-
-int read_config_file(const char *nm, globparm_t *global, servparm_array *servers, int includedepth, char **errstr);
-int reload_config_file(const char *nm, char **errstr);
-void free_zone(void *ptr);
-void free_slist_domain(void *ptr);
-void free_slist_array(slist_array sla);
-void free_servparm(servparm_t *serv);
-
-int report_conf_stat(int f);
-#endif
diff --git a/jni/pdnsd/src/consts.c b/jni/pdnsd/src/consts.c
deleted file mode 100644
index c875a09..0000000
--- a/jni/pdnsd/src/consts.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* consts.c - Common config constants & handling
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2005, 2006, 2007, 2009 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include "consts.h"
-#include "rr_types.h"
-
-
-/* Order alphabetically!! */
-static const namevalue_t const_dic[]={
-	{"auth",        C_AUTH},
-	{"default",     C_DEFAULT},
-	{"dev",         C_DEV},
-	{"diald",       C_DIALD},
-	{"discover",    C_DISCOVER},
-	{"domain",      C_DOMAIN},
-	{"excluded",    C_EXCLUDED},
-	{"exec",        C_EXEC},
-	{"fail",        C_FAIL},
-	{"false",       C_OFF},
-	{"fqdn_only",   C_FQDN_ONLY},
-	{"if",          C_IF},
-	{"included",    C_INCLUDED},
-	{"negate",      C_NEGATE},
-	{"no",          C_OFF},
-	{"none",        C_NONE},
-	{"off",         C_OFF},
-	{"on",          C_ON},
-	{"onquery",     C_ONQUERY},
-	{"ontimeout",   C_ONTIMEOUT},
-	{"ping",        C_PING},
-	{"query",       C_QUERY},
-	{"simple_only", C_SIMPLE_ONLY},
-	{"tcp_only",    TCP_ONLY},
-	{"tcp_udp",     TCP_UDP},
-	{"true",        C_ON},
-	{"udp_only",    UDP_ONLY},
-	{"udp_tcp",     UDP_TCP},
-	{"yes",         C_ON}
-};
-
-/* Added by Paul Rombouts */
-static const char *const const_names[]={
-	"error",
-	"on",
-	"off",
-	"default",
-	"discover",
-	"none",
-	"if",
-	"exec",
-	"ping",
-	"query",
-	"onquery",
-	"ontimeout",
-	"udp_only",
-	"tcp_only",
-	"tcp_udp",
-	"udp_tcp",
-	"dev",
-	"diald",
-	"included",
-	"excluded",
-	"simple_only",
-	"fqdn_only",
-	"auth",
-	"domain",
-	"fail",
-	"negate"
-};
-
-/* compare two strings.
-   The first one is given as pointer to a char array of length len (which
-   should not contain any null chars),
-   the second one as a pointer to a null terminated char array.
-*/
-inline static int keyncmp(const char *key1, int len, const char *key2)
-{
-	int cmp=strncmp(key1,key2,len);
-	if(cmp) return cmp;
-	return -(int)((unsigned char)(key2[len]));
-}
-
-int binsearch_keyword(const char *name, int len, const namevalue_t dic[], int range)
-{
-	int i=0,j=range;
-
-	while(i<j) {
-		int k=(i+j)/2;
-		int cmp=keyncmp(name,len,dic[k].name);
-		if(cmp<0)
-			j=k;
-		else if(cmp>0)
-			i=k+1;
-		else
-			return dic[k].val;
-	}
-
-	return 0;
-}
-
-
-int lookup_const(const char *name, int len)
-{
-	return binsearch_keyword(name,len,const_dic,sizeof(const_dic)/sizeof(namevalue_t));
-}
-
-/* Added by Paul Rombouts */
-const char *const_name(int c)
-{
-  return (c>=0 && c<sizeof(const_names)/sizeof(char *))? const_names[c] : "ILLEGAL!";
-}
diff --git a/jni/pdnsd/src/consts.h b/jni/pdnsd/src/consts.h
deleted file mode 100644
index c812b15..0000000
--- a/jni/pdnsd/src/consts.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* consts.h - Common config constants & handling
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2005, 2006, 2007, 2009 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef CONSTS_H
-#define CONSTS_H
-
-#include <config.h>
-
-#define C_RRTOFFS  64
-
-enum {
-	C_ERR,
-	C_ON,
-	C_OFF,
-	C_DEFAULT,
-	C_DISCOVER,
-	C_NONE,
-	C_IF,
-	C_EXEC,
-	C_PING,
-	C_QUERY,
-	C_ONQUERY,
-	C_ONTIMEOUT,
-	UDP_ONLY,
-	TCP_ONLY,
-	TCP_UDP,
-	UDP_TCP,
-	C_DEV,
-	C_DIALD,
-	C_INCLUDED,
-	C_EXCLUDED,
-	C_SIMPLE_ONLY,
-	C_FQDN_ONLY,
-	C_AUTH,
-	C_DOMAIN,
-	C_FAIL,
-	C_NEGATE
-};
-
-typedef struct {
-	const char *name;
-	int         val;
-} namevalue_t;
-
-int binsearch_keyword(const char *name, int len, const namevalue_t dic[], int range);
-int lookup_const(const char *name, int len);
-const char *const_name(int c);  /* Added by Paul Rombouts */
-
-#endif
diff --git a/jni/pdnsd/src/debug.c b/jni/pdnsd/src/debug.c
deleted file mode 100644
index dd7f244..0000000
--- a/jni/pdnsd/src/debug.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* debug.c -  Various debugging facilities
- * Copyright (C) 2001 Thomas Moestl
- *
- * This file is part of the pdnsd package.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include "helpers.h"
-#include "error.h"
-
-
-/*
- * This is indeed very primitive (it does not track allocation failures
- * and so on). It should be expanded some time.
- */
-#ifdef ALLOC_DEBUG
-void *DBGcalloc(size_t n, size_t sz, char *file, int line)
-{
-	DEBUG_MSG("+ calloc, %s:%d\n", file, line);
-	return calloc(n, sz);
-}
-
-void *DBGmalloc(size_t sz, char *file, int line)
-{
-	DEBUG_MSG("+ malloc, %s:%d\n", file, line);
-	return malloc(sz);
-}
-
-void *DBGrealloc(void *ptr, size_t sz, char *file, int line)
-{
-	if (ptr == NULL && sz != 0)
-		DEBUG_MSG("+ realloc, %s:%d\n", file, line);
-	if (ptr != NULL && sz == 0)
-		DEBUG_MSG("- realloc(0), %s:%d\n", file, line);
-	return realloc(ptr, sz);
-}
-void DBGfree(void *ptr, char *file, int line)
-{
-	DEBUG_MSG("- free, %s:%d\n", file, line);
-	free(ptr);
-}
-#endif
diff --git a/jni/pdnsd/src/debug.h b/jni/pdnsd/src/debug.h
deleted file mode 100644
index 02f0e5d..0000000
--- a/jni/pdnsd/src/debug.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* debug.h - Various debugging facilities
- * Copyright (C) 2001 Thomas Moestl
- *
- * This file is part of the pdnsd package.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#ifndef DEBUG_H
-#define DEBUG_H
-
-/*
- * A hand-rolled alloc debug factility, because most available libraries have
- * problems with at least one thread implementation.
- */
-#ifdef ALLOC_DEBUG
-void *DBGcalloc(size_t n, size_t sz, char *file, int line);
-void *DBGmalloc(size_t sz, char *file, int line);
-void *DBGrealloc(void *ptr, size_t sz, char *file, int line);
-void DBGfree(void *ptr, char *file, int line);
-
-#define pdnsd_calloc(n,sz)	DBGcalloc(n,sz,__FILE__,__LINE__)
-#define pdnsd_malloc(sz)	DBGmalloc(sz,__FILE__,__LINE__)
-#define pdnsd_realloc(ptr,sz)	DBGrealloc(ptr,sz,__FILE__,__LINE__)
-#define pdnsd_free(ptr)		DBGfree(ptr,__FILE__,__LINE__)
-#else
-#define pdnsd_calloc	calloc
-#define pdnsd_malloc	malloc
-#define pdnsd_realloc	realloc
-#define pdnsd_free	free
-#endif
-
-#endif /* def DEBUG_H */
diff --git a/jni/pdnsd/src/dns.c b/jni/pdnsd/src/dns.c
deleted file mode 100644
index a02d7fd..0000000
--- a/jni/pdnsd/src/dns.c
+++ /dev/null
@@ -1,617 +0,0 @@
-/* dns.c - Declarations for dns handling and generic dns functions
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include "error.h"
-#include "helpers.h"
-#include "dns.h"
-
-
-/* Decompress a name record, taking the whole message as msg, returning its results in tgt
- * (which should be able hold at least DNSNAMEBUFSIZE chars),
- * taking sz as the remaining msg size (it is returned decremented by the name length, ready for further use) and
- * a source pointer (it is returned pointing to the location after the name). msgsize is the size of the whole message,
- * len is the total name length.
- * msg and msgsz are needed for decompression (see rfc1035). The returned data is decompressed, but still in the
- * rr name form (length byte - string of that length, terminated by a 0 length byte).
- *
- * Returned is a dns return code, with one exception: RC_TRUNC, as defined in dns.h, indicates that the message is
- * truncated at the name (which needs a special return code, as it might or might not be fatal).
- */
-int decompress_name(unsigned char *msg, size_t msgsz, unsigned char **src, size_t *sz, unsigned char *tgt, unsigned int *len)
-{
-	unsigned int lb,offs;
-	unsigned int hops=0,tpos=0;
-	unsigned char *lptr=*src;
-	size_t oldsz=*sz;
-	size_t newsz=oldsz;
-
-	if (newsz==0)
-		goto name_outside_data;
-	if (lptr-msg>=msgsz)
-		goto name_outside_msg;
-
-	for(;;) {
-		newsz--;
-		lb=*lptr++;
-
-		if(lb>0x3f) {
- 			if (lb<0xc0)     /* The two highest bits must be either 00 or 11 */
-				goto unsupported_lbl_bits;
-			if (newsz==0)
-				goto name_outside_data;
-			if (lptr-msg>=msgsz)
-				goto name_outside_msg;
-			newsz--;
-			offs=((lb&0x3f)<<8)|(*lptr);
-			if (offs>=msgsz)
-				goto offset_outside_msg;
-			lptr=msg+offs;
-			goto jumped;
-		}
- 		tgt[tpos++]=lb;
-		if (lb==0)
-			break;
-
-		if (newsz<=lb)
-			goto name_outside_data;
-		if (lptr+lb-msg>=msgsz)
-			goto name_outside_msg;
-		if (tpos+lb>DNSNAMEBUFSIZE-1) /* terminating null byte has to follow */
-			goto name_buf_full;
-		newsz -= lb;
-		do {
-			/* if (!*lptr || *lptr=='.')
-				return RC_FORMAT; */
-			tgt[tpos++]=*lptr++;
-		} while(--lb);
-	}
-	goto return_OK;
-
- jumped:
-	++hops;
-	for(;;) {
-		lb=*lptr++;
-
-		while(lb>0x3f) {
- 			if (lb<0xc0)     /* The two highest bits must be either 00 or 11 */
-				goto unsupported_lbl_bits;
-			if (lptr-msg>=msgsz)
-				goto name_outside_msg;
-			if (++hops>255)
-				goto too_many_hops;
-			offs=((lb&0x3f)<<8)|(*lptr);
-			if (offs>=msgsz)
-				goto offset_outside_msg;
-			lptr=msg+offs;
-			lb=*lptr++;
-		}
- 		tgt[tpos++]=lb;
-		if (lb==0)
-			break;
-
-		if (lptr+lb-msg>=msgsz)
-			goto name_outside_msg;
-		if(tpos+lb>DNSNAMEBUFSIZE-1) /* terminating null byte has to follow */
-			goto name_buf_full;
-		do {
-			/* if (!*lptr || *lptr=='.')
-				return RC_FORMAT; */
-			tgt[tpos++]=*lptr++;
-		} while(--lb);
-	}
- return_OK:
-	*src += oldsz-newsz;
-	*sz = newsz;
-	if(len) *len=tpos;
-	return RC_OK;
-
- name_outside_data:
-	DEBUG_MSG("decompress_name: compressed name extends outside data field.\n");
-	return RC_TRUNC;
-
- name_outside_msg:
-	DEBUG_MSG("decompress_name: compressed name extends outside message.\n");
-	return RC_FORMAT;
-
- unsupported_lbl_bits:
-	DEBUG_MSG(lb==0x41?"decompress_name: Bit-string labels not supported.\n":
-		  "decompress_name: unsupported label type.\n");
-	return RC_FORMAT;
-
- offset_outside_msg:
-	DEBUG_MSG("decompress_name: offset points outside message.\n");
-	return RC_FORMAT;
-
- name_buf_full:
-	DEBUG_MSG("decompress_name: decompressed name larger than %u bytes.\n", DNSNAMEBUFSIZE);
-	return RC_FORMAT;
-
- too_many_hops:
-	DEBUG_MSG("decompress_name: too many offsets in compressed name.\n");
-	return RC_FORMAT;
-}
-
-#if 0
-/* Compare two names (ordinary C-strings) back-to-forth and return the longest match.
-   The comparison is done at name granularity.
-   The return value is the length of the match in name elements.
-   *os (*od) is set to the offset in the domain name ms (md) of the match.
- */
-int domain_name_match(const unsigned char *ms, const unsigned char *md, int *os, int *od)
-{
-	int i,j,k=0,offs,offd;
-
-	offs=i=strlen(ms); offd=j=strlen(md);
-	if(i && ms[i-1]=='.') --offs;
-	if(j && md[j-1]=='.') --offd;
-
-	if(i==0 || (i==1 && *ms=='.') || j==0 || (j==1 && *md=='.'))
-		/* Special case: root domain */
-		;
-	else {
-		--i; if(ms[i]=='.') --i;
-		--j; if(md[j]=='.') --j;
-		while(tolower(ms[i]) == tolower(md[j])) {
-			if(ms[i]=='.') {
-				++k;
-				offs=i+1; offd=j+1;
-			}
-			if(i==0 || j==0) {
-				if((i==0 || ms[i-1]=='.') && (j==0 || md[j-1]=='.')) {
-					++k;
-					offs=i; offd=j;
-				}
-				break;
-			}
-			--i; --j;
-		}
-	}
-	if(os) *os=offs;
-	if(od) *od=offd;
-	return k;
-}
-#endif
-
-/* Compare the names (in length byte-string notation) back-to-forth and return the longest match.
-   The comparison is done at name granularity.
-   The return value is the length of the match in name elements.
-   *os (*od) is set to the offset in the domain name ms (md) of the match.
- */
-unsigned int domain_match(const unsigned char *ms, const unsigned char *md, unsigned int *os, unsigned int *od)
-{
-	unsigned int i,j,k,n,ns=0,nd=0,offs,offd;
-	unsigned char lb,ls[128],ld[128];
-
-	/* first collect all length bytes */
-	i=0;
-	while((lb=ms[i])) {
-		PDNSD_ASSERT(ns<128, "domain_match: too many name segments");
-		ls[ns++]=lb;
-		i += ((unsigned)lb)+1;
-	}
-
-	j=0;
-	while((lb=md[j])) {
-		PDNSD_ASSERT(nd<128, "domain_match: too many name segments");
-		ld[nd++]=lb;
-		j += ((unsigned)lb)+1;
-	}
-
-	n=ns;  if(n>nd) n=nd;
-
-	for(k=1; offs=i,offd=j,k<=n; ++k) {
-		lb=ls[ns-k];
-		if(lb!=ld[nd-k]) goto mismatch;
-		for(;lb;--lb)
-			if(tolower(ms[--i]) != tolower(md[--j])) goto mismatch;
-		--i; --j;
-	}
- mismatch:
-
-	if(os) *os=offs;
-	if(od) *od=offd;
-	return k-1;
-}
-
-/* compress the domain name in in and put the result (of maximum length of rhnlen(in)) and
- * fill cb with compression information for further strings.*cb may be NULL initially.
- * offs is the offset the generated string will be placed in the packet.
- * retval: 0 - error, otherwise length
- * When done, just free() cb (if it is NULL, free will behave correctly).
- * It is guaranteed (and insured by assertions) that the output is smaller or equal in
- * size to the input.
- */
-unsigned int compress_name(unsigned char *in, unsigned char *out, unsigned int offs, dlist *cb)
-{
-	compel_t *ci;
-	unsigned int longest=0,lrem=0,coffs=0;
-	unsigned int rl=0;
-	unsigned ilen = rhnlen(in);
-	unsigned short add=1;
-
-	PDNSD_ASSERT(ilen<=DNSNAMEBUFSIZE, "compress_name: name too long");
-
-	/* part 1: compression */
-	for (ci=dlist_first(*cb); ci; ci=dlist_next(ci)) {
-		unsigned int rv,rem,to;
-		if ((rv=domain_match(in, ci->s, &rem,&to))>longest) {
-			/*
-			 * This has some not obvious implications that should be noted: If a
-			 * domain name as saved in the list has been compressed, we only can
-			 * index the non-compressed part. We rely here that the first occurence
-			 * can't be compressed. So we take the first occurence of a given length.
-			 * This works perfectly, but watch it if you change something.
-			 */
-			unsigned int newoffs= ci->index + to;
-			 /* Only use if the offset is not too large. */
-			if(newoffs<=0x3fff) {
-				longest=rv;
-				lrem=rem;
-				coffs= newoffs;
-			}
-		}
-	}
-	if (longest>0) {
-		PDNSD_ASSERT(lrem+2 <= ilen, "compress_name: length increased");
-		memcpy(out, in,lrem);
-		out[lrem]=0xc0|((coffs&0x3f00)>>8);
-		out[lrem+1]=coffs&0xff;
-		rl=lrem+2;
-		add= lrem!=0;
-	}
-	else {
-		memcpy(out,in,ilen);
-		rl=ilen;
-	}
-
-	/* part 2: addition to the cache structure */
-	if (add) {
-		if (!(*cb=dlist_grow(*cb,sizeof(compel_t)+ilen)))
-			return 0;
-		ci=dlist_last(*cb);
-		ci->index=offs;
-		memcpy(ci->s,in,ilen);
-	}
-	return rl;
-}
-
-/* Convert a numeric IP address into a domain name representation
-   (C string) suitable for PTR records.
-   buf is assumed to be at least DNSNAMEBUFSIZE bytes in size.
-*/
-int a2ptrstr(pdnsd_ca *a, int tp, unsigned char *buf)
-{
-	if(tp==T_A) {
-		unsigned char *p=(unsigned char *)&a->ipv4.s_addr;
-		int n=snprintf(charp buf,DNSNAMEBUFSIZE,"%u.%u.%u.%u.in-addr.arpa.",p[3],p[2],p[1],p[0]);
-		if(n<0 || n>=DNSNAMEBUFSIZE)
-			return 0;
-	}
-	else
-#if ALLOW_LOCAL_AAAA
-	if(tp==T_AAAA) {
-		unsigned char *p=(unsigned char *)&a->ipv6;
-		int i,offs=0;
-		for (i=15;i>=0;--i) {
-			unsigned char bt=p[i];
-			int n=snprintf(charp(buf+offs), DNSNAMEBUFSIZE-offs,"%x.%x.",bt&0xf,(bt>>4)&0xf);
-			if(n<0) return 0;
-			offs+=n;
-			if(offs>=DNSNAMEBUFSIZE) return 0;
-		}
-		if(!strncp(charp(buf+offs),"ip6.arpa.",DNSNAMEBUFSIZE-offs))
-			return 0;
-	}
-	else
-#endif
-		return 0;
-	return 1;
-}
-
-/*
- * Add records for a host as read from a hosts-style file.
- * Returns 1 on success, 0 in an out of memory condition, and -1 when there was a problem with
- * the record data.
- */
-static int add_host(unsigned char *pn, unsigned char *rns, pdnsd_ca *a, int tp, int a_sz, time_t ttl, unsigned flags, int reverse)
-{
-	dns_cent_t ce;
-
-	if (!init_cent(&ce, pn, 0, 0, flags  DBG0))
-		return 0;
-	if (!add_cent_rr(&ce,tp,ttl,0,CF_LOCAL,a_sz,a  DBG0))
-		goto free_cent_return0;
-	if (!add_cent_rr(&ce,T_NS,ttl,0,CF_LOCAL,rhnlen(rns),rns  DBG0))
-		goto free_cent_return0;
-	add_cache(&ce);
-	free_cent(&ce  DBG0);
-	if (reverse) {
-		unsigned char b2[DNSNAMEBUFSIZE],rhn[DNSNAMEBUFSIZE];
-		if(!a2ptrstr(a,tp,b2))
-			return -1;
-		if (!str2rhn(b2,rhn))
-			return -1;
-		if (!init_cent(&ce, rhn, 0, 0, flags  DBG0))
-			return 0;
-		if (!add_cent_rr(&ce,T_PTR,ttl,0,CF_LOCAL,rhnlen(pn),pn  DBG0))
-			goto free_cent_return0;
-		if (!add_cent_rr(&ce,T_NS,ttl,0,CF_LOCAL,rhnlen(rns),rns  DBG0))
-			goto free_cent_return0;
-		add_cache(&ce);
-		free_cent(&ce  DBG0);
-	}
-	return 1;
-
- free_cent_return0:
-	free_cent(&ce  DBG0);
-	return 0;
-}
-
-/*
- * Read a file in /etc/hosts-format and add generate rrs for it.
- * Errors are largely ignored so that we can skip entries we do not understand
- * (but others possibly do).
- */
-int read_hosts(const char *fn, unsigned char *rns, time_t ttl, unsigned flags, int aliases, char **errstr)
-{
-	int rv=0;
-	FILE *f;
-	char *buf;
-	size_t buflen=256;
-
-	if (!(f=fopen(fn,"r"))) {
-		if(asprintf(errstr, "Failed to source %s: %s", fn, strerror(errno))<0) *errstr=NULL;
-		return 0;
-	}
-	buf=malloc(buflen);
-	if(!buf) {
-		*errstr=NULL;
-		goto fclose_return;
-	}
-	while(getline(&buf,&buflen,f)>=0) {
-		unsigned int len;
-		unsigned char *p,*pn,*pi;
-		unsigned char rhn[DNSNAMEBUFSIZE];
-		int tp,sz;
-		pdnsd_ca a;
-
-		p= ucharp strchr(buf,'#');
-		if(p) *p=0;
-		p= ucharp buf;
-		for(;;) {
-			if(!*p) goto nextline;
-			if(!isspace(*p)) break;
-			++p;
-		}
-		pi=p;
-		do {
-			if(!*++p) goto nextline;
-		} while(!isspace(*p));
-		*p=0;
-		do {
-			if(!*++p) goto nextline;
-		} while (isspace(*p));
-		pn=p;
-		do {
-			++p;
-		} while(*p && !isspace(*p));
-		len=p-pn;
-		if (parsestr2rhn(pn,len,rhn)!=NULL)
-			continue;
-		if (inet_aton(charp pi,&a.ipv4)) {
-			tp=T_A;
-			sz=sizeof(struct in_addr);
-		} else {
-#if ALLOW_LOCAL_AAAA    /* We don't read them otherwise, as the C library may not be able to to that.*/
-			if (inet_pton(AF_INET6,charp pi,&a.ipv6)>0) {
-				tp=T_AAAA;
-				sz=sizeof(struct in6_addr);
-			} else
-#endif
-			continue;
-		}
-		{
-			int res=add_host(rhn, rns, &a, tp,sz, ttl, flags, 1);
-			if(res==0) {
-				*errstr= NULL;
-				goto cleanup_return;
-			}
-			else if(res<0)
-				continue;
-		}
-		if(aliases) {
-			for(;;) {
-				for(;;) {
-					if(!*p) goto nextline;
-					if(!isspace(*p)) break;
-					++p;
-				}
-				pn=p;
-				do {
-					++p;
-				} while(*p && !isspace(*p));
-				len=p-pn;
-				if (parsestr2rhn(pn,len,rhn)!=NULL)
-					break;
-				if (add_host(rhn, rns, &a, tp,sz, ttl, flags, 0) == 0) {
-					*errstr= NULL;
-					goto cleanup_return;
-				}
-			}
-		}
-	nextline:;
-	}
-	if (feof(f))
-		rv=1;
-	else if(asprintf(errstr, "Failed to source %s: %s", fn, strerror(errno))<0) *errstr=NULL;
- cleanup_return:
-	free(buf);
- fclose_return:
-	fclose(f);
-	return rv;
-}
-
-
-/* Get the name of an RR type given its value. */
-const char *getrrtpname(int tp)
-{
-	return tp>=T_MIN && tp<=T_MAX? rrnames[tp-T_MIN]: "[unknown]";
-}
-
-#if DEBUG>0
-/*
- * Const decoders for debugging display
- */
-static const char *const c_names[C_NUM] = {"IN","CS","CH","HS"};
-static const char *const qt_names[QT_NUM]={"IXFR","AXFR","MAILB","MAILA","*"};
-
-const char *get_cname(int id)
-{
-	if (id>=C_MIN && id<=C_MAX)
-		return c_names[id-C_MIN];
-	if (id==QC_ALL)
-		return "*";
-	return "[unknown]";
-}
-
-const char *get_tname(int id)
-{
-	if (id>=T_MIN && id<=T_MAX)
-		return rrnames[id-T_MIN];
-        else if (id>=QT_MIN && id<=QT_MAX)
-		return qt_names[id-QT_MIN];
-	return "[unknown]";
-}
-
-
-#define NRC 17
-static const char *const e_names[NRC]={
-	"no error",
-	"query format error",
-	"server failed",
-	"non-existent domain",
-	"not supported",
-	"query refused",
-	"name exists when it should not",
-	"RR set exists when it should not",
-	"RR set that should exist does not",
-	"server not authoritative for zone",
-	"name not contained in zone",
-	"11",
-	"12",
-	"13",
-	"14",
-	"15",
-	"bad OPT version"
-};
-
-const char *get_ename(int id)
-{
-	if (id>=0 && id<NRC)
-		return e_names[id];
-	return "[unknown]";
-}
-
-
-/* Construct a human-readable string listing the flags that are set
-   in a dns header. buf must have a size of at least DNSFLAGSMAXSTRSIZE.
-   Used for debugging purposes only.
-*/
-char *dnsflags2str(dns_hdr_t *hdr, char *buf)
-{
-	char *p= buf;
-
-	if (hdr->aa)
-		p=mempcpy(p, " AA", 3);
-	if (hdr->tc)
-		p=mempcpy(p, " TC", 3);
-	if (hdr->rd)
-		p=mempcpy(p, " RD", 3);
-	if (hdr->ra)
-		p=mempcpy(p, " RA", 3);
-	if (hdr->z)
-		p=mempcpy(p, " Z", 2);
-	if (hdr->ad)
-		p=mempcpy(p, " AD", 3);
-	if (hdr->cd)
-		p=mempcpy(p, " CD", 3);
-	*p=0;
-
-	return buf;
-}
-
-#endif
-
-
-#if DEBUG>=9
-/* Based on debug code contributed by Kiyo Kelvin Lee. */
-
-void debug_dump_dns_msg(void *data, size_t len)
-{
-	unsigned char *udata = (unsigned char *)data;
-#       define dmpchksz 16
-	char buf[dmpchksz*4+2];
-	size_t i, j, k, l;
-
-	DEBUG_MSG("pointer=%p len=%lu\n", udata, (unsigned long)len);
-
-	for (i = 0; i < len; i += dmpchksz) {
-		char *cp = buf;
-		k = l = i + dmpchksz;
-		if(k > len) k = len;
-		for (j = i; j < k; ++j) {
-			int n = sprintf(cp, "%02x ", udata[j]);
-			cp += n;
-		}
-		for (; j < l; ++j) {
-			*cp++ = ' ';
-			*cp++ = ' ';
-			*cp++ = ' ';
-		}
-		*cp++ = ' ';
-		for (j = i; j < k; ++j) {
-			*cp++ = isprint(udata[j]) ? udata[j] : '.';
-		}
-		PDNSD_ASSERT(cp < buf + sizeof(buf), "debug_dump_dns_msg: line buffer overflowed");
-		*cp = '\0';
-		DEBUG_MSG("%s\n", buf);
-	}
-
-	if(len >= sizeof(dns_hdr_t)) {
-		dns_hdr_t *hdr = (dns_hdr_t *)data;
-
-		DEBUG_MSG(
-			"id=%04x qr=%x opcode=%x aa=%x tc=%x rd=%x "
-			"ra=%x z=%x ad=%x cd=%x rcode=%x\n",
-			ntohs(hdr->id), hdr->qr, hdr->opcode, hdr->aa, hdr->tc, hdr->rd,
-			hdr->ra, hdr->z, hdr->ad, hdr->cd, hdr->rcode);
-		DEBUG_MSG(
-			"qdcount=%04x ancount=%04x nscount=%04x arcount=%04x\n",
-			ntohs(hdr->qdcount), ntohs(hdr->ancount), ntohs(hdr->nscount), ntohs(hdr->arcount));
-	}
-}
-#endif
diff --git a/jni/pdnsd/src/dns.h b/jni/pdnsd/src/dns.h
deleted file mode 100644
index 0f6a4ac..0000000
--- a/jni/pdnsd/src/dns.h
+++ /dev/null
@@ -1,309 +0,0 @@
-/* dns.h - Declarations for dns handling and generic dns functions
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2004, 2005, 2009, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef DNS_H
-#define DNS_H
-
-#include <config.h>
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <sys/types.h>
-#include <inttypes.h>
-#include "rr_types.h"
-#include "list.h"
-#include "ipvers.h"
-
-#if (TARGET==TARGET_BSD)
-# if !defined(__BIG_ENDIAN)
-#  if defined(BIG_ENDIAN)
-#   define __BIG_ENDIAN BIG_ENDIAN
-#  elif defined(_BIG_ENDIAN)
-#   define __BIG_ENDIAN _BIG_ENDIAN
-#  endif
-# endif
-# if !defined(__LITTLE_ENDIAN)
-#  if defined(LITTLE_ENDIAN)
-#   define __LITTLE_ENDIAN LITTLE_ENDIAN
-#  elif defined(_LITTLE_ENDIAN)
-#   define __LITTLE_ENDIAN _LITTLE_ENDIAN
-#  endif
-# endif
-# if !defined(__BYTE_ORDER)
-#  if defined(BYTE_ORDER)
-#   define __BYTE_ORDER BYTE_ORDER
-#  elif defined(_BYTE_ORDER)
-#   define __BYTE_ORDER _BYTE_ORDER
-#  endif
-# endif
-#endif
-
-/* Deal with byte orders */
-#ifndef __BYTE_ORDER
-# if defined(__LITTLE_ENDIAN) && defined(__BIG_ENDIAN)
-#  error Fuzzy endianness system! Both __LITTLE_ENDIAN and __BIG_ENDIAN have been defined!
-# endif
-# if !defined(__LITTLE_ENDIAN) && !defined(__BIG_ENDIAN)
-#  error Strange Endianness-less system! Neither __LITTLE_ENDIAN nor __BIG_ENDIAN has been defined!
-# endif
-# if defined(__LITTLE_ENDIAN)
-#  define __BYTE_ORDER __LITTLE_ENDIAN
-# elif defined(__BIG_ENDIAN)
-#  define __BYTE_ORDER __BIG_ENDIAN
-# endif
-#endif
-
-/* special rr type codes for queries */
-#define QT_MIN    251
-#define QT_IXFR   251
-#define QT_AXFR   252
-#define QT_MAILB  253
-#define QT_MAILA  254
-#define QT_ALL    255
-#define QT_MAX    255
-#define QT_NUM      5
-
-/* rr classes */
-#define C_MIN       1
-#define C_IN        1
-#define C_CS        2
-#define C_CH        3
-#define C_HS        4
-#define C_MAX       4
-#define C_NUM       4
-
-/* special classes for queries */
-#define QC_ALL    255
-
-/* status codes */
-#define RC_OK       0
-#define RC_FORMAT   1
-#define RC_SERVFAIL 2
-#define RC_NAMEERR  3
-#define RC_NOTSUPP  4
-#define RC_REFUSED  5
-#define RC_BADVERS 16
-
-/*
- * special internal retvals
- */
-#define RC_NOTCACHED  0xfffa
-#define RC_CACHED     0xfffb
-#define RC_STALE      0xfffc
-#define RC_TCPREFUSED 0xfffd
-#define RC_TRUNC      0xfffe
-#define RC_FATALERR   0xffff
-
-/* query/response */
-#define QR_QUERY    0
-#define QR_RESP     1
-
-/*opcodes */
-#define OP_QUERY    0
-#define OP_IQUERY   1
-#define OP_STATUS   2
-
-#if 0
-typedef struct {
-	/* the name is the first field. It has variable length, so it can't be put in the struct */
-	uint16_t type;
-	uint16_t class;
-	uint32_t ttl;
-	uint16_t rdlength;
-	/* rdata follows */
-} __attribute__((packed)) rr_hdr_t;
-
-#define sizeof_rr_hdr_t (sizeof rr_hdr_t)
-#else
-
-/* We will not actually use the rr_hdr_t type, only its size:
-   sizeof(rr_hdr_t) = 2 + 2 + 4 + 2 */
-#define sizeof_rr_hdr_t 10
-#endif
-
-#define sizeof_opt_pseudo_rr  (1+sizeof_rr_hdr_t)
-
-#if 0
-typedef struct {
-	/* The server name and maintainer mailbox are the first two fields. It has variable length, */
-	/* so they can't be put in the struct */
-	uint32_t serial;
-	uint32_t refresh;
-	uint32_t retry;
-	uint32_t expire;
-	uint32_t minimum;
-} __attribute__((packed)) soa_r_t;
-
-
-typedef struct {
-/*	char           qname[];*/
-	uint16_t qtype;
-	uint16_t qclass;
-} __attribute__((packed)) std_query_t;
-#endif
-
-
-typedef struct {
-	uint16_t id;
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-	unsigned int   rd:1;
-	unsigned int   tc:1;
-	unsigned int   aa:1;
-	unsigned int   opcode:4;
-	unsigned int   qr:1;
-	unsigned int   rcode:4;
-	unsigned int   cd:1;
-	unsigned int   ad:1;
-	unsigned int   z :1;
-	unsigned int   ra:1;
-#elif __BYTE_ORDER == __BIG_ENDIAN
-	unsigned int   qr:1;
-	unsigned int   opcode:4;
-	unsigned int   aa:1;
-	unsigned int   tc:1;
-	unsigned int   rd:1;
-	unsigned int   ra:1;
-	unsigned int   z :1;
-	unsigned int   ad:1;
-	unsigned int   cd:1;
-	unsigned int   rcode:4;
-#else
-# error	"Please define __BYTE_ORDER to be __LITTLE_ENDIAN or __BIG_ENDIAN"
-#endif
-	uint16_t qdcount;
-	uint16_t ancount;
-	uint16_t nscount;
-	uint16_t arcount;
-} __attribute__((packed)) dns_hdr_t;
-
-
-/* A structure that can also be used for DNS messages over TCP. */
-typedef struct {
-#ifndef NO_TCP_QUERIES
-	uint16_t len;
-#endif
-	dns_hdr_t hdr;
-} __attribute__((packed)) dns_msg_t;
-
-#ifdef NO_TCP_QUERIES
-# define dnsmsghdroffset 0
-#else
-# define dnsmsghdroffset 2
-#endif
-
-
-/* Structure for storing EDNS (Extension mechanisms for DNS) information. */
-typedef struct {
-	unsigned short udpsize;
-	unsigned short rcode;
-	unsigned short version;
-	unsigned char  do_flg;
-} edns_info_t;
-
-
-/* Macros to retrieve or store integer data that is not necessarily aligned.
-   Also takes care of network to host byte order.
-   The pointer cp is advanced and should be of type void* or char*.
-   These are actually adapted versions of the NS_GET16 and NS_GET32
-   macros in the arpa/nameser.h include file in the BIND 9 source.
-*/
-
-#define GETINT16(s,cp) do {							\
-	register uint16_t t_s;							\
-	register const unsigned char *t_cp = (const unsigned char *)(cp);	\
-	t_s = (uint16_t)*t_cp++ << 8;						\
-	t_s |= (uint16_t)*t_cp++;						\
-	(s) = t_s;								\
-	(cp) = (void *)t_cp;							\
-} while (0)
-
-#define GETINT32(l,cp) do {							\
-	register uint32_t t_l;							\
-	register const unsigned char *t_cp = (const unsigned char *)(cp);	\
-	t_l = (uint32_t)*t_cp++ << 24;						\
-	t_l |= (uint32_t)*t_cp++ << 16;						\
-	t_l |= (uint32_t)*t_cp++ << 8;						\
-	t_l |= (uint32_t)*t_cp++;						\
-	(l) = t_l;								\
-	(cp) = (void *)t_cp;							\
-} while (0)
-
-#define PUTINT16(s,cp) do {					\
-	register uint16_t t_s = (uint16_t)(s);			\
-	register unsigned char *t_cp = (unsigned char *)(cp);	\
-	*t_cp++ = t_s >> 8;					\
-	*t_cp++ = t_s;						\
-	(cp) = (void *)t_cp;					\
-} while (0)
-
-#define PUTINT32(l,cp) do {					\
-	register uint32_t t_l = (uint32_t)(l);			\
-	register unsigned char *t_cp = (unsigned char *)(cp);	\
-	*t_cp++ = t_l >> 24;					\
-	*t_cp++ = t_l >> 16;					\
-	*t_cp++ = t_l >> 8;					\
-	*t_cp++ = t_l;						\
-	(cp) = (void *)t_cp;					\
-} while (0)
-
-
-/* Size (number of bytes) of buffers used to hold domain names. */
-#define DNSNAMEBUFSIZE 256
-
-/* Recursion depth. */
-#define MAX_HOPS 20
-
-/*
- * Types for compression buffers.
- */
-typedef struct {
-	unsigned int  index;
-	unsigned char s[0];
-} compel_t;
-
-
-
-int decompress_name(unsigned char *msg, size_t msgsz, unsigned char **src, size_t *sz, unsigned char *tgt, unsigned int *len);
-/* int domain_name_match(const unsigned char *ms, const unsigned char *md, int *os, int *od); */
-unsigned int domain_match(const unsigned char *ms, const unsigned char *md, unsigned int *os, unsigned int *od);
-unsigned int compress_name(unsigned char *in, unsigned char *out, unsigned int offs, dlist *cb);
-int a2ptrstr(pdnsd_ca *a, int tp, unsigned char *buf);
-int read_hosts(const char *fn, unsigned char *rns, time_t ttl, unsigned flags, int aliases, char **errstr);
-
-const char *getrrtpname(int tp);
-#if DEBUG>0
-const char *get_cname(int id);
-const char *get_tname(int id);
-const char *get_ename(int id);
-#define DNSFLAGSMAXSTRSIZE (7*3+1)
-char *dnsflags2str(dns_hdr_t *hdr, char *buf);
-#endif
-
-#if DEBUG>=9
-void debug_dump_dns_msg(void *data, size_t len);
-#define DEBUG_DUMP_DNS_MSG(d,l) {if(debug_p && global.verbosity>=9) debug_dump_dns_msg(d,l);}
-#else
-#define DEBUG_DUMP_DNS_MSG(d,l)
-#endif
-
-#endif
diff --git a/jni/pdnsd/src/dns_answer.c b/jni/pdnsd/src/dns_answer.c
deleted file mode 100644
index 6a2a5b5..0000000
--- a/jni/pdnsd/src/dns_answer.c
+++ /dev/null
@@ -1,2170 +0,0 @@
-/* dns_answer.c - Receive and process incoming dns queries.
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * STANDARD CONFORMITY
- *
- * There are several standard conformity issues noted in the comments.
- * Some additional comments:
- *
- * I always set RA but I ignore RD largely (in everything but CNAME recursion),
- * not because it is not supported, but because I _always_ do a recursive
- * resolve in order to be able to cache the results.
- */
-
-#include <config.h>
-#include "ipvers.h"
-#include <pthread.h>
-#include <sys/uio.h>
-#include <sys/types.h>
-#ifdef HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-#include <sys/param.h>
-#include <netdb.h>
-#include <signal.h>
-#include <time.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <ctype.h>
-#include "thread.h"
-#include "list.h"
-#include "dns.h"
-#include "dns_answer.h"
-#include "dns_query.h"
-#include "helpers.h"
-#include "cache.h"
-#include "error.h"
-#include "debug.h"
-
-
-/*
- * This is for error handling to prevent spewing the log files.
- * Maximums of different message types are set.
- * Races do not really matter here, so no locks.
- */
-#define TCP_MAX_ERRS 10
-#define UDP_MAX_ERRS 10
-#define MEM_MAX_ERRS 10
-#define THRD_MAX_ERRS 10
-#define MISC_MAX_ERRS 10
-static volatile unsigned long da_tcp_errs=0;
-static volatile unsigned long da_udp_errs=0;
-static volatile unsigned long da_mem_errs=0;
-static volatile unsigned long da_thrd_errs=0;
-#if DEBUG>0
-static volatile unsigned long da_misc_errs=0;
-#endif
-static volatile int procs=0;   /* active query processes */
-static volatile int qprocs=0;  /* queued query processes */
-static volatile unsigned long dropped=0,spawned=0;
-static volatile unsigned thrid_cnt=0;
-static pthread_mutex_t proc_lock = PTHREAD_MUTEX_INITIALIZER;
-
-#ifdef SOCKET_LOCKING
-static pthread_mutex_t s_lock = PTHREAD_MUTEX_INITIALIZER;
-#endif
-
-typedef union {
-#ifdef ENABLE_IPV4
-# if (TARGET==TARGET_LINUX)
-	struct in_pktinfo   pi4;
-# else
-	struct in_addr      ai4;
-# endif
-#endif
-#ifdef ENABLE_IPV6
-	struct in6_pktinfo  pi6;
-#endif
-} pkt_info_t;
-
-
-typedef struct {
-	union {
-#ifdef ENABLE_IPV4
-		struct sockaddr_in  sin4;
-#endif
-#ifdef ENABLE_IPV6
-		struct sockaddr_in6 sin6;
-#endif
-	}                  addr;
-
-	pkt_info_t         pi;
-
-	int                sock;
-	int                proto;
-	size_t             len;
-	unsigned char      buf[0];  /* Actual size determined by global.udpbufsize */
-} udp_buf_t;
-
-
-/* ALLOCINITIALSIZE should be at least sizeof(dns_msg_t) = 2+12 */
-#define ALLOCINITIALSIZE 256
-/* This mask corresponds to a chunk size of 128 bytes. */
-#define ALLOCCHUNKSIZEMASK ((size_t)0x7f)
-
-typedef struct {
-	unsigned short qtype;
-	unsigned short qclass;
-	unsigned char  query[0];
-} dns_queryel_t;
-
-
-#define S_ANSWER     1
-#define S_AUTHORITY  2
-#define S_ADDITIONAL 3
-
-typedef struct {
-	unsigned short tp,dlen;
-	unsigned char nm[0];
-	/* unsigned char data[0]; */
-} sva_t;
-
-
-/*
- * Mark an additional record as added to avoid double records.
- */
-static int sva_add(dlist *sva, const unsigned char *rhn, unsigned short tp, unsigned short dlen, void* data)
-{
-	if (sva) {
-		size_t rlen=rhnlen(rhn);
-		sva_t *st;
-		if (!(*sva=dlist_grow(*sva,sizeof(sva_t)+rlen+dlen))) {
-			return 0;
-		}
-		st=dlist_last(*sva);
-		st->tp=tp;
-		st->dlen=dlen;
-		memcpy(mempcpy(st->nm,rhn,rlen),data,dlen);
-	}
-	return 1;
-}
-
-/* ans_ttl computes the ttl value to return to the client.
-   This is the ttl value stored in the cache entry minus the time
-   the cache entry has lived in the cache.
-   Local cache entries are an exception, they never "age".
-*/
-inline static time_t ans_ttl(rr_set_t *rrset, time_t queryts)
-{
-	time_t ttl= rrset->ttl;
-
-	if (!(rrset->flags&CF_LOCAL)) {
-		time_t tpassed= queryts - rrset->ts;
-		if(tpassed<0) tpassed=0;
-		ttl -= tpassed;
-		if(ttl<0) ttl=0;
-	}
-	return ttl;
-}
-
-/* follow_cname_chain takes a cache entry and a buffer (must be at least DNSNAMEBUFSIZE bytes),
-   and copies the name indicated by the first cname record in the cache entry.
-   The name is returned in length-byte string notation.
-   follow_cname_chain returns 1 if a cname record is found, otherwise 0.
-*/
-inline static int follow_cname_chain(dns_cent_t *c, unsigned char *name)
-{
-	rr_set_t *rrset=getrrset_CNAME(c);
-	rr_bucket_t *rr;
-	if (!rrset || !(rr=rrset->rrs))
-		return 0;
-	PDNSD_ASSERT(rr->rdlen <= DNSNAMEBUFSIZE, "follow_cname_chain: record too long");
-	memcpy(name,rr->data,rr->rdlen);
-	return 1;
-}
-
-
-/*
- * Add data from a rr_bucket_t (as in cache) into a dns message in ans. Ans is grown
- * to fit, sz is the old size of the packet (it is modified so at the end of the procedure
- * it is the new size), type is the rr type and ltime is the time in seconds the record is
- * old.
- * cb is the buffer used for message compression. *cb should be NULL when you call compress_name
- * or add_to_response the first time.
- * It gets filled with a pointer to compression information that can be reused in subsequent calls
- * to add_to_response.
- * sect is the section (S_ANSWER, S_AUTHORITY or S_ADDITIONAL) in which the record
- * belongs logically. Note that you still have to add the rrs in the right order (answer rrs first,
- * then authority and last additional).
- */
-static int add_rr(dns_msg_t **ans, size_t *sz, size_t *allocsz,
-		  unsigned char *rrn, unsigned short type, uint32_t ttl,
-		  unsigned int dlen, void *data, char section, unsigned *udp, dlist *cb)
-{
-	size_t osz= *sz;
-	unsigned int ilen,blen,rdlen;
-	unsigned char *rrht;
-
-	{
-		unsigned int nlen;
-		unsigned char nbuf[DNSNAMEBUFSIZE];
-
-		if (!(nlen=compress_name(rrn,nbuf,*sz,cb)))
-			return 0;
-
-		/* This buffer is usually over-allocated due to compression.
-		   Never mind, just a few bytes, and the buffer is freed soon. */
-		{
-			size_t newsz= dnsmsghdroffset + *sz + nlen + sizeof_rr_hdr_t + dlen;
-			if(newsz > *allocsz) {
-				/* Need to allocate more space.
-				   To avoid frequent reallocs, we allocate
-				   a multiple of a certain chunk size. */
-				size_t newallocsz= (newsz+ALLOCCHUNKSIZEMASK)&(~ALLOCCHUNKSIZEMASK);
-				dns_msg_t *newans=(dns_msg_t *)pdnsd_realloc(*ans,newallocsz);
-				if (!newans)
-					return 0;
-				*ans=newans;
-				*allocsz=newallocsz;
-			}
-		}
-		memcpy((unsigned char *)(&(*ans)->hdr)+ *sz, nbuf, nlen);
-		*sz += nlen;
-	}
-
-	/* the rr header will be filled in later. Just reserve some space for it. */
-	rrht= ((unsigned char *)(&(*ans)->hdr)) + *sz;
-	*sz += sizeof_rr_hdr_t;
-
-	switch (type) {
-	case T_CNAME:
-	case T_MB:
-	case T_MD:
-	case T_MF:
-	case T_MG:
-	case T_MR:
-	case T_NS:
-	case T_PTR:
-		if (!(rdlen=compress_name(((unsigned char *)data), ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
-			return 0;
-		PDNSD_ASSERT(rdlen <= dlen, "T_CNAME/T_MB/...: got longer");
-		*sz+=rdlen;
-		break;
-#if IS_CACHED_MINFO || IS_CACHED_RP
-#if IS_CACHED_MINFO
-	case T_MINFO:
-#endif
-#if IS_CACHED_RP
-	case T_RP:
-#endif
-		if (!(rdlen=compress_name(((unsigned char *)data), ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
-			return 0;
-		*sz+=rdlen;
-		ilen=rhnlen((unsigned char *)data);
-		PDNSD_ASSERT(rdlen <= ilen, "T_MINFO/T_RP: got longer");
-		if (!(blen=compress_name(((unsigned char *)data)+ilen, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
-			return 0;
-		rdlen+=blen;
-		PDNSD_ASSERT(rdlen <= dlen, "T_MINFO/T_RP: got longer");
-		*sz+=blen;
-		break;
-#endif
-	case T_MX:
-#if IS_CACHED_AFSDB
-	case T_AFSDB:
-#endif
-#if IS_CACHED_RT
-	case T_RT:
-#endif
-#if IS_CACHED_KX
-	case T_KX:
-#endif
-		PDNSD_ASSERT(dlen > 2, "T_MX/T_AFSDB/...: rr botch");
-		memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),(unsigned char *)data,2);
-		*sz+=2;
-		if (!(blen=compress_name(((unsigned char *)data)+2, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
-			return 0;
-		rdlen=2+blen;
-		PDNSD_ASSERT(rdlen <= dlen, "T_MX/T_AFSDB/...: got longer");
-		*sz+=blen;
-		break;
-	case T_SOA:
-		if (!(rdlen=compress_name(((unsigned char *)data), ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
-			return 0;
-		*sz+=rdlen;
-		ilen=rhnlen((unsigned char *)data);
-		PDNSD_ASSERT(rdlen <= ilen, "T_SOA: got longer");
-		if (!(blen=compress_name(((unsigned char *)data)+ilen, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
-			return 0;
-		rdlen+=blen;
-		*sz+=blen;
-		ilen+=rhnlen(((unsigned char *)data)+ilen);
-		PDNSD_ASSERT(rdlen <= ilen, "T_SOA: got longer");
-		memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),((unsigned char *)data)+ilen,20);
-		rdlen+=20;
-		PDNSD_ASSERT(rdlen <= dlen, "T_SOA: rr botch");
-		*sz+=20;
-		break;
-#if IS_CACHED_PX
-	case T_PX:
-		PDNSD_ASSERT(dlen > 2, "T_PX: rr botch");
-		memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),(unsigned char *)data,2);
-		*sz+=2;
-		ilen=2;
-		if (!(blen=compress_name(((unsigned char *)data)+ilen, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
-			return 0;
-		rdlen=2+blen;
-		*sz+=blen;
-		ilen+=rhnlen(((unsigned char *)data)+ilen);
-		PDNSD_ASSERT(rdlen <= ilen, "T_PX: got longer");
-		if (!(blen=compress_name(((unsigned char *)data)+ilen, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
-			return 0;
-		rdlen+=blen;
-		PDNSD_ASSERT(rdlen <= dlen, "T_PX: got longer");
-		*sz+=blen;
-		break;
-#endif
-#if IS_CACHED_SRV
-	case T_SRV:
-		PDNSD_ASSERT(dlen > 6, "T_SRV: rr botch");
-		memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),(unsigned char *)data,6);
-		*sz+=6;
-		if (!(blen=compress_name(((unsigned char *)data)+6, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
-			return 0;
-		rdlen=6+blen;
-		PDNSD_ASSERT(rdlen <= dlen, "T_SRV: got longer");
-		*sz+=blen;
-		break;
-#endif
-#if IS_CACHED_NXT
-	case T_NXT:
-		if (!(blen=compress_name(((unsigned char *)data), ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
-			return 0;
-		rdlen=blen;
-		*sz+=blen;
-		ilen=rhnlen((unsigned char *)data);
-		PDNSD_ASSERT(rdlen <= ilen, "T_NXT: got longer");
-		PDNSD_ASSERT(dlen >= ilen, "T_NXT: rr botch");
-		if (dlen > ilen) {
-			unsigned int wlen = dlen - ilen;
-			memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),((unsigned char *)data)+ilen,wlen);
-			*sz+=wlen;
-			rdlen+=wlen;
-		}
-		break;
-#endif
-#if IS_CACHED_NAPTR
-	case T_NAPTR:
-		PDNSD_ASSERT(dlen > 4, "T_NAPTR: rr botch");
-		ilen=4;
-		{
-			int j;
-			for (j=0;j<3;j++) {
-				ilen += ((unsigned)*(((unsigned char *)data)+ilen)) + 1;
-				PDNSD_ASSERT(dlen > ilen, "T_NAPTR: rr botch 2");
-			}
-		}
-		memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),((unsigned char *)data),ilen);
-		(*sz)+=ilen;
-
-		if (!(blen=compress_name(((unsigned char *)data)+ilen, ((unsigned char *)(&(*ans)->hdr))+(*sz),*sz,cb)))
-			return 0;
-		rdlen=ilen+blen;
-		PDNSD_ASSERT(rdlen <= dlen, "T_NAPTR: got longer");
-		*sz+=blen;
-		break;
-#endif
-	default:
-		memcpy(((unsigned char *)(&(*ans)->hdr))+(*sz),((unsigned char *)data),dlen);
-		rdlen=dlen;
-		*sz+=dlen;
-	}
-
-	if (udp && *sz>*udp && section==S_ADDITIONAL) /* only add the record if we do not increase the length over 512 */
-		*sz=osz;                              /* (or possibly more if the request used EDNS) in additionals for udp answer. */
-	else {
-		PUTINT16(type,rrht);
-		PUTINT16(C_IN,rrht);
-		PUTINT32(ttl,rrht);
-		PUTINT16(rdlen,rrht);
-
-		switch (section) {
-		case S_ANSWER:
-			(*ans)->hdr.ancount=htons(ntohs((*ans)->hdr.ancount)+1);
-			break;
-		case S_AUTHORITY:
-			(*ans)->hdr.nscount=htons(ntohs((*ans)->hdr.nscount)+1);
-			break;
-		case S_ADDITIONAL:
-			(*ans)->hdr.arcount=htons(ntohs((*ans)->hdr.arcount)+1);
-			break;
-		}
-	}
-
-	return 1;
-}
-
-/* Add an OPT pseudo RR containing EDNS info.
-   Can only be added to the additional section!
-*/
-int add_opt_pseudo_rr(dns_msg_t **ans, size_t *sz, size_t *allocsz,
-		      unsigned short udpsize, unsigned short rcode,
-		      unsigned short ednsver, unsigned short Zflags)
-{
-	unsigned char *ptr;
-	size_t newsz= dnsmsghdroffset + *sz + sizeof_opt_pseudo_rr;
-	if(newsz > *allocsz) {
-		/* Need to allocate more space.
-		   To avoid frequent reallocs, we allocate
-		   a multiple of a certain chunk size. */
-		size_t newallocsz= (newsz+ALLOCCHUNKSIZEMASK)&(~ALLOCCHUNKSIZEMASK);
-		dns_msg_t *newans=(dns_msg_t *)pdnsd_realloc(*ans,newallocsz);
-		if (!newans)
-			return 0;
-		*ans=newans;
-		*allocsz=newallocsz;
-	}
-
-	ptr= ((unsigned char *)(&(*ans)->hdr)) + *sz;
-	*ptr++ = 0;             /* Empty name */
-	PUTINT16(T_OPT,ptr);    /* type field */
-	PUTINT16(udpsize,ptr);  /* class field */
-	*ptr++ = rcode>>4;      /* 4 byte TTL field */
-	*ptr++ = ednsver;
-	PUTINT16(Zflags,ptr);
-	PUTINT16(0,ptr);        /* rdlen field */
-        /* Empty RDATA. */
-
-	*sz += sizeof_opt_pseudo_rr;
-	/* Increment arcount field in dns header. */
-	(*ans)->hdr.arcount = htons(ntohs((*ans)->hdr.arcount)+1);
-	return 1;
-}
-
-/* Remove the last entry in the additional section,
-   assuming it is an OPT pseudo RR of fixed size.
-   Returns the new message size if successful, or
-   zero if an inconsistency is detected.
-*/
-size_t remove_opt_pseudo_rr(dns_msg_t *ans, size_t sz)
-{
-	uint16_t acnt=ntohs(ans->hdr.arcount), type;
-	unsigned char *ptr;
-	/* First do some sanity checks. */
-	if(!(acnt>0 && sz >= sizeof(dns_hdr_t)+sizeof_opt_pseudo_rr))
-		return 0;
-	sz -= sizeof_opt_pseudo_rr;
-	ptr= ((unsigned char *)(&ans->hdr)) + sz;
-	if(*ptr++)
-		return 0;  /* Name must be empty. */
-	GETINT16(type,ptr);
-	if(type!=T_OPT)
-		return 0;  /* RR type must be OPT. */
-	/* Decrement arcount field in dns header. */
-	ans->hdr.arcount = htons(acnt-1);
-	return sz;
-}
-
-typedef struct rre_s {
-	unsigned short tp;
-	unsigned short tsz;		/* Size of tnm field */
-	uint32_t       ttl;		/* ttl of the record in the answer (if tp==T_NS or T_SOA) */
-	unsigned char  tnm[0];		/* Name for the domain a record refers to */
-	/* unsigned char  nm[0]; */	/* Name of the domain the record is for (if tp==T_NS or T_SOA) */
-} rr_ext_t;
-
-
-/* types for the tp field */
-/* #define RRETP_NS	T_NS */		/* For name server: add to authority, add address to additional. */
-/* #define RRETP_SOA	T_SOA */	/* For SOA record: add to authority. */
-#define RRETP_ADD	0		/* For other records: add the address of buf to additional */
-
-static int add_ar(dlist *ar,unsigned short tp, unsigned short tsz,void *tnm,unsigned char *nm, uint32_t ttl)
-{
-	rr_ext_t *re;
-	unsigned char *p;
-	size_t nmsz=0,size=sizeof(rr_ext_t)+tsz;
-	if(tp==T_NS || tp==T_SOA) {
-		nmsz=rhnlen(nm);
-		size += nmsz;
-	}
-	if (!(*ar=dlist_grow(*ar,size)))
-		return 0;
-	re=dlist_last(*ar);
-	re->tp=tp;
-	re->tsz=tsz;
-	re->ttl=ttl;
-	p=mempcpy(re->tnm,tnm,tsz);
-	if(tp==T_NS || tp==T_SOA) {
-		memcpy(p,nm,nmsz);
-	}
-	return 1;
-}
-
-
-/* Select a random rr record from a list. */
-inline static rr_bucket_t *randrr(rr_bucket_t *rrb)
-{
-	rr_bucket_t *rr;
-	unsigned cnt=0;
-
-	/* In order to have an equal chance for each record to be selected, we have to count first. */
-	for(rr=rrb; rr; rr=rr->next) ++cnt;
-
-	/* We do not use the pdnsd random functions (these might use /dev/urandom if the user is paranoid,
-	 * and we do not need any good PRNG here). */
-	if(cnt) for(cnt=random()%cnt; cnt; --cnt) rrb=rrb->next;
-
-	return rrb;
-}
-
-#if IS_CACHED_SRV
-#define AR_NUM 6
-#else
-#define AR_NUM 5
-#endif
-static const int ar_recs[AR_NUM]={T_NS, T_MD, T_MF, T_MB, T_MX
-#if IS_CACHED_SRV
-				  ,T_SRV
-#endif
-};
-/* offsets from record data start to server name */
-static const int ar_offs[AR_NUM]={0,0,0,0,2
-#if IS_CACHED_SRV
-				  ,6
-#endif
-};
-
-/* This adds an rrset, optionally randomizing the first element it adds.
- * if that is done, all rrs after the randomized one appear in order, starting from
- * that one and wrapping over if needed. */
-static int add_rrset(dns_msg_t **ans, size_t *sz, size_t *allocsz,
-		     unsigned char *rrn, unsigned tp, time_t queryts,
-		     dns_cent_t *cached, unsigned *udp, dlist *cb, dlist *sva, dlist *ar)
-{
-	rr_set_t *crrset=getrrset(cached,tp);
-
-	if (crrset && crrset->rrs) {
-		rr_bucket_t *b;
-		rr_bucket_t *first=NULL; /* Initialized to inhibit compiler warning */
-		int i;
-		short rnd_recs=global.rnd_recs;
-
-		b=crrset->rrs;
-		if (rnd_recs) b=first=randrr(crrset->rrs);
-
-		while (b) {
-			if (!add_rr(ans, sz, allocsz, rrn, tp, ans_ttl(crrset,queryts),
-				    b->rdlen, b->data, S_ANSWER, udp, cb))
-				return 0;
-			if (tp==T_NS || tp==T_A || tp==T_AAAA) {
-				/* mark it as added */
-				if (!sva_add(sva,rrn,tp,b->rdlen,b->data))
-					return 0;
-			}
-			/* Mark for additional address records. XXX: this should be a more effective algorithm; at least the list is small */
-			for (i=0;i<AR_NUM;i++) {
-				if (ar_recs[i]==tp) {
-					if (!add_ar(ar, RRETP_ADD,b->rdlen-ar_offs[i],((unsigned char *)(b->data))+ar_offs[i],
-						    ucharp "", 0))
-						return 0;
-					break;
-				}
-			}
-			b=b->next;
-			if (rnd_recs) {
-				if(!b) b=crrset->rrs; /* wraparound */
-				if(b==first)	break;
-			}
-		}
-	}
-	return 1;
-}
-
-/*
- * Add the fitting elements of the cached record to the message in ans, where ans
- * is grown to fit, sz is the size of the packet and is modified to be the new size.
- * The query is in qe.
- * cb is the buffer used for message compression. *cb should be NULL if you call add_to_response
- * the first time. It gets filled with a pointer to compression information that can be
- * reused in subsequent calls to add_to_response.
- */
-static int add_to_response(dns_msg_t **ans, size_t *sz, size_t *allocsz,
-			   unsigned char *rrn, unsigned qtype, time_t queryts,
-			   dns_cent_t *cached, unsigned *udp, dlist *cb, dlist *sva, dlist *ar)
-{
-	/* First of all, unless we have records of qtype, add cnames.
-	   Well, actually, there should be at max one cname. */
-	if (qtype!=T_CNAME && qtype!=QT_ALL && !(qtype>=T_MIN && qtype<=T_MAX && have_rr(cached,qtype)))
-		if (!add_rrset(ans, sz, allocsz, rrn, T_CNAME, queryts, cached, udp, cb, sva, ar))
-			return 0;
-
-	/* We need no switch for qclass, since we already have filtered packets we cannot understand */
-	if (qtype==QT_AXFR || qtype==QT_IXFR) {
-		/* I do not know what to do in this case. Since we do not maintain zones (and since we are
-		   no master server, so it is not our task), I just return an error message. If anyone
-		   knows how to do this better, please notify me.
-		   Anyway, this feature is rarely used in client communication, and there is no need for
-		   other name servers to ask pdnsd. Btw: many bind servers reject an ?XFR query for security
-		   reasons. */
-		return 0;
-	} else if (qtype==QT_MAILB) {
-		if (!add_rrset(ans, sz, allocsz, rrn, T_MB, queryts, cached, udp, cb, sva, ar))
-			return 0;
-		if (!add_rrset(ans, sz, allocsz, rrn, T_MG, queryts, cached, udp, cb, sva, ar))
-			return 0;
-		if (!add_rrset(ans, sz, allocsz, rrn, T_MR, queryts, cached, udp, cb, sva, ar))
-			return 0;
-	} else if (qtype==QT_MAILA) {
-		if (!add_rrset(ans, sz, allocsz, rrn, T_MD, queryts, cached, udp, cb, sva, ar))
-			return 0;
-		if (!add_rrset(ans, sz, allocsz, rrn, T_MF, queryts, cached, udp, cb, sva, ar))
-			return 0;
-	} else if (qtype==QT_ALL) {
-		int i, n= NRRITERLIST(cached);
-		const unsigned short *iterlist= RRITERLIST(cached);
-		for (i=0; i<n; ++i) {
-			if (!add_rrset(ans, sz, allocsz, rrn, iterlist[i], queryts, cached, udp, cb, sva, ar))
-				return 0;
-		}
-	} else if (qtype>=T_MIN && qtype<=T_MAX) {
-		if (!add_rrset(ans, sz, allocsz, rrn, qtype, queryts, cached, udp, cb, sva, ar))
-			return 0;
-	} else /* Shouldn't get here. */
-		return 0;
-#if 0
-	if (!ntohs((*ans)->hdr.ancount)) {
-		/* Add a SOA if we have one and no other records are present in the answer.
-		 * This is to aid caches so that they have a ttl. */
-		if (!add_rrset(ans, sz, allocsz, rrn, T_SOA , queryts, cached, udp, cb, sva, ar))
-			return 0;
-	}
-#endif
-	return 1;
-}
-
-/*
- * Add an additional
- */
-static int add_additional_rr(dns_msg_t **ans, size_t *rlen, size_t *allocsz,
-			     unsigned char *rhn, unsigned tp, time_t ttl,
-			     unsigned dlen, void *data, int sect, unsigned *udp, dlist *cb, dlist *sva)
-{
-	sva_t *st;
-
-	/* Check if already added; no double additionals */
-	for (st=dlist_first(*sva); st; st=dlist_next(st)) {
-		if (st->tp==tp && rhnicmp(st->nm,rhn) && st->dlen==dlen &&
-		    (memcmp(skiprhn(st->nm),data, dlen)==0))
-		{
-			return 1;
-		}
-	}
-	/* add_rr will do nothing when udp!=NULL and sz>*udp. */
-	if(!add_rr(ans, rlen, allocsz, rhn, tp, ttl, dlen, data, sect, udp, cb))
-		return 0;
-	/* mark it as added */
-	if (!sva_add(sva,rhn,tp,dlen,data))
-		return 0;
-
-	return 1;
-}
-
-/*
- * Add one or more additionals from an rr bucket.
- */
-static int add_additional_rrs(dns_msg_t **ans, size_t *rlen, size_t *allocsz,
-			      unsigned char *rhn, unsigned tp, time_t ttl,
-			      rr_bucket_t *rrb, int sect, unsigned *udp, dlist *cb, dlist *sva)
-{
-	rr_bucket_t *rr;
-	rr_bucket_t *first=NULL; /* Initialized to inhibit compiler warning */
-	short rnd_recs=global.rnd_recs;
-
-	rr=rrb;
-	if (rnd_recs) rr=first=randrr(rrb);
-
-	while(rr) {
-		if (!add_additional_rr(ans, rlen, allocsz, rhn, tp, ttl, rr->rdlen,rr->data, sect, udp, cb, sva))
-			return 0;
-		rr=rr->next;
-		if (rnd_recs) {
-			if(!rr) rr=rrb; /* wraparound */
-			if(rr==first)	break;
-		}
-	}
-	return 1;
-}
-
-/*
- * The code below actually handles A and AAAA additionals.
- */
-static int add_additional_a(dns_msg_t **ans, size_t *rlen, size_t *allocsz,
-			    unsigned char *rhn, time_t queryts,
-			    unsigned *udp, dlist *cb, dlist *sva)
-{
-	dns_cent_t *ae;
-	int retval = 1;
-
-	if ((ae=lookup_cache(rhn,NULL))) {
-		rr_set_t *rrset; rr_bucket_t *rr;
-		rrset=getrrset_A(ae);
-		if (rrset && (rr=rrset->rrs))
-			if (!add_additional_rrs(ans, rlen, allocsz,
-						rhn, T_A, ans_ttl(rrset,queryts),
-						rr, S_ADDITIONAL, udp, cb, sva))
-				retval = 0;
-
-#if IS_CACHED_AAAA
-		if(retval) {
-			rrset=getrrset_AAAA(ae);
-			if (rrset && (rr=rrset->rrs))
-				if (!add_additional_rrs(ans, rlen, allocsz,
-							rhn, T_AAAA, ans_ttl(rrset,queryts),
-							rr, S_ADDITIONAL, udp, cb, sva))
-					retval = 0;
-		}
-#endif
-		free_cent(ae  DBG1);
-		pdnsd_free(ae);
-	}
-	return retval;
-}
-
-/*
- * Compose an answer message for the decoded query in ql, hdr is the header of the dns request
- * rlen is set to be the answer length.
- * If udp is not NULL, *udp indicates the max length the dns response may have.
- */
-static dns_msg_t *compose_answer(llist *ql, dns_hdr_t *hdr, size_t *rlen, edns_info_t *ednsinfo, unsigned *udp, int *rcodep)
-{
-	unsigned short rcode=RC_OK, aa=1;
-	dlist cb=NULL;
-	dlist sva=NULL;
-	dlist ar=NULL;
-	time_t queryts=time(NULL);
-	dns_queryel_t *qe;
-	dns_msg_t *ans;
-	size_t allocsz= ALLOCINITIALSIZE;
-	dns_cent_t *cached;
-
-	ans=(dns_msg_t *)pdnsd_malloc(allocsz);
-	if (!ans)
-		goto return_ans;
-	ans->hdr.id=hdr->id;
-	ans->hdr.qr=QR_RESP;
-	ans->hdr.opcode=OP_QUERY;
-	ans->hdr.aa=0;
-	ans->hdr.tc=0; /* If tc is needed, it is set when the response is sent in udp_answer_thread. */
-	ans->hdr.rd=hdr->rd;
-	ans->hdr.ra=1;
-	ans->hdr.z=0;
-	ans->hdr.ad=0;
-	ans->hdr.cd=0;
-	ans->hdr.rcode=rcode;
-	ans->hdr.qdcount=0; /* this is first filled in and will be modified */
-	ans->hdr.ancount=0;
-	ans->hdr.nscount=0;
-	ans->hdr.arcount=0;
-
-	*rlen=sizeof(dns_hdr_t);
-	/* first, add the query to the response */
-	for (qe=llist_first(ql); qe; qe=llist_next(qe)) {
-		unsigned int qclen;
-		size_t newsz= dnsmsghdroffset + *rlen + rhnlen(qe->query) + 4;
-		if(newsz > allocsz) {
-			/* Need to allocate more space.
-			   To avoid frequent reallocs, we allocate
-			   a multiple of a certain chunk size. */
-			size_t newallocsz= (newsz+ALLOCCHUNKSIZEMASK)&(~ALLOCCHUNKSIZEMASK);
-			dns_msg_t *newans=(dns_msg_t *)pdnsd_realloc(ans,newallocsz);
-			if (!newans)
-				goto error_ans;
-			ans=newans;
-			allocsz=newallocsz;
-		}
-
-		{
-			unsigned char *p = ((unsigned char *)&ans->hdr) + *rlen;
-			/* the first name occurrence will not be compressed,
-			   but the offset needs to be stored for future compressions */
-			if (!(qclen=compress_name(qe->query,p,*rlen,&cb)))
-				goto error_ans;
-			p += qclen;
-			PUTINT16(qe->qtype,p);
-			PUTINT16(qe->qclass,p);
-		}
-		*rlen += qclen+4;
-		ans->hdr.qdcount=htons(ntohs(ans->hdr.qdcount)+1);
-	}
-
-	/* Barf if we get a query we cannot answer */
-	for (qe=llist_first(ql); qe; qe=llist_next(qe)) {
-		if ((PDNSD_NOT_CACHED_TYPE(qe->qtype) &&
-		     (qe->qtype!=QT_MAILB && qe->qtype!=QT_MAILA && qe->qtype!=QT_ALL)) ||
-		    (qe->qclass!=C_IN && qe->qclass!=QC_ALL))
-		{
-			DEBUG_MSG("Unsupported QTYPE or QCLASS.\n");
-			ans->hdr.rcode=rcode=RC_NOTSUPP;
-			goto cleanup_return;
-		}
-	}
-
-	/* second, the answer section */
-	for (qe=llist_first(ql); qe; qe=llist_next(qe)) {
-		int hops;
-		unsigned char qname[DNSNAMEBUFSIZE];
-
-		rhncpy(qname,qe->query);
-		/* look if we have a cached copy. otherwise, perform a nameserver query. Same with timeout */
-		hops=MAX_HOPS;
-		do {
-			int rc;
-			unsigned char c_soa=cundef;
-			if ((rc=dns_cached_resolve(qname,qe->qtype, &cached, MAX_HOPS,queryts,&c_soa))!=RC_OK) {
-				ans->hdr.rcode=rcode=rc;
-				if(rc==RC_NAMEERR) {
-					if(c_soa!=cundef) {
-						/* Try to add a SOA record to the authority section. */
-						unsigned scnt=rhnsegcnt(qname);
-						if(c_soa<scnt && (cached=lookup_cache(skipsegs(qname,scnt-c_soa),NULL))) {
-							rr_set_t *rrset=getrrset_SOA(cached);
-							if (rrset && !(rrset->flags&CF_NEGATIVE)) {
-								rr_bucket_t *rr;
-								for(rr=rrset->rrs; rr; rr=rr->next) {
-									if (!add_rr(&ans,rlen,&allocsz,cached->qname,T_SOA,ans_ttl(rrset,queryts),
-										    rr->rdlen,rr->data,S_AUTHORITY,udp,&cb))
-										goto error_cached;
-								}
-							}
-							free_cent(cached  DBG1);
-							pdnsd_free(cached);
-						}
-					}
-
-					/* Possibly add an OPT pseudo-RR to the additional section. */
-					if(ednsinfo) {
-						if(!add_opt_pseudo_rr(&ans, rlen, &allocsz, global.udpbufsize, rcode, 0,0))
-							goto error_ans;
-					}
-				}
-				goto cleanup_return;
-			}
-			if(!(cached->flags&DF_LOCAL))
-				aa=0;
-
-			if (!add_to_response(&ans,rlen,&allocsz,qname,qe->qtype,queryts,cached,udp,&cb,&sva,&ar))
-				goto error_cached;
-			if (hdr->rd && qe->qtype!=T_CNAME && qe->qtype!=QT_ALL &&
-			    !(qe->qtype>=T_MIN && qe->qtype<=T_MAX && have_rr(cached,qe->qtype)) &&
-			    follow_cname_chain(cached,qname))
-				/* The rd bit is set and the response does not contain records of the requested type,
-				 * but the response does contain a cname, so repeat the inquiry with the cname.
-				 * add_to_response() has already added the cname to the response.
-				 * Because of follow_cname_chain(), qname now contains the last cname in the chain. */
-				;
-			else {
-				/* maintain a list (ar) for authority records: We will add every name server that was
-				   listed as authoritative in a reply we received (and only those) to this list.
-				   This list will be used to fill the authority and additional sections of our own reply.
-				   We only do this for the last record in a cname chain, to prevent answer bloat. */
-				rr_set_t *rrset;
-				int rretp=T_NS;
-				if((qe->qtype>=T_MIN && qe->qtype<=T_MAX && !have_rr(cached,qe->qtype)) ||
-				   (qe->qtype==QT_MAILB && !have_rr_MB(cached) && !have_rr_MG(cached) && !have_rr_MR(cached)) ||
-				   (qe->qtype==QT_MAILA && !have_rr_MD(cached) && !have_rr_MF(cached)))
-				{
-					/* no record of requested type in the answer section. */
-					rretp=T_SOA;
-				}
-				rrset=getrrset(cached,rretp);
-				if(rrset && (rrset->flags&CF_NEGATIVE))
-					rrset=NULL;
-				if(!rrset) {
-					/* Try to find a name server higher up the hierarchy .
-					 */
-					dns_cent_t *prev=cached;
-					unsigned scnt=rhnsegcnt(prev->qname);
-					unsigned tcnt=(rretp==T_NS?prev->c_ns:prev->c_soa);
-					if((cached=lookup_cache((tcnt!=cundef && tcnt<scnt)?skipsegs(prev->qname,scnt-tcnt):prev->qname,NULL))) {
-						rrset=getrrset(cached,rretp);
-						if(rrset && (rrset->flags&CF_NEGATIVE))
-							rrset=NULL;
-					}
-					if(!rrset && (prev->flags&DF_LOCAL)) {
-						unsigned char *nm=getlocalowner(prev->qname,rretp);
-						if(nm) {
-							if(cached) {
-								free_cent(cached  DBG1);
-								pdnsd_free(cached);
-							}
-							if((cached=lookup_cache(nm,NULL)))
-								rrset=getrrset(cached,rretp);
-						}
-					}
-					free_cent(prev  DBG1);
-					pdnsd_free(prev);
-				}
-				if (rrset) {
-					rr_bucket_t *rr;
-					for (rr=rrset->rrs; rr; rr=rr->next) {
-						if (!add_ar(&ar, rretp, rr->rdlen,rr->data, cached->qname,
-							    ans_ttl(rrset,queryts)))
-							goto error_cached;
-					}
-				}
-				hops=0;  /* this will break the loop */
-			}
-			if(cached) {
-				free_cent(cached  DBG1);
-				pdnsd_free(cached);
-			}
-		} while (--hops>=0);
-	}
-
-	{
-		rr_ext_t *rre;
-		/* Add the authority section */
-		for (rre=dlist_first(ar); rre; rre=dlist_next(rre)) {
-			if (rre->tp == T_NS || rre->tp == T_SOA) {
-				unsigned char *nm = rre->tnm + rre->tsz;
-				if (!add_additional_rr(&ans, rlen, &allocsz,
-						       nm, rre->tp, rre->ttl, rre->tsz, rre->tnm,
-						       S_AUTHORITY, udp, &cb, &sva))
-				{
-					goto error_ans;
-				}
-			}
-		}
-
-		/* Add the additional section, but only if we stay within the UDP buffer limit. */
-		/* If a pseudo RR doesn't fit, nothing else will. */
-		if(!(udp && *rlen+sizeof_opt_pseudo_rr>*udp)) {
-
-			/* Possibly add an OPT pseudo-RR to the additional section. */
-			if(ednsinfo) {
-				if(!add_opt_pseudo_rr(&ans, rlen, &allocsz, global.udpbufsize, rcode, 0,0))
-					goto error_ans;
-			}
-
-			/* now add the name server addresses */
-			for (rre=dlist_first(ar); rre; rre=dlist_next(rre)) {
-				if (rre->tp == T_NS || rre->tp == RRETP_ADD) {
-					if (!add_additional_a(&ans, rlen, &allocsz,
-							      rre->tnm, queryts, udp, &cb, &sva))
-						goto error_ans;
-				}
-			}
-		}
-	}
-	if (aa)
-		ans->hdr.aa=1;
-	goto cleanup_return;
-
-	/* You may not like goto's, but here we avoid lots of code duplication. */
-error_cached:
-	free_cent(cached  DBG1);
-	pdnsd_free(cached);
-error_ans:
-	pdnsd_free(ans);
-	ans=NULL;
-cleanup_return:
-	dlist_free(ar);
-	dlist_free(sva);
-	dlist_free(cb);
-return_ans:
-	if(rcodep) *rcodep=rcode;
-	return ans;
-}
-
-/*
- * Decode the query (the query messgage is in data and rlen bytes long) into a dlist.
- * XXX: data needs to be aligned.
- * The return value can be RC_OK or RC_TRUNC, in which case the (partially) constructed list is
- * returned in qp, or something else (RC_FORMAT or RC_SERVFAIL), in which case no list is returned.
- *
- * *ptrrem  will be assigned the address just after the questions sections in the message, and *lenrem
- * the remaining message length after the questions section. These values are only meaningful if the
- * return value is RC_OK.
- */
-static int decode_query(unsigned char *data, size_t rlen, unsigned char **ptrrem, size_t *lenrem, llist *qp)
-{
-	int i,res=RC_OK;
-	dns_hdr_t *hdr=(dns_hdr_t *)data; /* aligned, so no prob. */
-	unsigned char *ptr=(unsigned char *)(hdr+1);
-	size_t sz= rlen - sizeof(dns_hdr_t);
-	uint16_t qdcount=ntohs(hdr->qdcount);
-
-	llist_init(qp);
-	for (i=0; i<qdcount; ++i) {
-		dns_queryel_t *qe;
-		unsigned int qlen;
-		unsigned char qbuf[DNSNAMEBUFSIZE];
-		res=decompress_name(data,rlen,&ptr,&sz,qbuf,&qlen);
-		if (res==RC_TRUNC)
-			break;
-		if (res!=RC_OK) {
-			llist_free(qp);
-			break;
-		}
-		if (sz<4) {
-			/* truncated in qtype or qclass */
-			DEBUG_MSG("decode_query: query truncated in qtype or qclass.\n");
-			res=RC_TRUNC;
-			break;
-		}
-		if(!llist_grow(qp,sizeof(dns_queryel_t)+qlen)) {
-			res=RC_SERVFAIL;
-			break;
-		}
-		qe=llist_last(qp);
-		GETINT16(qe->qtype,ptr);
-		GETINT16(qe->qclass,ptr);
-		sz-=4;
-		memcpy(qe->query,qbuf,qlen);
-	}
-
-	if(ptrrem) *ptrrem=ptr;
-	if(lenrem) *lenrem=sz;
-	return res;
-}
-
-
-/* Scan the additional section of a query message for an OPT pseudo RR.
-   data and rlen are as in decode_query(). Note in particular that data needs to be aligned!
-   ptr should point the beginning of the additional section, sz should contain the
-   length of this remaining part of the message and numrr the number of resource records in the section.
-   *numopt is incremented with the number of OPT RRs found (should be at most one).
-
-   Note that a return value of RC_OK means the additional section was parsed without errors, not that
-   an OPT pseudo RR was found! Check the value of *numopt for the latter.
-
-   The structure pointed to by ep is filled with the information of the first OPT pseudo RR found,
-   but only if *numopt was set to zero before the call.
-*/
-static int decode_query_additional(unsigned char *data, size_t rlen, unsigned char *ptr, size_t sz, int numrr,
-				   int *numopt, edns_info_t *ep)
-{
-	int i, res;
-
-	for (i=0; i<numrr; ++i) {
-		unsigned char nmbuf[DNSNAMEBUFSIZE];
-		uint16_t type,class;
-		unsigned char *ttlp;
-		uint16_t rdlen;
-		res=decompress_name(data,rlen,&ptr,&sz,nmbuf,NULL);
-		if (res!=RC_OK)
-			return res;
-		if (sz<sizeof_rr_hdr_t) {
-			/* truncated in rr header */
-			DEBUG_MSG("decode_query_additional: additional section truncated in RR header.\n");
-			return RC_TRUNC;
-		}
-		sz -= sizeof_rr_hdr_t;
-		GETINT16(type,ptr);
-		GETINT16(class,ptr);
-		ttlp= ptr;   /* Remember pointer to ttl field. */
-		ptr += 4;    /* Skip ttl field (4 bytes). */
-		GETINT16(rdlen,ptr);
-		if (sz<rdlen) {
-			DEBUG_MSG("decode_query_additional: additional section truncated in RDATA field.\n");
-			return RC_TRUNC;
-		}
-
-		if(type==T_OPT) {
-			/* Found OPT pseudo-RR */
-			if((*numopt)++ == 0) {
-#if DEBUG>0
-				if(nmbuf[0]!=0) {
-					DEBUG_MSG("decode_query_additional: name in OPT record not empty!\n");
-				}
-#endif
-				ep->udpsize= class;
-				ep->rcode= ((uint16_t)ttlp[0]<<4) | ((dns_hdr_t *)data)->rcode;
-				ep->version= ttlp[1];
-				ep->do_flg= (ttlp[2]>>7)&1;
-#if DEBUG>0
-				if(debug_p) {
-					unsigned int Zflags= ((uint16_t)ttlp[2]<<8) | ttlp[3];
-					if(Zflags & 0x7fff) {
-						DEBUG_MSG("decode_query_additional: Z field contains unknown nonzero bits (%04x).\n",
-							  Zflags);
-					}
-					if(rdlen) {
-						DEBUG_MSG("decode_query_additional: RDATA field in OPT record not empty!\n");
-					}
-				}
-#endif
-			}
-			else {
-				DEBUG_MSG("decode_query_additional: ingnoring surplus OPT record.\n");
-			}
-		}
-		else {
-			DEBUG_MSG("decode_query_additional: ignoring record of type %s (%d).\n",
-				  getrrtpname(type), type);
-		}
-
-		/* Skip RDATA field. */
-		sz -= rdlen;
-		ptr += rdlen;
-	}
-
-	return RC_OK;
-}
-
-/* Make a dns error reply message
- * Id is the query id and still in network order.
- * op is the opcode to fill in, rescode - name says it all.
- */
-static void mk_error_reply(unsigned short id, unsigned short opcode,unsigned short rescode,dns_hdr_t *rep)
-{
-	rep->id=id;
-	rep->qr=QR_RESP;
-	rep->opcode=opcode;
-	rep->aa=0;
-	rep->tc=0;
-	rep->rd=0;
-	rep->ra=1;
-	rep->z=0;
-	rep->ad=0;
-	rep->cd=0;
-	rep->rcode=rescode;
-	rep->qdcount=0;
-	rep->ancount=0;
-	rep->nscount=0;
-	rep->arcount=0;
-}
-
-/*
- * Analyze and answer the query in data. The answer is returned. rlen is at call the query length and at
- * return the length of the answer. You have to free the answer after sending it.
- */
-static dns_msg_t *process_query(unsigned char *data, size_t *rlenp, unsigned *udp, int *rcodep)
-{
-	size_t rlen= *rlenp;
-	int res;
-	dns_hdr_t *hdr;
-	llist ql;
-	dns_msg_t *ans;
-	edns_info_t ednsinfo= {0}, *ednsinfop= NULL;
-
-	DEBUG_MSG("Received query (msg len=%u).\n", (unsigned int)rlen);
-	DEBUG_DUMP_DNS_MSG(data, rlen);
-
-	/*
-	 * We will ignore all records that come with a query, except for the actual query records,
-	 * and possible OPT pseudo RRs in the addtional section.
-	 * We will send back the query in the response. We will reject all non-queries, and
-	 * some not supported thingies.
-	 * If anyone notices behaviour that is not in standard conformance, please notify me!
-	 */
-	hdr=(dns_hdr_t *)data;
-	if (rlen<2) {
-		DEBUG_MSG("Message too short.\n");
-		return NULL; /* message too short: no id provided. */
-	}
-	if (rlen<sizeof(dns_hdr_t)) {
-		DEBUG_MSG("Message too short.\n");
-		res=RC_FORMAT;
-		goto error_reply;
-	}
-	if (hdr->qr!=QR_QUERY) {
-		DEBUG_MSG("The QR bit indicates this is a response, not a query.\n");
-		return NULL; /* RFC says: discard */
-	}
-	if (hdr->opcode!=OP_QUERY) {
-		DEBUG_MSG("Not a standard query (opcode=%u).\n",hdr->opcode);
-		res=RC_NOTSUPP;
-		goto error_reply;
-	}
-#if DEBUG>0
-	if(debug_p) {
-		char flgsbuf[DNSFLAGSMAXSTRSIZE];
-		dnsflags2str(hdr, flgsbuf);
-		if(flgsbuf[0]) {
-			DEBUG_MSG("Flags:%s\n", flgsbuf);
-		}
-	}
-#endif
-	if (hdr->z!=0) {
-		DEBUG_MSG("Malformed query (nonzero Z bit).\n");
-		res=RC_FORMAT;
-		goto error_reply;
-	}
-	if (hdr->rcode!=RC_OK) {
-		DEBUG_MSG("Bad rcode(%u).\n",hdr->rcode);
-		return NULL; /* discard (may cause error storms) */
-	}
-
-	if (hdr->ancount) {
-		DEBUG_MSG("Query has a non-empty answer section!\n");
-		res=RC_FORMAT;
-		goto error_reply;
-	}
-
-	if (hdr->nscount) {
-		DEBUG_MSG("Query has a non-empty authority section!\n");
-		res=RC_FORMAT;
-		goto error_reply;
-	}
-
-#if 0
-	/* The following only makes sense if we completely disallow
-	   Extension Mechanisms for DNS (RFC 2671). */
-	if (hdr->arcount) {
-		DEBUG_MSG("Query has a non-empty additional section!\n");
-		res=RC_FORMAT;
-		goto error_reply;
-	}
-#endif
-	{
-		unsigned char *ptr;
-		size_t sz;
-		uint16_t arcount;
-		res=decode_query(data,rlen,&ptr,&sz,&ql);
-		if(res!=RC_OK) {
-			if(res==RC_TRUNC) {
-				if(!hdr->tc || llist_isempty(&ql)) {
-					res=RC_FORMAT;
-					goto free_ql_error_reply;
-				}
-			}
-			else
-				goto error_reply;
-		}
-
-		if ((arcount=ntohs(hdr->arcount))) {
-			int numoptrr= 0;
-			DEBUG_MSG("Query has a non-empty additional section: "
-				  "checking for OPT pseudo-RR.\n");
-			if(res==RC_TRUNC) {
-				DEBUG_MSG("Additional section cannot be read due to truncation!\n");
-				res=RC_FORMAT;
-				goto free_ql_error_reply;
-			}
-			res=decode_query_additional(data,rlen,ptr,sz,arcount, &numoptrr, &ednsinfo);
-			if(!(res==RC_OK || (res==RC_TRUNC && hdr->tc))) {
-				res=RC_FORMAT;
-				goto free_ql_error_reply;
-			}
-			if(numoptrr) {
-#if DEBUG>0
-				if(numoptrr!=1) {
-					DEBUG_MSG("Additional section in query contains %d OPT pseudo-RRs!\n", numoptrr);
-				}
-#endif
-				if(ednsinfo.version!=0) {
-					DEBUG_MSG("Query contains unsupported EDNS version %d!\n", ednsinfo.version);
-					res=RC_BADVERS;
-					goto free_ql_error_reply;
-				}
-				if(ednsinfo.rcode!=0) {
-					DEBUG_MSG("Query contains non-zero EDNS rcode (%d)!\n", ednsinfo.rcode);
-					res=RC_FORMAT;
-					goto free_ql_error_reply;
-				}
-				DEBUG_MSG("Query contains OPT pseudosection: EDNS udp size = %u, flag DO=%u\n",
-					  ednsinfo.udpsize, ednsinfo.do_flg);
-				ednsinfop = &ednsinfo;
-				if(udp && ednsinfo.udpsize>UDP_BUFSIZE) {
-					unsigned udpbufsize = global.udpbufsize;
-					if(udpbufsize > ednsinfo.udpsize)
-						udpbufsize = ednsinfo.udpsize;
-					*udp = udpbufsize;
-				}
-			}
-		}
-	}
-
-#if DEBUG>0
-	if (debug_p) {
-		if(!llist_isempty(&ql)) {
-			dns_queryel_t *qe;
-			DEBUG_MSG("Questions are:\n");
-			for (qe=llist_first(&ql); qe; qe=llist_next(qe)) {
-				DEBUG_RHN_MSG("\tqc=%s (%u), qt=%s (%u), query=\"%s\"\n",
-					      get_cname(qe->qclass),qe->qclass,get_tname(qe->qtype),qe->qtype,RHN2STR(qe->query));
-			}
-		}
-		else {
-			DEBUG_MSG("Query contains no questions.\n");
-		}
-	}
-#endif
-
-	if (llist_isempty(&ql)) {
-		res=RC_FORMAT;
-		goto error_reply;
-	}
-	if (!(ans=compose_answer(&ql, hdr, rlenp, ednsinfop, udp, rcodep))) {
-		/* An out of memory condition or similar could cause NULL output. Send failure notification */
-		res=RC_SERVFAIL;
-		goto free_ql_error_reply;
-	}
-	llist_free(&ql);
-	return ans;
-
- free_ql_error_reply:
-	llist_free(&ql);
- error_reply:
-	*rlenp=sizeof(dns_hdr_t);
-	{
-		size_t allocsz = sizeof(dns_msg_t);
-		if(res&~0xf)
-			allocsz += sizeof_opt_pseudo_rr;
-		ans= (dns_msg_t *)pdnsd_malloc(allocsz);
-		if (ans) {
-			mk_error_reply(hdr->id,rlen>=3?hdr->opcode:OP_QUERY,res,&ans->hdr);
-			if(res&~0xf)
-				add_opt_pseudo_rr(&ans,rlenp,&allocsz,
-						  global.udpbufsize,res,0,0);
-		}
-		else if (++da_mem_errs<=MEM_MAX_ERRS) {
-			log_error("Out of memory in query processing.");
-		}
-	}
-	if(rcodep) *rcodep= res;
-	return ans;
-}
-
-/*
- * Called by *_answer_thread exit handler to clean up process count.
- */
-inline static void decrease_procs()
-{
-
-	pthread_mutex_lock(&proc_lock);
-	procs--;
-	qprocs--;
-	pthread_mutex_unlock(&proc_lock);
-}
-
-static void udp_answer_thread_cleanup(void *data)
-{
-	pdnsd_free(data);
-	decrease_procs();
-}
-
-/*
- * A thread opened to answer a query transmitted via udp. Data is a pointer to the structure udp_buf_t that
- * contains the received data and various other parameters.
- * After the query is answered, the thread terminates
- * XXX: data must point to a correctly aligned buffer
- */
-static void *udp_answer_thread(void *data)
-{
-	struct msghdr msg;
-	struct iovec v;
-	struct cmsghdr *cmsg;
-#if defined(SRC_ADDR_DISC)
-	char ctrl[CMSG_SPACE(sizeof(pkt_info_t))];
-#endif
-	size_t rlen=((udp_buf_t *)data)->len;
-	unsigned udpmaxrespsize = UDP_BUFSIZE;
-	/* XXX: process_query is assigned to this, this mallocs, so this points to aligned memory */
-	dns_msg_t *resp;
-	int rcode;
-	unsigned thrid;
-	pthread_cleanup_push(udp_answer_thread_cleanup, data);
-	THREAD_SIGINIT;
-
-	if (!global.strict_suid) {
-		if (!run_as(global.run_as)) {
-			pdnsd_exit();
-		}
-	}
-
-	for(;;) {
-		pthread_mutex_lock(&proc_lock);
-		if (procs<global.proc_limit)
-			break;
-		pthread_mutex_unlock(&proc_lock);
-		usleep_r(50000);
-	}
-	++procs;
-	thrid= ++thrid_cnt;
-	pthread_mutex_unlock(&proc_lock);
-
-#if DEBUG>0
-	if(debug_p) {
-		int err;
-		if ((err=pthread_setspecific(thrid_key, &thrid)) != 0) {
-			if(++da_misc_errs<=MISC_MAX_ERRS)
-				log_error("pthread_setspecific failed: %s",strerror(err));
-			/* pdnsd_exit(); */
-		}
-	}
-#endif
-
-	if (!(resp=process_query(((udp_buf_t *)data)->buf,&rlen,&udpmaxrespsize,&rcode))) {
-		/*
-		 * A return value of NULL is a fatal error that prohibits even the sending of an error message.
-		 * logging is already done. Just exit the thread now.
-		 */
-		pthread_exit(NULL); /* data freed by cleanup handler */
-	}
-	pthread_cleanup_push(free, resp);
-	if (rlen>udpmaxrespsize) {
-		rlen=udpmaxrespsize;
-		resp->hdr.tc=1; /*set truncated bit*/
-	}
-	DEBUG_MSG("Outbound msg len %li, tc=%u, rc=\"%s\"\n",(long)rlen,resp->hdr.tc,get_ename(rcode));
-
-	v.iov_base=(char *)&resp->hdr;
-	v.iov_len=rlen;
-	msg.msg_iov=&v;
-	msg.msg_iovlen=1;
-#if (TARGET!=TARGET_CYGWIN)
-#if defined(SRC_ADDR_DISC)
-	msg.msg_control=ctrl;
-	msg.msg_controllen=sizeof(ctrl);
-#else
-	msg.msg_control=NULL;
-	msg.msg_controllen=0;
-#endif
-	msg.msg_flags=0;  /* to avoid warning message by Valgrind */
-#endif
-
-#ifdef ENABLE_IPV4
-	if (run_ipv4) {
-
-		msg.msg_name=&((udp_buf_t *)data)->addr.sin4;
-		msg.msg_namelen=sizeof(struct sockaddr_in);
-# if defined(SRC_ADDR_DISC)
-#  if (TARGET==TARGET_LINUX)
-		((udp_buf_t *)data)->pi.pi4.ipi_spec_dst=((udp_buf_t *)data)->pi.pi4.ipi_addr;
-		cmsg=CMSG_FIRSTHDR(&msg);
-		cmsg->cmsg_len=CMSG_LEN(sizeof(struct in_pktinfo));
-		cmsg->cmsg_level=SOL_IP;
-		cmsg->cmsg_type=IP_PKTINFO;
-		memcpy(CMSG_DATA(cmsg),&((udp_buf_t *)data)->pi.pi4,sizeof(struct in_pktinfo));
-		msg.msg_controllen=CMSG_SPACE(sizeof(struct in_pktinfo));
-#  else
-		cmsg=CMSG_FIRSTHDR(&msg);
-		cmsg->cmsg_len=CMSG_LEN(sizeof(struct in_addr));
-		cmsg->cmsg_level=IPPROTO_IP;
-		cmsg->cmsg_type=IP_RECVDSTADDR;
-		memcpy(CMSG_DATA(cmsg),&((udp_buf_t *)data)->pi.ai4,sizeof(struct in_addr));
-		msg.msg_controllen=CMSG_SPACE(sizeof(struct in_addr));
-#  endif
-# endif
-# if DEBUG>0
-		{
-			char buf[ADDRSTR_MAXLEN];
-
-			DEBUG_MSG("Answering to: %s", inet_ntop(AF_INET,&((udp_buf_t *)data)->addr.sin4.sin_addr,buf,ADDRSTR_MAXLEN));
-#  if defined(SRC_ADDR_DISC)
-#   if (TARGET==TARGET_LINUX)
-			DEBUG_MSGC(", source address: %s\n", inet_ntop(AF_INET,&((udp_buf_t *)data)->pi.pi4.ipi_spec_dst,buf,ADDRSTR_MAXLEN));
-#   else
-			DEBUG_MSGC(", source address: %s\n", inet_ntop(AF_INET,&((udp_buf_t *)data)->pi.ai4,buf,ADDRSTR_MAXLEN));
-#   endif
-#  else
-			DEBUG_MSGC("\n");
-#  endif
-		}
-# endif /* DEBUG */
-	}
-#endif
-#ifdef ENABLE_IPV6
-	ELSE_IPV6 {
-
-		msg.msg_name=&((udp_buf_t *)data)->addr.sin6;
-		msg.msg_namelen=sizeof(struct sockaddr_in6);
-# if defined(SRC_ADDR_DISC)
-		cmsg=CMSG_FIRSTHDR(&msg);
-		cmsg->cmsg_len=CMSG_LEN(sizeof(struct in6_pktinfo));
-		cmsg->cmsg_level=SOL_IPV6;
-		cmsg->cmsg_type=IPV6_PKTINFO;
-		memcpy(CMSG_DATA(cmsg),&((udp_buf_t *)data)->pi.pi6,sizeof(struct in6_pktinfo));
-		msg.msg_controllen=CMSG_SPACE(sizeof(struct in6_pktinfo));
-# endif
-# if DEBUG>0
-		{
-			char buf[ADDRSTR_MAXLEN];
-
-			DEBUG_MSG("Answering to: %s", inet_ntop(AF_INET6,&((udp_buf_t *)data)->addr.sin6.sin6_addr,buf,ADDRSTR_MAXLEN));
-#  if defined(SRC_ADDR_DISC)
-			DEBUG_MSGC(", source address: %s\n", inet_ntop(AF_INET6,&((udp_buf_t *)data)->pi.pi6.ipi6_addr,buf,ADDRSTR_MAXLEN));
-#  else
-			DEBUG_MSGC("\n");
-#  endif
-		}
-# endif /* DEBUG */
-	}
-#endif
-
-	/* Lock the socket, and clear the error flag before dropping the lock */
-#ifdef SOCKET_LOCKING
-	pthread_mutex_lock(&s_lock);
-#endif
-	if (sendmsg(((udp_buf_t *)data)->sock,&msg,0)<0) {
-#ifdef SOCKET_LOCKING
-		pthread_mutex_unlock(&s_lock);
-#endif
-		if (++da_udp_errs<=UDP_MAX_ERRS) {
-			log_error("Error in udp send: %s",strerror(errno));
-		}
-	} else {
-		int tmp;
-		socklen_t sl=sizeof(tmp);
-		getsockopt(((udp_buf_t *)data)->sock, SOL_SOCKET, SO_ERROR, &tmp, &sl);
-#ifdef SOCKET_LOCKING
-		pthread_mutex_unlock(&s_lock);
-#endif
-	}
-
-	pthread_cleanup_pop(1);  /* free(resp) */
-	pthread_cleanup_pop(1);  /* free(data) */
-	return NULL;
-}
-
-int init_udp_socket()
-{
-	int sock;
-	int so=1;
-	union {
-#ifdef ENABLE_IPV4
-		struct sockaddr_in sin4;
-#endif
-#ifdef ENABLE_IPV6
-		struct sockaddr_in6 sin6;
-#endif
-	} sin;
-	socklen_t sinl;
-
-#ifdef ENABLE_IPV4
-	if (run_ipv4) {
-		if ((sock=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1) {
-			log_error("Could not open udp socket: %s",strerror(errno));
-			return -1;
-		}
-		memset(&sin.sin4,0,sizeof(struct sockaddr_in));
-		sin.sin4.sin_family=AF_INET;
-		sin.sin4.sin_port=htons(global.port);
-		sin.sin4.sin_addr=global.a.ipv4;
-		SET_SOCKA_LEN4(sin.sin4);
-		sinl=sizeof(struct sockaddr_in);
-	}
-#endif
-#ifdef ENABLE_IPV6
-	ELSE_IPV6 {
-		if ((sock=socket(PF_INET6,SOCK_DGRAM,IPPROTO_UDP))==-1) {
-			log_error("Could not open udp socket: %s",strerror(errno));
-			return -1;
-		}
-		memset(&sin.sin6,0,sizeof(struct sockaddr_in6));
-		sin.sin6.sin6_family=AF_INET6;
-		sin.sin6.sin6_port=htons(global.port);
-		sin.sin6.sin6_flowinfo=IPV6_FLOWINFO;
-		sin.sin6.sin6_addr=global.a.ipv6;
-		SET_SOCKA_LEN6(sin.sin6);
-		sinl=sizeof(struct sockaddr_in6);
-	}
-#endif
-
-#ifdef SRC_ADDR_DISC
-# if (TARGET!=TARGET_LINUX)
-	if (run_ipv4) {
-# endif
-		/* The following must be set on any case because it also applies for IPv4 packets sent to
-		 * ipv6 addresses. */
-# if (TARGET==TARGET_LINUX )
-		if (setsockopt(sock,SOL_IP,IP_PKTINFO,&so,sizeof(so))!=0) {
-# else
-		if (setsockopt(sock,IPPROTO_IP,IP_RECVDSTADDR,&so,sizeof(so))!=0) {
-# endif
-			log_error("Could not set options on udp socket: %s",strerror(errno));
-			close(sock);
-			return -1;
-		}
-# if (TARGET!=TARGET_LINUX)
-	}
-# endif
-
-# ifdef ENABLE_IPV6
-	if (!run_ipv4) {
-		if (setsockopt(sock,SOL_IPV6,IPV6_RECVPKTINFO,&so,sizeof(so))!=0) {
-			log_error("Could not set options on udp socket: %s",strerror(errno));
-			close(sock);
-			return -1;
-		}
-	}
-# endif
-#endif
-	if (bind(sock,(struct sockaddr *)&sin,sinl)!=0) {
-		log_error("Could not bind to udp socket: %s",strerror(errno));
-		close(sock);
-		return -1;
-	}
-	return sock;
-}
-
-/*
- * Listen on the specified port for udp packets and answer them (each in a new thread to be nonblocking)
- * This was changed to support sending UDP packets with exactly the same source address as they were coming
- * to us, as required by rfc2181. Although this is a sensible requirement, it is slightly more difficult
- * and may introduce portability issues.
- */
-void *udp_server_thread(void *dummy)
-{
-	int sock;
-	ssize_t qlen;
-	pthread_t pt;
-	udp_buf_t *buf;
-	struct msghdr msg;
-	struct iovec v;
-	struct cmsghdr *cmsg;
-	char ctrl[512];
-#if defined(ENABLE_IPV6) && (TARGET==TARGET_LINUX)
-	struct in_pktinfo sip;
-#endif
-	/* (void)dummy; */ /* To inhibit "unused variable" warning */
-
-	THREAD_SIGINIT;
-
-
-	if (!global.strict_suid) {
-		if (!run_as(global.run_as)) {
-			pdnsd_exit();
-		}
-	}
-
-	sock=udp_socket;
-
-	while (1) {
-		int udpbufsize= global.udpbufsize;
-		if (!(buf=(udp_buf_t *)pdnsd_calloc(1,sizeof(udp_buf_t)+udpbufsize))) {
-			if (++da_mem_errs<=MEM_MAX_ERRS) {
-				log_error("Out of memory in request handling.");
-			}
-			break;
-		}
-
-		buf->sock=sock;
-
-		v.iov_base=(char *)buf->buf;
-		v.iov_len=udpbufsize;
-		msg.msg_iov=&v;
-		msg.msg_iovlen=1;
-#if (TARGET!=TARGET_CYGWIN)
-		msg.msg_control=ctrl;
-		msg.msg_controllen=sizeof(ctrl);
-#endif
-
-#if defined(SRC_ADDR_DISC)
-# ifdef ENABLE_IPV4
-		if (run_ipv4) {
-			msg.msg_name=&buf->addr.sin4;
-			msg.msg_namelen=sizeof(struct sockaddr_in);
-			if ((qlen=recvmsg(sock,&msg,0))>=0) {
-				cmsg=CMSG_FIRSTHDR(&msg);
-				while(cmsg) {
-#  if (TARGET==TARGET_LINUX)
-					if (cmsg->cmsg_level==SOL_IP && cmsg->cmsg_type==IP_PKTINFO) {
-						memcpy(&buf->pi.pi4,CMSG_DATA(cmsg),sizeof(struct in_pktinfo));
-						break;
-					}
-#  else
-					if (cmsg->cmsg_level==IPPROTO_IP && cmsg->cmsg_type==IP_RECVDSTADDR) {
-						memcpy(&buf->pi.ai4,CMSG_DATA(cmsg),sizeof(buf->pi.ai4));
-						break;
-					}
-#  endif
-					cmsg=CMSG_NXTHDR(&msg,cmsg);
-				}
-				if (!cmsg) {
-					if (++da_udp_errs<=UDP_MAX_ERRS) {
-						log_error("Could not discover udp destination address");
-					}
-					goto free_buf_continue;
-				}
-			} else if (errno!=EINTR) {
-				if (++da_udp_errs<=UDP_MAX_ERRS) {
-					log_error("error in UDP recv: %s", strerror(errno));
-				}
-			}
-		}
-# endif
-# ifdef ENABLE_IPV6
-		ELSE_IPV6 {
-			msg.msg_name=&buf->addr.sin6;
-			msg.msg_namelen=sizeof(struct sockaddr_in6);
-			if ((qlen=recvmsg(sock,&msg,0))>=0) {
-				cmsg=CMSG_FIRSTHDR(&msg);
-				while(cmsg) {
-					if (cmsg->cmsg_level==SOL_IPV6 && cmsg->cmsg_type==IPV6_PKTINFO) {
-						memcpy(&buf->pi.pi6,CMSG_DATA(cmsg),sizeof(struct in6_pktinfo));
-						break;
-					}
-					cmsg=CMSG_NXTHDR(&msg,cmsg);
-				}
-				if (!cmsg) {
-				       /* We might have an IPv4 Packet incoming on our IPv6 port, so we also have to
-				        * check for IPv4 sender addresses */
-					cmsg=CMSG_FIRSTHDR(&msg);
-					while(cmsg) {
-#  if (TARGET==TARGET_LINUX)
-						if (cmsg->cmsg_level==SOL_IP && cmsg->cmsg_type==IP_PKTINFO) {
-							memcpy(&sip,CMSG_DATA(cmsg),sizeof(sip));
-							IPV6_MAPIPV4(&sip.ipi_addr,&buf->pi.pi6.ipi6_addr);
-							buf->pi.pi6.ipi6_ifindex=sip.ipi_ifindex;
-							break;
-						}
-						/* FIXME: What about BSD? probably ok, but... */
-#  endif
-						cmsg=CMSG_NXTHDR(&msg,cmsg);
-					}
-					if (!cmsg) {
-						if (++da_udp_errs<=UDP_MAX_ERRS) {
-							log_error("Could not discover udp destination address");
-						}
-						goto free_buf_continue;
-					}
-				}
-			} else if (errno!=EINTR) {
-				if (++da_udp_errs<=UDP_MAX_ERRS) {
-					log_error("error in UDP recv: %s", strerror(errno));
-				}
-			}
-		}
-# endif
-#else /* !SRC_ADDR_DISC */
-# ifdef ENABLE_IPV4
-		if (run_ipv4) {
-			msg.msg_name=&buf->addr.sin4;
-			msg.msg_namelen=sizeof(struct sockaddr_in);
-		}
-# endif
-# ifdef ENABLE_IPV6
-		ELSE_IPV6 {
-			msg.msg_name=&buf->addr.sin6;
-			msg.msg_namelen=sizeof(struct sockaddr_in6);
-		}
-# endif
-		qlen=recvmsg(sock,&msg,0);
-		if (qlen<0 && errno!=EINTR) {
-			if (++da_udp_errs<=UDP_MAX_ERRS) {
-				log_error("error in UDP recv: %s", strerror(errno));
-			}
-		}
-#endif /* SRC_ADDR_DISC */
-
-		if (qlen>=0) {
-			pthread_mutex_lock(&proc_lock);
-			if (qprocs<global.proc_limit+global.procq_limit) {
-				int err;
-				++qprocs; ++spawned;
-				pthread_mutex_unlock(&proc_lock);
-				buf->len=qlen;
-				err=pthread_create(&pt,&attr_detached,udp_answer_thread,(void *)buf);
-				if(err==0)
-					continue;
-				if(++da_thrd_errs<=THRD_MAX_ERRS)
-					log_warn("pthread_create failed: %s",strerror(err));
-				/* If thread creation failed, free resources associated with it. */
-				pthread_mutex_lock(&proc_lock);
-				--qprocs; --spawned;
-			}
-			++dropped;
-			pthread_mutex_unlock(&proc_lock);
-		}
-	free_buf_continue:
-		pdnsd_free(buf);
-		usleep_r(50000);
-	}
-
-	udp_socket=-1;
-	close(sock);
-	udps_thrid=main_thrid;
-	if (tcp_socket==-1)
-	  pdnsd_exit();
-	return NULL;
-}
-
-#ifndef NO_TCP_SERVER
-
-static void tcp_answer_thread_cleanup(void *csock)
-{
-	close(*((int *)csock));
-	pdnsd_free(csock);
-	decrease_procs();
-}
-
-/*
- * Process a dns query via tcp. The argument is a pointer to the socket.
- */
-static void *tcp_answer_thread(void *csock)
-{
-	/* XXX: This should be OK, the original must be (and is) aligned */
-	int sock=*((int *)csock);
-	unsigned thrid;
-
-	pthread_cleanup_push(tcp_answer_thread_cleanup, csock);
-	THREAD_SIGINIT;
-
-	if (!global.strict_suid) {
-		if (!run_as(global.run_as)) {
-			pdnsd_exit();
-		}
-	}
-
-	for(;;) {
-		pthread_mutex_lock(&proc_lock);
-		if (procs<global.proc_limit)
-			break;
-		pthread_mutex_unlock(&proc_lock);
-		usleep_r(50000);
-	}
-	++procs;
-	thrid= ++thrid_cnt;
-	pthread_mutex_unlock(&proc_lock);
-
-#if DEBUG>0
-	if(debug_p) {
-		int err;
-		if ((err=pthread_setspecific(thrid_key, &thrid)) != 0) {
-			if(++da_misc_errs<=MISC_MAX_ERRS)
-				log_error("pthread_setspecific failed: %s",strerror(err));
-			/* pdnsd_exit(); */
-		}
-	}
-#endif
-#ifdef TCP_SUBSEQ
-
-	/* rfc1035 says we should process multiple queries in succession, so we are looping until
-	 * the socket is closed by the other side or by tcp timeout.
-	 * This in fact makes DoSing easier. If that is your concern, you should disable pdnsd's
-	 * TCP server.*/
-	for(;;)
-#endif
-	{
-		int rlen,olen;
-		size_t nlen;
-		unsigned char *buf;
-		dns_msg_t *resp;
-
-#ifdef NO_POLL
-		fd_set fds;
-		struct timeval tv;
-		FD_ZERO(&fds);
-		PDNSD_ASSERT(sock<FD_SETSIZE,"socket file descriptor exceeds FD_SETSIZE.");
-		FD_SET(sock, &fds);
-		tv.tv_usec=0;
-		tv.tv_sec=global.tcp_qtimeout;
-		if (select(sock+1,&fds,NULL,NULL,&tv)<=0)
-			pthread_exit(NULL); /* socket is closed by cleanup handler */
-#else
-		struct pollfd pfd;
-		pfd.fd=sock;
-		pfd.events=POLLIN;
-		if (poll(&pfd,1,global.tcp_qtimeout*1000)<=0)
-			pthread_exit(NULL); /* socket is closed by cleanup handler */
-#endif
-		{
-			ssize_t err;
-			uint16_t rlen_net;
-			if ((err=read(sock,&rlen_net,sizeof(rlen_net)))!=sizeof(rlen_net)) {
-				DEBUG_MSG("Error while reading from TCP client: %s\n",err==-1?strerror(errno):"incomplete data");
-				/*
-				 * If the socket timed or was closed before we even received the
-				 * query length, we cannot return an error. So exit silently.
-				 */
-				pthread_exit(NULL); /* socket is closed by cleanup handler */
-			}
-			rlen=ntohs(rlen_net);
-		}
-		if (rlen == 0) {
-			log_error("TCP zero size query received.\n");
-			pthread_exit(NULL);
-		}
-		buf=(unsigned char *)pdnsd_malloc(rlen);
-		if (!buf) {
-			if (++da_mem_errs<=MEM_MAX_ERRS) {
-				log_error("Out of memory in request handling.");
-			}
-			pthread_exit(NULL); /* socket is closed by cleanup handler */
-		}
-		pthread_cleanup_push(free, buf);
-
-		olen=0;
-		while(olen<rlen) {
-			int rv;
-#ifdef NO_POLL
-			FD_ZERO(&fds);
-			FD_SET(sock, &fds);
-			tv.tv_usec=0;
-			tv.tv_sec=global.tcp_qtimeout;
-			if (select(sock+1,&fds,NULL,NULL,&tv)<=0)
-				pthread_exit(NULL);  /* buf freed and socket closed by cleanup handlers */
-#else
-			pfd.fd=sock;
-			pfd.events=POLLIN;
-			if (poll(&pfd,1,global.tcp_qtimeout*1000)<=0)
-				pthread_exit(NULL);  /* buf freed and socket closed by cleanup handlers */
-#endif
-			rv=read(sock,buf+olen,rlen-olen);
-			if (rv<=0) {
-				DEBUG_MSG("Error while reading from TCP client: %s\n",rv==-1?strerror(errno):"incomplete data");
-				/*
-				 * If the promised length was not sent, we should return an error message,
-				 * but if read fails that way, it is unlikely that it will arrive. Nevertheless...
-				 */
-				if (olen>=2) { /* We need the id to send a valid reply. */
-					dns_msg_t err;
-					mk_error_reply(((dns_hdr_t*)buf)->id,
-						       olen>=3?((dns_hdr_t*)buf)->opcode:OP_QUERY,
-						       RC_FORMAT,
-						       &err.hdr);
-					err.len=htons(sizeof(dns_hdr_t));
-					write_all(sock,&err,sizeof(err)); /* error anyway. */
-				}
-				pthread_exit(NULL); /* buf freed and socket closed by cleanup handlers */
-			}
-			olen += rv;
-		}
-		nlen=rlen;
-		if (!(resp=process_query(buf,&nlen,NULL,NULL))) {
-			/*
-			 * A return value of NULL is a fatal error that prohibits even the sending of an error message.
-			 * logging is already done. Just exit the thread now.
-			 */
-			pthread_exit(NULL);
-		}
-		pthread_cleanup_pop(1);  /* free(buf) */
-		pthread_cleanup_push(free,resp);
-		{
-			int err; size_t rsize;
-			resp->len=htons(nlen);
-			rsize=dnsmsghdroffset+nlen;
-			if ((err=write_all(sock,resp,rsize))!=rsize) {
-				DEBUG_MSG("Error while writing to TCP client: %s\n",err==-1?strerror(errno):"unknown error");
-				pthread_exit(NULL); /* resp is freed and socket is closed by cleanup handlers */
-			}
-		}
-		pthread_cleanup_pop(1);  /* free(resp) */
-	}
-
-	/* socket is closed by cleanup handler */
-	pthread_cleanup_pop(1);
-	return NULL;
-}
-
-int init_tcp_socket()
-{
-	int sock;
-	union {
-#ifdef ENABLE_IPV4
-		struct sockaddr_in sin4;
-#endif
-#ifdef ENABLE_IPV6
-		struct sockaddr_in6 sin6;
-#endif
-	} sin;
-	socklen_t sinl;
-
-#ifdef ENABLE_IPV4
-	if (run_ipv4) {
-		if ((sock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP))==-1) {
-			log_error("Could not open tcp socket: %s",strerror(errno));
-			return -1;
-		}
-		memset(&sin.sin4,0,sizeof(struct sockaddr_in));
-		sin.sin4.sin_family=AF_INET;
-		sin.sin4.sin_port=htons(global.port);
-		sin.sin4.sin_addr=global.a.ipv4;
-		SET_SOCKA_LEN4(sin.sin4);
-		sinl=sizeof(struct sockaddr_in);
-	}
-#endif
-#ifdef ENABLE_IPV6
-	ELSE_IPV6 {
-		if ((sock=socket(PF_INET6,SOCK_STREAM,IPPROTO_TCP))==-1) {
-			log_error("Could not open tcp socket: %s",strerror(errno));
-			return -1;
-		}
-		memset(&sin.sin6,0,sizeof(struct sockaddr_in6));
-		sin.sin6.sin6_family=AF_INET6;
-		sin.sin6.sin6_port=htons(global.port);
-		sin.sin6.sin6_flowinfo=IPV6_FLOWINFO;
-		sin.sin6.sin6_addr=global.a.ipv6;
-		SET_SOCKA_LEN6(sin.sin6);
-		sinl=sizeof(struct sockaddr_in6);
-	}
-#endif
-	{
-		int so=1;
-		/* The SO_REUSEADDR socket option tells the kernel that even if this port
-		   is busy (in the TIME_WAIT state), go ahead and reuse it anyway. If it
-		   is busy, but with another state, we should get an address already in
-		   use error. It is useful if pdnsd is shut down, and then restarted right
-		   away while sockets are still active on its port. There is a slight risk
-		   though. If unexpected data comes in, it may confuse pdnsd, but while
-		   this is possible, it is not likely.
-		*/
-		if(setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&so,sizeof(so)))
-			log_warn("Could not set options on tcp socket: %s",strerror(errno));
-	}
-	if (bind(sock,(struct sockaddr *)&sin,sinl)) {
-		log_error("Could not bind tcp socket: %s",strerror(errno));
-		close(sock);
-		return -1;
-	}
-	return sock;
-}
-
-/*
- * Listen on the specified port for tcp connects and answer them (each in a new thread to be nonblocking)
- */
-void *tcp_server_thread(void *p)
-{
-	int sock;
-	pthread_t pt;
-	int *csock;
-
-	/* (void)p; */  /* To inhibit "unused variable" warning */
-
-	THREAD_SIGINIT;
-
-	if (!global.strict_suid) {
-		if (!run_as(global.run_as)) {
-			pdnsd_exit();
-		}
-	}
-
-	sock=tcp_socket;
-
-	if (listen(sock,5)) {
-		if (++da_tcp_errs<=TCP_MAX_ERRS) {
-			log_error("Could not listen on tcp socket: %s",strerror(errno));
-		}
-		goto close_sock_return;
-	}
-
-	while (1) {
-		if (!(csock=(int *)pdnsd_malloc(sizeof(int)))) {
-			if (++da_mem_errs<=MEM_MAX_ERRS) {
-				log_error("Out of memory in request handling.");
-			}
-			break;
-		}
-		if ((*csock=accept(sock,NULL,0))==-1) {
-			if (errno!=EINTR && ++da_tcp_errs<=TCP_MAX_ERRS) {
-				log_error("tcp accept failed: %s",strerror(errno));
-			}
-		} else {
-			/*
-			 * With creating a new thread, we follow recommendations
-			 * in rfc1035 not to block
-			 */
-			pthread_mutex_lock(&proc_lock);
-			if (qprocs<global.proc_limit+global.procq_limit) {
-				int err;
-				++qprocs; ++spawned;
-				pthread_mutex_unlock(&proc_lock);
-				err=pthread_create(&pt,&attr_detached,tcp_answer_thread,(void *)csock);
-				if(err==0)
-					continue;
-				if(++da_thrd_errs<=THRD_MAX_ERRS)
-					log_warn("pthread_create failed: %s",strerror(err));
-				/* If thread creation failed, free resources associated with it. */
-				pthread_mutex_lock(&proc_lock);
-				--qprocs; --spawned;
-			}
-			++dropped;
-			pthread_mutex_unlock(&proc_lock);
-			close(*csock);
-		}
-		pdnsd_free(csock);
-		usleep_r(50000);
-	}
- close_sock_return:
-	tcp_socket=-1;
-	close(sock);
-	tcps_thrid=main_thrid;
-	if (udp_socket==-1)
-		pdnsd_exit();
-	return NULL;
-}
-#endif
-
-/*
- * Starts the tcp server thread and the udp server thread. Both threads
- * are not terminated, so only a signal can interrupt the server.
- */
-void start_dns_servers()
-{
-
-#ifndef NO_TCP_SERVER
-	if (tcp_socket!=-1) {
-		pthread_t tcps;
-
-		if (pthread_create(&tcps,&attr_detached,tcp_server_thread,NULL)) {
-			log_error("Could not create TCP server thread. Exiting.");
-			pdnsd_exit();
-		} else {
-			tcps_thrid=tcps;
-			log_info(2,"TCP server thread started.");
-		}
-	}
-#endif
-
-	if (udp_socket!=-1) {
-		pthread_t udps;
-
-		if (pthread_create(&udps,&attr_detached,udp_server_thread,NULL)) {
-			log_error("Could not create UDP server thread. Exiting.");
-			pdnsd_exit();
-		} else {
-			udps_thrid=udps;
-			log_info(2,"UDP server thread started.");
-		}
-	}
-}
-
-
-/* Report the thread status to the file descriptor f, for the status fifo (see status.c) */
-int report_thread_stat(int f)
-{
-	unsigned long nspawned,ndropped;
-	int nactive,ncurrent,nqueued;
-
-	/* The thread counters are volatile, so we will make copies
-	   under locked conditions to make sure we get consistent data.
-	*/
-	pthread_mutex_lock(&proc_lock);
-	nspawned=spawned; ndropped=dropped;
-	nactive=procs; ncurrent=qprocs;
-	nqueued=ncurrent-nactive;
-	pthread_mutex_unlock(&proc_lock);
-
-	fsprintf_or_return(f,"\nThread status:\n==============\n");
-	if(!pthread_equal(servstat_thrid,main_thrid))
-		fsprintf_or_return(f,"server status thread is running.\n");
-	if(!pthread_equal(statsock_thrid,main_thrid))
-		fsprintf_or_return(f,"pdnsd control thread is running.\n");
-	if(!pthread_equal(tcps_thrid,main_thrid))
-		fsprintf_or_return(f,"tcp server thread is running.\n");
-	if(!pthread_equal(udps_thrid,main_thrid))
-		fsprintf_or_return(f,"udp server thread is running.\n");
-	fsprintf_or_return(f,"%lu query threads spawned in total (%lu queries dropped).\n",
-			   nspawned,ndropped);
-	fsprintf_or_return(f,"%i running query threads (%i active, %i queued).\n",
-			   ncurrent,nactive,nqueued);
-	return 0;
-}
-
diff --git a/jni/pdnsd/src/dns_answer.h b/jni/pdnsd/src/dns_answer.h
deleted file mode 100644
index 9d67b5b..0000000
--- a/jni/pdnsd/src/dns_answer.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* dns_answer.h - Receive and process icoming dns queries.
-
-   Copyright (C) 2000 Thomas Moestl
-   Copyright (C) 2005 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef DNS_ANSWER_H
-#define DNS_ANSWER_H
-
-#include <config.h>
-
-/* --- from main.c */
-extern pthread_t main_thrid,servstat_thrid,statsock_thrid,tcps_thrid,udps_thrid;
-extern volatile int tcp_socket;
-extern volatile int udp_socket;
-/* --- */
-
-int init_udp_socket(void);
-int init_tcp_socket(void);
-void start_dns_servers(void);
-int report_thread_stat(int f);
-
-#endif
diff --git a/jni/pdnsd/src/dns_query.c b/jni/pdnsd/src/dns_query.c
deleted file mode 100644
index 0b6c9c0..0000000
--- a/jni/pdnsd/src/dns_query.c
+++ /dev/null
@@ -1,3798 +0,0 @@
-/* dns_query.c - Execute outgoing dns queries and write entries to cache
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <sys/types.h>
-#ifdef HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-#include <stdlib.h>
-#include <netdb.h>
-#include <errno.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <ctype.h>
-#include "list.h"
-#include "consts.h"
-#include "ipvers.h"
-#include "dns_query.h"
-#include "cache.h"
-#include "dns.h"
-#include "conff.h"
-#include "servers.h"
-#include "helpers.h"
-#include "netdev.h"
-#include "error.h"
-#include "debug.h"
-
-
-#if defined(NO_TCP_QUERIES) && M_PRESET!=UDP_ONLY
-# error "You may not define NO_TCP_QUERIES when M_PRESET is not set to UDP_ONLY"
-#endif
-#if defined(NO_UDP_QUERIES) && M_PRESET!=TCP_ONLY
-# error "You may not define NO_UDP_QUERIES when M_PRESET is not set to TCP_ONLY"
-#endif
-
-/* data type to hold lists of IP addresses (both v4 and v6)
-   The allocated size should be:
-     sizeof(rejectlist_t) + na4*sizeof(addr4maskpair_t) + na6*sizeof(addr6maskpair_t)
-*/
-typedef struct rejectlist_s {
-	struct rejectlist_s *next;
-	short               policy;
-	short               inherit;
-	int                 na4;
-#if ALLOW_LOCAL_AAAA
-	int                 na6;
-	addr6maskpair_t     rdata[0];  /* dummy array for alignment */
-#else
-	addr4maskpair_t     rdata[0];
-#endif
-} rejectlist_t;
-
-/* --- structures and state constants for parallel query */
-typedef struct {
-	union {
-#ifdef ENABLE_IPV4
-		struct sockaddr_in  sin4;
-#endif
-#ifdef ENABLE_IPV6
-		struct sockaddr_in6 sin6;
-#endif
-	}                   a;
-#ifdef ENABLE_IPV6
-	struct in_addr      a4fallback;
-#endif
-	time_t              timeout;
-	unsigned short      flags;
-	short               state;
-	short               qm;
-	char                nocache;
-        char                auth_serv;
-	char                lean_query;
-	char                edns_query;
-	char                needs_testing;
-	char                trusted;
-	char                aa;
-	char                tc;
-	char                ra;
-	char                failed;
-	const unsigned char *nsdomain;
-	rejectlist_t        *rejectlist;
-	/* internal state for p_exec_query */
-	int                 sock;
-#if 0
-	dns_cent_t          nent;
-	dns_cent_t          servent;
-#endif
-	unsigned short      transl;
-	unsigned short      recvl;
-#ifndef NO_TCP_QUERIES
-	int                 iolen;  /* number of bytes written or read up to now */
-#endif
-	dns_msg_t           *msg;
-	dns_hdr_t           *recvbuf;
-	unsigned short      myrid;
-	int                 s_errno;
-} query_stat_t;
-typedef DYNAMIC_ARRAY(query_stat_t) *query_stat_array;
-
-/* Some macros for handling data in reject lists
-   Perhaps we should use inline functions instead of macros.
-*/
-#define have_rejectlist(st) ((st)->rejectlist!=NULL)
-#define inherit_rejectlist(st) ((st)->rejectlist && (st)->rejectlist->inherit)
-#define reject_policy(st)   ((st)->rejectlist->policy)
-#define nreject_a4(st)      ((st)->rejectlist->na4)
-#if ALLOW_LOCAL_AAAA
-#define nreject_a6(st)      ((st)->rejectlist->na6)
-#define rejectlist_a6(st)   ((addr6maskpair_t *)(st)->rejectlist->rdata)
-#define rejectlist_a4(st)   ((addr4maskpair_t *)(rejectlist_a6(st)+nreject_a6(st)))
-#else
-#define rejectlist_a4(st)   ((addr4maskpair_t *)(st)->rejectlist->rdata)
-#endif
-
-#define QS_INITIAL       0  /* This is the initial state. Set this before starting. */
-
-#define QS_TCPINITIAL    1  /* Start a TCP query. */
-#define QS_TCPWRITE      2  /* Waiting to write data. */
-#define QS_TCPREAD       3  /* Waiting to read data. */
-
-#define QS_UDPINITIAL    4  /* Start a UDP query */
-#define QS_UDPRECEIVE    5  /* UDP query transmitted, waiting for response. */
-
-#define QS_QUERY_CASES   case QS_TCPINITIAL: case QS_TCPWRITE: case QS_TCPREAD: case QS_UDPINITIAL: case QS_UDPRECEIVE
-
-#define QS_CANCELED      7  /* query was started, but canceled before completion */
-#define QS_DONE          8  /* done, resources freed, result is in stat_t */
-
-
-/* Events to be polled/selected for */
-#define QS_WRITE_CASES case QS_TCPWRITE
-#define QS_READ_CASES  case QS_TCPREAD: case QS_UDPRECEIVE
-
-/*
- * This is for error handling to prevent spewing the log files.
- * Races do not really matter here, so no locks.
- */
-#define MAXPOLLERRS 10
-static volatile unsigned long poll_errs=0;
-
-#define SOCK_ADDR(p) ((struct sockaddr *) &(p)->a)
-
-#ifdef SIN_LEN
-#undef SIN_LEN
-#endif
-
-#define SIN_LEN SEL_IPVER(sizeof(struct sockaddr_in),sizeof(struct sockaddr_in6))
-#define PDNSD_A(p) SEL_IPVER(((pdnsd_a *) &(p)->a.sin4.sin_addr),((pdnsd_a *) &(p)->a.sin6.sin6_addr))
-
-#ifndef EWOULDBLOCK
-#define EWOULDBLOCK EAGAIN
-#endif
-
-typedef DYNAMIC_ARRAY(dns_cent_t) *dns_cent_array;
-
-
-/*
- * Take the data from an RR and add it to an array of cache entries.
- * The return value will be RC_OK in case of success,
- * RC_SERVFAIL in case there is a problem with inconsistent ttl timestamps
- * or RC_FATALERR in case of a memory allocation failure.
- */
-static int rr_to_cache(dns_cent_array *centa, unsigned char *oname, int tp, time_t ttl,
-		       unsigned dlen, void *data, unsigned flags, time_t queryts)
-{
-	int i,n;
-	dns_cent_t *cent;
-
-	n=DA_NEL(*centa);
-	for(i=0;i<n;++i) {
-		cent=&DA_INDEX(*centa,i);
-		if (rhnicmp(cent->qname,oname)) {
-			int retval=RC_OK;
-			/* We already have an entry in the array for this name. add_cent_rr is sufficient.
-			   However, make sure there are no double records. This is done by add_cent_rr */
-#ifdef RFC2181_ME_HARDER
-			rr_set_t *rrset= getrrset(cent,tp);
-			if (rrset && rrset->ttl!=ttl)
-				retval= RC_SERVFAIL;
-#endif
-			return add_cent_rr(cent,tp,ttl,queryts,flags,dlen,data  DBG1)? retval: RC_FATALERR;
-		}
-	}
-
-	/* Add a new entry to the array for this name. */
-	if (!(*centa=DA_GROW1_F(*centa,free_cent0)))
-		return RC_FATALERR;
-	cent=&DA_LAST(*centa);
-	if (!init_cent(cent,oname, 0, 0, 0  DBG1)) {
-		*centa=DA_RESIZE(*centa,n);
-		return RC_FATALERR;
-	}
-	return add_cent_rr(cent,tp,ttl,queryts,flags,dlen,data  DBG1)? RC_OK: RC_FATALERR;
-}
-
-/*
- * Takes a pointer (ptr) to a buffer with recnum rrs,decodes them and enters
- * them into an array of cache entries. *ptr is modified to point after the last
- * rr, and *lcnt is decremented by the size of the rrs.
- *
- * *numopt is incremented with the number of OPT pseudo RRs found (should be at most one).
- * The structure pointed to by ep is filled with the information of the first OPT pseudo RR found,
- * but only if *numopt was set to zero before the call.
- *
- * The return value will be either RC_OK (which indicates success),
- * or one of the failure codes RC_FORMAT, RC_TRUNC, RC_SERVFAIL or RC_FATALERR
- * (the latter indicates a memory allocation failure).
-*/
-static int rrs2cent(unsigned char *msg, size_t msgsz, unsigned char **ptr, size_t *lcnt, int recnum,
-		    unsigned flags, time_t queryts, dns_cent_array *centa, int *numopt, edns_info_t *ep)
-{
-	int rc, retval=RC_OK;
-	int i;
-	uint16_t type,class; uint32_t ttl; uint16_t rdlength;
-
-	for (i=0;i<recnum;i++) {
-		unsigned char oname[DNSNAMEBUFSIZE], *ttlp;
-		unsigned int len;
-		if ((rc=decompress_name(msg, msgsz, ptr, lcnt, oname, &len))!=RC_OK) {
-			return rc;
-		}
-		if (*lcnt<sizeof_rr_hdr_t) {
-			return RC_TRUNC;
-		}
-		*lcnt -= sizeof_rr_hdr_t;
-		GETINT16(type,*ptr);
-		GETINT16(class,*ptr);
-		ttlp= *ptr;   /* Remember pointer to ttl field. */
-		GETINT32(ttl,*ptr);
-		GETINT16(rdlength,*ptr);
-		if (*lcnt<rdlength) {
-			return RC_TRUNC;
-		}
-
-		if(type==T_OPT) {
-			/* Found OPT pseudo-RR */
-			if((*numopt)++ == 0) {
-#if DEBUG>0
-				if(oname[0]!=0) {
-					DEBUG_MSG("rrs2cent: name in OPT record not empty!\n");
-				}
-#endif
-				ep->udpsize= class;
-				ep->rcode= ((uint16_t)ttlp[0]<<4) | ((dns_hdr_t *)msg)->rcode;
-				ep->version= ttlp[1];
-				ep->do_flg= (ttlp[2]>>7)&1;
-#if DEBUG>0
-				if(debug_p) {
-					unsigned int Zflags= ((uint16_t)ttlp[2]<<8) | ttlp[3];
-					if(Zflags & 0x7fff) {
-						DEBUG_MSG("rrs2cent: Z field contains unknown nonzero bits (%04x).\n",
-							  Zflags);
-					}
-				}
-				if(rdlength) {
-					DEBUG_MSG("rrs2cent: RDATA field in OPT record not empty!\n");
-				}
-#endif
-			}
-			else {
-				DEBUG_MSG("rrs2cent: ingnoring surplus OPT record.\n");
-			}
-		}
-		else if (!(PDNSD_NOT_CACHED_TYPE(type) || class!=C_IN)) {
-			/* Some types contain names that may be compressed, so these need to be processed.
-			 * The other records are taken as they are. */
-
-			size_t blcnt=rdlength;
-			unsigned char *bptr=*ptr;  /* make backup for decompression, because rdlength is the
-						      authoritative record length and pointer and size will be
-						      modified by decompress_name. */
-			unsigned char *nptr;
-			unsigned int slen;
-
-			switch (type) {
-			case T_A:
-				/* Validate types we use internally */
-				if(rdlength!=4) goto invalid_length;
-				goto default_case;
-
-			case T_CNAME:
-			case T_MB:
-			case T_MD:
-			case T_MF:
-			case T_MG:
-			case T_MR:
-			case T_NS:
-			case T_PTR:
-			{
-				unsigned char db[DNSNAMEBUFSIZE];
-				if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, db, &len))!=RC_OK)
-					return rc==RC_TRUNC?RC_FORMAT:rc;
-				if (blcnt!=0)
-					goto trailing_junk;
-				if ((rc=rr_to_cache(centa, oname, type, ttl, len, db, flags,queryts))!=RC_OK) {
-					if(rc==RC_FATALERR)
-						return rc;
-					retval=rc;
-				}
-			}
-				break;
-
-#if IS_CACHED_MINFO || IS_CACHED_RP
-#if IS_CACHED_MINFO
-			case T_MINFO:
-#endif
-#if IS_CACHED_RP
-			case T_RP:
-#endif
-			{
-				unsigned char db[DNSNAMEBUFSIZE+DNSNAMEBUFSIZE];
-				nptr=db;
-				if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
-					return rc==RC_TRUNC?RC_FORMAT:rc;
-				/* PDNSD_ASSERT(len + DNSNAMEBUFSIZE <= sizeof(db), "T_MINFO/T_RP: buffer limit reached"); */
-				nptr+=len;
-				slen=len;
-				if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
-					return rc==RC_TRUNC?RC_FORMAT:rc;
-				/*nptr+=len;*/
-				slen+=len;
-				if (blcnt!=0)
-					goto trailing_junk;
-				if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
-					if(rc==RC_FATALERR)
-						return rc;
-					retval=rc;
-				}
-			}
-				break;
-#endif
-			case T_MX:
-#if IS_CACHED_AFSDB
-			case T_AFSDB:
-#endif
-#if IS_CACHED_RT
-			case T_RT:
-#endif
-#if IS_CACHED_KX
-			case T_KX:
-#endif
-			{
-				unsigned char db[2+DNSNAMEBUFSIZE];
-				if (blcnt<2)
-					goto record_too_short;
-				memcpy(db,bptr,2); /* copy the preference field*/
-				blcnt-=2;
-				bptr+=2;
-				nptr=db+2;
-				slen=2;
-				if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
-					return rc==RC_TRUNC?RC_FORMAT:rc;
-				/*nptr+=len;*/
-				slen+=len;
-				if (blcnt!=0)
-					goto trailing_junk;
-				if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
-					if(rc==RC_FATALERR)
-						return rc;
-					retval=rc;
-				}
-			}
-				break;
-
-			case T_SOA:
-			{
-				unsigned char db[DNSNAMEBUFSIZE+DNSNAMEBUFSIZE+20];
-				nptr=db;
-				if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
-					return rc==RC_TRUNC?RC_FORMAT:rc;
-				/* PDNSD_ASSERT(len + DNSNAMEBUFSIZE <= sizeof(db), "T_SOA: buffer limit reached"); */
-				nptr+=len;
-				slen=len;
-				if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
-					return rc==RC_TRUNC?RC_FORMAT:rc;
-				nptr+=len;
-				slen+=len;
-				/* PDNSD_ASSERT(slen + 20 <= sizeof(db), "T_SOA: buffer limit reached"); */
-				if (blcnt<20)
-					goto record_too_short;
-				memcpy(nptr,bptr,20); /*copy the rest of the SOA record*/
-				blcnt-=20;
-				slen+=20;
-				if (blcnt!=0)
-					goto trailing_junk;
-				if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
-					if(rc==RC_FATALERR)
-						return rc;
-					retval=rc;
-				}
-			}
-				break;
-#if IS_CACHED_AAAA
-			case T_AAAA:
-				/* Validate types we use internally */
-				if(rdlength!=16) goto invalid_length;
-				goto default_case;
-#endif
-#if IS_CACHED_PX
-			case T_PX:
-			{
-				unsigned char db[2+DNSNAMEBUFSIZE+DNSNAMEBUFSIZE];
-				if (blcnt<2)
-					goto record_too_short;
-				memcpy(db,bptr,2); /* copy the preference field*/
-				blcnt-=2;
-				bptr+=2;
-				nptr=db+2;
-				slen=2;
-				if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
-					return rc==RC_TRUNC?RC_FORMAT:rc;
-				/* PDNSD_ASSERT(len + DNSNAMEBUFSIZE <= sizeof(db), "T_PX: buffer limit reached"); */
-				nptr+=len;
-				slen+=len;
-				if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
-					return rc==RC_TRUNC?RC_FORMAT:rc;
-				/* nptr+=len; */
-				slen+=len;
-				if (blcnt!=0)
-					goto trailing_junk;
-				if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
-					if(rc==RC_FATALERR)
-						return rc;
-					retval=rc;
-				}
-			}
-				break;
-#endif
-#if IS_CACHED_SRV
-			case T_SRV:
-			{
-				unsigned char db[6+DNSNAMEBUFSIZE];
-				if (blcnt<6)
-					goto record_too_short;
-				memcpy(db,bptr,6);
-				blcnt-=6;
-				bptr+=6;
-				nptr=db+6;
-				slen=6;
-				if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
-					return rc==RC_TRUNC?RC_FORMAT:rc;
-				/*nptr+=len;*/
-				slen+=len;
-				if (blcnt!=0)
-					goto trailing_junk;
-				if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
-					if(rc==RC_FATALERR)
-						return rc;
-					retval=rc;
-				}
-			}
-				break;
-#endif
-#if IS_CACHED_NXT
-			case T_NXT:
-			{
-				unsigned char db[1040];
-				nptr=db;
-				if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
-					return rc==RC_TRUNC?RC_FORMAT:rc;
-				nptr+=len;
-				slen=len+blcnt;
-				if (slen > sizeof(db))
-					goto buffer_overflow;
-				memcpy(nptr,bptr,blcnt);
-				if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
-					if(rc==RC_FATALERR)
-						return rc;
-					retval=rc;
-				}
-			}
-				break;
-#endif
-#if IS_CACHED_NAPTR
-			case T_NAPTR:
-			{
-				int j;
-				unsigned char db[4 + 3*256 + DNSNAMEBUFSIZE];
-				nptr=db;
-				/*
-				 * After the preference field, three text strings follow, the maximum length being 255
-				 * characters for each (this is ensured by the type of *bptr), plus one length byte for
-				 * each, so 3 * 256 = 786 in total. In addition, the name below is up to DNSNAMEBUFSIZE characters
-				 * in size, and the preference field is another 4 bytes in size, so the total length
-				 * that can be taken up is 1028 characters. This means that the whole record will always
-				 * fit into db.
-				 */
-				len=4;   /* also copy the preference field*/
-				for (j=0;j<3;j++) {
-					if (len>=blcnt)
-						goto record_too_short;
-					len += ((unsigned)bptr[len])+1;
-				}
-				if(len>blcnt)
-					goto record_too_short;
-				memcpy(nptr,bptr,len);
-				blcnt-=len;
-				bptr+=len;
-				nptr+=len;
-				slen=len;
-
-				/* PDNSD_ASSERT(slen+DNSNAMEBUFSIZE <= sizeof(db), "T_NAPTR: buffer limit reached (name)"); */
-				if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nptr, &len))!=RC_OK)
-					return rc==RC_TRUNC?RC_FORMAT:rc;
-				/*nptr+=len;*/
-				slen+=len;
-				if (blcnt!=0)
-					goto trailing_junk;
-				if ((rc=rr_to_cache(centa, oname, type, ttl, slen, db, flags,queryts))!=RC_OK) {
-					if(rc==RC_FATALERR)
-						return rc;
-					retval=rc;
-				}
-			}
-				break;
-#endif
-#if IS_CACHED_IPSECKEY
-			case T_IPSECKEY:
-			{
-				unsigned gwtp;
-				/* An IPSECKEY record can contain a domain name, so we do some sanity checks just to be sure. */
-				if(blcnt<3) goto record_too_short;
-				gwtp= bptr[1];
-				blcnt -= 3;
-				bptr += 3;
-				switch(gwtp) {
-				case 0: goto default_case;
-				case 1: /* There should be enough room for IPv4 address. */
-					if(blcnt<4) goto record_too_short;
-					goto default_case;
-				case 2: /* There should be enough room for IPv6 address. */
-					if(blcnt<16) goto record_too_short;
-					goto default_case;
-				case 3: /* Check that domain name is not compressed. */
-					if(isnormalencdomname(bptr,blcnt)) goto default_case;
-					/* It appears the name is compressed even though RFC 4025
-					   says it shouldn't be. For the sake of flexibility, we
-					   try to decompress it anyway. */
-					{
-						unsigned char *rbuf, nmbuf[DNSNAMEBUFSIZE];
-						if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nmbuf, &len))!=RC_OK)
-							return rc==RC_TRUNC?RC_FORMAT:rc;
-						slen=3+len+blcnt;
-						rbuf=malloc(slen);
-						if(!rbuf) return RC_FATALERR;
-						nptr=mempcpy(rbuf,*ptr,3);
-						nptr=mempcpy(nptr,nmbuf,len);
-						memcpy(nptr,bptr,blcnt);
-						rc=rr_to_cache(centa, oname, type, ttl, slen, rbuf, flags,queryts);
-						free(rbuf);
-						if(rc!=RC_OK) {
-							if(rc==RC_FATALERR)
-								return rc;
-							retval=rc;
-						}
-					}
-					break;
-				default:
-					DEBUG_MSG("rrs2cent: %s record contains unsupported gateway type (%u).\n",getrrtpname(type),gwtp);
-					return RC_FORMAT;
-				}
-			}
-				break;
-#endif
-#if IS_CACHED_RRSIG
-			case T_RRSIG:
-				/* An RRSIG record contains a domain name, so we do some sanity checks just to be sure. */
-				if(blcnt<18) goto record_too_short;
-				blcnt -= 18;
-				bptr += 18;
-				if(isnormalencdomname(bptr,blcnt)) goto default_case;
-				/* It appears the name is compressed even though RFC 4034
-				   says it shouldn't be. For the sake of flexibility, we
-				   try to decompress it anyway. */
-				{
-					unsigned char *rbuf, nmbuf[DNSNAMEBUFSIZE];
-					if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nmbuf, &len))!=RC_OK)
-						return rc==RC_TRUNC?RC_FORMAT:rc;
-					slen=18+len+blcnt;
-					rbuf=malloc(slen);
-					if(!rbuf) return RC_FATALERR;
-					nptr=mempcpy(rbuf,*ptr,18);
-					nptr=mempcpy(nptr,nmbuf,len);
-					memcpy(nptr,bptr,blcnt);
-					rc=rr_to_cache(centa, oname, type, ttl, slen, rbuf, flags,queryts);
-					free(rbuf);
-					if(rc!=RC_OK) {
-						if(rc==RC_FATALERR)
-							return rc;
-						retval=rc;
-					}
-				}
-				break;
-#endif
-#if IS_CACHED_NSEC
-			case T_NSEC:
-				/* An NSEC record contains a domain name, so we do some sanity checks just to be sure. */
-				if(isnormalencdomname(bptr,blcnt)) goto default_case;
-				/* It appears the name is compressed even though RFC 4034
-				   says it shouldn't be. For the sake of flexibility, we
-				   try to decompress it anyway. */
-				{
-					unsigned char *rbuf, nmbuf[DNSNAMEBUFSIZE];
-					if ((rc=decompress_name(msg, msgsz, &bptr, &blcnt, nmbuf, &len))!=RC_OK)
-						return rc==RC_TRUNC?RC_FORMAT:rc;
-					slen=len+blcnt;
-					rbuf=malloc(slen);
-					if(!rbuf) return RC_FATALERR;
-					nptr=mempcpy(rbuf,nmbuf,len);
-					memcpy(nptr,bptr,blcnt);
-					rc=rr_to_cache(centa, oname, type, ttl, slen, rbuf, flags,queryts);
-					free(rbuf);
-					if(rc!=RC_OK) {
-						if(rc==RC_FATALERR)
-							return rc;
-						retval=rc;
-					}
-				}
-				break;
-#endif
-			default:
-			default_case:
-				if ((rc=rr_to_cache(centa, oname, type, ttl, rdlength, *ptr, flags,queryts))!=RC_OK) {
-					if(rc==RC_FATALERR)
-						return rc;
-					retval=rc;
-				}
-			}
-		}
-		else {
-			/* skip otherwise */
-			DEBUG_MSG("rrs2cent: ignoring record of type %s (%d), class %s (%d).\n",
-				  getrrtpname(type), type,
-				  class==C_IN?"IN":"[unknown]", class);
-		}
-
-		*lcnt -= rdlength;
-		*ptr += rdlength;
-	}
-	return retval;
-
- trailing_junk:
-	DEBUG_MSG("rrs2cent: %s record has trailing junk.\n",getrrtpname(type));
-	return RC_FORMAT;
-
- record_too_short:
-	DEBUG_MSG("rrs2cent: %s record too short.\n",getrrtpname(type));
-	return RC_FORMAT;
-
- buffer_overflow:
-	DEBUG_MSG("rrs2cent: buffer too small to process %s record.\n",getrrtpname(type));
-	return RC_FORMAT;
-
- invalid_length:
-	DEBUG_MSG("rrs2cent: %s record has length %u.\n",getrrtpname(type),rdlength);
-	return RC_FORMAT;
-}
-
-/*
- * Try to bind the socket to a port in the given port range. Returns 1 on success, or 0 on failure.
- */
-static int bind_socket(int s)
-{
-	int query_port_start=global.query_port_start,query_port_end=global.query_port_end;
-
-	/*
-	 * -1, as a special value for query_port_start, denotes that we let the kernel select
-	 * a port when we first use the socket, which used to be the default.
-	 */
-	if (query_port_start >= 0) {
-		union {
-#ifdef ENABLE_IPV4
-			struct sockaddr_in sin4;
-#endif
-#ifdef ENABLE_IPV6
-			struct sockaddr_in6 sin6;
-#endif
-		} sin;
-		socklen_t sinl;
-		int prt, pstart, range = query_port_end-query_port_start+1, m=0xffff;
-		unsigned try1,try2, maxtry2;
-
-		if (range<=0 || range>0x10000) {
-			log_warn("Illegal port range in %s line %d, dropping query!\n",__FILE__,__LINE__);
-			return 0;
-		}
-		if(range<=0x8000) {
-			/* Find the smallest power of 2 >= range. */
-			for(m=1; m<range; m <<= 1);
-			/* Convert into a bit mask. */
-			--m;
-		}
-
-		for (try2=0,maxtry2=range*2;;) {
-			/* Get a random number < range, by rejecting those >= range. */
-			for(try1=0;;) {
-				prt= get_rand16()&m;
-				if(prt<range) break;
-				if(++try1>=0x10000) {
-					log_warn("Cannot get random number < range"
-						 " after %d tries in %s line %d,"
-						 " bad random number generator?\n",
-						 try1,__FILE__,__LINE__);
-					return 0;
-				}
-			}
-			prt += query_port_start;
-
-			for(pstart=prt;;) {
-#ifdef ENABLE_IPV4
-				if (run_ipv4) {
-					memset(&sin.sin4,0,sizeof(struct sockaddr_in));
-					sin.sin4.sin_family=AF_INET;
-					sin.sin4.sin_port=htons(prt);
-					sin.sin4.sin_addr=global.out_a.ipv4;
-					SET_SOCKA_LEN4(sin.sin4);
-					sinl=sizeof(struct sockaddr_in);
-				}
-#endif
-#ifdef ENABLE_IPV6
-				ELSE_IPV6 {
-					memset(&sin.sin6,0,sizeof(struct sockaddr_in6));
-					sin.sin6.sin6_family=AF_INET6;
-					sin.sin6.sin6_port=htons(prt);
-					sin.sin6.sin6_flowinfo=IPV6_FLOWINFO;
-					sin.sin6.sin6_addr=global.out_a.ipv6;
-					SET_SOCKA_LEN6(sin.sin6);
-					sinl=sizeof(struct sockaddr_in6);
-				}
-#endif
-				if (bind(s,(struct sockaddr *)&sin,sinl)==-1) {
-					if (errno!=EADDRINUSE &&
-					    errno!=EADDRNOTAVAIL) { /* EADDRNOTAVAIL should not happen here... */
-						log_warn("Could not bind to socket: %s\n", strerror(errno));
-						return 0;
-					}
-					/* If the address is in use, we continue. */
-				} else
-					goto done;
-
-				if(++try2>=maxtry2) {
-					/* It is possible we missed the free ports by chance,
-					   try scanning the whole range. */
-					if (++prt>query_port_end)
-						prt=query_port_start;
-					if (prt==pstart) {
-						/* Wrapped around, scanned the whole range. Give up. */
-						log_warn("Out of ports in the range"
-							 " %d-%d, dropping query!\n",
-							 query_port_start,query_port_end);
-						return 0;
-					}
-				}
-				else    /* Try new random number */
-					break;
-			}
-		}
-	}
-done:
-	return 1;
-}
-
-
-inline static void *realloc_or_cleanup(void *ptr,size_t size)
-{
-	void *retval=pdnsd_realloc(ptr,size);
-	if(!retval)
-		pdnsd_free(ptr);
-	return retval;
-}
-
-#if defined(NO_TCP_QUERIES)
-# define USE_UDP(st) 1
-#elif defined(NO_UDP_QUERIES)
-# define USE_UDP(st) 0
-#else /* !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES) */
-# define USE_UDP(st) ((st)->qm==UDP_ONLY || (st)->qm==UDP_TCP)
-
-/* These functions will be used in case a TCP query might fail and we want to try again using UDP. */
-
-# define tentative_tcp_query(st) ((st)->qm==TCP_UDP && ((st)->state==QS_TCPWRITE || ((st)->state==QS_TCPREAD && (st)->iolen==0)))
-
-inline static void switch_to_udp(query_stat_t *st)
-{
-	st->qm=UDP_ONLY;
-	st->myrid=get_rand16();
-	st->msg->hdr.id=htons(st->myrid);
-	st->state=QS_UDPINITIAL;
-	/* st->failed=0; */
-}
-
-/* This function will be used in case a UDP reply was truncated and we want to try again using TCP. */
-
-inline static void switch_to_tcp(query_stat_t *st)
-{
-	/* PDNSD_ASSERT(st->state==QS_INITIAL || st->state==QS_DONE || st->state==QS_CANCELED,
-	   "Attempt to switch to TCP while a query is in progress."); */
-	st->qm=TCP_ONLY;
-	st->state=QS_INITIAL;
-	st->failed=0;
-}
-#endif
-
-
-/* ------ following is the parallel query code.
- * It has been observed that a whole lot of name servers are just damn lame, with response time
- * of about 1 min. If that slow one is by chance the first server we try, serializing the tries is quite
- * sub-optimal. Also when doing serial queries, the timeout values given in the config will add up, which
- * is not the Right Thing. Now that serial queries are in place, this is still true for CNAME recursion,
- * and for recursion in quest for the holy AA, but not totally for querying multiple servers.
- * The impact on network bandwith should be only marginal (given todays bandwith).
- *
- * The actual strategy is to do (max) PAR_QUERIES parallel queries, and, if these time out or fail, do again
- * that number of queries, until we are successful or there are no more servers to query.
- * Since the memory footprint of a thread is considerably large on some systems, and because we have better
- * control, we will do the parallel queries multiplexed in one thread.
- */
-
-/* The query state machine that is called from p_exec_query. This is called once for initialization (state
- * QS_TCPINITIAL or QS_UDPINITIAL is preset), and the state that it gives back may either be state QS_DONE,
- * in which case it must return a return code other than -1 and is called no more for this server
- * (except perhaps in UDP mode if TCP failed). If p_query_sm returns -1, then the state machine is in a read
- * or write state, and a function higher up the calling chain can setup a poll() or select() together with st->sock.
- * If that poll/select is succesful for that socket, p_exec_query is called again and will hand over to p_query_sm.
- * So, you can assume that read(), write() and recvfrom() will not block at the start of a state handling when you
- * have returned -1 (which means "call again") as last step of the last state handling. */
-static int p_query_sm(query_stat_t *st)
-{
-	int retval=RC_SERVFAIL,rv;
-
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
- tryagain:
-#endif
-	switch (st->state){
-		/* TCP query code */
-#ifndef NO_TCP_QUERIES
-	case QS_TCPINITIAL:
-		if ((st->sock=socket(PDNSD_PF_INET,SOCK_STREAM,IPPROTO_TCP))==-1) {
-			DEBUG_MSG("Could not open socket: %s\n", strerror(errno));
-			break;
-		}
-		/* sin4 or sin6 is intialized, hopefully. */
-
-		/* maybe bind */
-		if (!bind_socket(st->sock)) {
-			close(st->sock);
-			break;
-		}
-
-		/* transmit query by tcp*/
-		/* make the socket non-blocking */
-		{
-			int oldflags = fcntl(st->sock, F_GETFL, 0);
-			if (oldflags == -1 || fcntl(st->sock,F_SETFL,oldflags|O_NONBLOCK)==-1) {
-				DEBUG_PDNSDA_MSG("fcntl error while trying to make socket to %s non-blocking: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(errno));
-				close(st->sock);
-				break;
-			}
- 		}
-		st->iolen=0;
-#ifdef ENABLE_IPV6
-	retry_tcp_connect:
-#endif
-		if (connect(st->sock,SOCK_ADDR(st),SIN_LEN)==-1) {
-			if (errno==EINPROGRESS || errno==EPIPE) {
-				st->state=QS_TCPWRITE;
-				/* st->event=QEV_WRITE; */ /* wait for writability; the connect is then done */
-				return -1;
-			} else if (errno==ECONNREFUSED) {
-				st->s_errno=errno;
-				DEBUG_PDNSDA_MSG("TCP connection refused by %s\n", PDNSDA2STR(PDNSD_A(st)));
-				close(st->sock);
-				goto tcp_failed; /* We may want to try again using UDP */
-			} else {
-				/* Since immediate connect() errors do not cost any time, we do not try to switch the
-				 * server status to offline */
-#ifdef ENABLE_IPV6
-				/* if IPv6 connectivity is for some reason unavailable, perhaps the
-				   IPv4 fallback address can still be reached. */
-				if(!run_ipv4 && (errno==ENETUNREACH || errno==ENETDOWN)
-				   && st->a4fallback.s_addr!=INADDR_ANY)
-				{
-#if DEBUG>0
-					char abuf[ADDRSTR_MAXLEN];
-					DEBUG_PDNSDA_MSG("Connecting to %s failed: %s, retrying with IPv4 address %s\n",
-							 PDNSDA2STR(PDNSD_A(st)),strerror(errno),
-							 inet_ntop(AF_INET,&st->a4fallback,abuf,sizeof(abuf)));
-#endif
-					IPV6_MAPIPV4(&st->a4fallback,&st->a.sin6.sin6_addr);
-					st->a4fallback.s_addr=INADDR_ANY;
-					goto retry_tcp_connect;
-				}
-#endif
-				DEBUG_PDNSDA_MSG("Error while connecting to %s: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(errno));
-				close(st->sock);
-				break;
-			}
-		}
-		st->state=QS_TCPWRITE;
-		/* st->event=QEV_WRITE; */
-		/* fall through in case of not EINPROGRESS */
-	case QS_TCPWRITE:
-		{
-			int rem= dnsmsghdroffset + st->transl - st->iolen;
-			if(rem>0) {
-				rv=write(st->sock,((unsigned char*)st->msg)+st->iolen,rem);
-				if(rv==-1) {
-					if(errno==EWOULDBLOCK)
-						return -1;
-					st->s_errno=errno;
-					close(st->sock);
-					if (st->iolen==0 &&
-					    (st->s_errno==ECONNREFUSED || st->s_errno==ECONNRESET ||
-					     st->s_errno==EPIPE))
-					{
-						/* This error may be delayed from connect() */
-						DEBUG_PDNSDA_MSG("TCP connection to %s failed: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(st->s_errno));
-						goto tcp_failed; /* We may want to try again using UDP */
-					}
-					DEBUG_PDNSDA_MSG("Error while sending data to %s: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(st->s_errno));
-					break;
-				}
-				st->iolen += rv;
-				if(rv<rem)
-					return -1;
-			}
-		}
-		st->state=QS_TCPREAD;
-		st->iolen=0;
-		/* st->event=QEV_READ; */
-		/* fall through */
-	case QS_TCPREAD:
-	        if(st->iolen==0) {
-			uint16_t recvl_net;
-			rv=read(st->sock,&recvl_net,sizeof(recvl_net));
-			if(rv==-1 && errno==EWOULDBLOCK)
-				return -1;
-			if(rv!=sizeof(recvl_net))
-				goto error_receiv_data;
-			st->iolen=rv;
-			st->recvl=ntohs(recvl_net);
-			if(!(st->recvbuf=(dns_hdr_t *)realloc_or_cleanup(st->recvbuf,st->recvl))) {
-				close(st->sock);
-				DEBUG_MSG("Out of memory in query.\n");
-				retval=RC_FATALERR;
-				break;
-			}
-		}
-		{
-			int offset=st->iolen-sizeof(uint16_t);
-			int rem=st->recvl-offset;
-			if(rem>0) {
-				rv=read(st->sock,((unsigned char*)st->recvbuf)+offset,rem);
-				if(rv==-1) {
-					if(errno==EWOULDBLOCK)
-						return -1;
-					goto error_receiv_data;
-				}
-				if(rv==0)
-					goto error_receiv_data; /* unexpected EOF */
-				st->iolen += rv;
-				if(rv<rem)
-					return -1;
-			}
-		}
-		close(st->sock);
-		st->state=QS_DONE;
-		return RC_OK;
-	error_receiv_data:
-		if(rv==-1) st->s_errno=errno;
-		DEBUG_PDNSDA_MSG("Error while receiving data from %s: %s\n", PDNSDA2STR(PDNSD_A(st)),
-				 rv==-1?strerror(errno):(rv==0 && st->iolen==0)?"no data":"incomplete data");
-		close(st->sock);
-	tcp_failed:
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
-		if(st->qm==TCP_UDP) {
-			switch_to_udp(st);
-			DEBUG_PDNSDA_MSG("TCP query to %s failed. Trying to use UDP.\n", PDNSDA2STR(PDNSD_A(st)));
-			goto tryagain;
-		}
-#endif
-		break;
-#endif
-
-#ifndef NO_UDP_QUERIES
-		/* UDP query code */
-	case QS_UDPINITIAL:
-		if ((st->sock=socket(PDNSD_PF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1) {
-			DEBUG_MSG("Could not open socket: %s\n", strerror(errno));
-			break;
-		}
-
-		/* maybe bind */
-		if (!bind_socket(st->sock)) {
-			close(st->sock);
-			break;
-		}
-
-		/* connect */
-#ifdef ENABLE_IPV6
-	retry_udp_connect:
-#endif
-		if (connect(st->sock,SOCK_ADDR(st),SIN_LEN)==-1) {
-			if (errno==ECONNREFUSED) st->s_errno=errno;
-#ifdef ENABLE_IPV6
-			/* if IPv6 connectivity is for some reason unavailable, perhaps the
-			   IPv4 fallback address can still be reached. */
-			else if(!run_ipv4 && (errno==ENETUNREACH || errno==ENETDOWN)
-				   && st->a4fallback.s_addr!=INADDR_ANY)
-			{
-#if DEBUG>0
-				char abuf[ADDRSTR_MAXLEN];
-				DEBUG_PDNSDA_MSG("Connecting to %s failed: %s, retrying with IPv4 address %s\n",
-						 PDNSDA2STR(PDNSD_A(st)),strerror(errno),
-						 inet_ntop(AF_INET,&st->a4fallback,abuf,sizeof(abuf)));
-#endif
-				IPV6_MAPIPV4(&st->a4fallback,&st->a.sin6.sin6_addr);
-				st->a4fallback.s_addr=INADDR_ANY;
-				goto retry_udp_connect;
-			}
-#endif
-			DEBUG_PDNSDA_MSG("Error while connecting to %s: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(errno));
-			close(st->sock);
-			break;
-		}
-
-		/* transmit query by udp*/
-		/* send will hopefully not block on a freshly opened socket (the buffer
-		 * must be empty) */
-		if (send(st->sock,&st->msg->hdr,st->transl,0)==-1) {
-			st->s_errno=errno;
-			DEBUG_PDNSDA_MSG("Error while sending data to %s: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(errno));
-			close(st->sock);
-			break;
-		}
-		st->state=QS_UDPRECEIVE;
-		/* st->event=QEV_READ; */
-		return -1;
-	case QS_UDPRECEIVE:
-	{
-		int udpbufsize= (st->edns_query?global.udpbufsize:UDP_BUFSIZE);
-		if(!(st->recvbuf=(dns_hdr_t *)realloc_or_cleanup(st->recvbuf,udpbufsize))) {
-			close(st->sock);
-			DEBUG_MSG("Out of memory in query.\n");
-			retval=RC_FATALERR;
-			break;
-		}
-		if ((rv=recv(st->sock,st->recvbuf,udpbufsize,0))==-1) {
-			st->s_errno=errno;
-			DEBUG_PDNSDA_MSG("Error while receiving data from %s: %s\n", PDNSDA2STR(PDNSD_A(st)),strerror(errno));
-			close(st->sock);
-			break;
-		}
-		st->recvl=rv;
-		if (st->recvl<sizeof(dns_hdr_t) || ntohs(st->recvbuf->id)!=st->myrid) {
-			DEBUG_MSG("Bad answer received. Ignoring it.\n");
-			/* no need to care about timeouts here. That is done at an upper layer. */
-			st->state=QS_UDPRECEIVE;
-			/* st->event=QEV_READ; */
-			return -1;
-		}
-		close(st->sock);
-		st->state=QS_DONE;
-		return RC_OK;
-	}
-#endif
-	}
-
-	/* If we get here, something has gone wrong. */
-	st->state=QS_DONE;
-	return retval; /* should be either RC_SERVFAIL or RC_FATALERR */
-}
-
-static dns_cent_t *lookup_cent_array(dns_cent_array ca, const unsigned char *nm)
-{
-	int i,n=DA_NEL(ca);
-	for(i=0;i<n;++i) {
-		dns_cent_t *ce=&DA_INDEX(ca,i);
-		if(rhnicmp(ce->qname,nm))
-			return ce;
-	}
-	return NULL;
-}
-
-/* Extract the minimum ttl field from the SOA record stored in an rr bucket. */
-static time_t soa_minimum(rr_bucket_t *rrs)
-{
-	uint32_t minimum;
-	unsigned char *p=(unsigned char *)(rrs->data);
-
-	/* Skip owner and maintainer. Lengths are validated in cache. */
-	p=skiprhn(skiprhn(p));
-	/* Skip serial, refresh, retry, expire fields. */
-	p += 4*sizeof(uint32_t);
-	GETINT32(minimum,p);
-	return minimum;
-}
-
-/*
- * The function that will actually execute a query. It takes a state structure in st.
- * st->state must be set to QS_INITIAL before calling.
- * This may return one of the RC_* codes, where RC_OK indicates success, the other
- * RC codes indicate the appropriate errors. -1 is the return value that indicates that
- * you should call p_exec_query again with the same state for the result until you get
- * a return value >0. Alternatively, call p_cancel_query to cancel it.
- * Timeouts are already handled by this function.
- * Any records that the query has yielded and that are not a direct answer to the query
- * (i.e. are records for other domains) are added to the cache, while the direct answers
- * are returned in ent.
- * All ns records, to whomever they might belong, are additionally returned in the ns list.
- * Free it when done.
- * This function calls another query state machine function that supports TCP and UDP.
- *
- * If you want to tell me that this function has a truly ugly coding style, ah, well...
- * You are right, somehow, but I feel it is conceptually elegant ;-)
- */
-static int p_exec_query(dns_cent_t **entp, const unsigned char *name, int thint,
-			query_stat_t *st, dlist *ns, unsigned char *c_soa)
-{
-	int rv,rcode;
-	unsigned short rd;
-
-	switch (st->state){
-	case QS_INITIAL: {
-		size_t transl,allocsz;
-		unsigned int rrnlen=0;
-
-		allocsz= sizeof(dns_msg_t);
-		if(name) {
-			rrnlen=rhnlen(name);
-			allocsz += rrnlen+4;
-			if(st->edns_query)
-				allocsz += sizeof_opt_pseudo_rr;
-		}
-		st->msg=(dns_msg_t *)pdnsd_malloc(allocsz);
-		if (!st->msg) {
-			st->state=QS_DONE;
- 			return RC_FATALERR; /* unrecoverable error */
-		}
-		st->myrid=get_rand16();
-		st->msg->hdr.id=htons(st->myrid);
-		st->msg->hdr.qr=QR_QUERY;
-		st->msg->hdr.opcode=OP_QUERY;
-		st->msg->hdr.aa=0;
-		st->msg->hdr.tc=0;
-		st->msg->hdr.rd=(name && st->trusted);
-		st->msg->hdr.ra=0;
-		st->msg->hdr.z=0;
-		st->msg->hdr.ad=0;
-		st->msg->hdr.cd=0;
-		st->msg->hdr.rcode=RC_OK;
-		st->msg->hdr.qdcount=htons(name!=NULL);
-		st->msg->hdr.ancount=0;
-		st->msg->hdr.nscount=0;
-		st->msg->hdr.arcount=0;
-
-		transl= sizeof(dns_hdr_t);
-		if(name) {
-			unsigned char *p = mempcpy((unsigned char *)(&st->msg->hdr+1),name,rrnlen);
-			unsigned short qtype=(st->lean_query?thint:QT_ALL);
-			PUTINT16(qtype,p);
-			PUTINT16(C_IN,p);
-			transl += rrnlen+4;
-			if(st->edns_query)
-				add_opt_pseudo_rr(&st->msg,&transl,&allocsz,
-						  global.udpbufsize,RC_OK,0,0);
-		}
-		st->transl=transl;
-#ifndef NO_TCP_QUERIES
-		st->msg->len=htons(st->transl);
-#endif
-		st->recvbuf=NULL;
-		st->state=(USE_UDP(st)?QS_UDPINITIAL:QS_TCPINITIAL);
-		/* fall through */
-	}
-	QS_QUERY_CASES:
-	tryagain:
-		rv=p_query_sm(st);
-		if (rv==-1) {
-			return -1;
-		}
-		if (rv!=RC_OK) {
-			pdnsd_free(st->msg);
-			pdnsd_free(st->recvbuf);
-			st->state=QS_DONE;
-			if(st->needs_testing) {
-				switch(st->s_errno) {
-				case ENETUNREACH:  /* network unreachable */
-				case EHOSTUNREACH: /* host unreachable */
-				case ENOPROTOOPT:  /* protocol unreachable */
-				case ECONNREFUSED: /* port unreachable */
-				case ENETDOWN:     /* network down */
-				case EHOSTDOWN:    /* host down */
-#ifdef ENONET
-				case ENONET:       /* machine not on the network */
-#endif
-					/* Mark this server as down for a period of time */
-					sched_server_test(PDNSD_A(st),1,0);
-					st->needs_testing=0;
-				}
-			}
-			return rv;
-		}
-		/* rv==RC_OK */
-		DEBUG_PDNSDA_MSG("Received reply from %s (msg len=%u).\n", PDNSDA2STR(PDNSD_A(st)), st->recvl);
-		DEBUG_DUMP_DNS_MSG(st->recvbuf, st->recvl);
-
-		/* Basic sanity checks */
-		if (st->recvl<sizeof(dns_hdr_t)) {
-			DEBUG_MSG("Message too short!\n");
-			goto discard_reply;
-		}
-		{
-			uint16_t recvid=ntohs(st->recvbuf->id);
-			if (recvid!=st->myrid) {
-				DEBUG_MSG("ID mismatch: expected %04x, got %04x!\n", st->myrid, recvid);
-				goto discard_reply;
-			}
-		}
-		if (st->recvbuf->qr!=QR_RESP) {
-			DEBUG_MSG("The QR bit indicates this is a query, not a response!\n");
-			goto discard_reply;
-		}
-		if (st->recvbuf->opcode!=OP_QUERY) {
-			DEBUG_MSG("Not a reply to a standard query (opcode=%u).\n",st->recvbuf->opcode);
-			goto discard_reply;
-		}
-
-		rcode=st->recvbuf->rcode;
-#if DEBUG>0
-		{
-			char flgsbuf[DNSFLAGSMAXSTRSIZE];
-			DEBUG_MSG("rcode=%u (%s), flags:%s\n", rcode, get_ename(rcode), dnsflags2str(st->recvbuf, flgsbuf));
-		}
-#endif
-		if (st->recvbuf->z!=0) {
-			DEBUG_MSG("Malformed response (nonzero Z bit).\n");
-			goto discard_reply;
-		}
-
-		if(st->needs_testing) {
-			/* We got an answer from this server, so don't bother with up tests for a while. */
-			sched_server_test(PDNSD_A(st),1,1);
-			st->needs_testing=0;
-		}
-
-		rv=rcode;
-		if(rcode==RC_OK || rcode==RC_NAMEERR) {
-			/* success or at least no requery is needed */
-			st->state=QS_DONE;
-			break;
-		}
-		else if (entp) {
-			if(rcode==RC_SERVFAIL || rcode==RC_NOTSUPP || rcode==RC_REFUSED) {
-				if (st->msg->hdr.rd && !st->recvbuf->ra) {
-					/* seems as if we have got no recursion available.
-					   We will have to do it by ourselves (sigh...) */
-					DEBUG_PDNSDA_MSG("Server %s returned error code: %s."
-							 " Maybe does not support recursive query?"
-							 " Querying non-recursively.\n",
-							 PDNSDA2STR(PDNSD_A(st)),get_ename(rcode));
-					st->msg->hdr.rd=0;
-					goto resetstate_tryagain;
-				}
-				else if(rcode!=RC_SERVFAIL && st->edns_query && st->msg->hdr.arcount)
-					goto try_withoutedns;
-				else if (st->recvbuf->ancount && st->auth_serv==2) {
-					/* The name server returned a failure code,
-					   but the answer section is not empty,
-					   and the answer is from a server lower down the call chain.
-					   Use this answer tentatively (it may be the
-					   best we can get), but remember the failure. */
-					DEBUG_PDNSDA_MSG("Server %s returned error code: %s,"
-							 " but the answer section is not empty."
-							 " Using the answer tentatively.\n",
-							 PDNSDA2STR(PDNSD_A(st)),get_ename(rcode));
-					st->failed=3;
-					st->state=QS_DONE;
-					break;
-				}
-			}
-			else if(rcode==RC_FORMAT && st->edns_query && st->msg->hdr.arcount)
-			try_withoutedns: {
-				size_t transl;
-				/* Perhaps the remote server barfs when the query
-				   contains an OPT RR in the additional section.
-				   Try again with an empty addtional section. */
-				DEBUG_PDNSDA_MSG("Server %s returned error code: %s."
-						 " Maybe cannot handle EDNS?"
-						 " Querying with empty additional section.\n",
-						 PDNSDA2STR(PDNSD_A(st)),get_ename(rcode));
-				transl=remove_opt_pseudo_rr(st->msg,st->transl);
-				if(transl!=0 && st->msg->hdr.arcount==0) {
-					st->transl=transl;
-#ifndef NO_TCP_QUERIES
-					st->msg->len=htons(st->transl);
-#endif
-					st->edns_query=0;
-				resetstate_tryagain:
-					st->myrid=get_rand16();
-					st->msg->hdr.id=htons(st->myrid);
-					st->state=(USE_UDP(st)?QS_UDPINITIAL:QS_TCPINITIAL);
-					goto tryagain;
-				}
-				else {
-					DEBUG_PDNSDA_MSG("Internal error: could not remove additional section from query"
-							 " to server %s\n", PDNSDA2STR(PDNSD_A(st)));
-				}
-			}
-		}
-
-	discard_reply:
-		/* report failure */
-		pdnsd_free(st->msg);
-		pdnsd_free(st->recvbuf);
-		/*close(st->sock);*/
-		st->state=QS_DONE;
-#if DEBUG>0
-		if(entp) {
-			DEBUG_PDNSDA_MSG("Discarding reply from server %s\n", PDNSDA2STR(PDNSD_A(st)));
-		}
-#endif
-		if (rv!=RC_OK)
-			return rv;
-
-		return RC_SERVFAIL; /* mock error code */
-
-	default: /* we shouldn't get here */
-		st->state=QS_DONE;
-		return RC_SERVFAIL; /* mock error code */
-	}
-
-        /* If we reach this code, we have successfully received an answer,
-	 * because we have returned error codes on errors or -1 on AGAIN conditions.
-	 * So we *should* have a usable dns record in recvbuf by now.
-	 */
-	rd= st->msg->hdr.rd; /* Save the 'Recursion Desired' bit of the query. */
-	pdnsd_free(st->msg);
-	if(entp) {
-		time_t queryts=time(NULL);
-		size_t lcnt= ((size_t)st->recvl) - sizeof(dns_hdr_t);
-		unsigned char *rrp=(unsigned char *)(st->recvbuf+1);
-		dns_cent_array secs[3]={NULL,NULL,NULL};
-#		define ans_sec  secs[0]
-#		define auth_sec secs[1]
-#		define add_sec  secs[2]
-		unsigned short qtype,flags,aa,neg_ans=0,reject_ans=0,num_ns=0;
-		int numoptrr;
-		edns_info_t ednsinfo= {0};
-
-		if (ntohs(st->recvbuf->qdcount)!=1) {
-			DEBUG_PDNSDA_MSG("Bad number of query records in answer from %s\n",
-					 PDNSDA2STR(PDNSD_A(st)));
-			rv=RC_SERVFAIL;
-			goto free_recvbuf_return;
-		}
-		/* check & skip the query record. */
-		{
-			unsigned char nbuf[DNSNAMEBUFSIZE];
-			if ((rv=decompress_name((unsigned char *)st->recvbuf, st->recvl, &rrp, &lcnt, nbuf, NULL))!=RC_OK) {
-				DEBUG_PDNSDA_MSG("Cannot decompress QNAME in answer from %s\n",
-						 PDNSDA2STR(PDNSD_A(st)));
-				rv=RC_SERVFAIL;
-				goto free_recvbuf_return;
-			}
-			if(!rhnicmp(nbuf,name)) {
-				DEBUG_PDNSDA_MSG("Answer from %s does not match query.\n",
-						 PDNSDA2STR(PDNSD_A(st)));
-				rv=RC_SERVFAIL;
-				goto free_recvbuf_return;
-			}
-		}
-
-		qtype=(st->lean_query?thint:QT_ALL);
-		if (lcnt<4) {
-			DEBUG_PDNSDA_MSG("Format error in reply from %s (message truncated in qtype or qclass).\n",
-					 PDNSDA2STR(PDNSD_A(st)));
-			rv=RC_SERVFAIL; /* mock error code */
-			goto free_recvbuf_return;
-		}
-		{
-			unsigned short qt,qc;
-			GETINT16(qt,rrp);
-			GETINT16(qc,rrp);
-			if(qt!=qtype) {
-				DEBUG_PDNSDA_MSG("qtype in answer (%u) from %s does not match expected qtype (%u).\n",
-						 qt,PDNSDA2STR(PDNSD_A(st)),qtype);
-				rv=RC_SERVFAIL;
-				goto free_recvbuf_return;
-			}
-		}
-		lcnt-=4;
-
-		st->aa= (st->recvbuf->aa && !st->failed);
-		st->tc= st->recvbuf->tc;
-		st->ra= (rd && st->recvbuf->ra);
-
-		/* Don't flag cache entries from a truncated reply as authoritative. */
-		aa= (st->aa && !st->tc);
-		flags=st->flags;
-		if (aa) flags|=CF_AUTH;
-
-
-		/* Initialize a dns_cent_t in the array for the answer section */
-		if (!(ans_sec=DA_GROW1(ans_sec))) {
-			rv=RC_FATALERR; /* unrecoverable error */
-			goto free_recvbuf_return;
-		}
-		/* By marking DF_AUTH, we mean authoritative AND complete. */
-		if (!init_cent(&DA_INDEX(ans_sec,0), name, 0, 0, (aa && qtype==QT_ALL)?DF_AUTH:0  DBG1)) {
-			rv=RC_FATALERR; /* unrecoverable error */
-			goto free_centarrays_recvbuf_return;
-		}
-
-		/* Now read the answer, authority and additional sections,
-		   storing the results in the arrays ans_sec,auth_sec and add_sec.
-		*/
-		numoptrr=0;
-		rv=rrs2cent((unsigned char *)st->recvbuf, st->recvl, &rrp, &lcnt, ntohs(st->recvbuf->ancount),
-			    flags, queryts, &ans_sec, &numoptrr, &ednsinfo);
-#if DEBUG>0
-		if(numoptrr!=0) {
-			DEBUG_MSG("Answer section in reply contains %d OPT pseudo-RRs!\n", numoptrr);
-		}
-#endif
-		numoptrr=0;
-		if(rv==RC_OK) {
-			uint16_t nscount=ntohs(st->recvbuf->nscount);
-			if (nscount) {
-				rv=rrs2cent((unsigned char *)st->recvbuf, st->recvl, &rrp, &lcnt, nscount,
-					    flags|CF_ADDITIONAL, queryts, &auth_sec, &numoptrr, &ednsinfo);
-#if DEBUG>0
-				if(numoptrr!=0) {
-					DEBUG_MSG("Authority section in reply contains %d OPT pseudo-RRs!\n", numoptrr);
-				}
-#endif
-			}
-		}
-
-		numoptrr=0;
-		if(rv==RC_OK) {
-			uint16_t arcount=ntohs(st->recvbuf->arcount);
-			if (arcount) {
-				rv=rrs2cent((unsigned char *)st->recvbuf, st->recvl, &rrp, &lcnt, arcount,
-					    flags|CF_ADDITIONAL, queryts, &add_sec, &numoptrr, &ednsinfo);
-				if(numoptrr!=0) {
-#if DEBUG>0
-					if(numoptrr!=1) {
-						DEBUG_MSG("Additional section in reply contains %d OPT pseudo-RRs!\n", numoptrr);
-					}
-					DEBUG_PDNSDA_MSG("Reply from %s contains OPT pseudosection: EDNS version = %u, udp size = %u, flag DO=%u\n",
-							 PDNSDA2STR(PDNSD_A(st)), ednsinfo.version, ednsinfo.udpsize, ednsinfo.do_flg);
-#endif
-					if(rcode!=ednsinfo.rcode) {
-						DEBUG_PDNSDA_MSG("Reply from %s contains unexpected EDNS rcode %u (%s)!\n",
-								 PDNSDA2STR(PDNSD_A(st)), ednsinfo.rcode, get_ename(ednsinfo.rcode));
-						rcode=ednsinfo.rcode;
-						/* Mark as failed, but use answer tentatively. */
-						if(!st->failed) st->failed=1;
-					}
-				}
-			}
-		}
-
-		if(!(rv==RC_OK || (rv==RC_TRUNC && st->recvbuf->tc))) {
-			DEBUG_PDNSDA_MSG(rv==RC_FORMAT?"Format error in reply from %s.\n":
-					 rv==RC_TRUNC?"Format error in reply from %s (message unexpectedly truncated).\n":
-					 rv==RC_SERVFAIL?"Inconsistent timestamps in reply from %s.\n":
-					 "Out of memory while processing reply from %s.\n",
-					 PDNSDA2STR(PDNSD_A(st)));
-			if(rv==RC_SERVFAIL) {
-				/* Inconsistent ttl timestamps and we are
-				   enforcing strict RFC 2181 compliance.
-				   Mark as failed, but use answer tentatively. */
-				if(!st->failed) st->failed=1;
-			}
-			else {
-				if(rv!=RC_FATALERR) rv=RC_SERVFAIL;
-				goto free_ent_centarrays_recvbuf_return;
-			}
-		}
-
-		{
-			/* Remember references to NS and SOA records in the answer or authority section
-			   so that we can add this information to our own reply. */
-			int i,n=DA_NEL(ans_sec);
-			for(i=0;i<n;++i) {
-				dns_cent_t *cent=&DA_INDEX(ans_sec,i);
-				unsigned scnt=rhnsegcnt(cent->qname);
-
-				if(getrrset_NS(cent))
-					cent->c_ns=scnt;
-				if(getrrset_SOA(cent))
-					cent->c_soa=scnt;
-
-				if((qtype>=QT_MIN && qtype<=QT_MAX) ||
-				   (/* (qtype>=T_MIN && qtype<=T_MAX) && */ getrrset(cent,qtype)) ||
-				   (n==1 && cent->num_rrs==0))
-				{
-					/* Match this name with names in the authority section */
-					int j,m=DA_NEL(auth_sec);
-					for(j=0;j<m;++j) {
-						dns_cent_t *ce=&DA_INDEX(auth_sec,j);
-						unsigned int ml,rem;
-						ml=domain_match(ce->qname,cent->qname, &rem, NULL);
-						if(rem==0 &&
-						   /* Don't accept records for the root domain from name servers
-						      that were not listed in the configuration file. */
-						   (ml || st->auth_serv!=2)) {
-							if(getrrset_NS(ce)) {
-								if(cent->c_ns==cundef || cent->c_ns<ml)
-									cent->c_ns=ml;
-							}
-							if(getrrset_SOA(ce)) {
-								if(cent->c_soa==cundef || cent->c_soa<ml)
-									cent->c_soa=ml;
-							}
-						}
-					}
-				}
-			}
-		}
-
-		/* Check whether the answer contains an IP address that should be rejected. */
-		if(have_rejectlist(st)) {
-			int i;
-			int na4=nreject_a4(st);
-			addr4maskpair_t *a4arr=rejectlist_a4(st);
-#if ALLOW_LOCAL_AAAA
-			int na6=nreject_a6(st);
-			addr6maskpair_t *a6arr=rejectlist_a6(st);
-#endif
-			/* Check addresses in the answer, authority and additional sections. */
-			for(i=0;i<3;++i) {
-				dns_cent_array sec=secs[i];
-				int j,nce=DA_NEL(sec);
-				for(j=0;j<nce;++j) {
-					dns_cent_t *cent=&DA_INDEX(sec,j);
-					rr_set_t *rrset=getrrset_A(cent);
-					if(rrset && na4) {
-						/* This is far from the world's most efficient matching algorithm,
-						   but it should work OK as long as the numbers involved are small.
-						*/
-						rr_bucket_t *rr;
-						for(rr=rrset->rrs; rr; rr=rr->next) {
-							struct in_addr *a=(struct in_addr *)(rr->data);
-							int k;
-							for(k=0;k<na4;++k) {
-								addr4maskpair_t *am = &a4arr[k];
-								if(ADDR4MASK_EQUIV(a,&am->a,&am->mask)) {
-#if DEBUG>0
-									unsigned char nmbuf[DNSNAMEBUFSIZE]; char abuf[ADDRSTR_MAXLEN];
-									DEBUG_PDNSDA_MSG("Rejecting answer from server %s because it contains an A record"
-											 " for \"%s\" with an address in the reject list: %s\n",
-											 PDNSDA2STR(PDNSD_A(st)),
-											 rhn2str(cent->qname,nmbuf,sizeof(nmbuf)),
-											 inet_ntop(AF_INET,a,abuf,sizeof(abuf)));
-#endif
-									reject_ans=1; goto rejectlist_scan_done;
-								}
-							}
-						}
-					}
-#if ALLOW_LOCAL_AAAA
-					rrset=getrrset_AAAA(cent);
-					if(rrset && na6) {
-						rr_bucket_t *rr;
-						for(rr=rrset->rrs; rr; rr=rr->next) {
-							struct in6_addr *a=(struct in6_addr *)(rr->data);
-							int k;
-							for(k=0;k<na6;++k) {
-								addr6maskpair_t *am = &a6arr[k];
-								if(ADDR6MASK_EQUIV(a,&am->a,&am->mask)) {
-#if DEBUG>0
-									unsigned char nmbuf[DNSNAMEBUFSIZE]; char abuf[INET6_ADDRSTRLEN];
-									DEBUG_PDNSDA_MSG("Rejecting answer from server %s because it contains an AAAA record"
-											 " for \"%s\" with an address in the reject list: %s\n",
-											 PDNSDA2STR(PDNSD_A(st)),
-											 rhn2str(cent->qname,nmbuf,sizeof(nmbuf)),
-											 inet_ntop(AF_INET6,a,abuf,sizeof(abuf)));
-#endif
-									reject_ans=1; goto rejectlist_scan_done;
-								}
-							}
-						}
-					}
-#endif
-				}
-			}
-		rejectlist_scan_done:;
-		}
-
-		/* negative caching for domains */
-		if (rcode==RC_NAMEERR) {
-			DEBUG_PDNSDA_MSG("Server %s returned error code: %s\n", PDNSDA2STR(PDNSD_A(st)),get_ename(rcode));
-		name_error:
-			neg_ans=1;
-			{
-				/* We did not get what we wanted. Cache according to policy */
-				dns_cent_t *ent=&DA_INDEX(ans_sec,0);
-				int neg_domain_pol=global.neg_domain_pol;
-				if (neg_domain_pol==C_ON || (neg_domain_pol==C_AUTH && st->aa)) {
-					time_t ttl=global.neg_ttl;
-
-					/* Try to find a SOA record that came with the reply.
-					 */
-					if(ent->c_soa!=cundef) {
-						unsigned scnt=rhnsegcnt(name);
-						dns_cent_t *cent;
-						if(ent->c_soa<scnt && (cent=lookup_cent_array(auth_sec,skipsegs(name,scnt-ent->c_soa)))) {
-							rr_set_t *rrset=getrrset_SOA(cent);
-							if (rrset && rrset->rrs) {
-								time_t min=soa_minimum(rrset->rrs);
-								ttl=rrset->ttl;
-								if(ttl>min)
-									ttl=min;
-							}
-						}
-					}
-					DEBUG_RHN_MSG("Caching domain %s negative with ttl %li\n",RHN2STR(name),(long)ttl);
-					negate_cent(ent,ttl,queryts);
-					if(st->nocache) ent->flags |= DF_NOCACHE;
-					goto cleanup_return_OK;
-				} else {
-					if(c_soa) *c_soa=ent->c_soa;
-					free_cent(ent  DBG1);
-					rv=RC_NAMEERR;
-					goto add_additional;
-				}
-			}
-		}
-
-		if(reject_ans) {
-			if(reject_policy(st)==C_NEGATE && st->failed<=1)
-				goto name_error;
-			else {
-				rv=RC_SERVFAIL;
-				goto free_ent_centarrays_recvbuf_return;
-			}
-		}
-
-		if(global.deleg_only_zones && st->auth_serv<3) { /* st->auth_serv==3 means this server is a root-server. */
-			int missingdelegation,authcnt;
-			/* The deleg_only_zones data may change due to runtime reconfiguration,
-			   therefore use locks. */
-			lock_server_data();
-			missingdelegation=0; authcnt=0;
-			{
-				int i,n=DA_NEL(global.deleg_only_zones); unsigned rem,zrem;
-				for(i=0;i<n;++i) {
-					if(domain_match(name,DA_INDEX(global.deleg_only_zones,i),&rem,&zrem) && zrem==0)
-						goto zone_match;
-				}
-				goto delegation_OK;
-			zone_match:
-				/* The name queried matches a delegation-only zone. */
-				if(rem) {
-					/* Check if we can find delegation in the answer or authority section. */
-					/* dns_cent_array secs[2]={ans_sec,auth_sec}; */
-					int j;
-					for(j=0;j<2;++j) {
-						dns_cent_array sec=secs[j];
-						int k,m=DA_NEL(sec);
-						for(k=0;k<m;++k) {
-							dns_cent_t *ce=&DA_INDEX(sec,k);
-							if(getrrset_NS(ce) || getrrset_SOA(ce)) {
-								/* Found a NS or SOA record in the answer or authority section. */
-								int l;
-								++authcnt;
-								for(l=0;l<n;++l) {
-									if(domain_match(ce->qname,DA_INDEX(global.deleg_only_zones,l),&rem,&zrem) && zrem==0) {
-										if(rem) break;
-										else    goto try_next_auth;
-									}
-								}
-								goto delegation_OK;
-							}
-						try_next_auth:;
-						}
-					}
-#if DEBUG>0
-					{
-						unsigned char nmbuf[DNSNAMEBUFSIZE],zbuf[DNSNAMEBUFSIZE];
-						DEBUG_PDNSDA_MSG(authcnt?"%s is in %s zone, but no delegation found in answer returned by server %s\n"
-								 :"%s is in %s zone, but no authority information provided by server %s\n",
-								 rhn2str(name,nmbuf,sizeof(nmbuf)), rhn2str(DA_INDEX(global.deleg_only_zones,i),zbuf,sizeof(zbuf)),
-								 PDNSDA2STR(PDNSD_A(st)));
-					}
-#endif
-					missingdelegation=1;
-				}
-			delegation_OK:;
-			}
-			unlock_server_data();
-
-			if(missingdelegation) {
-				if(authcnt && st->failed<=1) {
-					/* Treat this as a nonexistant name. */
-					goto name_error;
-				}
-				else if(st->auth_serv<2) {
-					/* If this is one of the servers obtained from the list
-					   pdnsd was configured with, treat this as a failure.
-					   Hopefully one of the other servers in the list will
-					   return a non-empty authority section.
-					*/
-					rv=RC_SERVFAIL;
-					goto free_ent_centarrays_recvbuf_return;
-				}
-			}
-		}
-
-		{
-			/* Negative caching of rr sets */
-			dns_cent_t *ent=&DA_INDEX(ans_sec,0);
-
-			if(!ent->num_rrs) neg_ans=1;
-
-			if (thint>=T_MIN && thint<=T_MAX && !getrrset(ent,thint) && !st->tc && st->failed<=1) {
-				/* We did not get what we wanted. Cache according to policy */
-				int neg_rrs_pol=global.neg_rrs_pol;
-				if (neg_rrs_pol==C_ON || (neg_rrs_pol==C_AUTH && aa) ||
-				    (neg_rrs_pol==C_DEFAULT && (aa || st->ra)))
-				{
-					time_t ttl=global.neg_ttl;
-					rr_set_t *rrset=getrrset_SOA(ent);
-					dns_cent_t *cent;
-					unsigned scnt;
-					/* If we received a SOA, we should take the ttl of that record. */
-					if ((rrset && rrset->rrs) ||
-					    /* Try to find a SOA record higher up the hierarchy that came with the reply. */
-					    ((cent=lookup_cent_array(auth_sec,
-								     (ent->c_soa!=cundef && ent->c_soa<(scnt=rhnsegcnt(name)))?
-								     skipsegs(name,scnt-ent->c_soa):
-								     name)) &&
-					     (rrset=getrrset_SOA(cent)) && rrset->rrs))
-					{
-						time_t min=soa_minimum(rrset->rrs);
-						ttl=rrset->ttl;
-						if(ttl>min)
-							ttl=min;
-					}
-					DEBUG_RHN_MSG("Caching type %s for domain %s negative with ttl %li\n",getrrtpname(thint),RHN2STR(name),(long)ttl);
-					if (!add_cent_rrset_by_type(ent, thint, ttl, queryts, CF_NEGATIVE|flags  DBG1)) {
-						rv=RC_FATALERR;
-						goto free_ent_centarrays_recvbuf_return;
-					}
-				}
-			}
-		}
-
-		if (st->failed<=1) {
-			/* The domain names of all name servers found in the answer and authority sections are placed in *ns,
-			   which is automatically grown. */
-			/* dns_cent_array secs[2]={ans_sec,auth_sec}; */
-			int i;
-			for(i=0;i<2;++i) {
-				dns_cent_array sec=secs[i];
-				int j,n=DA_NEL(sec);
-				for(j=0;j<n;++j) {
-					dns_cent_t *cent=&DA_INDEX(sec,j);
-					unsigned int rem;
-					/* Don't accept records for the root domain from name servers
-					   that were not listed in the configuration file. */
-					if((*(cent->qname) || st->auth_serv!=2) &&
-					   /* Don't accept possibly poisoning nameserver entries in paranoid mode */
-					   (st->trusted || !st->nsdomain || (domain_match(st->nsdomain, cent->qname, &rem,NULL),rem==0)) &&
-					   /* The following test is actually redundant and should never fail. */
-					   *(cent->qname)!=0xff)
-					{
-						/* Some nameservers obviously choose to send SOA records instead of NS ones.
-						 * Although I think that this is poor behaviour, we'll have to work around that. */
-						static const unsigned short nstypes[2]={T_NS,T_SOA};
-						int k;
-						for(k=0;k<2;++k) {
-							rr_set_t *rrset=getrrset(cent,nstypes[k]);
-							if(rrset) {
-								rr_bucket_t *rr;
-								unsigned short first=1;
-								for(rr=rrset->rrs; rr; rr=rr->next) {
-									size_t sz1,sz2;
-									unsigned char *p;
-									/* Skip duplicate records */
-									for(p=dlist_first(*ns); p; p=dlist_next(p)) {
-										if(rhnicmp(*p==0xff?p+1:skiprhn(p),(unsigned char *)(rr->data)))
-											goto next_nsr;
-									}
-									/* add to the nameserver list.
-									   Here we use a little compression trick: if
-									   the first byte of a name is 0xff, this means
-									   repeat the previous name.
-									 */
-									sz1= (first?rhnlen(cent->qname):1);
-									sz2=rhnlen((unsigned char *)(rr->data));
-									if (!(*ns=dlist_grow(*ns,sz1+sz2))) {
-										rv=RC_FATALERR;
-										goto free_ent_centarrays_recvbuf_return;
-									}
-									p=dlist_last(*ns);
-									if(first) {
-										first=0;
-										p=mempcpy(p,cent->qname,sz1);
-									}
-									else
-										*p++ = 0xff;  /* 0xff means 'idem' */
-									/* This will only copy the first name, which is the NS */
-									memcpy(p,(unsigned char *)(rr->data),sz2);
-									++num_ns;
-								next_nsr:;
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-	cleanup_return_OK:
-		if(st->failed && neg_ans && num_ns==0) {
-			DEBUG_PDNSDA_MSG("Answer from server %s does not contain usable records.\n",
-					 PDNSDA2STR(PDNSD_A(st)));
-			rv=RC_SERVFAIL;
-			goto free_ns_ent_centarrays_recvbuf_return;
-		}
-		if(!(*entp=malloc(sizeof(dns_cent_t)))) {
-			rv=RC_FATALERR;
-			goto free_ns_ent_centarrays_recvbuf_return;
-		}
-		**entp=DA_INDEX(ans_sec,0);
-		rv=RC_OK;
-	add_additional:
-		if (!st->failed && !reject_ans) {
-			/* Add the additional RRs to the cache. */
-			/* dns_cent_array secs[3]={ans_sec,auth_sec,add_sec}; */
-			int i;
-#if DEBUG>0
-			if(debug_p && neg_ans) {
-				int j,n=DA_NEL(ans_sec);
-				for(j=1; j<n; ++j) {
-					unsigned char nmbuf[DNSNAMEBUFSIZE],nmbuf2[DNSNAMEBUFSIZE];
-					DEBUG_PDNSDA_MSG("Reply from %s is negative for %s, dropping record(s) for %s in answer section.\n",
-							 PDNSDA2STR(PDNSD_A(st)),
-							 rhn2str(name,nmbuf,sizeof(nmbuf)),
-							 rhn2str(DA_INDEX(ans_sec,j).qname,nmbuf2,sizeof(nmbuf2)));
-				}
-			}
-#endif
-			for(i=neg_ans; i<3; ++i) {
-				dns_cent_array sec=secs[i];
-				int j,n=DA_NEL(sec);
-				/* The first entry in the answer section is treated separately, so skip that one. */
-				for(j= !i; j<n; ++j) {
-					dns_cent_t *cent=&DA_INDEX(sec,j);
-					if(*(cent->qname) || st->auth_serv!=2) {
-						unsigned int rem;
-						if(st->trusted || !st->nsdomain || (domain_match(st->nsdomain, cent->qname, &rem, NULL),rem==0))
-							add_cache(cent);
-						else {
-#if DEBUG>0
-							unsigned char nmbuf[DNSNAMEBUFSIZE],nsbuf[DNSNAMEBUFSIZE];
-							DEBUG_MSG("Record for %s not in nsdomain %s; dropped.\n",
-								  rhn2str(cent->qname,nmbuf,sizeof(nmbuf)),rhn2str(st->nsdomain,nsbuf,sizeof(nsbuf)));
-#endif
-						}
-					}
-					else {
-#if DEBUG>0
-						static const char *const secname[3]={"answer","authority","additional"};
-						DEBUG_PDNSDA_MSG("Record(s) for root domain in %s section from %s dropped.\n", secname[i],PDNSDA2STR(PDNSD_A(st)));
-#endif
-					}
-				}
-			}
-		}
-		goto free_centarrays_recvbuf_return;
-
-	free_ns_ent_centarrays_recvbuf_return:
-		dlist_free(*ns); *ns=NULL;
-	free_ent_centarrays_recvbuf_return:
-		if(DA_NEL(ans_sec)>=1) free_cent(&DA_INDEX(ans_sec,0)  DBG1);
-	free_centarrays_recvbuf_return:
-		{
-			/* dns_cent_array secs[3]={ans_sec,auth_sec,add_sec}; */
-			int i;
-			for(i=0;i<3;++i) {
-				dns_cent_array sec=secs[i];
-				int j,n=DA_NEL(sec);
-				/* The first entry in the answer section is treated separately, so skip that one. */
-				for(j= !i; j<n; ++j)
-					free_cent(&DA_INDEX(sec,j)  DBG1);
-
-				da_free(sec);
-			}
-		}
-#undef          ans_sec
-#undef          auth_sec
-#undef          add_sec
-	}
- free_recvbuf_return:
-	pdnsd_free(st->recvbuf);
-	return rv;
-}
-
-/*
- * Cancel a query, freeing all resources. Any query state is valid as input (this may even be called
- * if a call to p_exec_query already returned error or success)
- */
-static void p_cancel_query(query_stat_t *st)
-{
-	switch (st->state) {
-	QS_WRITE_CASES:
-	QS_READ_CASES:
-		close(st->sock);
-		/* fall through */
-	case QS_TCPINITIAL:
-	case QS_UDPINITIAL:
-		pdnsd_free(st->recvbuf);
-		pdnsd_free(st->msg);
-	}
-	if(st->state!=QS_INITIAL && st->state!=QS_DONE)
-		st->state=QS_CANCELED;
-}
-
-#if 0
-/*
- * Initialize a query_serv_t (server list for parallel query)
- * This is there for historical reasons only.
- */
-inline static void init_qserv(query_stat_array *q)
-{
-	*q=NULL;
-}
-#endif
-
-/*
- * Add a server entry to a query_serv_t
- * Note: only a reference to nsdomain is copied, not the name itself.
- * Be sure to free the q-list before freeing the name.
- */
-static int add_qserv(query_stat_array *q, pdnsd_a2 *a, int port, time_t timeout, unsigned flags,
-		     char nocache, char lean_query, char edns_query, char auth_s, char needs_testing, char trusted,
-		     const unsigned char *nsdomain, rejectlist_t *rejectlist)
-{
-	query_stat_t *qs;
-
-	if ((*q=DA_GROW1(*q))==NULL) {
-		DEBUG_MSG("Out of memory in add_qserv()\n");
-		return 0;
-	}
-
-	qs=&DA_LAST(*q);
-#ifdef ENABLE_IPV4
-	if (run_ipv4) {
-		memset(&qs->a.sin4,0,sizeof(qs->a.sin4));
-		qs->a.sin4.sin_family=AF_INET;
-		qs->a.sin4.sin_port=htons(port);
-		qs->a.sin4.sin_addr=a->ipv4;
-		SET_SOCKA_LEN4(qs->a.sin4);
-	}
-#endif
-#ifdef ENABLE_IPV6
-	ELSE_IPV6 {
-		memset(&qs->a.sin6,0,sizeof(qs->a.sin6));
-		qs->a.sin6.sin6_family=AF_INET6;
-		qs->a.sin6.sin6_port=htons(port);
-		qs->a.sin6.sin6_flowinfo=IPV6_FLOWINFO;
-		qs->a.sin6.sin6_addr=a->ipv6;
-		SET_SOCKA_LEN6(qs->a.sin6);
-
-		qs->a4fallback=a->ipv4;
-	}
-#endif
-	qs->timeout=timeout;
-	qs->flags=flags;
-	qs->nocache=nocache;
-	qs->auth_serv=auth_s;
-	qs->lean_query=lean_query;
-	qs->edns_query=edns_query;
-	qs->needs_testing=needs_testing;
-	qs->trusted=trusted;
-	qs->aa=0;
-	qs->tc=0;
-	qs->ra=0;
-	qs->failed=0;
-	qs->nsdomain=nsdomain; /* Note: only a reference is copied, not the name itself! */
-	qs->rejectlist=rejectlist;
-
-	qs->state=QS_INITIAL;
-	qs->qm=global.query_method;
-	qs->s_errno=0;
-	return 1;
-}
-
-/* Test whether two pdnsd_a2 addresses are the same. */
-inline __attribute__((always_inline))
-static int same_inaddr2_2(pdnsd_a2 *a, pdnsd_a2 *b)
-{
-  return SEL_IPVER(  a->ipv4.s_addr==b->ipv4.s_addr,
-		     IN6_ARE_ADDR_EQUAL(&a->ipv6,&b->ipv6) &&
-		      a->ipv4.s_addr==b->ipv4.s_addr );
-}
-
-/* This can be used to check whether a server address was already used in a
-   previous query_stat_t entry. */
-inline static int query_stat_same_inaddr2(query_stat_t *qs, pdnsd_a2 *b)
-{
-  return SEL_IPVER(  qs->a.sin4.sin_addr.s_addr==b->ipv4.s_addr,
-		     IN6_ARE_ADDR_EQUAL(&qs->a.sin6.sin6_addr,&b->ipv6) &&
-		      qs->a4fallback.s_addr==b->ipv4.s_addr );
-}
-
-
-/*
- * Free resources used by a query_serv_t
- * There for historical reasons only.
- */
-inline static void del_qserv(query_stat_array q)
-{
-	da_free(q);
-}
-
-struct qstatnode_s {
-	query_stat_array    qa;
-	struct qstatnode_s  *next;
-};
-typedef struct qstatnode_s qstatnode_t;
-
-struct qhintnode_s {
-	const unsigned char *nm;
-	int                 tp;
-	struct qhintnode_s  *next;
-};
-/* typedef struct qhintnode_s qhintnode_t; */  /* Already defined in dns_query.h */
-
-static int auth_ok(query_stat_array q, const unsigned char *name, int thint, dns_cent_t *ent,
-		   int hops, qstatnode_t *qslist, qhintnode_t *qhlist,
-		   query_stat_t *qse, dlist ns, query_stat_array *serv);
-static int p_dns_cached_resolve(query_stat_array q, const unsigned char *name, int thint, dns_cent_t **cachedp,
-				int hops, qstatnode_t *qslist, qhintnode_t *qhlist, time_t queryts,
-				unsigned char *c_soa);
-static int simple_dns_cached_resolve(atup_array atup_a, int port, char edns_query, time_t timeout,
-				     const unsigned char *name, int thint, dns_cent_t **cachedp);
-
-
-/*
- * Performs a semi-parallel query on the servers in q. PAR_QUERIES are executed parallel at a time.
- * name is the query name in dns protocol format (number.string etc),
- * ent is the dns_cent_t that will be filled.
- * hops is the number of recursions left.
- * qslist should refer to a list of server arrays used higher up in the calling chain. This way we can
- * avoid name servers that have already been tried for this name.
- * qhlist should refer to a list of names that we are trying to resolve higher up in the calling chain.
- * These names should be avoided further down the chain, or we risk getting caught in a wasteful cycle.
- * thint is a hint on the requested query type used to decide whether an aa record must be fetched
- * or a non-authoritative answer will be enough.
- *
- * nocache is needed because we add AA records to the cache. If the nocache flag is set, we do not
- * take the original values for the record, but flags=0 and ttl=0 (but only if we do not already have
- * a cached record for that set). These settings cause the record be purged on the next cache addition.
- * It will also not be used again.
- *
- * The return value of p_recursive_query() has the same meaning as that of p_dns_cached_resolve()
- * (see below).
- */
-static int p_recursive_query(query_stat_array q, const unsigned char *name, int thint, dns_cent_t **entp,
-			     int *nocache, int hops, qstatnode_t *qslist, qhintnode_t *qhlist,
-			     unsigned char *c_soa)
-{
-	dns_cent_t *ent,*entsave=NULL;
-	int i,j,k;
-	int rv=RC_SERVFAIL;
-	int qualval=0;
-	query_stat_t *qse=NULL;  /* Initialized to inhibit compiler warning */
-	dlist ns=NULL,nssave=NULL;
-	query_stat_array serv=NULL,servsave=NULL;
-
-#       define W_AUTHOK    8
-#       define W_NOTFAILED 2
-#       define W_NOTTRUNC  1
-#       define NOTFAILMASK 6
-#       define GOODQUAL    (W_AUTHOK+3*W_NOTFAILED)
-#	define save_query_result(ent,qs,ns,serv,authok)						\
-	{											\
-		int qval = authok*W_AUTHOK + (3-qs->failed)*W_NOTFAILED + (!qs->tc)*W_NOTTRUNC; \
-		if(entsave && qval>qualval) {							\
-			/* Free the old copy, because the new result is better. */		\
-			free_cent(entsave DBG1);						\
-			pdnsd_free(entsave);							\
-			entsave=NULL;								\
-			del_qserv(servsave);							\
-			dlist_free(nssave);							\
-		}										\
-		if(!entsave) {									\
-			entsave=ent;								\
-			servsave=serv;								\
-			/* The serv array contains references to data within the ns list,	\
-			   so we need to save a copy of the ns list as well! */			\
-			if(DA_NEL(serv)>0) nssave=ns; else {nssave=NULL;dlist_free(ns);}	\
-			qualval=qval;								\
-			qse=qs;									\
-		}										\
-		else {										\
-			/* We already have a copy, free the present one. */			\
-			free_cent(ent DBG1);							\
-			pdnsd_free(ent);							\
-			del_qserv(serv);							\
-			dlist_free(ns);								\
-		}										\
-		serv=NULL;									\
-		ns=NULL;									\
-	}
-
-	{
-		time_t ts0=time(NULL),global_timeout=global.timeout;
-		int dc=0,mc=0,nq=DA_NEL(q),parqueries=global.par_queries;
-
-		for (j=0; j<nq; j += parqueries) {
-			mc=j+parqueries;
-			if (mc>nq) mc=nq;
-
-			/* First, call p_exec_query once for each parallel set to initialize.
-			 * Then, as long as not all have the state QS_DONE or we have a timeout,
-			 * build a poll/select set for all active queries and call them accordingly. */
-			for (i=dc;i<mc;i++) {
-				query_stat_t *qs=&DA_INDEX(q,i);
-				if(i>=j) {
-					/* The below should not happen any more, but may once again
-					 * (immediate success) */
-					DEBUG_PDNSDA_MSG("Sending query to %s\n", PDNSDA2STR(PDNSD_A(qs)));
-				retryquery:
-					rv=p_exec_query(&ent, name, thint, qs,&ns,c_soa);
-					if (rv==RC_OK) {
-						int authok;
-						DEBUG_PDNSDA_MSG("Query to %s succeeded.\n", PDNSDA2STR(PDNSD_A(qs)));
-						if((authok=auth_ok(q, name, thint, ent, hops, qslist, qhlist, qs, ns, &serv))) {
-							if(authok>=0) {
-								if(!qs->failed
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
-								   && !(qs->qm==UDP_TCP && qs->tc)
-#endif
-								  )
-								{
-									qse=qs;
-									mc=i; /* No need to cancel queries beyond i */
-									goto done;
-								}
-							}
-							else {
-								mc=i; /* No need to cancel queries beyond i */
-								goto free_ent_return_failed;
-							}
-						}
-						/* We do not have a satisfactory answer.
-						   However, we will save a copy in case none of the other
-						   servers in the q list give a satisfactory answer either.
-						 */
-						save_query_result(ent,qs,ns,serv,authok);
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
-						if(qs->qm==UDP_TCP && qs->tc) {
-							switch_to_tcp(qs);
-							DEBUG_PDNSDA_MSG("Reply from %s was truncated. Trying again using TCP.\n",
-									 PDNSDA2STR(PDNSD_A(qs)));
-							goto retryquery;
-						}
-#endif
-					}
-					else if (rv==RC_NAMEERR || rv==RC_FATALERR) {
-						mc=i; /* No need to cancel queries beyond i */
-						goto done;
-					}
-				}
-				if (qs->state==QS_DONE && i==dc)
-					dc++;
-			}
-			if (dc<mc) {
-				time_t ts,maxto,now;
-				int pc,nevents;
-#ifdef NO_POLL
-				int maxfd;
-				fd_set reads;
-				fd_set writes;
-				struct timeval tv;
-#else
-				int ic;
-				struct pollfd polls[mc-dc];  /* Variable length array, may cause portability problems */
-#endif
-				/* we do time keeping by hand, because poll/select might be interrupted and
-				 * the returned times are not always to be trusted upon */
-				ts=time(NULL);
-				do {
-					/* build poll/select sets, maintain time.
-					 * If you do parallel queries, the highest timeout will be honored
-					 * also for the other servers when their timeout is exceeded and
-					 * the highest is not.
-					 * Changed by Paul Rombouts: queries are not canceled until we receive
-					 * a useful reply or everything has failed or timed out (also taking into
-					 * account the global timeout option).
-					 * Thus in the worst case all the queries in the q list will be active
-					 * simultaneously. The downside is that we may be wasting more resources
-					 * this way. The advantage is that we have a greater chance of catching a
-					 * reply. After all, if we wait longer anyway, why not for more servers. */
-					maxto=0;
-					pc=0;
-					rv=RC_SERVFAIL;
-
-#ifdef NO_POLL
-					FD_ZERO(&reads);
-					FD_ZERO(&writes);
-					maxfd=0;
-#endif
-					for (i=dc;i<mc;i++) {
-						query_stat_t *qs=&DA_INDEX(q,i);
-						if (qs->state!=QS_DONE) {
-							if (i>=j && qs->timeout>maxto)
-								maxto=qs->timeout;
-#ifdef NO_POLL
-							if (qs->sock>maxfd) {
-								maxfd=qs->sock;
-								PDNSD_ASSERT(maxfd<FD_SETSIZE,"socket file descriptor exceeds FD_SETSIZE.");
-							}
-
-							switch (qs->state) {
-							QS_READ_CASES:
-								FD_SET(qs->sock,&reads);
-								break;
-							QS_WRITE_CASES:
-								FD_SET(qs->sock,&writes);
-								break;
-							}
-#else
-							polls[pc].fd=qs->sock;
-							switch (qs->state) {
-							QS_READ_CASES:
-								polls[pc].events=POLLIN;
-								break;
-							QS_WRITE_CASES:
-								polls[pc].events=POLLOUT;
-								break;
-							default:
-								polls[pc].events=0;
-							}
-#endif
-							pc++;
-						}
-					}
-					if (pc==0) {
-						/* In this case, ALL are done and we do not need to cancel any
-						 * query. */
-						dc=mc;
-						break;
-					}
-					now=time(NULL);
-					maxto -= now-ts;
-					if (mc==nq) {
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
-						/* Don't use the global timeout if there are TCP queries
-						   we might want to retry using UDP. */
-						for (i=j;i<mc;i++) {
-							query_stat_t *qs=&DA_INDEX(q,i);
-							if(tentative_tcp_query(qs))
-								goto skip_globto;
-						}
-#endif
-						{
-							time_t globto=global_timeout-(now-ts0);
-							if(globto>maxto) maxto=globto;
-						}
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
-					skip_globto:;
-#endif
-					}
-#ifdef NO_POLL
-					tv.tv_sec=(maxto>0)?maxto:0;
-					tv.tv_usec=0;
-					nevents=select(maxfd+1,&reads,&writes,NULL,&tv);
-#else
-					nevents=poll(polls,pc,(maxto>0)?(maxto*1000):0);
-#endif
-					if (nevents<0) {
-						/* if(errno==EINTR)
-							continue; */
-						log_warn("poll/select failed: %s",strerror(errno));
-						goto done;
-					}
-					if (nevents==0) {
-						/* We have timed out. Mark the unresponsive servers so that we can consider
-						   them for retesting later on. We will continue to listen for replies from
-						   these servers as long as we have additional servers to try. */
-						for (i=j;i<mc;i++) {
-							query_stat_t *qs=&DA_INDEX(q,i);
-							if (qs->state!=QS_DONE && qs->needs_testing)
-								qs->needs_testing=2;
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
-							if (tentative_tcp_query(qs)) {
-								/* We timed out while waiting for a TCP connection.
-								   Try again using UDP.
-								*/
-								close(qs->sock);
-								switch_to_udp(qs);
-								DEBUG_PDNSDA_MSG("TCP connection to %s timed out. Trying to use UDP.\n",
-										 PDNSDA2STR(PDNSD_A(qs)));
-
-								rv=p_exec_query(&ent, name, thint, qs,&ns,c_soa);
-								/* In the unlikely case of immediate success */
-								if (rv==RC_OK) {
-									int authok;
-									DEBUG_PDNSDA_MSG("Query to %s succeeded.\n", PDNSDA2STR(PDNSD_A(qs)));
-									if((authok=auth_ok(q, name, thint, ent, hops, qslist, qhlist, qs, ns, &serv))) {
-										if(authok>=0) {
-											if(!qs->failed) {
-												qse=qs;
-												goto done;
-											}
-										}
-										else
-											goto free_ent_return_failed;
-									}
-									save_query_result(ent,qs,ns,serv,authok);
-								}
-								else if (rv==RC_NAMEERR || rv==RC_FATALERR) {
-									goto done;
-								}
-								++nevents;
-							}
-#endif
-						}
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
-						if (mc==nq) {
-							/* We will not try additional servers, but we might want to try again
-							   using UDP instead of TCP
-							*/
-							if(nevents && (time(NULL)-ts0)<global_timeout)
-								continue;
-						}
-#endif
-						break;
-					}
-#ifndef NO_POLL
-					ic=0;
-#endif
-					for (i=dc;i<mc;i++) {
-						query_stat_t *qs=&DA_INDEX(q,i);
-						/* Check if we got a poll/select event */
-						if (qs->state!=QS_DONE) {
-							int srv_event=0;
-							/* This detection may seem suboptimal, but normally, we have at most 2-3 parallel
-							 * queries, and anything else would be higher overhead, */
-#ifdef NO_POLL
-							switch (qs->state) {
-							QS_READ_CASES:
-								srv_event=FD_ISSET(qs->sock,&reads);
-								break;
-							QS_WRITE_CASES:
-								srv_event=FD_ISSET(qs->sock,&writes);
-								break;
-							}
-#else
-							do {
-								PDNSD_ASSERT(ic<pc, "file descriptor not found in poll() array");
-								k=ic++;
-							} while(polls[k].fd!=qs->sock);
-							/*
-							 * In case of an error, reenter the state machine
-							 * to catch it.
-							 */
-							switch (qs->state) {
-							QS_READ_CASES:
-								srv_event=polls[k].revents&(POLLIN|POLLERR|POLLHUP|POLLNVAL);
-								break;
-							QS_WRITE_CASES:
-								srv_event=polls[k].revents&(POLLOUT|POLLERR|POLLHUP|POLLNVAL);
-								break;
-							}
-#endif
-							if (srv_event) {
-								--nevents;
-							retryquery2:
-								rv=p_exec_query(&ent, name, thint, qs,&ns,c_soa);
-								if (rv==RC_OK) {
-									int authok;
-									DEBUG_PDNSDA_MSG("Query to %s succeeded.\n", PDNSDA2STR(PDNSD_A(qs)));
-									if((authok=auth_ok(q, name, thint, ent, hops, qslist, qhlist, qs, ns, &serv))) {
-										if(authok>=0) {
-											if(!qs->failed
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
-											   && !(qs->qm==UDP_TCP && qs->tc)
-#endif
-											  )
-											{
-												qse=qs;
-												goto done;
-											}
-										}
-										else
-											goto free_ent_return_failed;
-									}
-									save_query_result(ent,qs,ns,serv,authok);
-#if !defined(NO_TCP_QUERIES) && !defined(NO_UDP_QUERIES)
-									if(qs->qm==UDP_TCP && qs->tc) {
-										switch_to_tcp(qs);
-										DEBUG_PDNSDA_MSG("Reply from %s was truncated. Trying again using TCP.\n",
-												 PDNSDA2STR(PDNSD_A(qs)));
-										goto retryquery2;
-									}
-#endif
-								}
-								else if (rv==RC_NAMEERR || rv==RC_FATALERR) {
-									goto done;
-								}
-							}
-						}
-						/* recheck, this might have changed after the last p_exec_query */
-						if (qs->state==QS_DONE && i==dc)
-							dc++;
-					}
-					if(nevents>0) {
-						/* We have not managed to handle all the events reported by poll/select.
-						   Better call it quits, or we risk getting caught in a wasteful cycle.
-						*/
-						if(++poll_errs<=MAXPOLLERRS)
-							log_error("%d unhandled poll/select event(s) in p_recursive_query() at %s, line %d.",nevents,__FILE__,__LINE__);
-						rv=RC_SERVFAIL;
-						goto done;
-					}
-				} while (dc<mc);
-			}
-		}
-		goto cancel_queries;
-	free_ent_return_failed:
-		free_cent(ent  DBG1);
-		pdnsd_free(ent);
-		rv=RC_FATALERR;
-	done:
-		if (entsave) {
-			/* We have or will get an authoritative answer, or we have encountered an error.
-			   Free the non-authoritative answer. */
-			free_cent(entsave DBG1);
-			pdnsd_free(entsave);
-			entsave=NULL;
-			del_qserv(servsave);
-			dlist_free(nssave);
-		}
-	cancel_queries:
-		/* Cancel any remaining queries. */
-		for (i=dc;i<mc;i++)
-			p_cancel_query(&DA_INDEX(q,i));
-
-		{
-			/* See if any servers need to be retested for availability.
-			   We build up a list of addresses rather than call
-			   sched_server_test() separately for each address to
-			   reduce the overhead caused by locking and signaling */
-			int n=0;
-			for (i=0;i<mc;i++)
-				if (DA_INDEX(q,i).needs_testing > 1)
-					++n;
-			if(n>0) {
-				pdnsd_a addrs[n]; /* variable length array */
-				k=0;
-				for (i=0;i<mc;i++) {
-					query_stat_t *qs=&DA_INDEX(q,i);
-					if (qs->needs_testing > 1)
-						addrs[k++]= *PDNSD_A(qs);
-				}
-				sched_server_test(addrs,n,-1);
-			}
-		}
-	}
-
-	if(entsave) {
-		/*
-		 * If we didn't get rrs from any of the authoritative servers, or the answers were
-		 * unsatisfactory for another reason, take the one we had.
-		 * However, raise the CF_NOCACHE flag, so that it won't be used again (outside the
-		 * cache latency period).
-		 */
-		DEBUG_PDNSDA_MSG("Using %s reply from %s.\n",
-				 !(qualval&NOTFAILMASK)? "reportedly failed":
-				 !(qualval&W_NOTFAILED)? "inconsistent":
-				 !(qualval&W_NOTTRUNC)? "truncated":
-				 !(qualval&W_AUTHOK)? "non-authoritative": "good",
-				 PDNSDA2STR(PDNSD_A(qse)));
-		ent=entsave;
-		serv=servsave;
-		ns=nssave;
-		if(qualval<GOODQUAL) {
-			if(!(ent->flags&DF_NEGATIVE)) {
-				int jlim= RRARR_LEN(ent);
-				for (j=0; j<jlim; ++j) {
-					rr_set_t *rrs= RRARR_INDEX(ent,j);
-					if (rrs)
-						rrs->flags |= CF_NOCACHE;
-				}
-			}
-			else    /* Very unlikely, but not impossible. */
-				ent->flags |= DF_NOCACHE;
-		}
-		rv=RC_OK;
-	}
-	else if (rv!=RC_OK) {
-		if(rv==RC_FATALERR) {
-			DEBUG_MSG("Unrecoverable error encountered while processing query.\n");
-			rv=RC_SERVFAIL;
-		}
-		DEBUG_MSG("%sReturning error code \"%s\"\n",
-			  rv!=RC_NAMEERR? "No query succeeded. ": "",
-			  get_ename(rv));
-		goto clean_up_return;
-	}
-
-	if(nocache) *nocache=qse->nocache;
-
-	if (DA_NEL(serv)>0) {
-		/* Authority records present. Ask them, because the answer was non-authoritative. */
-		qstatnode_t qsn={q,qslist};
-		unsigned char save_ns=ent->c_ns,save_soa=ent->c_soa;
-		
-		if(qse->aa || qse->ra) {
-			/* The server claimed to be authoritative or have recursion available,
-			   yet we did not completely trust the answer for some reason.
-			   We will try to ask the servers in the authority records,
-			   but in case we fail, we will save a copy of the answer. */
-			entsave=ent;
-		}
-		else {
-			free_cent(ent  DBG1);
-			pdnsd_free(ent);
-			entsave=NULL;
-		}
-		rv=p_dns_cached_resolve(serv, name, thint,&ent,hops-1,&qsn,qhlist,time(NULL),c_soa);
-		if(rv==RC_OK || rv==RC_CACHED || (rv==RC_STALE && !entsave)) {
-			if(save_ns!=cundef && (ent->c_ns==cundef || ent->c_ns<save_ns))
-				ent->c_ns=save_ns;
-			if(save_soa!=cundef && (ent->c_soa==cundef || ent->c_soa<save_soa))
-				ent->c_soa=save_soa;
-			goto free_entsave;
-		}
-		else if(rv==RC_NAMEERR) {
-			if(c_soa && save_soa!=cundef && (*c_soa==cundef || *c_soa<save_soa))
-				*c_soa=save_soa;
-		free_entsave:
-			if(entsave) {
-				free_cent(entsave  DBG1);
-				pdnsd_free(entsave);
-			}
-		}
-		else if(entsave) {
-			if(rv==RC_STALE) {
-				free_cent(ent  DBG1);
-				pdnsd_free(ent);
-			}
-			DEBUG_PDNSDA_MSG("Using saved reply from %s that claims to %s.\n",
-					 PDNSDA2STR(PDNSD_A(qse)),
-					 qse->aa? "be authoritative": "have recursion available");
-			ent=entsave;
-			rv=RC_OK;
-		}
-	}
-
- clean_up_return:
-	/* Always free the serv array before freeing the ns list,
-	   because the serv array contains references to data within the ns list! */
-	del_qserv(serv);
-	dlist_free(ns);
-
-	if(rv==RC_OK || rv==RC_CACHED || rv==RC_STALE) *entp=ent;
-	return rv;
-#	undef save_query_result
-}
-
-/* auth_ok returns 1 if we don't need an authoritative answer or
-   if we can find servers to ask for an authoritative answer.
-   In the latter case these servers will be added to the *serv list.
-   A return value of 0 means the answer is not satisfactory in the
-   previous sense.
-   A return value of -1 indicates an error.
-*/
-static int auth_ok(query_stat_array q, const unsigned char *name, int thint, dns_cent_t *ent,
-		   int hops, qstatnode_t *qslist, qhintnode_t *qhlist,
-		   query_stat_t *qse, dlist ns, query_stat_array *serv)
-{
-	int retval=0;
-
-	/* If the answer was obtained from a name server which returned a failure code,
-	   the answer is never satisfactory. */
-	if(qse->failed > 1) return 0;
-
-	/*
-	  Look into the query type hint. If it is a wildcard (QT_*), we need an authoritative answer.
-	  Same if there is no record that answers the query.
-	  This test will also succeed if we have a negative cached record. This is done purposely.
-	*/
-#define aa_needed ((thint>=QT_MIN && thint<=QT_MAX) || \
-	           ((thint>=T_MIN && thint<=T_MAX) && \
-		    (!have_rr(ent,thint) && !have_rr_CNAME(ent))))
-
-	/* We will want to query authoritative servers if all of the following conditions apply:
-
-	   1) The server from which we got the answer was not configured as "proxy only".
-	   2) The answer is not a negatively cached domain (i.e. the server did not reply with NXDOMAIN).
-	   3) The query type is a wild card (QT_*), or no record answers the query.
-	   4) The answer that we have is non-authoritative.
-	*/
-	if(!(qse->auth_serv && !(ent->flags&DF_NEGATIVE) && aa_needed))
-		return 1;
-
-	if(qse->aa) {
-		/* The reply we have claims to be authoritative.
-		   However, I have seen cases where name servers raise the authority flag incorrectly (groan...),
-		   so as a work-around, we will check whether the domains for which the servers in the ns
-		   list are responsible, match the queried name better than the domain for which the
-		   last server was responsible. */
-		unsigned char *nsdomain;
-
-		if(!qse->nsdomain)
-			return 1;
-
-		nsdomain=dlist_first(ns);
-		if(!nsdomain)
-			return 1;
-		for(;;) {
-			unsigned int rem,crem;
-			domain_match(nsdomain,qse->nsdomain,&rem,&crem);
-			if(!(rem>0 && crem==0))
-				return 1;
-			domain_match(nsdomain,name,&rem,NULL);
-			if(rem!=0)
-				return 1;
-			do {
-				nsdomain=dlist_next(nsdomain);
-				if(!nsdomain)
-					goto done_checkauth;
-			} while(*nsdomain==0xff);  /* Skip repeats. */
-		}
-	done_checkauth:;
-
-		/* The name servers in the ns list are a better match for the queried name than
-		   the server from which we got the last reply, so ignore the aa flag.
-		*/
-#if DEBUG>0
-		if(debug_p) {
-			unsigned char dbuf[DNSNAMEBUFSIZE],sdbuf[DNSNAMEBUFSIZE];
-			nsdomain=dlist_first(ns);
-			DEBUG_PDNSDA_MSG("The name server %s which is responsible for the %s domain, raised the aa flag, but appears to delegate to the sub-domain %s\n",
-					 PDNSDA2STR(PDNSD_A(qse)),
-					 rhn2str(qse->nsdomain,dbuf,sizeof(dbuf)),
-					 rhn2str(nsdomain,sdbuf,sizeof(sdbuf)));
-		}
-#endif
-	}
-
-	/* The answer was non-authoritative. Try to build a list of addresses of authoritative servers. */
-	if (hops>0) {
-		unsigned char *nsdomp, *nsdomain=NULL;
-		rr_set_t *localrrset=NULL;
-		rr_bucket_t *localrr=NULL;
-		for (nsdomp=dlist_first(ns);;) {
-			unsigned char *nsname=NULL;  /* Initialize to inhibit compiler warning. */
-			int nserva, ia, n;
-			pdnsd_a2 serva[MAXNAMESERVIPS];
-
-			/* Get next name server. */
-			if(localrr) {
-				/* Use next locally defined NS record. */
-				nsname=(unsigned char *)(localrr->data);
-				localrr= localrr->next;
-			}
-			else {
-				if(localrrset) {
-					/* clean up rrset */
-					del_rrset(localrrset  DBG1);
-					localrrset=NULL;
-				}
-				if(!nsdomp)
-					break;
-				else if(*nsdomp!=0xff) {
-					/* New domain. */
-					nsdomain=nsdomp;
-					if (global.paranoid) {
-						unsigned int rem;
-						/* paranoia mode: don't query name servers that are not responsible */
-						domain_match(nsdomain,name,&rem,NULL);
-						if (rem!=0) {
-#if DEBUG>0
-							unsigned char nmbuf[DNSNAMEBUFSIZE],dbuf[DNSNAMEBUFSIZE],nsbuf[DNSNAMEBUFSIZE];
-							DEBUG_MSG("The name server %s is responsible for the %s domain, which does not match %s\n",
-								  rhn2str(nsname,nsbuf,sizeof(nsbuf)),
-								  rhn2str(nsdomain,dbuf,sizeof(dbuf)),
-								  rhn2str(name,nmbuf,sizeof(nmbuf)));
-#endif
-							/* Skip records in ns list for the same domain. */
-							do {
-								nsdomp=dlist_next(nsdomp);
-							} while (nsdomp && *nsdomp==0xff);
-							continue;
-						}
-					}
-					/*   Check if we have locally defined NS records, because
-					     they will override the ones provided by remote servers.
-					*/
-					localrrset=lookup_cache_local_rrset(nsdomain,T_NS);
-					if(localrrset) {
-						/* Skip records in ns list for the same domain. */
-						do {
-							nsdomp=dlist_next(nsdomp);
-						} while (nsdomp && *nsdomp==0xff);
-						localrr=localrrset->rrs;
-						if(!localrr) continue;
-						nsname=(unsigned char *)(localrr->data);
-						localrr= localrr->next;
-					}
-					else {
-						nsname=skiprhn(nsdomp);
-						nsdomp=dlist_next(nsdomp);
-					}
-				}
-				else {
-					/* domain repeated. */
-					nsname= nsdomp+1;
-					nsdomp=dlist_next(nsdomp);
-				}
-			}
-			/* look it up in the cache or resolve it if needed.
-			   The records received should be in the cache now, so it's ok.
-			*/
-			nserva=0;
-
-			{
-				const unsigned char *nm=name;
-				int tp=thint;
-				qhintnode_t *ql=qhlist;
-
-				for(;;) {
-					if(rhnicmp(nm,nsname) && tp==T_A) {
-						DEBUG_RHN_MSG("Not looking up address for name server \"%s\": "
-							      "risk of infinite recursion.\n",RHN2STR(nsname));
-						goto skip_server;
-					}
-					if(!ql) break;
-					nm=ql->nm;
-					tp=ql->tp;
-					ql=ql->next;
-				}
-				{
-					qhintnode_t qhn={name,thint,qhlist};
-					dns_cent_t *servent;
-					if (r_dns_cached_resolve(nsname,T_A, &servent, hops-1, &qhn,time(NULL),NULL)==RC_OK) {
-#ifdef ENABLE_IPV4
-						if (run_ipv4) {
-							rr_set_t *rrset=getrrset_A(servent);
-							rr_bucket_t *rrs;
-							if (rrset)
-								for(rrs=rrset->rrs; rrs && nserva<MAXNAMESERVIPS; rrs=rrs->next)
-									serva[nserva++].ipv4 = *((struct in_addr *)rrs->data);
-						}
-#endif
-#ifdef ENABLE_IPV6
-						ELSE_IPV6 {
-							rr_set_t *rrset6=getrrset_AAAA(servent);
-							rr_bucket_t *rrs6= (rrset6? rrset6->rrs: NULL);
-							rr_set_t *rrset4=getrrset_A(servent);
-							rr_bucket_t *rrs4= (rrset4? rrset4->rrs: NULL);
-							while(nserva<MAXNAMESERVIPS) {
-								if(rrs6) {
-									serva[nserva].ipv6 = *((struct in6_addr *)rrs6->data);
-									rrs6=rrs6->next;
-									if (rrs4) {
-										/* Store IPv4 address as fallback. */
-										serva[nserva].ipv4 = *((struct in_addr *)rrs4->data);
-										rrs4=rrs4->next;
-									}
-									else
-										serva[nserva].ipv4.s_addr=INADDR_ANY;
-								}
-								else if (rrs4) {
-									struct in_addr *ina = (struct in_addr *)rrs4->data;
-									struct in6_addr *in6a = &serva[nserva].ipv6;
-									IPV6_MAPIPV4(ina,in6a);
-									serva[nserva].ipv4.s_addr=INADDR_ANY;
-									rrs4=rrs4->next;
-								}
-								else
-									break;
-								++nserva;
-							}
-						}
-#endif
-						free_cent(servent  DBG1);
-						pdnsd_free(servent);
-					}
-				}
-			}
-
-#if DEBUG>0
-			if(nserva==0) {
-				DEBUG_RHN_MSG("Looking up address for name server \"%s\" failed.\n",RHN2STR(nsname));
-			}
-#endif
-			n=DA_NEL(*serv);
-			for(ia=0; ia<nserva; ++ia) {
-				pdnsd_a2 *pserva= &serva[ia];
-				int i;
-
-				if(is_local_addr(PDNSD_A2_TO_A(pserva)))
-					continue;  /* Do not use local address (as defined in netdev.c). */
-
-				/* Skip duplicate addresses. */
-				for (i=0; i<n; ++i) {
-					query_stat_t *qs=&DA_INDEX(*serv,i);
-					if (query_stat_same_inaddr2(qs,pserva))
-						goto skip_server_addr;
-				}
-
-				{       /* We've got an address. Add it to the list if it wasn't one of the servers we queried. */
-					query_stat_array qa=q;
-					qstatnode_t *ql=qslist;
-					for(;;) {
-						int i,n=DA_NEL(qa);
-						for (i=0; i<n; ++i) {
-							/* If qa[i].state == QS_DONE, then p_exec_query() has been called,
-							   and we should not query this server again */
-							query_stat_t *qs=&DA_INDEX(qa,i);
-							if (qs->state==QS_DONE && equiv_inaddr2(PDNSD_A(qs),pserva)) {
-								DEBUG_PDNSDA_MSG("Not trying name server %s, already queried.\n", PDNSDA2STR(PDNSD_A2_TO_A(pserva)));
-								goto skip_server_addr;
-							}
-						}
-						if(!ql) break;
-						qa=ql->qa;
-						ql=ql->next;
-					}
-				}
-
-				/* lean query mode is inherited. CF_AUTH and CF_ADDITIONAL are not (as specified
-				 * in CFF_NOINHERIT). */
-				if (!add_qserv(serv, pserva, 53, qse->timeout, qse->flags&~CFF_NOINHERIT, 0,
-					       qse->lean_query,qse->edns_query,2,0,!global.paranoid,nsdomain,
-					       inherit_rejectlist(qse)?qse->rejectlist:NULL))
-				{
-					return -1;
-				}
-				retval=1;
-			skip_server_addr:;
-			}
-		skip_server:;
-		}
-#if DEBUG>0
-		if(!retval) {
-			DEBUG_PDNSDA_MSG("No remaining authoritative name servers to try in authority section from %s.\n", PDNSDA2STR(PDNSD_A(qse)));
-		}
-#endif
-	}
-	else {
-		DEBUG_MSG("Maximum hops count reached; not trying any more name servers.\n");
-	}
-
-	return retval;
-
-#undef  aa_needed
-}
-
-/*
- * This checks the given name to resolve against the access list given for the server using the
- * include=, exclude= and policy= parameters.
- */
-static int use_server(servparm_t *s, const unsigned char *name)
-{
-	int i,n=DA_NEL(s->alist);
-
-	for (i=0;i<n;i++) {
-		slist_t *sl=&DA_INDEX(s->alist,i);
-		unsigned int nrem,lrem;
-		domain_match(name,sl->domain,&nrem,&lrem);
-		if(!lrem && (!sl->exact || !nrem))
-			return sl->rule==C_INCLUDED;
-	}
-
-	if (s->policy==C_SIMPLE_ONLY || s->policy==C_FQDN_ONLY) {
-                if(rhnsegcnt(name)<=1)
-			return s->policy==C_SIMPLE_ONLY;
-                else
-			return s->policy==C_FQDN_ONLY;
-        }
-
-	return s->policy==C_INCLUDED;
-}
-
-#if ALLOW_LOCAL_AAAA
-#define serv_has_rejectlist(s) ((s)->reject_a4!=NULL || (s)->reject_a6!=NULL)
-#else
-#define serv_has_rejectlist(s) ((s)->reject_a4!=NULL)
-#endif
-
-/* Take the lists of IP addresses from a server section sp and
-   convert them into a form that can be used by p_exec_query().
-   If successful, add_rejectlist returns a new list which is added to the old list rl,
-   otherwise the return value is NULL.
-*/
-static rejectlist_t *add_rejectlist(rejectlist_t *rl, servparm_t *sp)
-{
-	int i,na4=DA_NEL(sp->reject_a4);
-	addr4maskpair_t *a4p;
-#if ALLOW_LOCAL_AAAA
-	int na6=DA_NEL(sp->reject_a6);
-	addr6maskpair_t *a6p;
-#endif
-	rejectlist_t *rlist = malloc(sizeof(rejectlist_t) + na4*sizeof(addr4maskpair_t)
-#if ALLOW_LOCAL_AAAA
-				     + na6*sizeof(addr6maskpair_t)
-#endif
-				     );
-
-	if(rlist) {
-#if ALLOW_LOCAL_AAAA
-		/* Store the larger IPv6 addresses first to avoid possible alignment problems. */
-		rlist->na6 = na6;
-		a6p = (addr6maskpair_t *)rlist->rdata;
-		for(i=0;i<na6;++i)
-			*a6p++ = DA_INDEX(sp->reject_a6,i);
-#endif
-		rlist->na4 = na4;
-#if ALLOW_LOCAL_AAAA
-		a4p = (addr4maskpair_t *)a6p;
-#else
-		a4p = (addr4maskpair_t *)rlist->rdata;
-#endif
-		for(i=0;i<na4;++i)
-			*a4p++ = DA_INDEX(sp->reject_a4,i);
-
-		rlist->policy = sp->rejectpolicy;
-		rlist->inherit = sp->rejectrecursively;
-		rlist->next = rl;
-	}
-	else {
-		DEBUG_MSG("Out of memory in add_rejectlist()\n");
-	}
-
-	return rlist;
-}
-
-inline static void free_rejectlist(rejectlist_t *rl)
-{
-	while(rl) {
-		rejectlist_t *next = rl->next;
-		free(rl);
-		rl=next;
-	}
-}
-
-/* Lookup addresses of nameservers provided by root servers for a given domain in the cache.
-   Returns NULL if unsuccessful (or the cache entries have timed out).
-*/
-static addr2_array lookup_ns(const unsigned char *domain)
-{
-	addr2_array res=NULL;
-
-	dns_cent_t *cent=lookup_cache(domain,NULL);
-	if(cent) {
-		rr_set_t *rrset=getrrset_NS(cent);
-		if(rrset && (rrset->flags&CF_ROOTSERV) && !timedout(rrset)) {
-			rr_bucket_t *rr;
-			for(rr=rrset->rrs; rr; rr=rr->next) {
-				dns_cent_t *servent=lookup_cache((unsigned char*)(rr->data),NULL);
-				int nserva=0;
-				pdnsd_a2 serva[MAXNAMESERVIPS];
-				if(servent) {
-#ifdef ENABLE_IPV4
-					if (run_ipv4) {
-						rr_set_t *rrset=getrrset_A(servent);
-						rr_bucket_t *rrs;
-						if (rrset && !timedout(rrset))
-							for(rrs=rrset->rrs; rrs && nserva<MAXNAMESERVIPS; rrs=rrs->next)
-								serva[nserva++].ipv4 = *((struct in_addr *)rrs->data);
-					}
-#endif
-#ifdef ENABLE_IPV6
-					ELSE_IPV6 {
-						rr_set_t *rrset6=getrrset_AAAA(servent);
-						rr_set_t *rrset4=getrrset_A(servent);
-						rr_bucket_t *rrs6=NULL, *rrs4=NULL;
-						if (rrset6 && !(rrset6->flags&CF_NEGATIVE)) {
-							if(!timedout(rrset6)) {
-								rrs6= rrset6->rrs;
-								if (rrs6 && rrset4 && !(rrset4->flags&CF_NEGATIVE)) {
-									if(timedout(rrset4) || !(rrs4=rrset4->rrs))
-										/* Treat this as a failure. */
-										rrs6=NULL;
-								}
-							}
-						}
-						else if (rrset4 && !timedout(rrset4))
-							rrs4= rrset4->rrs;
-
-						while(nserva<MAXNAMESERVIPS) {
-							if(rrs6) {
-								serva[nserva].ipv6 = *((struct in6_addr *)rrs6->data);
-								rrs6=rrs6->next;
-								if (rrs4) {
-									/* Store IPv4 address as fallback. */
-									serva[nserva].ipv4 = *((struct in_addr *)rrs4->data);
-									rrs4=rrs4->next;
-								}
-								else
-									serva[nserva].ipv4.s_addr=INADDR_ANY;
-							}
-							else if (rrs4) {
-								struct in_addr *ina = (struct in_addr *)rrs4->data;
-								struct in6_addr *in6a = &serva[nserva].ipv6;
-								IPV6_MAPIPV4(ina,in6a);
-								serva[nserva].ipv4.s_addr=INADDR_ANY;
-								rrs4=rrs4->next;
-							}
-							else
-								break;
-							++nserva;
-						}
-					}
-#endif
-					free_cent(servent  DBG1);
-					pdnsd_free(servent);
-				}
-				if(nserva==0) {
-					/* Address lookup failed. */
-					da_free(res); res=NULL;
-					break;
-				}
-				else {
-					int i, j, n=DA_NEL(res);
-					for(i=0; i<nserva; ++i) {
-						pdnsd_a2 *pserva= &serva[i];
-						/* Skip duplicates */
-						for (j=0; j<n; ++j) {
-							pdnsd_a2 *pa= &DA_INDEX(res,j);
-							if (same_inaddr2_2(pa,pserva))
-								goto skip_address;
-						}
-						if(!(res=DA_GROW1(res))) {
-							DEBUG_MSG("Out of memory in lookup_ns()\n");
-							goto free_cent_return;
-						}
-						DA_LAST(res)= *pserva;
-					skip_address:;
-					}
-				}
-			}
-		}
-	free_cent_return:
-		free_cent(cent  DBG1);
-		pdnsd_free(cent);
-	}
-
-	return res;
-}
-
-
-/* Find addresses of root servers by looking them up in the cache or querying (non-recursively)
-   the name servers in the list provided.
-   Returns NULL if unsuccessful (or the cache entries have timed out).
-*/
-addr2_array dns_rootserver_resolv(atup_array atup_a, int port, char edns_query, time_t timeout)
-{
-	addr2_array res=NULL;
-	dns_cent_t *cent;
-	static const unsigned char rdomain[1]={0};  /* root-domain name. */
-	int rc;
-
-	rc=simple_dns_cached_resolve(atup_a,port,edns_query,timeout,rdomain,T_NS,&cent);
-	if(rc==RC_OK) {
-		rr_set_t *rrset=getrrset_NS(cent);
-		if(rrset) {
-			rr_bucket_t *rr;
-			unsigned nfail=0;
-			for(rr=rrset->rrs; rr; rr=rr->next) {
-				dns_cent_t *servent;
-				int nserva=0;
-				pdnsd_a2 serva[MAXNAMESERVIPS];
-
-				rc=simple_dns_cached_resolve(atup_a,port,edns_query,timeout,
-							     (const unsigned char *)(rr->data),T_A,&servent);
-				if(rc==RC_OK) {
-#ifdef ENABLE_IPV4
-					if (run_ipv4) {
-						rr_set_t *rrset=getrrset_A(servent);
-						rr_bucket_t *rrs;
-						if (rrset)
-							for(rrs=rrset->rrs; rrs && nserva<MAXNAMESERVIPS; rrs=rrs->next)
-								serva[nserva++].ipv4 = *((struct in_addr *)rrs->data);
-					}
-#endif
-#ifdef ENABLE_IPV6
-					ELSE_IPV6 {
-						rr_set_t *rrset6=getrrset_AAAA(servent);
-						rr_bucket_t *rrs6= (rrset6? rrset6->rrs: NULL);
-						rr_set_t *rrset4=getrrset_A(servent);
-						rr_bucket_t *rrs4= (rrset4? rrset4->rrs: NULL);
-						while(nserva<MAXNAMESERVIPS) {
-							if(rrs6) {
-								serva[nserva].ipv6 = *((struct in6_addr *)rrs6->data);
-								rrs6=rrs6->next;
-								if (rrs4) {
-									/* Store IPv4 address as fallback. */
-									serva[nserva].ipv4 = *((struct in_addr *)rrs4->data);
-									rrs4=rrs4->next;
-								}
-								else
-									serva[nserva].ipv4.s_addr=INADDR_ANY;
-							}
-							else if (rrs4) {
-								struct in_addr *ina = (struct in_addr *)rrs4->data;
-								struct in6_addr *in6a = &serva[nserva].ipv6;
-								IPV6_MAPIPV4(ina,in6a);
-								serva[nserva].ipv4.s_addr=INADDR_ANY;
-								rrs4=rrs4->next;
-							}
-							else
-								break;
-							++nserva;
-						}
-					}
-#endif
-					free_cent(servent  DBG1);
-					pdnsd_free(servent);
-				}
-				else {
-					DEBUG_RHN_MSG("Simple query for %s type A failed (rc: %s)\n",
-						      RHN2STR((const unsigned char *)(rr->data)),get_ename(rc));
-				}
-
-				if(nserva==0) {
-					/* Address lookup failed. */
-					DEBUG_RHN_MSG("Failed to obtain address of root server %s in dns_rootserver_resolv()\n",
-						      RHN2STR((const unsigned char *)(rr->data)));
-					++nfail;
-				}
-				else {
-					int i, j, n=DA_NEL(res);
-					for(i=0; i<nserva; ++i) {
-						pdnsd_a2 *pserva= &serva[i];
-						/* Skip duplicates */
-						for (j=0; j<n; ++j) {
-							pdnsd_a2 *pa= &DA_INDEX(res,j);
-							if (same_inaddr2_2(pa,pserva))
-								goto skip_address;
-						}
-						if(!(res=DA_GROW1(res))) {
-							DEBUG_MSG("Out of memory in dns_rootserver_resolv()\n");
-							goto free_cent_return;
-						}
-						DA_LAST(res)= *pserva;
-					skip_address:;
-					}
-				}
-			}
-			/* At least half of the names should resolve, otherwise we reject the result. */
-			if(nfail>DA_NEL(res)) {
-				DEBUG_MSG("Too many root-server resolve failures (%u succeeded, %u failed),"
-					  " rejecting the result.\n", DA_NEL(res),nfail);
-				da_free(res); res=NULL;
-			}
-		}
-	free_cent_return:
-		free_cent(cent  DBG1);
-		pdnsd_free(cent);
-	}
-	else {
-		DEBUG_MSG("Simple query for root domain type NS failed (rc: %s)\n",get_ename(rc));
-	}
-
-	return res;
-}
-
-
-static int p_dns_resolve(const unsigned char *name, int thint, dns_cent_t **cachedp, int hops, qhintnode_t *qhlist,
-			 unsigned char *c_soa)
-{
-	int i,n,rc;
-	int one_up=0,seenrootserv=0;
-	query_stat_array serv=NULL;
-	rejectlist_t *rejectlist=NULL;
-
-	/* try the servers in the order of their definition */
-	lock_server_data();
-	n=DA_NEL(servers);
-	for (i=0;i<n;++i) {
-		servparm_t *sp=&DA_INDEX(servers,i);
-		if(sp->rootserver<=1 && use_server(sp,name)) {
-			int m=DA_NEL(sp->atup_a);
-			if(m>0) {
-				rejectlist_t *rjl=NULL;
-				int j=0, jstart=0;
-				if(sp->rand_servers) j=jstart=random()%m;
-				do {
-					atup_t *at=&DA_INDEX(sp->atup_a,j);
-					if (at->is_up) {
-						if(sp->rootserver) {
-							if(!seenrootserv) {
-								int nseg,mseg=1,l=0;
-								const unsigned char *topdomain=NULL;
-								addr2_array adrs=NULL;
-								seenrootserv=1;
-								nseg=rhnsegcnt(name);
-								if(nseg>=2) {
-									static const unsigned char rhn_arpa[6]= {4,'a','r','p','a',0};
-									unsigned int rem;
-									/* Check if the queried name ends in "arpa" */
-									domain_match(rhn_arpa, name, &rem,NULL);
-									if(rem==0) mseg=3;
-								}
-								if(nseg<=mseg) {
-									if(nseg>0) mseg=nseg-1; else mseg=0;
-								}
-								for(;mseg>=1; --mseg) {
-									topdomain=skipsegs(name,nseg-mseg);
-									adrs=lookup_ns(topdomain);
-									l=DA_NEL(adrs);
-									if(l>0) break;
-									if(adrs) da_free(adrs);
-								}
-								if(l>0) {
-									/* The name servers for this top level domain have been found in the cache.
-									   Instead of asking the root server, we will use this cached information.
-									*/
-									int k=0, kstart=0;
-									if(sp->rand_servers) k=kstart=random()%l;
-									if(serv_has_rejectlist(sp) && sp->rejectrecursively && !rjl) {
-										rjl=add_rejectlist(rejectlist,sp);
-										if(!rjl) {one_up=0; da_free(adrs); goto done;}
-										rejectlist=rjl;
-									}
-									do {
-										one_up=add_qserv(&serv, &DA_INDEX(adrs,k), 53, sp->timeout,
-												 mk_flag_val(sp)&~CFF_NOINHERIT, sp->nocache,
-												 sp->lean_query, sp->edns_query, 2, 0,
-												 !global.paranoid, topdomain, rjl);
-										if(!one_up) {
-											da_free(adrs);
-											goto done;
-										}
-										if(++k==l) k=0;
-									} while(k!=kstart);
-									da_free(adrs);
-									DEBUG_PDNSDA_MSG("Not querying root-server %s, using cached information instead.\n",
-											 PDNSDA2STR(PDNSD_A2_TO_A(&at->a)));
-									seenrootserv=2;
-									break;
-								}
-							}
-							else if(seenrootserv==2)
-								break;
-						}
-						if(serv_has_rejectlist(sp) && !rjl) {
-							rjl=add_rejectlist(rejectlist,sp);
-							if(!rjl) {one_up=0; goto done;}
-							rejectlist=rjl;
-						}
-						one_up=add_qserv(&serv, &at->a, sp->port, sp->timeout,
-								 mk_flag_val(sp), sp->nocache, sp->lean_query, sp->edns_query,
-								 sp->rootserver?3:(!sp->is_proxy),
-								 needs_testing(sp), 1, NULL, rjl);
-						if(!one_up)
-							goto done;
-					}
-					if(++j==m) j=0;
-				} while(j!=jstart);
-			}
-		}
-	}
- done:
-	unlock_server_data();
-	if (one_up) {
-		dns_cent_t *cached;
-		int nocache;
-		rc=p_recursive_query(serv, name, thint, &cached, &nocache, hops, NULL, qhlist, c_soa);
-		if (rc==RC_OK) {
-			if (!nocache) {
-				dns_cent_t *tc;
-				add_cache(cached);
-				if ((tc=lookup_cache(name,NULL))) {
-					/* The cache may hold more information  than the recent query yielded.
-					 * try to get the merged record. If that fails, revert to the new one. */
-					free_cent(cached  DBG1);
-					pdnsd_free(cached);
-					cached=tc;
-					/* rc=RC_CACHED; */
-				} else
-					DEBUG_MSG("p_dns_resolve: merging answer with cache failed, using local cent copy.\n");
-			} else
-				DEBUG_MSG("p_dns_resolve: nocache.\n");
-
-			*cachedp=cached;
-		}
-		else if(rc==RC_CACHED || rc==RC_STALE)
-			*cachedp=cached;
-	}
-	else {
-		DEBUG_MSG("No server is marked up and allowed for this domain.\n");
-		rc=RC_SERVFAIL; /* No server up */
-	}
-	del_qserv(serv);
-	free_rejectlist(rejectlist);
-	return rc;
-}
-
-static int set_flags_ttl(unsigned short *flags, time_t *ttl, dns_cent_t *cached, int tp)
-{
-	rr_set_t *rrset=getrrset(cached,tp);
-	if (rrset) {
-		time_t t;
-		*flags|=rrset->flags;
-		t=rrset->ts+CLAT_ADJ(rrset->ttl);
-		if (!*ttl || *ttl>t)
-			*ttl=t;
-		return 1;
-	}
-	return 0;
-}
-
-static void set_all_flags_ttl(unsigned short *flags, time_t *ttl, dns_cent_t *cached)
-{
-	int i, ilim= RRARR_LEN(cached);
-
-	for(i=0; i<ilim; ++i) {
-		rr_set_t *rrset= RRARR_INDEX(cached,i);
-		if (rrset) {
-			time_t t;
-			*flags|=rrset->flags;
-			t=rrset->ts+CLAT_ADJ(rrset->ttl);
-			if (!*ttl || *ttl>t)
-				*ttl=t;
-		}
-	}
-}
-
-/*
-  Lookup name in the cache, and if records of type thint are found, check whether a requery is needed.
-  Possible returns values are:
-    RC_OK:        the name is locally defined.
-    RC_NAMEERR:   the name is locally negatively cached.
-    RC_CACHED:    name was found in the cache, requery not needed.
-    RC_STALE:     name was found in the cache, but requery is needed.
-    RC_NOTCACHED: name was not found in the cache.
-*/
-static int lookup_cache_status(const unsigned char *name, int thint, dns_cent_t **cachedp, unsigned short *flagsp,
-			       time_t queryts, unsigned char *c_soa)
-{
-	dns_cent_t *cached;
-	int rc=RC_NOTCACHED;
-	int wild=0;
-	unsigned short flags=0;
-
-	if ((cached=lookup_cache(name,&wild))) {
-		short int neg=0,timed=0,need_req=0;
-		time_t ttl=0;
-
-		if (cached->flags&DF_LOCAL) {
-#if DEBUG>0
-			{
-				char dflagstr[DFLAGSTRLEN];
-				DEBUG_RHN_MSG("Entry found in cache for '%s' with dflags=%s.\n",
-					      RHN2STR(cached->qname),dflags2str(cached->flags,dflagstr));
-			}
-#endif
-			if((cached->flags&DF_NEGATIVE) || wild==w_locnerr) {
-				if(c_soa) {
-					if(cached->c_soa!=cundef)
-						*c_soa=cached->c_soa;
-					else if(have_rr_SOA(cached))
-						*c_soa=rhnsegcnt(cached->qname);
-					else {
-						unsigned char *owner=getlocalowner(cached->qname,T_SOA);
-						if(owner)
-							*c_soa=rhnsegcnt(owner);
-					}
-				}
-				free_cent(cached  DBG1);
-				pdnsd_free(cached);
-				rc= RC_NAMEERR;
-				goto return_rc;
-			}
-			else {
-				rc= RC_OK;
-				goto return_rc_cent;
-			}
-		}
-		DEBUG_RHN_MSG("Record found in cache for %s\n",RHN2STR(cached->qname));
-		if (cached->flags&DF_NEGATIVE) {
-			if ((ttl=cached->neg.ts+CLAT_ADJ(cached->neg.ttl))>=queryts)
-				neg=1;
-			else
-				timed=1;
-		} else {
-			if (thint==QT_ALL) {
-				set_all_flags_ttl(&flags, &ttl, cached);
-			}
-			else if (!set_flags_ttl(&flags, &ttl, cached, T_CNAME) || (getrrset_CNAME(cached)->flags&CF_NEGATIVE)) {
-				flags=0; ttl=0;
-				if (thint>=T_MIN && thint<=T_MAX) {
-					if (set_flags_ttl(&flags, &ttl, cached, thint))
-						neg=getrrset(cached,thint)->flags&CF_NEGATIVE && ttl>=queryts;
-				}
-				else if (thint==QT_MAILB) {
-					set_flags_ttl(&flags, &ttl, cached, T_MB);
-					set_flags_ttl(&flags, &ttl, cached, T_MG);
-					set_flags_ttl(&flags, &ttl, cached, T_MR);
-				}
-				else if (thint==QT_MAILA) {
-					set_flags_ttl(&flags, &ttl, cached, T_MD);
-					set_flags_ttl(&flags, &ttl, cached, T_MF);
-				}
-			}
-			if(!(flags&CF_LOCAL)) {
-				if (thint==QT_ALL) {
-					if(!(cached->flags&DF_AUTH))
-						need_req=1;
-				}
-				else if (thint>=QT_MIN && thint<=QT_MAX) {
-					if(!(flags&CF_AUTH && !(flags&CF_ADDITIONAL)))
-						need_req=1;
-				}
-				if (ttl<queryts)
-					timed=1;
-			}
-		}
-#if DEBUG>0
-		{
-			char dflagstr[DFLAGSTRLEN],cflagstr[CFLAGSTRLEN];
-			DEBUG_MSG("Requery decision: dflags=%s, cflags=%s, req=%i, neg=%i, timed=%i, %s=%li\n",
-				  dflags2str(cached->flags,dflagstr),cflags2str(flags,cflagstr),need_req,neg,timed,
-				  ttl?"ttl":"timestamp",(long)(ttl?(ttl-queryts):ttl));
-		}
-#endif
-		rc = (!neg && (need_req || timed))? RC_STALE: RC_CACHED;
-	return_rc_cent:
-		*cachedp=cached;
-	}
-
-return_rc:
-	if(flagsp) *flagsp=flags;
-	return rc;
-}
-
-
-/*
- * Resolve records for name into dns_cent_t, type thint.
- * q is the set of servers to query from. Set q to NULL if you want to ask the servers registered with pdnsd.
- * qslist should refer to a list of server arrays already used higher up the calling chain (may be NULL).
- * p_dns_cached_resolve() returns one of the following values:
- *   RC_OK  means that the name was successfully resolved by querying other servers.
- *   RC_CACHED or RC_STALE means that the name was found in the cache.
- *   RC_NAMEERR or RC_SERVFAIL indicates a resolve error.
- */
-static int p_dns_cached_resolve(query_stat_array q, const unsigned char *name, int thint, dns_cent_t **cachedp,
-				int hops, qstatnode_t *qslist, qhintnode_t *qhlist, time_t queryts,
-				unsigned char *c_soa)
-{
-	dns_cent_t *cached=NULL;
-	int rc;
-	unsigned short flags=0;
-
-	DEBUG_RHN_MSG("Starting cached resolve for: %s, query %s\n",RHN2STR(name),get_tname(thint));
-	rc= lookup_cache_status(name, thint, &cached, &flags,queryts,c_soa);
-	if(rc==RC_OK) {
-		/* Locally defined record. */
-		*cachedp=cached;
-		return RC_CACHED;
-	}
-	else if(rc==RC_NAMEERR)  /* Locally negated name. */
-		return RC_NAMEERR;
-
-	/* update server records set onquery */
-	if(global.onquery) test_onquery();
-	if (global.lndown_kluge && !(flags&CF_LOCAL)) {
-		int i,n,linkdown=1;
-		lock_server_data();
-		n=DA_NEL(servers);
-		for(i=0;i<n;++i) {
-			servparm_t *sp=&DA_INDEX(servers,i);
-			if(sp->rootserver<=1) {
-				int j,m=DA_NEL(sp->atup_a);
-				for(j=0;j<m;++j) {
-					if (DA_INDEX(sp->atup_a,j).is_up) {
-						linkdown=0;
-						goto done;
-					}
-				}
-			}
-		}
-	done:
-		unlock_server_data();
-		if (linkdown) {
-			DEBUG_MSG("Link is down.\n");
-			rc=RC_SERVFAIL;
-			goto cleanup_return;
-		}
-	}
-	if (rc!=RC_CACHED) {
-		dns_cent_t *ent;
-		DEBUG_MSG("Trying name servers.\n");
-		if (q)
-			rc=p_recursive_query(q,name,thint, &ent,NULL,hops,qslist,qhlist,c_soa);
-		else
-			rc=p_dns_resolve(name,thint, &ent,hops,qhlist,c_soa);
-
-		if(rc==RC_OK || rc==RC_CACHED || rc==RC_STALE) {
-			if (cached) {
-				free_cent(cached  DBG1);
-				pdnsd_free(cached);
-			}
-			cached=ent;
-		}
-		else if (rc==RC_SERVFAIL && cached && (flags&CF_NOPURGE)) {
-			/* We could not get a new record, but we have a timed-out cached one
-			   with the nopurge flag set. This means that we shall use it even
-			   if timed out when no new one is available*/
-			DEBUG_MSG("Falling back to cached record.\n");
-			rc=RC_STALE;
-		}
-		else
-			goto cleanup_return;
-	} else {
-		DEBUG_MSG("Using cached record.\n");
-	}
-	*cachedp=cached;
-	return rc;
-
- cleanup_return:
-	if(cached) {
-		free_cent(cached  DBG1);
-		pdnsd_free(cached);
-	}
-	return rc;
-}
-
-
-/* r_dns_cached_resolve() is like p_dns_cached_resolve(), except that r_dns_cached_resolve()
-   will not return negatively cached entries, but returns RC_NAMEERR instead.
-   It also does not return RC_CACHED or RC_STALE, but RC_OK instead.
-*/
-int r_dns_cached_resolve(unsigned char *name, int thint, dns_cent_t **cachedp,
-			 int hops, qhintnode_t *qhlist, time_t queryts,
-			 unsigned char *c_soa)
-{
-	dns_cent_t *cached;
-	int rc=p_dns_cached_resolve(NULL,name,thint,&cached,hops,NULL,qhlist,queryts,c_soa);
-	if(rc==RC_OK || rc==RC_CACHED || rc==RC_STALE) {
-		if(cached->flags&DF_NEGATIVE) {
-			if(c_soa)
-				*c_soa=cached->c_soa;
-			free_cent(cached  DBG1);
-			pdnsd_free(cached);
-			return RC_NAMEERR;
-		}
-		else {
-			*cachedp=cached;
-			return RC_OK;
-		}
-	}
-	return rc;
-}
-
-
-static int simple_dns_cached_resolve(atup_array atup_a, int port, char edns_query, time_t timeout,
-				     const unsigned char *name, int thint, dns_cent_t **cachedp)
-{
-	dns_cent_t *cached=NULL;
-	int rc;
-
-	DEBUG_RHN_MSG("Starting simple cached resolve for: %s, query %s\n",RHN2STR(name),get_tname(thint));
-	rc= lookup_cache_status(name, thint, &cached, NULL, time(NULL), NULL);
-	if(rc==RC_OK) {
-		/* Locally defined record. */
-		*cachedp=cached;
-		return RC_OK;
-	}
-	else if(rc==RC_NAMEERR)  /* Locally negated name. */
-		return RC_NAMEERR;
-
-	if (rc!=RC_CACHED) {
-		query_stat_array qserv;
-		int j,m;
-		if (cached) {
-			free_cent(cached  DBG1);
-			pdnsd_free(cached);
-			cached=NULL;
-		}
-		DEBUG_MSG("Trying name servers.\n");
-		qserv=NULL;
-		m=DA_NEL(atup_a);
-		for(j=0; j<m; ++j) {
-			if(!add_qserv(&qserv, &DA_INDEX(atup_a,j).a, port, timeout, 0, 0, 1, edns_query, 0, 0, 1, NULL, NULL)) {
-				/* Note: qserv array already cleaned up by add_qserv() */
-				return RC_SERVFAIL;
-			}
-		}
-		rc=p_recursive_query(qserv,name,thint, &cached,NULL,0,NULL,NULL,NULL);
-		del_qserv(qserv);
-		if (rc==RC_OK) {
-			dns_cent_t *tc;
-			add_cache(cached);
-			if ((tc=lookup_cache(name,NULL))) {
-				/* The cache may hold more information  than the recent query yielded.
-				 * try to get the merged record. If that fails, revert to the new one. */
-				free_cent(cached  DBG1);
-				pdnsd_free(cached);
-				cached=tc;
-			} else
-				DEBUG_MSG("simple_dns_cached_resolve: merging answer with cache failed, using local cent copy.\n");
-		}
-		else if(!(rc==RC_CACHED || rc==RC_STALE))  /* RC_CACHED and RC_STALE should not be possible. */
-			return rc;
-	} else {
-		DEBUG_MSG("Using cached record.\n");
-	}
-
-	if(cached->flags&DF_NEGATIVE) {
-		free_cent(cached  DBG1);
-		pdnsd_free(cached);
-		return RC_NAMEERR;
-	}
-
-	*cachedp=cached;
-	return RC_OK;
-}
-
-
-/* Check whether a server is responsive by sending it an (empty) query.
-   rep is the number of times this is tried in case of no reply.
- */
-int query_uptest(pdnsd_a *addr, int port, const unsigned char *name, time_t timeout, int rep)
-{
-	query_stat_t qs;
-	int iter=0,rv;
-
-#ifdef ENABLE_IPV4
-	if (run_ipv4) {
-		memset(&qs.a.sin4,0,sizeof(qs.a.sin4));
-		qs.a.sin4.sin_family=AF_INET;
-		qs.a.sin4.sin_port=htons(port);
-		qs.a.sin4.sin_addr=addr->ipv4;
-		SET_SOCKA_LEN4(qs.a.sin4);
-	}
-#endif
-#ifdef ENABLE_IPV6
-	ELSE_IPV6 {
-		memset(&qs.a.sin6,0,sizeof(qs.a.sin6));
-		qs.a.sin6.sin6_family=AF_INET6;
-		qs.a.sin6.sin6_port=htons(port);
-		qs.a.sin6.sin6_flowinfo=IPV6_FLOWINFO;
-		qs.a.sin6.sin6_addr=addr->ipv6;
-		SET_SOCKA_LEN6(qs.a.sin6);
-
-		qs.a4fallback.s_addr=INADDR_ANY;
-	}
-#endif
-	qs.timeout=timeout;
-	qs.flags=0;
-	qs.nocache=0;
-	qs.auth_serv=0;
-	qs.lean_query=1;
-	qs.edns_query=0;
-	qs.needs_testing=0;
-	qs.trusted=1;
-	qs.aa=0;
-	qs.tc=0;
-	qs.ra=0;
-	qs.failed=0;
-	qs.nsdomain=NULL;
-	qs.rejectlist=NULL;
-
- try_again:
-	qs.state=QS_INITIAL;
-	qs.qm=global.query_method;
-	qs.s_errno=0;
-	rv=p_exec_query(NULL, name, T_A, &qs, NULL, NULL);
-	if(rv==-1) {
-		time_t ts, tpassed;
-		for(ts=time(NULL), tpassed=0;; tpassed=time(NULL)-ts) {
-			int event;
-#ifdef NO_POLL
-			fd_set reads;
-			fd_set writes;
-			struct timeval tv;
-			FD_ZERO(&reads);
-			FD_ZERO(&writes);
-			PDNSD_ASSERT(qs.sock<FD_SETSIZE,"socket file descriptor exceeds FD_SETSIZE.");
-			switch (qs.state) {
-			QS_READ_CASES:
-				FD_SET(qs.sock,&reads);
-				break;
-			QS_WRITE_CASES:
-				FD_SET(qs.sock,&writes);
-				break;
-			}
-			tv.tv_sec=timeout>tpassed?timeout-tpassed:0;
-			tv.tv_usec=0;
-			/* There is a possible race condition with the arrival of a signal here,
-			   but it is so unlikely to be a problem in practice that doing
-			   this properly is not worth the trouble.
-			*/
-			if(is_interrupted_servstat_thread()) {
-				DEBUG_MSG("server status thread interrupted.\n");
-				p_cancel_query(&qs);
-				return 0;
-			}
-			event=select(qs.sock+1,&reads,&writes,NULL,&tv);
-#else
-			struct pollfd pfd;
-			pfd.fd=qs.sock;
-			switch (qs.state) {
-			QS_READ_CASES:
-				pfd.events=POLLIN;
-				break;
-			QS_WRITE_CASES:
-				pfd.events=POLLOUT;
-				break;
-			default:
-				pfd.events=0;
-			}
-			/* There is a possible race condition with the arrival of a signal here,
-			   but it is so unlikely to be a problem in practice that doing
-			   this properly is not worth the trouble.
-			*/
-			if(is_interrupted_servstat_thread()) {
-				DEBUG_MSG("server status thread interrupted.\n");
-				p_cancel_query(&qs);
-				return 0;
-			}
-			event=poll(&pfd,1,timeout>tpassed?(timeout-tpassed)*1000:0);
-#endif
-			if (event<0) {
-				if(errno==EINTR && is_interrupted_servstat_thread()) {
-					DEBUG_MSG("poll/select interrupted in server status thread.\n");
-				}
-				else
-					log_warn("poll/select failed: %s",strerror(errno));
-				p_cancel_query(&qs);
-				return 0;
-			}
-			if(event==0) {
-				/* timed out */
-				p_cancel_query(&qs);
-				if(++iter<rep) goto try_again;
-				return 0;
-			}
-			event=0;
-#ifdef NO_POLL
-			switch (qs.state) {
-			QS_READ_CASES:
-				event=FD_ISSET(qs.sock,&reads);
-				break;
-			QS_WRITE_CASES:
-				event=FD_ISSET(qs.sock,&writes);
-				break;
-			}
-#else
-			switch (qs.state) {
-			QS_READ_CASES:
-				event=pfd.revents&(POLLIN|POLLERR|POLLHUP|POLLNVAL);
-				break;
-			QS_WRITE_CASES:
-				event=pfd.revents&(POLLOUT|POLLERR|POLLHUP|POLLNVAL);
-				break;
-			}
-#endif
-			if(event) {
-				rv=p_exec_query(NULL, name, T_A, &qs, NULL, NULL);
-				if(rv!=-1) break;
-			}
-			else {
-				if(++poll_errs<=MAXPOLLERRS)
-					log_error("Unhandled poll/select event in query_uptest() at %s, line %d.",__FILE__,__LINE__);
-				p_cancel_query(&qs);
-				return 0;
-			}
-		}
-	}
-	return (rv!=RC_SERVFAIL && rv!=RC_FATALERR);
-}
diff --git a/jni/pdnsd/src/dns_query.h b/jni/pdnsd/src/dns_query.h
deleted file mode 100644
index b57e7be..0000000
--- a/jni/pdnsd/src/dns_query.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* dns_query.h - Execute outgoing dns queries and write entries to cache
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2004, 2006, 2009, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef DNS_QUERY_H
-#define DNS_QUERY_H
-
-#include "cache.h"
-
-/* Default UDP buffer size (when EDNS is not used). */
-#define UDP_BUFSIZE 512
-
-
-typedef struct qhintnode_s qhintnode_t;
-
-/* --- parallel query */
-int r_dns_cached_resolve(unsigned char *name, int thint, dns_cent_t **cachedp,
-			 int hops, qhintnode_t *qhlist, time_t queryts,
-			 unsigned char *c_soa);
-#define dns_cached_resolve(name,thint,cachedp,hops,queryts,c_soa) \
-        r_dns_cached_resolve(name,thint,cachedp,hops,NULL,queryts,c_soa)
-
-addr2_array dns_rootserver_resolv(atup_array atup_a, int port, char edns_query, time_t timeout);
-int query_uptest(pdnsd_a *addr, int port, const unsigned char *name, time_t timeout, int rep);
-
-/* --- from dns_answer.c */
-int add_opt_pseudo_rr(dns_msg_t **ans, size_t *sz, size_t *allocsz,
-		      unsigned short udpsize, unsigned short rcode,
-		      unsigned short ednsver, unsigned short Zflags);
-size_t remove_opt_pseudo_rr(dns_msg_t *ans, size_t sz);
-
-#endif
diff --git a/jni/pdnsd/src/error.c b/jni/pdnsd/src/error.c
deleted file mode 100644
index 4584866..0000000
--- a/jni/pdnsd/src/error.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* error.c - Error handling
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2003, 2004, 2005, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <syslog.h>
-#include <pthread.h>
-#include <signal.h>
-#include <string.h>
-#include "error.h"
-#include "helpers.h"
-#include "conff.h"
-
-
-pthread_mutex_t loglock = PTHREAD_MUTEX_INITIALIZER;
-volatile short int use_log_lock=0;
-
-/*
- * Initialize a mutex for io-locking in order not to produce gibberish on
- * multiple simultaneous errors.
- */
-/* This is now defined as an inline function in error.h */
-#if 0
-void init_log_lock(void)
-{
-	use_log_lock=1;
-}
-#endif
-
-/* We crashed? Ooops... */
-void crash_msg(char *msg)
-{
-	log_error("%s", msg);
-	log_error("pdnsd probably crashed due to a bug. Please consider sending a bug");
-	log_error("report to p.a.rombouts at home.nl or tmoestl at gmx.net");
-}
-
-/* Log a warning, error or info message.
- * If we are a daemon, use the syslog. s is a format string like in printf,
- * the optional following arguments are the arguments like in printf */
-void log_message(int prior, const char *s, ...)
-{
-	int gotlock=0;
-	va_list va;
-	FILE *f;
-
-	if (use_log_lock) {
-		gotlock=softlock_mutex(&loglock);
-		/* If we failed to get the lock and the type of the
-		   message is "info" or less important, then don't bother. */
-		if(!gotlock && prior>=LOG_INFO)
-			return;
-	}
-	if (global.daemon) {
-		openlog("pdnsd",LOG_PID,LOG_DAEMON);
-		va_start(va,s);
-		vsyslog(prior,s,va);
-		va_end(va);
-		closelog();
-	}
-	else {
-		f=stderr;
-#if DEBUG > 0
-		goto printtofile;
-	}
-	if(debug_p) {
-		f=dbg_file;
-	printtofile:
-#endif
-		{
-			char ts[sizeof "* 12/31 23:59:59| "];
-			time_t tt = time(NULL);
-			struct tm tm;
-
-			if(!localtime_r(&tt, &tm) || strftime(ts, sizeof(ts), "* %m/%d %T| ", &tm) <=0)
-				ts[0]=0;
-			fprintf(f,"%spdnsd: %s: ", ts,
-				prior<=LOG_CRIT?"critical":
-				prior==LOG_ERR?"error":
-				prior==LOG_WARNING?"warning":
-				"info");
-		}
-		va_start(va,s);
-		vfprintf(f,s,va);
-		va_end(va);
-		{
-			const char *p=strchr(s,0);
-			if(!p || p==s || *(p-1)!='\n')
-				fputc('\n',f);
-		}
-	}
-	if (gotlock)
-		pthread_mutex_unlock(&loglock);
-}
-
-
-#if DEBUG > 0
-/* XXX: The timestamp generation makes this a little heavy-weight */
-void debug_msg(int c, const char *fmt, ...)
-{
-	va_list va;
-
-	if (!c) {
-		char ts[sizeof "12/31 23:59:59"];
-		time_t tt = time(NULL);
-		struct tm tm;
-		unsigned *id;
-
-		if(localtime_r(&tt, &tm) && strftime(ts, sizeof(ts), "%m/%d %T", &tm) > 0) {
-			if((id = (unsigned *)pthread_getspecific(thrid_key)))
-				fprintf(dbg_file,"%u %s| ", *id, ts);
-			else
-				fprintf(dbg_file,"- %s| ", ts);
-		}
-	}
-	va_start(va,fmt);
-	vfprintf(dbg_file,fmt,va);
-	va_end(va);
-	fflush(dbg_file);
-}
-#endif /* DEBUG */
diff --git a/jni/pdnsd/src/error.h b/jni/pdnsd/src/error.h
deleted file mode 100644
index 1678744..0000000
--- a/jni/pdnsd/src/error.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* error.h - Error handling
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2003, 2004, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef ERROR_H
-#define ERROR_H
-
-#include <config.h>
-#include <time.h>
-#include <pthread.h>
-#include <stdio.h>
-#include <signal.h>
-#include <syslog.h>
-
-#include "thread.h"
-#include "helpers.h"
-#include "pdnsd_assert.h"
-
-/* --- from error.c */
-extern volatile short int use_log_lock;
-/* --- */
-
-void crash_msg(char *msg);
-
-inline static void init_log_lock(void) __attribute__((always_inline));
-inline static void init_log_lock(void)
-{
-	use_log_lock=1;
-}
-
-void log_message(int prior,const char *s, ...) printfunc(2, 3);
-#if !defined(CPP_C99_VARIADIC_MACROS)
-/* GNU C Macro Varargs style. */
-#define log_error(args...) log_message(LOG_ERR,args)
-#define log_warn(args...) log_message(LOG_WARNING,args)
-#define log_info(level,args...) {if((level)<=global.verbosity) log_message(LOG_INFO,args);}
-#else
-/* ANSI C99 style. */
-#define log_error(...) log_message(LOG_ERR,__VA_ARGS__)
-#define log_warn(...) log_message(LOG_WARNING,__VA_ARGS__)
-#define log_info(level,...) {if((level)<=global.verbosity) log_message(LOG_INFO,__VA_ARGS__);}
-#endif
-
-/* Following are some ugly macros for debug messages that
- * should inhibit any code generation when DEBUG is not defined.
- * Of course, those messages could be done in a function, but I
- * want to save the overhead when DEBUG is not defined.
- * debug_p needs to be defined (by including conff.h), or you
- * will get strange errors.
- * A macro call expands to a complete statement, so a semicolon after
- * the macro call is redundant.
- * The arguments are normal printfs, so you know how to use the args
- */
-#if DEBUG>0
-void debug_msg(int c, const char *fmt, ...) printfunc(2, 3);
-/* from main.c */
-extern FILE *dbg_file;
-#endif
-
-#if !defined(CPP_C99_VARIADIC_MACROS)
-/* GNU C Macro Varargs style. */
-# if DEBUG > 0
-#  define DEBUG_MSG(args...)	{if (debug_p) debug_msg(0,args);}
-#  define DEBUG_MSGC(args...)	{if (debug_p) debug_msg(1,args);}
-#  define DEBUG_PDNSDA_MSG(args...) {char _debugsockabuf[ADDRSTR_MAXLEN]; DEBUG_MSG(args);}
-#  define PDNSDA2STR(a)		pdnsd_a2str(a,_debugsockabuf,sizeof(_debugsockabuf))
-#  define DEBUG_RHN_MSG(args...) {unsigned char _debugstrbuf[DNSNAMEBUFSIZE]; DEBUG_MSG(args);}
-#  define RHN2STR(a)		rhn2str(a,_debugstrbuf,sizeof(_debugstrbuf))
-# else
-#  define DEBUG_MSG(args...)
-#  define DEBUG_MSGC(args...)
-#  define DEBUG_PDNSDA_MSG(args...)
-#  define DEBUG_RHN_MSG(args...)
-# endif	/* DEBUG > 0 */
-#else
-/* ANSI C99 style. */
-# if DEBUG > 0
-/*
- * XXX: The ANSI and GCC variadic macros should be merged as far as possible, but that
- *      might make things even more messy...
- */
-#  define DEBUG_MSG(...)	{if (debug_p) debug_msg(0,__VA_ARGS__);}
-#  define DEBUG_MSGC(...)	{if (debug_p) debug_msg(1,__VA_ARGS__);}
-#  define DEBUG_PDNSDA_MSG(...)	{char _debugsockabuf[ADDRSTR_MAXLEN]; DEBUG_MSG(__VA_ARGS__);}
-#  define PDNSDA2STR(a)		pdnsd_a2str(a,_debugsockabuf,ADDRSTR_MAXLEN)
-#  define DEBUG_RHN_MSG(...)	{unsigned char _debugstrbuf[DNSNAMEBUFSIZE]; DEBUG_MSG(__VA_ARGS__);}
-#  define RHN2STR(a)		rhn2str(a,_debugstrbuf,sizeof(_debugstrbuf))
-# else
-#  define DEBUG_MSG(...)
-#  define DEBUG_MSGC(...)
-#  define DEBUG_PDNSDA_MSG(...)
-#  define DEBUG_RHN_MSG(...)
-# endif	/* DEBUG > 0 */
-#endif
-
-#endif
diff --git a/jni/pdnsd/src/freebsd_netinet_ip_icmp.h b/jni/pdnsd/src/freebsd_netinet_ip_icmp.h
deleted file mode 100644
index e4577ce..0000000
--- a/jni/pdnsd/src/freebsd_netinet_ip_icmp.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (c) 1982, 1986, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)ip_icmp.h	8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/netinet/ip_icmp.h,v 1.20 2003/03/21 15:28:10 mdodd Exp $
- */
-
-#ifndef _NETINET_IP_ICMP_H_
-#define _NETINET_IP_ICMP_H_
-
-/*
- * Interface Control Message Protocol Definitions.
- * Per RFC 792, September 1981.
- */
-
-/*
- * Internal of an ICMP Router Advertisement
- */
-struct icmp_ra_addr {
-	u_int32_t ira_addr;
-	u_int32_t ira_preference;
-};
-
-/*
- * Structure of an icmp header.
- */
-struct icmp {
-	u_char	icmp_type;		/* type of message, see below */
-	u_char	icmp_code;		/* type sub code */
-	u_short	icmp_cksum;		/* ones complement cksum of struct */
-	union {
-		u_char ih_pptr;			/* ICMP_PARAMPROB */
-		struct in_addr ih_gwaddr;	/* ICMP_REDIRECT */
-		struct ih_idseq {
-			n_short	icd_id;
-			n_short	icd_seq;
-		} ih_idseq;
-		int ih_void;
-
-		/* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */
-		struct ih_pmtu {
-			n_short ipm_void;
-			n_short ipm_nextmtu;
-		} ih_pmtu;
-
-		struct ih_rtradv {
-			u_char irt_num_addrs;
-			u_char irt_wpa;
-			u_int16_t irt_lifetime;
-		} ih_rtradv;
-	} icmp_hun;
-#define	icmp_pptr	icmp_hun.ih_pptr
-#define	icmp_gwaddr	icmp_hun.ih_gwaddr
-#define	icmp_id		icmp_hun.ih_idseq.icd_id
-#define	icmp_seq	icmp_hun.ih_idseq.icd_seq
-#define	icmp_void	icmp_hun.ih_void
-#define	icmp_pmvoid	icmp_hun.ih_pmtu.ipm_void
-#define	icmp_nextmtu	icmp_hun.ih_pmtu.ipm_nextmtu
-#define	icmp_num_addrs	icmp_hun.ih_rtradv.irt_num_addrs
-#define	icmp_wpa	icmp_hun.ih_rtradv.irt_wpa
-#define	icmp_lifetime	icmp_hun.ih_rtradv.irt_lifetime
-	union {
-		struct id_ts {			/* ICMP Timestamp */
-			n_time its_otime;	/* Originate */
-			n_time its_rtime;	/* Receive */
-			n_time its_ttime;	/* Transmit */
-		} id_ts;
-		struct id_ip  {
-			struct ip idi_ip;
-			/* options and then 64 bits of data */
-		} id_ip;
-		struct icmp_ra_addr id_radv;
-		u_int32_t id_mask;
-		char	id_data[1];
-	} icmp_dun;
-#define	icmp_otime	icmp_dun.id_ts.its_otime
-#define	icmp_rtime	icmp_dun.id_ts.its_rtime
-#define	icmp_ttime	icmp_dun.id_ts.its_ttime
-#define	icmp_ip		icmp_dun.id_ip.idi_ip
-#define	icmp_radv	icmp_dun.id_radv
-#define	icmp_mask	icmp_dun.id_mask
-#define	icmp_data	icmp_dun.id_data
-};
-
-/*
- * Lower bounds on packet lengths for various types.
- * For the error advice packets must first insure that the
- * packet is large enough to contain the returned ip header.
- * Only then can we do the check to see if 64 bits of packet
- * data have been returned, since we need to check the returned
- * ip header length.
- */
-#define	ICMP_MINLEN	8				/* abs minimum */
-#define	ICMP_TSLEN	(8 + 3 * sizeof (n_time))	/* timestamp */
-#define	ICMP_MASKLEN	12				/* address mask */
-#define	ICMP_ADVLENMIN	(8 + sizeof (struct ip) + 8)	/* min */
-#define	ICMP_ADVLEN(p)	(8 + ((p)->icmp_ip.ip_hl << 2) + 8)
-	/* N.B.: must separately check that ip_hl >= 5 */
-
-/*
- * Definition of type and code field values.
- */
-#define	ICMP_ECHOREPLY		0		/* echo reply */
-#define	ICMP_UNREACH		3		/* dest unreachable, codes: */
-#define		ICMP_UNREACH_NET	0		/* bad net */
-#define		ICMP_UNREACH_HOST	1		/* bad host */
-#define		ICMP_UNREACH_PROTOCOL	2		/* bad protocol */
-#define		ICMP_UNREACH_PORT	3		/* bad port */
-#define		ICMP_UNREACH_NEEDFRAG	4		/* IP_DF caused drop */
-#define		ICMP_UNREACH_SRCFAIL	5		/* src route failed */
-#define		ICMP_UNREACH_NET_UNKNOWN 6		/* unknown net */
-#define		ICMP_UNREACH_HOST_UNKNOWN 7		/* unknown host */
-#define		ICMP_UNREACH_ISOLATED	8		/* src host isolated */
-#define		ICMP_UNREACH_NET_PROHIB	9		/* prohibited access */
-#define		ICMP_UNREACH_HOST_PROHIB 10		/* ditto */
-#define		ICMP_UNREACH_TOSNET	11		/* bad tos for net */
-#define		ICMP_UNREACH_TOSHOST	12		/* bad tos for host */
-#define		ICMP_UNREACH_FILTER_PROHIB 13		/* admin prohib */
-#define		ICMP_UNREACH_HOST_PRECEDENCE 14		/* host prec vio. */
-#define		ICMP_UNREACH_PRECEDENCE_CUTOFF 15	/* prec cutoff */
-#define	ICMP_SOURCEQUENCH	4		/* packet lost, slow down */
-#define	ICMP_REDIRECT		5		/* shorter route, codes: */
-#define		ICMP_REDIRECT_NET	0		/* for network */
-#define		ICMP_REDIRECT_HOST	1		/* for host */
-#define		ICMP_REDIRECT_TOSNET	2		/* for tos and net */
-#define		ICMP_REDIRECT_TOSHOST	3		/* for tos and host */
-#define	ICMP_ECHO		8		/* echo service */
-#define	ICMP_ROUTERADVERT	9		/* router advertisement */
-#define	ICMP_ROUTERSOLICIT	10		/* router solicitation */
-#define	ICMP_TIMXCEED		11		/* time exceeded, code: */
-#define		ICMP_TIMXCEED_INTRANS	0		/* ttl==0 in transit */
-#define		ICMP_TIMXCEED_REASS	1		/* ttl==0 in reass */
-#define	ICMP_PARAMPROB		12		/* ip header bad */
-#define		ICMP_PARAMPROB_ERRATPTR 0		/* error at param ptr */
-#define		ICMP_PARAMPROB_OPTABSENT 1		/* req. opt. absent */
-#define		ICMP_PARAMPROB_LENGTH 2			/* bad length */
-#define	ICMP_TSTAMP		13		/* timestamp request */
-#define	ICMP_TSTAMPREPLY	14		/* timestamp reply */
-#define	ICMP_IREQ		15		/* information request */
-#define	ICMP_IREQREPLY		16		/* information reply */
-#define	ICMP_MASKREQ		17		/* address mask request */
-#define	ICMP_MASKREPLY		18		/* address mask reply */
-
-#define	ICMP_MAXTYPE		18
-
-#define	ICMP_INFOTYPE(type) \
-	((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \
-	(type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \
-	(type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \
-	(type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \
-	(type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
-
-#ifdef _KERNEL
-void	icmp_error(struct mbuf *, int, int, n_long, struct ifnet *);
-void	icmp_input(struct mbuf *, int);
-#endif
-
-#endif
diff --git a/jni/pdnsd/src/hash.c b/jni/pdnsd/src/hash.c
deleted file mode 100644
index 12e2074..0000000
--- a/jni/pdnsd/src/hash.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/* hash.c - Manage hashes for cached dns records
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2003, 2005 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-#include "hash.h"
-#include "cache.h"
-#include "error.h"
-#include "helpers.h"
-#include "consts.h"
-
-
-/* This is not a perfect hash, but I hope it holds. It is designed for 1024 hash
- * buckets, and hashes strings with case-insensitivity.
- * It is position-aware in a limited way.
- * It is exactly seen a two-way hash: because I do not want to exaggerate
- * the hash buckets (i do have 1024), but I hash strings and string-comparisons
- * are expensive, I save another 32 bit hash in each hash element that is checked
- * before the string. The 32 bit hash is also used to order the entries in a hash chain.
- * I hope not to have all too much collision concentration.
- *
- * The ip hash was removed. I don't think it concentrated the collisions too much.
- * If it does, the hash algorithm needs to be changed, rather than using another
- * hash.
- * Some measurements seem to indicate that the hash algorithm is doing reasonable well.
- */
-
-dns_hash_ent_t *hash_buckets[HASH_NUM_BUCKETS];
-
-
-/*
- * Hash a dns name (length-byte string format) to HASH_SZ bit.
- * *rhash is set to a long int hash.
- */
-static unsigned dns_hash(const unsigned char *str, unsigned long *rhash)
-{
-	unsigned s,i,lb,c;
-	unsigned long r;
-	s=0; r=0;
-	i=0;
-	while((lb=str[i])) {
-		s+=lb<<(i%(HASH_SZ-5));
-		r+=((unsigned long)lb)<<(i%(8*sizeof(unsigned long)-7));
-		++i;
-		do {
-			c=toupper(str[i]);
-			s+=c<<(i%(HASH_SZ-5));
-			r+=((unsigned long)c)<<(i%(8*sizeof(unsigned long)-7));
-			++i;
-		} while(--lb);
-	}
-	s=(s&HASH_BITMASK)+((s&(~HASH_BITMASK))>>HASH_SZ);
-	s=(s&HASH_BITMASK)+((s&(~HASH_BITMASK))>>HASH_SZ);
-	s &= HASH_BITMASK;
-#ifdef DEBUG_HASH
-	{
-		unsigned char buf[DNSNAMEBUFSIZE];
-		printf("Diagnostic: hashes for %s: %03x,%04lx\n",rhn2str(str,buf,sizeof(buf)),s,r);
-	}
-#endif
-	if(rhash) *rhash=r;
-	return s;
-}
-
-/*
- * Initialize hash to hold a dns hash table
- */
-/* This is now defined as an inline function in hash.h */
-#if 0
-void mk_dns_hash()
-{
-	int i;
-	for(i=0;i<HASH_NUM_BUCKETS;i++)
-		hash_buckets[i]=NULL;
-}
-#endif
-
-/*
-  Lookup in the hash table for key. If it is found, return the pointer to the cache entry.
-  If no entry is found, return 0.
-  If loc is not NULL, it will used to store information about the location within the hash table
-  This can be used to add an entry with add_dns_hash() or delete the entry with del_dns_hash_ent().
-*/
-dns_cent_t *dns_lookup(const unsigned char *key, dns_hash_loc_t *loc)
-{
-	dns_cent_t *retval=NULL;
-	unsigned idx;
-	unsigned long rh;
-	dns_hash_ent_t **hep,*he;
-
-	idx = dns_hash(key,&rh);
-	hep = &hash_buckets[idx];
-	while ((he= *hep) && he->rhash<=rh) {
-		if (he->rhash==rh && rhnicmp(key,he->data->qname)) {
-			retval = he->data;
-			break;
-		}
-		hep = &he->next;
-	}
-	if(loc) {
-		loc->pos = hep;
-		loc->rhash = rh;
-	}
-	return retval;
-}
-
-/*
-  Add a cache entry to the hash table.
-
-  loc must contain the location where the the new entry should be inserted
-  (this location can be obtained with dns_lookup).
-
-  add_dns_hash returns 1 on success, or 0 if out of memory.
-*/
-int add_dns_hash(dns_cent_t *data, dns_hash_loc_t *loc)
-{
-	dns_hash_ent_t *he = malloc(sizeof(dns_hash_ent_t));
-
-	if(!he)
-		return 0;
-
-	he->next = *(loc->pos);
-	he->rhash = loc->rhash;
-	he->data = data;
-	*(loc->pos) = he;
-
-	return 1;
-}
-
-/*
-  Delete the hash entry indentified by the location returned by dns_lookup().
-*/
-dns_cent_t *del_dns_hash_ent(dns_hash_loc_t *loc)
-{
-	dns_hash_ent_t *he = *(loc->pos);
-	dns_cent_t *data;
-
-	*(loc->pos) = he->next;
-	data = he->data;
-	free(he);
-	return data;
-}
-
-/*
- * Delete the first entry indexed by key from the hash. Returns the data field or NULL.
- * Since two cents are not allowed to be for the same host name, there will be only one.
- */
-dns_cent_t *del_dns_hash(const unsigned char *key)
-{
-	unsigned idx;
-	unsigned long rh;
-	dns_hash_ent_t **hep,*he;
-	dns_cent_t *data;
-
-	idx = dns_hash(key,&rh);
-	hep = &hash_buckets[idx];
-	while ((he= *hep) && he->rhash<=rh) {
-		if (he->rhash==rh && rhnicmp(key,he->data->qname)) {
-			*hep = he->next;
-			data = he->data;
-			free(he);
-			return data;
-		}
-		hep = &he->next;
-	}
-	return NULL;   /* not found */
-}
-
-
-/*
- * Delete all entries in a hash bucket.
- */
-void free_dns_hash_bucket(int i)
-{
-	dns_hash_ent_t *he,*hen;
-
-	he=hash_buckets[i];
-	hash_buckets[i]=NULL;
-	while (he) {
-		hen=he->next;
-		del_cent(he->data);
-		free(he);
-		he=hen;
-	}
-}
-
-/*
- * Delete all entries in a hash bucket whose names match those in
- * an include/exclude list.
- */
-void free_dns_hash_selected(int i, slist_array sla)
-{
-	dns_hash_ent_t **hep,*he,*hen;
-	int j,m=DA_NEL(sla);
-
-	hep= &hash_buckets[i];
-	he= *hep;
-
-	while (he) {
-		unsigned char *name=he->data->qname;
-		for(j=0;j<m;++j) {
-			slist_t *sl=&DA_INDEX(sla,j);
-			unsigned int nrem,lrem;
-			domain_match(name,sl->domain,&nrem,&lrem);
-			if(!lrem && (!sl->exact || !nrem)) {
-				if(sl->rule==C_INCLUDED)
-					goto delete_entry;
-				else
-					break;
-			}
-		}
-		/* default policy is not to delete */
-		hep= &he->next;
-		he= *hep;
-		continue;
-
-	delete_entry:
-		*hep=hen=he->next;;
-		del_cent(he->data);
-		free(he);
-		he=hen;
-	}
-}
-
-/*
- * Delete the whole hash table, freeing all memory
- */
-void free_dns_hash()
-{
-	int i;
-	dns_hash_ent_t *he,*hen;
-	for (i=0;i<HASH_NUM_BUCKETS;i++) {
-		he=hash_buckets[i];
-		hash_buckets[i]=NULL;
-		while (he) {
-			hen=he->next;
-			del_cent(he->data);
-			free(he);
-			he=hen;
-		}
-	}
-}
-
-/*
- * The following functions are for iterating over the hash.
- * fetch_first returns the data field of the first element (or NULL if there is none), and fills pos
- * for subsequent calls of fetch_next.
- * fetch_next returns the data field of the element after the element that was returned by the last
- * call with the same position argument (or NULL if there is none)
- *
- * Note that these are designed so that you may actually delete the elements you retrieved from the hash.
- */
-dns_cent_t *fetch_first(dns_hash_pos_t *pos)
-{
-	int i;
-	for (i=0;i<HASH_NUM_BUCKETS;i++) {
-		dns_hash_ent_t *he=hash_buckets[i];
-		if (he) {
-			pos->bucket=i;
-			pos->ent=he->next;
-			return he->data;
-		}
-	}
-	return NULL;
-}
-
-dns_cent_t *fetch_next(dns_hash_pos_t *pos)
-{
-	dns_hash_ent_t *he=pos->ent;
-	int i;
-	if (he) {
-		pos->ent=he->next;
-		return he->data;
-	}
-
-	for (i=pos->bucket+1;i<HASH_NUM_BUCKETS;i++) {
-		he=hash_buckets[i];
-		if (he) {
-			pos->bucket=i;
-			pos->ent=he->next;
-			return he->data;
-		}
-	}
-	return NULL;
-}
-
-#ifdef DEBUG_HASH
-void dumphash()
-{
-	if(debug_p) {
-		int i, j;
-		dns_hash_ent_t *he;
-
-		for (i=0; i<HASH_NUM_BUCKETS; i++) {
-			for (j=0, he=hash_buckets[i]; he; he=he->next, j++) ;
-			DEBUG_MSG("bucket %d: %d entries\n", i, j);
-		}
-	}
-}
-#endif
diff --git a/jni/pdnsd/src/hash.h b/jni/pdnsd/src/hash.h
deleted file mode 100644
index db25a34..0000000
--- a/jni/pdnsd/src/hash.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* hash.h - Manage hashes for cached dns records
-
-   Copyright (C) 2000 Thomas Moestl
-   Copyright (C) 2003, 2005 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _HASH_H_
-#define _HASH_H_
-#include <config.h>
-#include "cache.h"
-
-typedef struct dns_hash_ent_s {
-	struct dns_hash_ent_s	*next;
-	unsigned long		rhash; /* this is a better hash */
-	dns_cent_t		*data;
-} dns_hash_ent_t;
-
-/* Redefine this if you want another hash size. Should work ;-).
- * The number of hash buckets is computed as power of two;
- * so, e.g. HASH_SZ set to 10 yields 1024 hash rows (2^10 or 1<<10).
- * Only powers of two are possible conveniently.
- * HASH_SZ may not be bigger than 32 (if you set it even close to that value,
- * you are nuts.) */
-/* #define HASH_SZ       10 */  /* Now defined in config.h */
-#define HASH_NUM_BUCKETS (1<<HASH_SZ)
-
-#define HASH_BITMASK     (HASH_NUM_BUCKETS-1)
-
-extern dns_hash_ent_t *hash_buckets[];
-
-/* A type for remembering the position in the hash table where a new entry can be inserted. */
-typedef struct {
-	dns_hash_ent_t **pos;      /* pointer to the location in the hash table */
-	unsigned long  rhash;      /* long hash */
-} dns_hash_loc_t;
-
-/* A type for position specification for fetch_first and fetch_next */
-typedef struct {
-	int            bucket;     /* bucket chain we are in */
-	dns_hash_ent_t *ent;       /* entry */
-} dns_hash_pos_t;
-
-inline static void mk_dns_hash()  __attribute__((always_inline));
-inline static void mk_dns_hash()
-{
-	int i;
-	for(i=0;i<HASH_NUM_BUCKETS;i++)
-		hash_buckets[i]=NULL;
-}
-
-dns_cent_t *dns_lookup(const unsigned char *key, dns_hash_loc_t *loc);
-int add_dns_hash(dns_cent_t *data, dns_hash_loc_t *loc);
-dns_cent_t *del_dns_hash_ent(dns_hash_loc_t *loc);
-dns_cent_t *del_dns_hash(const unsigned char *key);
-void free_dns_hash_bucket(int i);
-void free_dns_hash_selected(int i, slist_array sla);
-void free_dns_hash();
-
-dns_cent_t *fetch_first(dns_hash_pos_t *pos);
-dns_cent_t *fetch_next(dns_hash_pos_t *pos);
-
-#ifdef DEBUG_HASH
-void dumphash();
-#endif
-
-#endif
diff --git a/jni/pdnsd/src/helpers.c b/jni/pdnsd/src/helpers.c
deleted file mode 100644
index 5682d64..0000000
--- a/jni/pdnsd/src/helpers.c
+++ /dev/null
@@ -1,795 +0,0 @@
-/* helpers.c - Various helper functions
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2005, 2006, 2008, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <pwd.h>
-#include <grp.h>
-#include <errno.h>
-#include "ipvers.h"
-#include "thread.h"
-#include "error.h"
-#include "helpers.h"
-#include "cache.h"
-#include "conff.h"
-
-
-/*
- * This is to exit pdnsd from any thread.
- */
-void pdnsd_exit()
-{
-	pthread_kill(main_thrid,SIGTERM);
-	pthread_exit(NULL);
-}
-
-/*
- * Try to grab a mutex. If we can't, fail. This will loop until we get the
- * mutex or fail. This is only used in debugging code or at exit, otherwise
- * we might run into lock contention problems.
- */
-int softlock_mutex(pthread_mutex_t *mutex)
-{
-	unsigned int tr=0;
-	while(pthread_mutex_trylock(mutex)) {
-		if (++tr>=SOFTLOCK_MAXTRIES)
-			return 0;
-		usleep_r(10000);
-	}
-	return 1;
-}
-
-/*
- * setuid() and setgid() for a specified user.
- */
-int run_as(const char *user)
-{
-	if (user[0]) {
-#ifdef HAVE_GETPWNAM_R
-		struct passwd pwdbuf, *pwd;
-		size_t buflen;
-		int err;
-
-		for(buflen=128;; buflen*=2) {
-			char buf[buflen];  /* variable length array */
-
-			/* Note that we use getpwnam_r() instead of getpwnam(),
-			   which returns its result in a statically allocated buffer and
-			   cannot be considered thread safe.
-			   Doesn't use NSS! */
-			err=getpwnam_r(user, &pwdbuf, buf, buflen, &pwd);
-			if(err==0 && pwd) {
-				/* setgid first, because we may not be allowed to do it anymore after setuid */
-				if (setgid(pwd->pw_gid)!=0) {
-					log_error("Could not change group id to that of run_as user '%s': %s",
-						  user,strerror(errno));
-					return 0;
-				}
-
-				/* initgroups uses NSS, so we can disable it,
-				   i.e. we might need DNS for LDAP lookups, which times out */
-				if (global.use_nss && (initgroups(user, pwd->pw_gid)!=0)) {
-					log_error("Could not initialize the group access list of run_as user '%s': %s",
-						  user,strerror(errno));
-					return 0;
-				}
-				if (setuid(pwd->pw_uid)!=0) {
-					log_error("Could not change user id to that of run_as user '%s': %s",
-						  user,strerror(errno));
-					return 0;
-				}
-				break;
-			}
-			else if(err!=ERANGE) {
-				if(err)
-					log_error("run_as user '%s' could not be found: %s",user,strerror(err));
-				else
-					log_error("run_as user '%s' could not be found.",user);
-				return 0;
-			}
-			else if(buflen>=16*1024) {
-				/* If getpwnam_r() seems defective, call it quits rather than
-				   keep on allocating ever larger buffers until we crash. */
-				log_error("getpwnam_r() requires more than %u bytes of buffer space.",(unsigned)buflen);
-				return 0;
-			}
-			/* Else try again with larger buffer. */
-		}
-#else
-		/* No getpwnam_r() :-(  We'll use getpwnam() and hope for the best. */
-		struct passwd *pwd;
-
-		if (!(pwd=getpwnam(user))) {
-			log_error("run_as user %s could not be found.",user);
-			return 0;
-		}
-		/* setgid first, because we may not allowed to do it anymore after setuid */
-		if (setgid(pwd->pw_gid)!=0) {
-			log_error("Could not change group id to that of run_as user '%s': %s",
-				  user,strerror(errno));
-			return 0;
-		}
-		/* initgroups uses NSS, so we can disable it,
-		   i.e. we might need DNS for LDAP lookups, which times out */
-		if (global.use_nss && (initgroups(user, pwd->pw_gid)!=0)) {
-			log_error("Could not initialize the group access list of run_as user '%s': %s",
-				  user,strerror(errno));
-			return 0;
-		}
-		if (setuid(pwd->pw_uid)!=0) {
-			log_error("Could not change user id to that of run_as user '%s': %s",
-				  user,strerror(errno));
-			return 0;
-		}
-#endif
-	}
-
-	return 1;
-}
-
-/*
- * returns whether c is allowed in IN domain names
- */
-#if 0
-int isdchar (unsigned char c)
-{
-	if ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') || c=='-'
-#ifdef UNDERSCORE
-	    || c=='_'
-#endif
-	   )
-		return 1;
-	return 0;
-}
-#endif
-
-/*
- * Convert a string given in dotted notation to the transport format (length byte prepended
- * domain name parts, ended by a null length sequence)
- * The memory areas referenced by str and rhn may not overlap.
- * The buffer rhn points to is assumed to be at least DNSNAMEBUFSIZE bytes in size.
- *
- * Returns 1 if successful, otherwise 0.
- */
-int str2rhn(const unsigned char *str, unsigned char *rhn)
-{
-	unsigned int i,j;
-
-	if(*str=='.' && !*(str+1)) {
-		/* Special case: root domain */
-		rhn[0]=0;
-		return 1;
-	}
-
-	for(i=0;;) {
-		unsigned int jlim= i+63;
-		if(jlim>DNSNAMEBUFSIZE-2) jlim=DNSNAMEBUFSIZE-2; /* DNSNAMEBUFSIZE-2 because the termination 0 has to follow */
-		for(j=i; str[j] && str[j]!='.'; ++j) {
-			if(j>=jlim) return 0;
-			rhn[j+1]=str[j];
-		}
-		if(!str[j])
-			break;
-		if(j<=i)
-			return 0;
-		rhn[i]=(unsigned char)(j-i);
-		i = j+1;
-	}
-
-	rhn[i]=0;
-	if (j>i || i==0)
-		return 0;
-	return 1;
-}
-
-/*
-  parsestr2rhn is essentially the same as str2rhn, except that it doesn't look beyond
-  the first len chars in the input string. It also tolerates strings
-  not ending in a dot and returns a message in case of an error.
- */
-const char *parsestr2rhn(const unsigned char *str, unsigned int len, unsigned char *rhn)
-{
-	unsigned int i,j;
-
-	if(len>0 && *str=='.' && (len==1 || !*(str+1))) {
-		/* Special case: root domain */
-		rhn[0]=0;
-		return NULL;
-	}
-
-	i=0;
-	do {
-		unsigned int jlim= i+63;
-		if(jlim>DNSNAMEBUFSIZE-2) jlim=DNSNAMEBUFSIZE-2;
-		for(j=i; j<len && str[j] && str[j]!='.'; ++j) {
-			/* if(!isdchar(str[j]))
-				return "Illegal character in domain name"; */
-			if(j>=jlim)
-				return "Domain name element too long";
-			rhn[j+1]=str[j];
-		}
-
-		if(j<=i) {
-			if(j<len && str[j])
-				return "Empty name element in domain name";
-			else
-				break;
-		}
-
-		rhn[i]=(unsigned char)(j-i);
-		i = j+1;
-	} while(j<len && str[j]);
-
-	rhn[i]=0;
-	if(i==0)
-		return "Empty domain name not allowed";
-	return NULL;
-}
-
-/*
- * Take a host name as used in the dns transfer protocol (a length byte,
- * followed by the first part of the name, ..., followed by a 0 length byte),
- * and return a string in the usual dotted notation. Length checking is done
- * elsewhere (in decompress_name), this takes names from the cache which are
- * validated. No more than "size" bytes will be written to the buffer str points to
- * (but size must be positive).
- * If the labels in rhn contains non-printable characters, these are represented
- * in the result by a backslash followed three octal digits. Additionally some
- * special characters are preceded by a backslash. Normally the result should
- * fit within DNSNAMEBUFSIZE bytes, but if there are many non-printable characters, the
- * receiving buffer may not be able to contain the full result. In that case the
- * truncation in the result is indicated by series of trailing dots. This
- * function is only used for diagnostic purposes, thus a truncated result should
- * not be a very serious problem (and should only occur under pathological
- * circumstances).
- */
-const unsigned char *rhn2str(const unsigned char *rhn, unsigned char *str, unsigned int size)
-{
-	unsigned int i,j,lb;
-
-	if(size==0) return NULL;
-
-	i=0; j=0;
-	lb=rhn[i++];
-	if (!lb) {
-		if(size>=2)
-			str[j++]='.';
-	}
-	else {
-		do {
-			for (;lb;--lb) {
-				unsigned char c;
-				if(j+2>=size)
-					goto overflow;
-				c=rhn[i++];
-				if(isgraph(c)) {
-					if(c=='.' || c=='\\' || c=='"') {
-						str[j++]='\\';
-						if(j+2>=size)
-							goto overflow;
-					}
-					str[j++]=c;
-				}
-				else {
-					unsigned int rem=size-1-j;
-					int n=snprintf(charp &str[j],rem,"\\%03o",c);
-					if(n<0 || n>=rem) {
-						str[j++]='.';
-						goto overflow;
-					}
-					j+=n;
-				}
-			}
-			str[j++]='.';
-			lb=rhn[i++];
-		} while(lb);
-	}
-	str[j]=0;
-	return str;
-
- overflow:
-	j=size;
-	str[--j]=0;
-	if(j>0) {
-		str[--j]='.';
-		if(j>0) {
-			str[--j]='.';
-			if(j>0)
-				str[--j]='.';
-		}
-	}
-	return str;
-}
-
-/* Return the length of a domain name in transport format.
-   The definition has in fact been moved to helpers.h as an inline function.
-   Note added by Paul Rombouts:
-   Compared to the definition used by Thomas Moestl (strlen(rhn)+1), the following definition of rhnlen
-   may yield a different result in certain error situations (when a domain name segment contains null byte).
-*/
-#if 0
-unsigned int rhnlen(const unsigned char *rhn)
-{
-	unsigned int i=0,lb;
-
-	while((lb=rhn[i++]))
-		i+=lb;
-	return i;
-}
-#endif
-
-/*
- * Non-validating rhn copy (use with checked or generated data only).
- * Returns number of characters copied. The buffer dst points to is assumed to be DNSNAMEBUFSIZE (or
- * at any rate large enough) bytes in size.
- * The answer assembly code uses this; it is guaranteed to not clobber anything
- * after the name.
- */
-unsigned int rhncpy(unsigned char *dst, const unsigned char *src)
-{
-	unsigned int len = rhnlen(src);
-
-	PDNSD_ASSERT(len<=DNSNAMEBUFSIZE,"rhncpy: src too long!");
-	memcpy(dst,src,len>DNSNAMEBUFSIZE?DNSNAMEBUFSIZE:len);
-	return len;
-}
-
-
-/* Check whether a name is a normal wire-encoded domain name,
-   i.e. is not compressed, doesn't use extended labels and is not
-   too long.
-*/
-int isnormalencdomname(const unsigned char *rhn, unsigned maxlen)
-{
-	unsigned int i,lb;
-
-	if(maxlen>DNSNAMEBUFSIZE)
-		maxlen=DNSNAMEBUFSIZE;
-	for(i=0;;) {
-		if(i>=maxlen) return 0;
-		lb=rhn[i++];
-		if(lb==0)    break;
-		if(lb>0x3f)  return 0;
-		i += lb;
-	}
-
-	return 1;
-}
-
-int str2pdnsd_a(const char *addr, pdnsd_a *a)
-{
-#ifdef ENABLE_IPV4
-	if (run_ipv4) {
-		return inet_aton(addr,&a->ipv4);
-	}
-#endif
-#ifdef ENABLE_IPV6
-	ELSE_IPV6 {
-		/* Try to map an IPv4 address to IPv6 */
-		struct in_addr a4;
-		if(inet_aton(addr,&a4)) {
-			a->ipv6=global.ipv4_6_prefix;
-			((uint32_t *)(&a->ipv6))[3]=a4.s_addr;
-			return 1;
-		}
-		return inet_pton(AF_INET6,addr,&a->ipv6)>0;
-	}
-#endif
-	/* return 0; */
-}
-
-/* definition moved to helpers.h */
-#if 0
-int is_inaddr_any(pdnsd_a *a)
-{
-  return SEL_IPVER( a->ipv4.s_addr==INADDR_ANY,
-		    IN6_IS_ADDR_UNSPECIFIED(&a->ipv6) );
-}
-#endif
-
-/*
- * This is used for user output only, so it does not matter when an error occurs.
- */
-const char *pdnsd_a2str(pdnsd_a *a, char *buf, int maxlen)
-{
-	const char *res= SEL_IPVER( inet_ntop(AF_INET,&a->ipv4,buf,maxlen),
-				    inet_ntop(AF_INET6,&a->ipv6,buf,maxlen) );
-	if (!res) {
-		log_error("inet_ntop: %s", strerror(errno));
-		return "?.?.?.?";
-	}
-
-	return res;
-}
-
-
-/* Appropriately set our random device */
-#ifdef R_DEFAULT
-# if (TARGET == TARGET_BSD) && !defined(__NetBSD__)
-#  define R_ARC4RANDOM 1
-# else
-#  define R_RANDOM 1
-# endif
-#endif
-
-#ifdef RANDOM_DEVICE
-FILE *rand_file;
-#endif
-
-#ifdef R_RANDOM
-void init_crandom()
-{
-	struct timeval tv;
-	struct timezone tz;
-
-	gettimeofday(&tv,&tz);
-	srandom(tv.tv_sec^tv.tv_usec); /* not as guessable as time() */
-}
-#endif
-
-/* initialize the PRNG */
-int init_rng()
-{
-#ifdef RANDOM_DEVICE
-	if (!(rand_file=fopen(RANDOM_DEVICE,"r"))) {
-		log_error("Could not open %s.",RANDOM_DEVICE);
-		return 0;
-	}
-#endif
-#ifdef R_RANDOM
-	init_crandom();
-#endif
-	return 1;
-}
-
-/* The following function is now actually defined as a macro in helpers.h */
-#if 0
-void free_rng()
-{
-#ifdef RANDOM_DEVICE
-	if (rand_file)
-		fclose(rand_file);
-#endif
-}
-#endif
-
-/* generate a (more or less) random number 16 bits long. */
-unsigned short get_rand16()
-{
-#ifdef RANDOM_DEVICE
-	unsigned short rv;
-
-	if (rand_file) {
-		if (fread(&rv,sizeof(rv),1, rand_file)!=1) {
-			log_error("Error while reading from random device: %s", strerror(errno));
-			pdnsd_exit();
-		}
-		return rv&0xffff;
-	} else
-		return random()&0xffff;
-#endif
-#ifdef R_RANDOM
-	return random()&0xffff;
-#endif
-#ifdef R_ARC4RANDOM
-	return arc4random()&0xffff;
-#endif
-}
-
-/* fsprintf does formatted output to a file descriptor.
-   The functionality is similar to fprintf, but note that fd
-   is of type int instead of FILE*.
-   This function has been rewritten by Paul Rombouts */
-int fsprintf(int fd, const char *format, ...)
-{
-	int n;
-	va_list va;
-
-	{
-		char buf[256];
-
-		va_start(va,format);
-		n=vsnprintf(buf,sizeof(buf),format,va);
-		va_end(va);
-
-		if(n<(int)sizeof(buf)) {
-			if(n>0) n=write_all(fd,buf,n);
-			return n;
-		}
-	}
-	/* retry with a right sized buffer, needs glibc 2.1 or higher to work */
-	{
-		unsigned bufsize=n+1;
-		char buf[bufsize];
-
-		va_start(va,format);
-		n=vsnprintf(buf,bufsize,format,va);
-		va_end(va);
-
-		if(n>0) n=write_all(fd,buf,n);
-	}
-	return n;
-}
-
-/* Convert data into a hexadecimal representation (for debugging purposes)..
-   The result is stored in the character array buf.
-   If buf is not large enough to hold the result, the
-   truncation is indicated by trailing dots.
-*/
-void hexdump(const void *data, int dlen, char *buf, int buflen)
-{
-	const unsigned char *p=data;
-	int i,j=0;
-	for(i=0;i<dlen;++i) {
-		int rem=buflen-j;
-		int n=snprintf(buf+j, rem, i==0?"%02x":" %02x", p[i]);
-		if(n<0 || n>=rem) goto truncated;
-		j += n;
-	}
-	goto done;
-
- truncated:
-	if(j>=6) {
-		j -= 3;
-		if(j+4>=buflen)
-			j -= 3;
-		buf[j++]=' ';
-		buf[j++]='.';
-		buf[j++]='.';
-		buf[j++]='.';
-	}
-	else {
-		int ndots=buflen-1;
-		if(ndots>3) ndots=3;
-		j=0;
-		while(j<ndots) buf[j++]='.';
-	}
- done:
-	buf[j]=0;
-}
-
-/* Copy string "in" to "str" buffer, converting non-printable characters
-   to escape sequences.
-   Returns the length of the output string, or -1 if the result does not
-   fit in the output buffer.
-*/
-int escapestr(const char *in, int ilen, char *str, int size)
-{
-	int i,j=0;
-	for(i=0;i<ilen;++i) {
-		unsigned char c;
-		if(j+1>=size)
-			return -1;
-		c=in[i];
-		if(!isprint(c)) {
-			int rem=size-j;
-			int n=snprintf(&str[j],rem,"\\%03o",c);
-			if(n<0 || n>=rem) {
-				return -1;
-			}
-			j+=n;
-		}
-		else {
-			if(c=='\\' || c=='"') {
-				str[j++]='\\';
-				if(j+1>=size)
-					return -1;
-			}
-			str[j++]=c;
-		}
-	}
-	str[j]=0;
-	return j;
-}
-
-/*
- * This is not like strcmp, but will return 1 on match or 0 if the
- * strings are different.
- */
-/* definition moved to helpers.h as an inline function. */
-#if 0
-int stricomp(char *a, char *b)
-{
-	int i;
-	if (strlen(a) != strlen(b))
-		return 0;
-	for (i=0;i<strlen(a);i++) {
-		if (tolower(a[i])!=tolower(b[i]))
-			return 0;
-	}
-	return 1;
-}
-#endif
-
-/* Bah. I want strlcpy */
-/* definition moved to helpers.h */
-#if 0
-int strncp(char *dst, char *src, int dstsz)
-{
-	char o;
-
-	strncpy(dst,src,dstsz);
-	o=dst[dstsz-1];
-	dst[dstsz-1]='\0';
-	if (strlen(dst) >= dstsz-1 && o!='\0')
-		return 0;
-	return 1;
-}
-#endif
-
-#ifndef HAVE_GETLINE
-/* Note by Paul Rombouts: I know that getline is a GNU extension and is not really portable,
-   but the alternative standard functions have some real problems.
-   The following substitute does not have exactly the same semantics as the GNU getline,
-   but it should be good enough, as long as the stream doesn't contain any null chars.
-   This version is actually based on fgets_realloc() that I found in the WWWOFFLE source.
-*/
-
-#define BUFSIZE 256
-int getline(char **lineptr, size_t *n, FILE *stream)
-{
-	char *line=*lineptr;
-	size_t sz=*n,i;
-
-	if(!line || sz<BUFSIZE) {
-		sz=BUFSIZE;
-		line = realloc(line,sz);
-		if(!line) return -1;
-		*lineptr=line;
-		*n=sz;
-	}
-
-	for (i=0;;) {
-		char *lni;
-
-		if(!(lni=fgets(line+i,sz-i,stream))) {
-			if(i && feof(stream))
-				break;
-			else
-				return -1;
-		}
-
-		i += strlen(lni);
-
-		if(i<sz-1 || line[i-1]=='\n')
-			break;
-
-		sz += BUFSIZE;
-		line = realloc(line,sz);
-		if(!line) return -1;
-		*lineptr=line;
-		*n=sz;
-	}
-
-	return i;
-}
-#undef BUFSIZE
-#endif
-
-
-#ifndef HAVE_VASPRINTF
-/* On systems where the macro va_copy is not available, hopefully simple assignment will work.
-   Otherwise, I don't see any portable way of defining vasprintf() (without using a completely
-   different algorithm).
-*/
-#ifndef va_copy
-# ifdef __va_copy
-#  define va_copy __va_copy
-# else
-#  warning "No va_copy or __va_copy macro found, trying simple assignment."
-#  define va_copy(dst,src) ((dst)=(src))
-# endif
-#endif
-
-int vasprintf (char **lineptr, const char *format, va_list va)
-{
-	int sz=128,n;
-	char *line=malloc(sz);
-	va_list vasave;
-
-	if(!line) return -1;
-
-	va_copy(vasave,va);
-	n=vsnprintf(line,sz,format,va);
-
-	if(n>=sz) {
-		/* retry with a right sized buffer, needs glibc 2.1 or higher to work */
-		sz=n+1;
-		{
-			char *tmp=realloc(line,sz);
-			if(tmp) {
-				line=tmp;
-				n=vsnprintf(line,sz,format,vasave);
-			}
-			else
-				n= -1;
-		}
-	}
-	va_end(vasave);
-
-	if(n>=0)
-		*lineptr=line;
-	else
-		free(line);
-	return n;
-}
-#endif
-
-#ifndef HAVE_ASPRINTF
-int asprintf (char **lineptr, const char *format, ...)
-{
-	int n;
-	va_list va;
-
-	va_start(va,format);
-	n=vasprintf(lineptr,format,va);
-	va_end(va);
-
-	return n;
-}
-#endif
-
-#ifndef HAVE_INET_NTOP
-const char *inet_ntop(int af, const void *src, char *dst, size_t size)
-{
-	const char *rc = NULL;
-
-	if (src != NULL && dst != NULL && size > 0) {
-		switch (af) {
-		case AF_INET:
-		{
-			const unsigned char *p=src;
-			int n = snprintf(dst, size, "%u.%u.%u.%u",
-					 p[0],p[1],p[2],p[3]);
-			if (n >= 0 && n < size) rc = dst;
-		}
-		break;
-
-#ifdef AF_INET6
-		case AF_INET6:
-		{
-			const unsigned char *p=src;
-			unsigned int i,offs=0;
-			for (i=0;i<16;i+=2) {
-				int n=snprintf(dst+offs, size-offs,i==0?"%x":":%x", ((unsigned)p[i]<<8)|p[i+1]);
-				if(n<0) return NULL;
-				offs+=n;
-				if(offs>=size) return NULL;
-			}
-			rc = dst;
-		}
-		break;
-#endif
-		}
-	}
-
-	return rc;
-}
-#endif
diff --git a/jni/pdnsd/src/helpers.h b/jni/pdnsd/src/helpers.h
deleted file mode 100644
index e45c56e..0000000
--- a/jni/pdnsd/src/helpers.h
+++ /dev/null
@@ -1,319 +0,0 @@
-/* helpers.h - Various helper functions
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2004, 2007, 2009, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef HELPERS_H
-#define HELPERS_H
-
-#include <config.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <string.h>
-#include <ctype.h>
-#include "cache.h"
-#include "pdnsd_assert.h"
-
-#define SOFTLOCK_MAXTRIES 1000
-
-int run_as(const char *user);
-void pdnsd_exit(void);
-int softlock_mutex(pthread_mutex_t *mutex);
-
-#if 0
-inline static int isdchar (unsigned char c)
-{
-  return ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') || c=='-'
-#ifdef UNDERSCORE
-	  || c=='_'
-#endif
-	  );
-}
-#endif
-
-const unsigned char *rhn2str(const unsigned char *rhn, unsigned char *str, unsigned int size);
-int  str2rhn(const unsigned char *str, unsigned char *rhn);
-const char *parsestr2rhn(const unsigned char *str, unsigned int len, unsigned char *rhn);
-
-/* Note added by Paul Rombouts:
-   Compared to the definition used by Thomas Moestl (strlen(rhn)+1), the following definition of rhnlen
-   may yield a different result in certain error situations (when a domain name segment contains a null byte).
-*/
-inline static unsigned int rhnlen(const unsigned char *rhn)
-  __attribute__((always_inline));
-inline static unsigned int rhnlen(const unsigned char *rhn)
-{
-	unsigned int i=0,lb;
-
-	while((lb=rhn[i++]))
-		i+=lb;
-	return i;
-}
-
-/* Skip k segments in a name in length-byte string notation. */
-inline static const unsigned char *skipsegs(const unsigned char *nm, unsigned k)
-  __attribute__((always_inline));
-inline static const unsigned char *skipsegs(const unsigned char *nm, unsigned k)
-{
-	unsigned lb;
-	for(;k && (lb= *nm); --k) {
-		nm += lb+1;
-	}
-	return nm;
-}
-
-/* Skip a name in length-byte string notation and return a pointer to the
-   position right after the terminating null byte.
-*/
-inline static unsigned char *skiprhn(unsigned char *rhn)
-  __attribute__((always_inline));
-inline static unsigned char *skiprhn(unsigned char *rhn)
-{
-	unsigned lb;
-
-	while((lb= *rhn++))
-		rhn += lb;
-	return rhn;
-}
-
-/* count the number of name segments of a name in length-byte string notation. */
-inline static unsigned int rhnsegcnt(const unsigned char *rhn)
-  __attribute__((always_inline));
-inline static unsigned int rhnsegcnt(const unsigned char *rhn)
-{
-	unsigned int res=0,lb;
-
-	while((lb= *rhn)) {
-		++res;
-		rhn += lb+1;
-	}
-	return res;
-}
-
-unsigned int rhncpy(unsigned char *dst, const unsigned char *src);
-int isnormalencdomname(const unsigned char *rhn, unsigned maxlen);
-
-inline static int is_inaddr_any(pdnsd_a *a)  __attribute__((always_inline));
-inline static int is_inaddr_any(pdnsd_a *a)
-{
-  return SEL_IPVER( a->ipv4.s_addr==INADDR_ANY,
-		    IN6_IS_ADDR_UNSPECIFIED(&a->ipv6) );
-}
-
-
-inline static int same_inaddr(pdnsd_a *a, pdnsd_a *b)
-  __attribute__((always_inline));
-inline static int same_inaddr(pdnsd_a *a, pdnsd_a *b)
-{
-  return SEL_IPVER( a->ipv4.s_addr==b->ipv4.s_addr,
-		    IN6_ARE_ADDR_EQUAL(&a->ipv6,&b->ipv6) );
-}
-
-/* Compare a pdnsd_a*  with a pdnsd_a2*. */
-inline static int same_inaddr2(pdnsd_a *a, pdnsd_a2 *b)
-  __attribute__((always_inline));
-inline static int same_inaddr2(pdnsd_a *a, pdnsd_a2 *b)
-{
-  return SEL_IPVER( a->ipv4.s_addr==b->ipv4.s_addr,
-		    IN6_ARE_ADDR_EQUAL(&a->ipv6,&b->ipv6) && b->ipv4.s_addr==INADDR_ANY );
-}
-
-inline static int equiv_inaddr2(pdnsd_a *a, pdnsd_a2 *b)
-  __attribute__((always_inline));
-inline static int equiv_inaddr2(pdnsd_a *a, pdnsd_a2 *b)
-{
-  return SEL_IPVER( a->ipv4.s_addr==b->ipv4.s_addr,
-		    IN6_ARE_ADDR_EQUAL(&a->ipv6,&b->ipv6) ||
-		     (b->ipv4.s_addr!=INADDR_ANY && ADDR_EQUIV6_4(&a->ipv6,&b->ipv4)) );
-}
-
-int str2pdnsd_a(const char *addr, pdnsd_a *a);
-const char *pdnsd_a2str(pdnsd_a *a, char *buf, int maxlen);
-
-int init_rng(void);
-#ifdef RANDOM_DEVICE
-extern FILE *rand_file;
-/* Because this is usually empty, it is now defined as a macro to save overhead.*/
-#define free_rng() {if (rand_file) fclose(rand_file);}
-#else
-#define free_rng()
-#endif
-
-unsigned short get_rand16(void);
-
-int fsprintf(int fd, const char *format, ...) printfunc(2, 3);
-#if !defined(CPP_C99_VARIADIC_MACROS)
-/* GNU C Macro Varargs style. */
-# define fsprintf_or_return(args...) {int _retval; if((_retval=fsprintf(args))<0) return _retval;}
-#else
-/* ANSI C99 style variadic macro. */
-# define fsprintf_or_return(...) {int _retval; if((_retval=fsprintf(__VA_ARGS__))<0) return _retval;}
-#endif
-
-/* Added by Paul Rombouts */
-inline static ssize_t write_all(int fd,const void *data,size_t n)
-  __attribute__((always_inline));
-inline static ssize_t write_all(int fd,const void *data,size_t n)
-{
-  ssize_t written=0;
-
-  while(written<n) {
-      ssize_t m=write(fd,(const void*)(((const char*)data)+written),n-written);
-
-      if(m<0)
-	return m;
-
-      written+=m;
-    }
-
-  return written;
-}
-
-void hexdump(const void *data, int dlen, char *buf, int buflen);
-int escapestr(const char *in, int ilen, char *str, int size);
-
-#if 0
-inline static int stricomp(const char *a, const char *b)
-{
-  return !strcasecmp(a,b);
-}
-#endif
-
-/* compare two names in length byte - string format
-   rhnicmp returns 1 if the names are the same (ignoring upper/lower case),
-   0 otherwise.
- */
-inline static int rhnicmp(const unsigned char *a, const unsigned char *b)
-  __attribute__((always_inline));
-inline static int rhnicmp(const unsigned char *a, const unsigned char *b)
-{
-	unsigned int i=0;
-	unsigned char lb;
-	for(;;) {
-		lb=a[i];
-		if(lb!=b[i]) return 0;
-		if(!lb) break;
-		++i;
-		do {
-			if(tolower(a[i])!=tolower(b[i])) return 0;
-			++i;
-		} while(--lb);
-	}
-	return 1;
-}
-
-/* Bah. I want strlcpy. */
-inline static int strncp(char *dst, const char *src, size_t dstsz)
-  __attribute__((always_inline));
-inline static int strncp(char *dst, const char *src, size_t dstsz)
-{
-#ifdef HAVE_STRLCPY
-	return (strlcpy(dst,src,dstsz)<dstsz);
-#else
-#ifdef HAVE_STPNCPY
-	char *p=stpncpy(dst,src,dstsz);
-	if(p<dst+dstsz) return 1;
-	*(p-1)='\0';
-	return 0;
-#else
-	strncpy(dst,src,dstsz);
-	if(strlen(src)<dstsz) return 1;
-	dst[dstsz-1]='\0';
-	return 0;
-#endif
-#endif
-}
-
-#ifndef HAVE_STRDUP
-inline static char *strdup(const char *s)
-  __attribute__((always_inline));
-inline static char *strdup(const char *s)
-{
-	size_t sz=strlen(s)+1;
-	char *cp=malloc(sz);
-	if(cp)
-		memcpy(cp,s,sz);
-	return cp;
-}
-#endif
-
-#ifndef HAVE_STRNDUP
-/* This version may allocate a buffer that is unnecessarily large,
-   but I'm always going to use it with n<strlen(s)
-*/
-inline static char *strndup(const char *s, size_t n)
-  __attribute__((always_inline));
-inline static char *strndup(const char *s, size_t n)
-{
-	char *cp;
-	cp=malloc(n+1);
-	if(cp) {
-		memcpy(cp,s,n);
-		cp[n]='\0';
-	}
-	return cp;
-}
-#endif
-
-#ifndef HAVE_STPCPY
-inline static char *stpcpy (char *dest, const char *src)
-  __attribute__((always_inline));
-inline static char *stpcpy (char *dest, const char *src)
-{
-  register char *d = dest;
-  register const char *s = src;
-
-  while ((*d++ = *s++) != '\0');
-
-  return d - 1;
-}
-#endif
-
-#ifndef HAVE_MEMPCPY
-inline static void *mempcpy(void *dest, const void *src, size_t len)
-  __attribute__((always_inline));
-inline static void *mempcpy(void *dest, const void *src, size_t len)
-{
-  memcpy(dest,src,len);
-  return ((char *)dest)+len;
-}
-#endif
-
-#ifndef HAVE_GETLINE
-int getline(char **lineptr, size_t *n, FILE *stream);
-#endif
-
-#ifndef HAVE_ASPRINTF
-int asprintf (char **lineptr, const char *format, ...);
-#endif
-
-#ifndef HAVE_VASPRINTF
-#include <stdarg.h>
-int vasprintf (char **lineptr, const char *format, va_list va);
-#endif
-
-#ifndef HAVE_INET_NTOP
-const char *inet_ntop(int af, const void *src, char *dst, size_t size);
-#endif
-
-#define strlitlen(strlit) (sizeof(strlit)-1)
-
-#endif /* HELPERS_H */
diff --git a/jni/pdnsd/src/icmp.c b/jni/pdnsd/src/icmp.c
deleted file mode 100644
index 6e3e46f..0000000
--- a/jni/pdnsd/src/icmp.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/* icmp.c - Server response tests using ICMP echo requests
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2003, 2005, 2007, 2012 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * This should now work on both Linux and FreeBSD (and CYGWIN?). If anyone
- * with experience in other Unix flavors wants to contribute platform-specific
- * code, he is very welcome.
- */
-
-#include <config.h>
-#ifdef HAVE_SYS_POLL_H
-#include <sys/poll.h>
-#endif
-#include <sys/time.h>
-#include <stdlib.h>
-#include <stddef.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-#include "ipvers.h"
-#if (TARGET==TARGET_LINUX)
-# include <netinet/ip.h>
-# include <linux/types.h>
-# include <linux/icmp.h>
-#elif (TARGET==TARGET_BSD)
-# include <netinet/in_systm.h>
-# include <netinet/ip.h>
-# include <netinet/ip_icmp.h>
-#elif (TARGET==TARGET_CYGWIN)
-# include <netinet/ip.h>
-# include <netinet/in_systm.h>
-# include <netinet/ip_icmp.h>
-# include "freebsd_netinet_ip_icmp.h"
-#else
-# error Unsupported platform!
-#endif
-#ifdef ENABLE_IPV6
-# include <netinet/ip6.h>
-# include <netinet/icmp6.h>
-#endif
-#include <netdb.h>
-#include "icmp.h"
-#include "error.h"
-#include "helpers.h"
-#include "servers.h"
-
-
-#define ICMP_MAX_ERRS 10
-static volatile unsigned long icmp_errs=0; /* This is only here to minimize log output.
-					      Since the consequences of a race is only
-					      one log message more/less (out of
-					      ICMP_MAX_ERRS), no lock is required. */
-
-volatile int ping_isocket=-1;
-#ifdef ENABLE_IPV6
-volatile int ping6_isocket=-1;
-#endif
-
-/* different names, same thing... be careful, as these are macros... */
-#if (TARGET==TARGET_LINUX)
-# define ip_saddr  saddr
-# define ip_daddr  daddr
-# define ip_hl     ihl
-# define ip_p	   protocol
-#else
-# define icmphdr   icmp
-# define iphdr     ip
-# define ip_saddr  ip_src.s_addr
-# define ip_daddr  ip_dst.s_addr
-#endif
-
-#if (TARGET==TARGET_LINUX)
-# define icmp_type  type
-# define icmp_code  code
-# define icmp_cksum checksum
-# define icmp_id un.echo.id
-# define icmp_seq un.echo.sequence
-#else
-# define ICMP_DEST_UNREACH  ICMP_UNREACH
-# define ICMP_TIME_EXCEEDED ICMP_TIMXCEED
-#endif
-
-#define ICMP_BASEHDR_LEN  8
-#define ICMP4_ECHO_LEN    ICMP_BASEHDR_LEN
-
-#if (TARGET==TARGET_LINUX) || (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)
-/*
- * These are the ping implementations for Linux/FreeBSD in their IPv4/ICMPv4 and IPv6/ICMPv6 versions.
- * I know they share some code, but I'd rather keep them separated in some parts, as some
- * things might go in different directions there.
- */
-
-/* Initialize the sockets for pinging */
-void init_ping_socket()
-{
-	if ((ping_isocket=socket(PF_INET, SOCK_RAW, IPPROTO_ICMP))==-1) {
-		log_warn("icmp ping: socket() failed: %s",strerror(errno));
-	}
-#ifdef ENABLE_IPV6
-	if (!run_ipv4)  {
-		/* Failure to initialize the IPv4 ping socket is not
-		   necessarily a problem, as long as the IPv6 version works. */
-		if ((ping6_isocket=socket(PF_INET6, SOCK_RAW, IPPROTO_ICMPV6))==-1) {
-			log_warn("icmpv6 ping: socket() failed: %s",strerror(errno));
-		}
-	}
-#endif
-}
-
-/* Takes a packet as send out and a received ICMP packet and looks whether the ICMP packet is
- * an error reply on the sent-out one. packet is only the packet (without IP header).
- * errmsg includes an IP header.
- * to is the destination address of the original packet (the only thing that is actually
- * compared of the IP header). The RFC says that we get at least 8 bytes of the offending packet.
- * We do not compare more, as this is all we need.*/
-static int icmp4_errcmp(char *packet, int plen, struct in_addr *to, char *errmsg, int elen, int errtype)
-{
-	struct iphdr iph;
-	struct icmphdr icmph;
-	struct iphdr eiph;
-	char *data;
-
-	/* XXX: lots of memcpy to avoid unaligned accesses on alpha */
-	if (elen<sizeof(struct iphdr))
-		return 0;
-	memcpy(&iph,errmsg,sizeof(iph));
-	if (iph.ip_p!=IPPROTO_ICMP || elen<iph.ip_hl*4+ICMP_BASEHDR_LEN+sizeof(eiph))
-		return 0;
-	PDNSD_ASSERT(sizeof(icmph) >= ICMP_BASEHDR_LEN, "icmp4_errcmp: ICMP_BASEHDR_LEN botched");
-	memcpy(&icmph,errmsg+iph.ip_hl*4,ICMP_BASEHDR_LEN);
-	memcpy(&eiph,errmsg+iph.ip_hl*4+ICMP_BASEHDR_LEN,sizeof(eiph));
-	if (elen<iph.ip_hl*4+ICMP_BASEHDR_LEN+eiph.ip_hl*4+8)
-		return 0;
-	data=errmsg+iph.ip_hl*4+ICMP_BASEHDR_LEN+eiph.ip_hl*4;
-	return icmph.icmp_type==errtype && memcmp(&to->s_addr, &eiph.ip_daddr, sizeof(to->s_addr))==0 &&
-		memcmp(data, packet, plen<8?plen:8)==0;
-}
-
-/* IPv4/ICMPv4 ping. Called from ping (see below) */
-static int ping4(struct in_addr addr, int timeout, int rep)
-{
-	int i;
-	int isock;
-#if (TARGET==TARGET_LINUX)
-	struct icmp_filter f;
-#endif
-	unsigned short id=(unsigned short)get_rand16(); /* randomize a ping id */
-
-	isock=ping_isocket;
-
-#if (TARGET==TARGET_LINUX)
-	/* Fancy ICMP filering -- only on Linux (as far is I know) */
-
-	/* In fact, there should be macros for treating icmp_filter, but I haven't found them in Linux 2.2.15.
-	 * So, set it manually and unportable ;-) */
-	/* This filter lets ECHO_REPLY (0), DEST_UNREACH(3) and TIME_EXCEEDED(11) pass. */
-	/* !(0000 1000 0000 1001) = 0xff ff f7 f6 */
-	f.data=0xfffff7f6;
-	if (setsockopt(isock,SOL_RAW,ICMP_FILTER,&f,sizeof(f))==-1) {
-		if (++icmp_errs<=ICMP_MAX_ERRS) {
-			log_warn("icmp ping: setsockopt() failed: %s", strerror(errno));
-		}
-		return -1;
-	}
-#endif
-
-	for (i=0;i<rep;i++) {
-		struct sockaddr_in from,to;
-		struct icmphdr icmpd;
-		unsigned long sum;
-		uint16_t *ptr;
-		long tm,tpassed;
-		int j;
-
-		icmpd.icmp_type=ICMP_ECHO;
-		icmpd.icmp_code=0;
-		icmpd.icmp_cksum=0;
-		icmpd.icmp_id=htons((uint16_t)id);
-		icmpd.icmp_seq=htons((uint16_t)i);
-
-		/* Checksumming - Algorithm taken from nmap. Thanks... */
-
-		ptr=(uint16_t *)&icmpd;
-		sum=0;
-
-		for (j=0;j<4;j++) {
-			sum+=*ptr++;
-		}
-		sum = (sum >> 16) + (sum & 0xffff);
-		sum += (sum >> 16);
-		icmpd.icmp_cksum=~sum;
-
-		memset(&to,0,sizeof(to));
-		to.sin_family=AF_INET;
-		to.sin_port=0;
-		to.sin_addr=addr;
-		SET_SOCKA_LEN4(to);
-		if (sendto(isock,&icmpd,ICMP4_ECHO_LEN,0,(struct sockaddr *)&to,sizeof(to))==-1) {
-			if (++icmp_errs<=ICMP_MAX_ERRS) {
-				log_warn("icmp ping: sendto() failed: %s.",strerror(errno));
-			}
-			return -1;
-		}
-		/* listen for reply. */
-		tm=time(NULL); tpassed=0;
-		do {
-			int psres;
-#ifdef NO_POLL
-			fd_set fds,fdse;
-			struct timeval tv;
-			FD_ZERO(&fds);
-			PDNSD_ASSERT(isock<FD_SETSIZE,"socket file descriptor exceeds FD_SETSIZE.");
-			FD_SET(isock, &fds);
-			fdse=fds;
-			tv.tv_usec=0;
-			tv.tv_sec=timeout>tpassed?timeout-tpassed:0;
-			/* There is a possible race condition with the arrival of a signal here,
-			   but it is so unlikely to be a problem in practice that the effort
-			   to do this properly is not worth the trouble.
-			*/
-			if(is_interrupted_servstat_thread()) {
-				DEBUG_MSG("server status thread interrupted.\n");
-				return -1;
-			}
-			psres=select(isock+1,&fds,NULL,&fdse,&tv);
-#else
-			struct pollfd pfd;
-			pfd.fd=isock;
-			pfd.events=POLLIN;
-			/* There is a possible race condition with the arrival of a signal here,
-			   but it is so unlikely to be a problem in practice that the effort
-			   to do this properly is not worth the trouble.
-			*/
-			if(is_interrupted_servstat_thread()) {
-				DEBUG_MSG("server status thread interrupted.\n");
-				return -1;
-			}
-			psres=poll(&pfd,1,timeout>tpassed?(timeout-tpassed)*1000:0);
-#endif
-
-			if (psres<0) {
-				if(errno==EINTR && is_interrupted_servstat_thread()) {
-					DEBUG_MSG("poll/select interrupted in server status thread.\n");
-				}
-				else if (++icmp_errs<=ICMP_MAX_ERRS) {
-					log_warn("poll/select failed: %s",strerror(errno));
-				}
-				return -1;
-			}
-			if (psres==0)  /* timed out */
-				break;
-
-#ifdef NO_POLL
-			if (FD_ISSET(isock,&fds) || FD_ISSET(isock,&fdse))
-#else
-			if (pfd.revents&(POLLIN|POLLERR))
-#endif
-			{
-				char buf[1024];
-				socklen_t sl=sizeof(from);
-				int len;
-
-				if ((len=recvfrom(isock,&buf,sizeof(buf),0,(struct sockaddr *)&from,&sl))!=-1) {
-					if (len>sizeof(struct iphdr)) {
-						struct iphdr iph;
-
-						memcpy(&iph, buf, sizeof(iph));
-						if (len-iph.ip_hl*4>=ICMP_BASEHDR_LEN) {
-							struct icmphdr icmpp;
-
-							memcpy(&icmpp, ((uint32_t *)buf)+iph.ip_hl, sizeof(icmpp));
-							if (iph.ip_saddr==addr.s_addr && icmpp.icmp_type==ICMP_ECHOREPLY &&
-							    ntohs(icmpp.icmp_id)==id && ntohs(icmpp.icmp_seq)<=i) {
-								return (i-ntohs(icmpp.icmp_seq))*timeout+(time(NULL)-tm); /* return the number of ticks */
-							} else {
-								/* No regular echo reply. Maybe an error? */
-								if (icmp4_errcmp((char *)&icmpd, ICMP4_ECHO_LEN, &to.sin_addr, buf, len, ICMP_DEST_UNREACH) ||
-								    icmp4_errcmp((char *)&icmpd, ICMP4_ECHO_LEN, &to.sin_addr, buf, len, ICMP_TIME_EXCEEDED)) {
-									return -1;
-								}
-							}
-						}
-					}
-				} else {
-					return -1; /* error */
-				}
-			}
-			else {
-				if (++icmp_errs<=ICMP_MAX_ERRS) {
-					log_error("Unhandled poll/select event in ping4() at %s, line %d.",__FILE__,__LINE__);
-				}
-				return -1;
-			}
-			tpassed=time(NULL)-tm;
-		} while (tpassed<timeout);
-	}
-	return -1; /* no answer */
-}
-
-
-#ifdef ENABLE_IPV6
-
-/* Takes a packet as send out and a received ICMPv6 packet and looks whether the ICMPv6 packet is
- * an error reply on the sent-out one. packet is only the packet (without IPv6 header).
- * errmsg does not include an IPv6 header. to is the address the sent packet went to.
- * This is specialized for icmpv6: It zeros out the checksum field, which is filled in
- * by the kernel, and expects that the checksum field in the sent-out packet is zeroed out too
- * We need a little magic to parse the answer, as there could be extension headers present, end
- * we don't know their length a priori.*/
-static int icmp6_errcmp(char *packet, int plen, struct in6_addr *to, char *errmsg, int elen, int errtype)
-{
-	struct icmp6_hdr icmph;
-	struct ip6_hdr eiph;
-	struct ip6_hbh hbh;
-	char *data;
-	int rlen,nxt;
-
-	/* XXX: lots of memcpy here to avoid unaligned access faults on alpha */
-	if (elen<sizeof(icmph)+sizeof(eiph))
-		return 0;
-	memcpy(&icmph,errmsg,sizeof(icmph));
-	memcpy(&eiph,errmsg+sizeof(icmph),sizeof(eiph));
-	if (!IN6_ARE_ADDR_EQUAL(&eiph.ip6_dst, to))
-		return 0;
-	rlen=elen-sizeof(icmph)-sizeof(eiph);
-	data=errmsg+sizeof(icmph)+sizeof(eiph);
-	nxt=eiph.ip6_nxt;
-	/* Now, jump over any known option header that might be present, and then
-	 * try to compare the packets. */
-	while (nxt!=IPPROTO_ICMPV6) {
-		/* Those are the headers we understand. */
-		if (nxt!=IPPROTO_HOPOPTS && nxt!=IPPROTO_ROUTING && nxt!=IPPROTO_DSTOPTS)
-			return 0;
-		if (rlen<sizeof(hbh))
-			return 0;
-		memcpy(&hbh,data,sizeof(hbh));
-		if (rlen<hbh.ip6h_len)
-			return 0;
-		rlen-=hbh.ip6h_len;
-		nxt=hbh.ip6h_nxt;
-		data+=hbh.ip6h_len;
-	}
-	if (rlen<sizeof(struct icmp6_hdr))
-		return 0;
-	/* Zero out the checksum of the enclosed ICMPv6 header, it is kernel-filled in the original data */
-	memset(((char *)data)+offsetof(struct icmp6_hdr,icmp6_cksum),0,sizeof(icmph.icmp6_cksum));
-	return icmph.icmp6_type==errtype && memcmp(data, packet, plen<rlen?plen:rlen)==0;
-}
-
-/* IPv6/ICMPv6 ping. Called from ping (see below) */
-static int ping6(struct in6_addr a, int timeout, int rep)
-{
-	int i;
-/*	int ck_offs=2;*/
-	int isock;
-	struct icmp6_filter f;
-	unsigned short id=(unsigned short)(rand()&0xffff); /* randomize a ping id */
-
-	isock=ping6_isocket;
-
-	ICMP6_FILTER_SETBLOCKALL(&f);
-	ICMP6_FILTER_SETPASS(ICMP6_ECHO_REPLY,&f);
-	ICMP6_FILTER_SETPASS(ICMP6_DST_UNREACH,&f);
-	ICMP6_FILTER_SETPASS(ICMP6_TIME_EXCEEDED,&f);
-
-	if (setsockopt(isock,IPPROTO_ICMPV6,ICMP6_FILTER,&f,sizeof(f))==-1) {
-		if (++icmp_errs<=ICMP_MAX_ERRS) {
-			log_warn("icmpv6 ping: setsockopt() failed: %s", strerror(errno));
-		}
-		return -1;
-	}
-
-	for (i=0;i<rep;i++) {
-		struct sockaddr_in6 from;
-		struct icmp6_hdr icmpd;
-		long tm,tpassed;
-
-		icmpd.icmp6_type=ICMP6_ECHO_REQUEST;
-		icmpd.icmp6_code=0;
-		icmpd.icmp6_cksum=0; /* The friendly kernel does fill that in for us. */
-		icmpd.icmp6_id=htons((uint16_t)id);
-		icmpd.icmp6_seq=htons((uint16_t)i);
-
-		memset(&from,0,sizeof(from));
-		from.sin6_family=AF_INET6;
-		from.sin6_flowinfo=IPV6_FLOWINFO;
-		from.sin6_port=0;
-		from.sin6_addr=a;
-		SET_SOCKA_LEN6(from);
-		if (sendto(isock,&icmpd,sizeof(icmpd),0,(struct sockaddr *)&from,sizeof(from))==-1) {
-			if (++icmp_errs<=ICMP_MAX_ERRS) {
-				log_warn("icmpv6 ping: sendto() failed: %s.",strerror(errno));
-			}
-			return -1;
-		}
-		/* listen for reply. */
-		tm=time(NULL); tpassed=0;
-		do {
-			int psres;
-#ifdef NO_POLL
-			fd_set fds,fdse;
-			struct timeval tv;
-			FD_ZERO(&fds);
-			PDNSD_ASSERT(isock<FD_SETSIZE,"socket file descriptor exceeds FD_SETSIZE.");
-			FD_SET(isock, &fds);
-			fdse=fds;
-			tv.tv_usec=0;
-			tv.tv_sec=timeout>tpassed?timeout-tpassed:0;
-			/* There is a possible race condition with the arrival of a signal here,
-			   but it is so unlikely to be a problem in practice that the effort
-			   to do this properly is not worth the trouble.
-			*/
-			if(is_interrupted_servstat_thread()) {
-				DEBUG_MSG("server status thread interrupted.\n");
-				return -1;
-			}
-			psres=select(isock+1,&fds,NULL,&fdse,&tv);
-#else
-			struct pollfd pfd;
-			pfd.fd=isock;
-			pfd.events=POLLIN;
-			/* There is a possible race condition with the arrival of a signal here,
-			   but it is so unlikely to be a problem in practice that the effort
-			   to do this properly is not worth the trouble.
-			*/
-			if(is_interrupted_servstat_thread()) {
-				DEBUG_MSG("server status thread interrupted.\n");
-				return -1;
-			}
-			psres=poll(&pfd,1,timeout>tpassed?(timeout-tpassed)*1000:0);
-#endif
-
-			if (psres<0) {
-				if(errno==EINTR && is_interrupted_servstat_thread()) {
-					DEBUG_MSG("poll/select interrupted in server status thread.\n");
-				}
-				else if (++icmp_errs<=ICMP_MAX_ERRS) {
-					log_warn("poll/select failed: %s",strerror(errno));
-				}
-				return -1;
-			}
-			if (psres==0)  /* timed out */
-				break;
-
-#ifdef NO_POLL
-			if (FD_ISSET(isock,&fds) || FD_ISSET(isock,&fdse))
-#else
-			if (pfd.revents&(POLLIN|POLLERR))
-#endif
-			{
-				char buf[1024];
-				socklen_t sl=sizeof(from);
-				int len;
-				if ((len=recvfrom(isock,&buf,sizeof(buf),0,(struct sockaddr *)&from,&sl))!=-1) {
-					if (len>=sizeof(struct icmp6_hdr)) {
-						/* we get packets without IPv6 header, luckily */
-						struct icmp6_hdr icmpp;
-
-						memcpy(&icmpp, buf, sizeof(icmpp));
-						if (IN6_ARE_ADDR_EQUAL(&from.sin6_addr,&a) &&
-						    ntohs(icmpp.icmp6_id)==id && ntohs(icmpp.icmp6_seq)<=i) {
-							return (i-ntohs(icmpp.icmp6_seq))*timeout+(time(NULL)-tm); /* return the number of ticks */
-						} else {
-							/* No regular echo reply. Maybe an error? */
-							if (icmp6_errcmp((char *)&icmpd, sizeof(icmpd), &from.sin6_addr, buf, len, ICMP6_DST_UNREACH) ||
-							    icmp6_errcmp((char *)&icmpd, sizeof(icmpd), &from.sin6_addr, buf, len, ICMP6_TIME_EXCEEDED)) {
-								return -1;
-							}
-						}
-					}
-				} else {
-					return -1; /* error */
-				}
-			}
-			else {
-				if (++icmp_errs<=ICMP_MAX_ERRS) {
-					log_error("Unhandled poll/select event in ping6() at %s, line %d.",__FILE__,__LINE__);
-				}
-				return -1;
-			}
-			tpassed=time(NULL)-tm;
-		} while (tpassed<timeout);
-	}
-	return -1; /* no answer */
-}
-#endif /* ENABLE_IPV6*/
-
-
-/* Perform an icmp ping on a host, returning -1 on timeout or
- * "host unreachable" or the ping time in 10ths of secs
- * (but actually, we are not that accurate any more).
- * timeout in 10ths of seconds, rep is the repetition count
- */
-int ping(pdnsd_a *addr, int timeout, int rep)
-{
-
-	if (SEL_IPVER(ping_isocket,ping6_isocket) == -1)
-		return -1;
-
-	/* We were given a timeout in 10ths of seconds,
-	   but ping4 and ping6 want a timeout in seconds. */
-	timeout /= 10;
-
-#ifdef ENABLE_IPV4
-	if (run_ipv4)
-		return ping4(addr->ipv4,timeout,rep);
-#endif
-#ifdef ENABLE_IPV6
-	ELSE_IPV6 {
-		/* If it is a IPv4 mapped IPv6 address, we prefer ICMPv4. */
-		if (ping_isocket!=-1 && IN6_IS_ADDR_V4MAPPED(&addr->ipv6)) {
-			struct in_addr v4;
-			v4.s_addr=((uint32_t *)&addr->ipv6)[3];
-			return ping4(v4,timeout,rep);
-		} else
-			return ping6(addr->ipv6,timeout,rep);
-	}
-#endif
-	return -1;
-}
-
-#else
-# error "Huh! No OS macro defined!"
-#endif /*(TARGET==TARGET_LINUX) || (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)*/
diff --git a/jni/pdnsd/src/icmp.h b/jni/pdnsd/src/icmp.h
deleted file mode 100644
index 3fa6778..0000000
--- a/jni/pdnsd/src/icmp.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* icmp.h - Server response tests using ICMP echo requests
-   Copyright (C) 2000 Thomas Moestl
-   Copyright (C) 2007 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef ICMP_H
-#define ICMP_H
-
-
-#include <config.h>
-#include "ipvers.h"
-
-volatile extern int ping_isocket;
-volatile extern int ping6_isocket;
-
-/* initialize a socket for pinging */
-void init_ping_socket(void);
-
-/*
- * This is a classical ping routine.
- * timeout in 10ths of seconds, rep is the repetition count.
- */
-
-int ping(pdnsd_a *addr, int timeout, int rep);
-
-#endif
diff --git a/jni/pdnsd/src/ipvers.h b/jni/pdnsd/src/ipvers.h
deleted file mode 100644
index b1d7a2c..0000000
--- a/jni/pdnsd/src/ipvers.h
+++ /dev/null
@@ -1,297 +0,0 @@
-/* ipvers.h - definitions for IPv4 and IPv6
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2003, 2007, 2009 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef IPVERS_H
-#define IPVERS_H
-
-#include <config.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include "rr_types.h"
-
-#if defined(ENABLE_IPV4) && !defined(ENABLE_IPV6)
-# ifdef DEFAULT_IPV4
-#  undef DEFAULT_IPV4
-# endif
-# define DEFAULT_IPV4 1
-#endif
-
-#if !defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-# ifdef DEFAULT_IPV4
-#  undef DEFAULT_IPV4
-# endif
-# define DEFAULT_IPV4 0
-#endif
-
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-# define ELSE_IPV6 else
-#else
-# define ELSE_IPV6
-#endif
-
-/* From main.c */
-#ifdef ENABLE_IPV4
-# ifdef ENABLE_IPV6
-extern short int run_ipv4;
-extern short int cmdlineipv;
-#  define SEL_IPVER(a4,a6)  (run_ipv4? a4: a6)
-# else
-#  define run_ipv4 1
-#  define SEL_IPVER(a4,a6)  (a4)
-# endif
-#else
-#  define run_ipv4 0
-#  define SEL_IPVER(a4,a6)  (a6)
-#endif
-#ifdef ENABLE_IPV6
-#define DEFAULT_IPV4_6_PREFIX "::ffff:0.0.0.0"
-/* extern short int cmdlineprefix; */
-#endif
-
-#if (TARGET==TARGET_LINUX) && !defined(HAVE_STRUCT_IN_PKTINFO)
-struct in_pktinfo
-{
-	int		ipi_ifindex;
-	struct in_addr	ipi_spec_dst;
-	struct in_addr	ipi_addr;
-};
-#endif
-
-#if (TARGET==TARGET_LINUX)
-/* some older glibc versions seem to lack this. */
-# ifndef IP_PKTINFO
-#  define IP_PKTINFO 8
-# endif
-# ifndef CMSG_LEN
-/* ---- from glibc 2.1.2 */
-
-/* Ancillary data object manipulation macros.  */
-#  if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2
-#   define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
-#  else
-#   define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
-#  endif
-#  define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
-#  define CMSG_FIRSTHDR(mhdr) \
-  ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr)		      \
-   ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
-#  define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
-			 & ~(sizeof (size_t) - 1))
-#  define CMSG_SPACE(len) (CMSG_ALIGN (len) \
-			 + CMSG_ALIGN (sizeof (struct cmsghdr)))
-#  define CMSG_LEN(len)   (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
-extern struct cmsghdr *__cmsg_nxthdr __P ((struct msghdr *__mhdr,
-					   struct cmsghdr *__cmsg));
-#  ifdef __USE_EXTERN_INLINES
-#   ifndef _EXTERN_INLINE
-#    define _EXTERN_INLINE extern __inline
-#   endif
-_EXTERN_INLINE struct cmsghdr *
-__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW
-{
-  if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
-    /* The kernel header does this so there may be a reason.  */
-    return 0;
-
-  __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
-			       + CMSG_ALIGN (__cmsg->cmsg_len));
-  if ((unsigned char *) (__cmsg + 1) >= ((unsigned char *) __mhdr->msg_control
-					 + __mhdr->msg_controllen)
-      || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
-	  >= ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
-    /* No more entries.  */
-    return 0;
-  return __cmsg;
-}
-#  endif	/* Use `extern inline'.  */
-/* ---- */
-# endif
-#endif
-
-#if defined(ENABLE_IPV4) && !defined(SIN_LEN) && (TARGET==TARGET_BSD)
-# define SIN_LEN
-#endif
-
-#if defined(ENABLE_IPV6) && (TARGET==TARGET_LINUX)
-
-/* Some glibc versions (I know of 2.1.2) get this wrong, so we define our own. To be exact, this is fixed
- * glibc code. */
-#ifdef IN6_ARE_ADDR_EQUAL
-# undef IN6_ARE_ADDR_EQUAL
-#endif
-#define IN6_ARE_ADDR_EQUAL(a,b) \
-	((((uint32_t *) (a))[0] == ((uint32_t *) (b))[0]) && \
-	 (((uint32_t *) (a))[1] == ((uint32_t *) (b))[1]) && \
-	 (((uint32_t *) (a))[2] == ((uint32_t *) (b))[2]) && \
-	 (((uint32_t *) (a))[3] == ((uint32_t *) (b))[3]))
-
-#endif
-
-/* This is the IPv6 flowid that we pass on to the IPv6 protocol stack. This value was not currently defined
- * at the time of writing. Should this change, define a appropriate flowinfo here. */
-#ifndef IPV6_FLOWINFO
-#define IPV6_FLOWINFO 0
-#endif
-
-/* There does not seem to be a function/macro to generate IPv6-mapped IPv4-Adresses. So here comes mine.
- * Pass an in_addr* and an in6_addr* */
-#define IPV6_MAPIPV4(a,b) {((uint32_t *)(b))[3]=(a)->s_addr;		\
-			   ((uint32_t *)(b))[2]=htonl(0xffff);		\
-			   ((uint32_t *)(b))[1]=((uint32_t *)(b))[0]=0; }
-
-/* A macro to extract the pointer to the address of a struct sockaddr (_in or _in6) */
-
-#define SOCKA_A4(a) ((pdnsd_a *)&((struct sockaddr_in *)(a))->sin_addr)
-#define SOCKA_A6(a) ((pdnsd_a *)&((struct sockaddr_in6 *)(a))->sin6_addr)
-
-#define SOCKA_A(a) SEL_IPVER(SOCKA_A4(a),SOCKA_A6(a))
-#define PDNSD_PF_INET SEL_IPVER(PF_INET,PF_INET6)
-#define PDNSD_AF_INET SEL_IPVER(AF_INET,AF_INET6)
-
-/* This is to compare two addresses. This is a macro because it may change due to the more complex IPv6 adressing architecture
- * (there are, for example, two equivalent addresses of the loopback device)
- * Pass this two addresses as in_addr or in6_addr. pdnsd_a is ok (it is a union) */
-
-#define ADDR_EQUIV4(a,b) (((struct in_addr *)(a))->s_addr==((struct in_addr *)(b))->s_addr)
-#define ADDR_EQUIV6(a,b) IN6_ARE_ADDR_EQUAL(((struct in6_addr *)(a)),((struct in6_addr *)(b)))
-
-#define ADDR_EQUIV(a,b) SEL_IPVER(ADDR_EQUIV4(a,b), ADDR_EQUIV6(a,b))
-
-/* Compare an IPv6 adress with an IPv4 one. b should have type struct in_addr*.
-   Note the similarity with the IPV6_MAPIPV4 macro. */
-#define ADDR_EQUIV6_4(a,b) (((uint32_t *)(a))[3]==(b)->s_addr &&	\
-			    ((uint32_t *)(a))[2]==htonl(0xffff) &&	\
-			    ((uint32_t *)(a))[1]==0 &&			\
-			    ((uint32_t *)(a))[0]==0)
-
-/* Compare two address a and b in combination with a netmask m.
-   Only the bits coresponding to those set in the netmask are matched, the rest are ignored.
-   Pass in_addr* or in6_addr* arguments, respectively. */
-#define ADDR4MASK_EQUIV(a,b,m) ((((a)->s_addr^(b)->s_addr)&(m)->s_addr)==0)
-#define ADDR6MASK_EQUIV(a,b,m) (((((uint32_t *)(a))[0]^((uint32_t *)(b))[0])&((uint32_t *)(m))[0])==0 && \
-				((((uint32_t *)(a))[1]^((uint32_t *)(b))[1])&((uint32_t *)(m))[1])==0 && \
-				((((uint32_t *)(a))[2]^((uint32_t *)(b))[2])&((uint32_t *)(m))[2])==0 && \
-				((((uint32_t *)(a))[3]^((uint32_t *)(b))[3])&((uint32_t *)(m))[3])==0)
-
-/* See if we need 4.4BSD style sockaddr_* structures and define some macros that set the length field.
- * The non-4.4BSD behaviour is the only one that is POSIX-conformant.*/
-#if defined(SIN6_LEN) || defined(SIN_LEN)
-# define BSD44_SOCKA
-# define SET_SOCKA_LEN4(socka) (socka.sin_len=sizeof(struct sockaddr_in))
-# define SET_SOCKA_LEN6(socka) (socka.sin6_len=sizeof(struct sockaddr_in6))
-#else
-# define SET_SOCKA_LEN4(socka)
-# define SET_SOCKA_LEN6(socka)
-#endif
-
-#ifdef ENABLE_IPV6
-# define ADDRSTR_MAXLEN INET6_ADDRSTRLEN
-#else
-# ifdef INET_ADDRSTRLEN
-#  define ADDRSTR_MAXLEN INET_ADDRSTRLEN
-# else
-#  define ADDRSTR_MAXLEN 16
-# endif
-#endif
-
-#if (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)
-# define SOL_IPV6 IPPROTO_IPV6
-#endif
-
-#ifdef ENABLE_IPV6
-# ifndef IPV6_RECVPKTINFO
-/* This appears to be needed e.g. on Darwin (Mac OS X). */
-#  define IPV6_RECVPKTINFO IPV6_PKTINFO
-# endif
-#endif
-
-typedef union {
-#ifdef ENABLE_IPV4
-	struct in_addr   ipv4;
-#endif
-#ifdef ENABLE_IPV6
-	struct in6_addr  ipv6;
-#endif
-} pdnsd_a;
-
-#ifdef ENABLE_IPV4
-#define  PDNSD_A_INITIALIZER {{INADDR_ANY}}
-#else
-#define  PDNSD_A_INITIALIZER {IN6ADDR_ANY_INIT}
-#endif
-
-
-/* The pdnsd_a2 type is very similar to pdnsd_a, but can hold
-   both an IPv4 and an IPv6 address at the same time,
-   i.e. a struct instead of a union.
-*/
-typedef struct {
-#ifdef ENABLE_IPV6
-	struct in6_addr  ipv6;
-#endif
-	struct in_addr   ipv4;
-} pdnsd_a2;
-
-/* Macros/functions for assigning/converting a pdnsd_a* to a pdnsd_a2* type,
-   and vice versa.
-*/
-#ifdef ENABLE_IPV6
-inline static void SET_PDNSD_A2(pdnsd_a2 *a2, pdnsd_a *a) __attribute__((always_inline));
-inline static void SET_PDNSD_A2(pdnsd_a2 *a2, pdnsd_a *a)
-{
-#ifdef ENABLE_IPV4
-	if(run_ipv4)
-		a2->ipv4=a->ipv4;
-	else
-#endif
-	{
-		a2->ipv6=a->ipv6;
-		a2->ipv4.s_addr=INADDR_ANY;
-	}
-}
-#else
-# define SET_PDNSD_A2(a2,a) ((a2)->ipv4=(a)->ipv4)
-#endif
-
-#define PDNSD_A2_TO_A(a2) SEL_IPVER(((pdnsd_a *)&(a2)->ipv4),((pdnsd_a *)&(a2)->ipv6))
-
-/* Do we have sufficient support in the C libraries to allow local AAAA records
-   to be defined? */
-#if defined(HAVE_STRUCT_IN6_ADDR) && defined(HAVE_INET_PTON)
-# define ALLOW_LOCAL_AAAA IS_CACHED_AAAA
-#else
-# define ALLOW_LOCAL_AAAA 0
-#endif
-
-/* Used to enter local records */
-typedef	union {
-	struct in_addr ipv4;
-#if ALLOW_LOCAL_AAAA
-	struct in6_addr ipv6;
-#endif
-} pdnsd_ca;
-
-
-#endif
diff --git a/jni/pdnsd/src/list.c b/jni/pdnsd/src/list.c
deleted file mode 100644
index 0370186..0000000
--- a/jni/pdnsd/src/list.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* list.c - Dynamic array and list handling
-
-   Copyright (C) 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2007, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdlib.h>
-#include <string.h>
-#include "helpers.h"
-#include "error.h"
-#include "list.h"
-
-
-/* Grow a dynamic array to hold one extra element.
-   This could be done using da_resize(), but this is such a common operation
-   it is has been given its own optimized implementation.
-   da_grow1() returns a pointer to the new (possibly reallocated) array if
-   successful, otherwise it frees the old array (after freeing all the array
-   elements if a clean-up routine is supplied) and returns NULL.
-*/
-darray da_grow1(darray a, size_t headsz, size_t elemsz, void (*cleanuproutine) (void *))
-{
-	size_t k = (a?a->nel:0);
-	if(!a || (k!=0 && (k&7)==0)) {
-		darray tmp=(darray)realloc(a, headsz+elemsz*(k+8));
-		if (!tmp && a) {
-			if(cleanuproutine) {
-				size_t i;
-				for(i=0;i<k;++i)
-					cleanuproutine(((char *)a)+headsz+elemsz*i);
-			}
-			free(a);
-		}
-		a=tmp;
-	}
-	if(a) a->nel=k+1;
-	return a;
-}
-
-inline static size_t alloc_nel(size_t n)
-{
-  return n==0 ? 8 : (n+7)&(~7);
-}
-
-/* da_resize() allows you to grow (or shrink) a dynamic array to an arbitrary length n,
-   but is otherwise similar to da_grow1().
-*/
-darray da_resize(darray a, size_t headsz, size_t elemsz, size_t n, void (*cleanuproutine) (void *))
-{
-	size_t ael = (a?alloc_nel(a->nel):0);
-	size_t new_ael = alloc_nel(n);
-	if(new_ael != ael) {
-		/* adjust alloced space. */
-		darray tmp=(darray)realloc(a, headsz+elemsz*new_ael);
-		if (!tmp && a) {
-			if(cleanuproutine) {
-				size_t i,k=a->nel;
-				for(i=0;i<k;++i)
-					cleanuproutine(((char *)a)+headsz+elemsz*i);
-			}
-			free(a);
-		}
-		a=tmp;
-	}
-	if(a) a->nel=n;
-	return a;
-}
-
-#ifdef ALLOC_DEBUG
-void DBGda_free(darray a, size_t headsz, size_t elemsz, char *file, int line)
-{
-	if (a==NULL)
-		{DEBUG_MSG("- da_free, %s:%d, not initialized\n", file, line);}
-	else
-		{DEBUG_MSG("- da_free, %s:%d, %lu bytes\n", file, line,
-			   (unsigned long)(headsz+elemsz*alloc_nel(a->nel)));}
-	free(a);
-}
-#endif
-
-
-#define DLISTALIGN(len) (((len) + (sizeof(size_t)-1)) & ~(sizeof(size_t)-1))
-/* This mask corresponds to a chunk size of 1024. */
-#define DLISTCHUNKSIZEMASK ((size_t)0x3ff)
-
-/* Add space for a new item of size len to the list a.
-   dlist_grow() returns a pointer to the new (possibly reallocated) list structure if
-   successful, otherwise it frees the old list and returns NULL.
-*/
-dlist dlist_grow(dlist a, size_t len)
-{
-	size_t sz=0, allocsz=0, szincr, newsz;
-	if(a) {
-		sz=a->last+a->lastsz;
-		allocsz = (sz+DLISTCHUNKSIZEMASK)&(~DLISTCHUNKSIZEMASK);
-		*((size_t *)&a->data[a->last])=a->lastsz;
-	}
-	szincr=DLISTALIGN(len+sizeof(size_t));
-	newsz=sz+szincr;
-	if(newsz>allocsz) {
-		dlist tmp;
-		allocsz = (newsz+DLISTCHUNKSIZEMASK)&(~DLISTCHUNKSIZEMASK);
-		tmp=realloc(a, sizeof(struct _dynamic_list_head)+allocsz);
-		if (!tmp)
-			free(a);
-		a=tmp;
-	}
-	if(a) {
-		a->last=sz;
-		a->lastsz=szincr;
-		*((size_t *)&a->data[sz])=0;
-	}
-	return a;
-}
-
-
-/* Add a new node, capable of holding data of size len, at the end of a linked list.
-   llist_grow() returns 1 if successful, otherwise it frees the entire linked list
-   and returns 0.
- */
-int llist_grow(llist *a, size_t len)
-{
-  struct llistnode_s *new= (struct llistnode_s *)malloc(sizeof(struct llistnode_s)+len);
-
-  if(!new) {
-    llist_free(a);
-    return 0;
-  }
-
-  new->next=NULL;
-
-  if(!a->first)
-    a->first=new;
-  else
-    a->last->next=new;
-
-  a->last=new;
-
-  return 1;
-}
-
-void llist_free(llist *a)
-{
-  struct llistnode_s *p= a->first;
-
-  while(p) {
-    struct llistnode_s *next= p->next;
-    free(p);
-    p=next;
-  }
-
-  a->first=NULL;
-  a->last= NULL;
-}
diff --git a/jni/pdnsd/src/list.h b/jni/pdnsd/src/list.h
deleted file mode 100644
index c63534e..0000000
--- a/jni/pdnsd/src/list.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/* list.h - Dynamic array and list handling
-
-   Copyright (C) 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2007, 2009, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef LIST_H
-#define LIST_H
-
-#include <stdlib.h>
-#include <string.h>
-#include "pdnsd_assert.h"
-
-
-typedef struct {size_t nel;} *darray;
-
-/* used in type declarations */
-#define DYNAMIC_ARRAY(typ)  struct {size_t nel; typ elem[0];}
-#define DA_TYP_OFFSET(atyp) ((size_t)((atyp)0)->elem)
-#define DA_OFFSET(a) DA_TYP_OFFSET(typeof (a))
-
-#define DA_CREATE(atyp,n) ((atyp)da_resize(NULL,DA_TYP_OFFSET(atyp),sizeof(((atyp)0)->elem[0]),n,NULL))
-#define DA_INDEX(a,i) ((a)->elem[i])
-/* Used often, so make special-case macro here */
-#define DA_LAST(a) ((a)->elem[(a)->nel-1])
-
-#define DA_GROW1(a) ((typeof (a))da_grow1((darray)(a),DA_OFFSET(a),sizeof((a)->elem[0]),NULL))
-#define DA_GROW1_F(a,cleanup) ((typeof (a))da_grow1((darray)(a),DA_OFFSET(a),sizeof((a)->elem[0]),cleanup))
-#define DA_RESIZE(a,n) ((typeof (a))da_resize((darray)(a),DA_OFFSET(a),sizeof((a)->elem[0]),n,NULL))
-#define DA_NEL(a) da_nel((darray)(a))
-
-/*
- * Some or all of these should be inline.
- * They aren't macros for type safety.
- */
-
-darray da_grow1(darray a, size_t headsz, size_t elemsz, void (*cleanuproutine) (void *));
-darray da_resize(darray a, size_t headsz, size_t elemsz, size_t n, void (*cleanuproutine) (void *));
-
-inline static unsigned int da_nel(darray a)
-  __attribute__((always_inline));
-inline static unsigned int da_nel(darray a)
-{
-  if (a==NULL)
-    return 0;
-  return a->nel;
-}
-
-/* alloc/free debug code.*/
-#ifdef ALLOC_DEBUG
-void   DBGda_free(darray a, size_t headsz, size_t elemsz, char *file, int line);
-#define da_free(a)	DBGda_free((darray)(a),DA_OFFSET(a),sizeof((a)->elem[0]), __FILE__, __LINE__)
-#else
-#define da_free		free
-#endif
-
-
-/* This dynamic "list" structure is useful if the items are not all the same size.
-   The elements can only be read back in sequential order, not indexed as with the dynamic arrays.
-*/
-struct _dynamic_list_head {
-	size_t last,lastsz;
-	char data[0];
-};
-
-typedef struct _dynamic_list_head  *dlist;
-
-inline static void *dlist_first(dlist a)
-  __attribute__((always_inline));
-inline static void *dlist_first(dlist a)
-{
-  return a?&a->data[sizeof(size_t)]:NULL;
-}
-
-/* dlist_next() returns a reference to the next item in the list, or NULL is there is no next item.
-   ref should be properly aligned.
-   If the dlist was grown with dlist_grow(), this should be OK.
-*/
-inline static void *dlist_next(void *ref)
-  __attribute__((always_inline));
-inline static void *dlist_next(void *ref)
-{
-  size_t incr= *(((size_t *)ref)-1);
-  return incr?((char *)ref)+incr:NULL;
-}
-
-/* dlist_last() returns a reference to the last item. */
-inline static void *dlist_last(dlist a)
-  __attribute__((always_inline));
-inline static void *dlist_last(dlist a)
-{
-  return a?&a->data[a->last+sizeof(size_t)]:NULL;
-}
-
-dlist dlist_grow(dlist a, size_t len);
-
-#define dlist_free free
-
-
-/* linked list data type. */
-struct llistnode_s {
-  struct llistnode_s *next;
-  char *data[0];
-};
-
-typedef struct {
-  struct llistnode_s *first, *last;
-}
-  llist;
-
-inline static void llist_init(llist *a)
-  __attribute__((always_inline));
-inline static void llist_init(llist *a)
-{
-  a->first=NULL;
-  a->last= NULL;
-}
-
-inline static int llist_isempty(llist *a)
-  __attribute__((always_inline));
-inline static int llist_isempty(llist *a)
-{
-  return a->first==NULL;
-}
-
-inline static void *llist_first(llist *a)
-  __attribute__((always_inline));
-inline static void *llist_first(llist *a)
-{
-  struct llistnode_s *p= a->first;
-  return p?p->data:NULL;
-}
-
-inline static void *llist_next(void *ref)
-  __attribute__((always_inline));
-inline static void *llist_next(void *ref)
-{
-  struct llistnode_s *next= *(((struct llistnode_s **)ref)-1);
-  return next?next->data:NULL;
-}
-
-inline static void *llist_last(llist *a)
-  __attribute__((always_inline));
-inline static void *llist_last(llist *a)
-{
-  struct llistnode_s *p= a->last;
-  return p?p->data:NULL;
-}
-
-int llist_grow(llist *a, size_t len);
-void llist_free(llist *a);
-
-#endif /* def LIST_H */
diff --git a/jni/pdnsd/src/main.c b/jni/pdnsd/src/main.c
deleted file mode 100644
index 1190b77..0000000
--- a/jni/pdnsd/src/main.c
+++ /dev/null
@@ -1,710 +0,0 @@
-/* main.c - Command line parsing, intialisation and server start
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-/* in order to use O_NOFOLLOW on Linux: */
-/* #define _GNU_SOURCE */
-
-#include <config.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <stdio.h>
-#include <signal.h>
-#include <unistd.h>
-#include <syslog.h>
-#include <pwd.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-#include <ctype.h>
-#include "consts.h"
-#include "cache.h"
-#include "status.h"
-#include "servers.h"
-#include "dns_answer.h"
-#include "dns_query.h"
-#include "error.h"
-#include "helpers.h"
-#include "icmp.h"
-#include "hash.h"
-
-
-#if DEBUG>0
-short int debug_p=0;
-#endif
-short int stat_pipe=0;
-
-/* int sigr=0; */
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-short int run_ipv4=DEFAULT_IPV4;
-short int cmdlineipv=0;
-#endif
-cmdlineflags_t cmdline={0};
-pthread_t main_thrid,servstat_thrid,statsock_thrid,tcps_thrid,udps_thrid;
-uid_t init_uid;
-#if DEBUG>0
-FILE *dbg_file=NULL;
-#endif
-volatile int tcp_socket=-1;
-volatile int udp_socket=-1;
-sigset_t sigs_msk;
-char *conf_file=CONFDIR"/pdnsd.conf";
-
-
-/* version and licensing information */
-static const char info_message[] =
-
-	"pdnsd - dns proxy daemon, version " VERSION "\n\n"
-	"Copyright (C) 2000, 2001 Thomas Moestl\n"
-	"Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 Paul A. Rombouts\n\n"
-	"pdnsd is free software; you can redistribute it and/or modify\n"
-	"it under the terms of the GNU General Public License as published by\n"
-	"the Free Software Foundation; either version 3 of the License, or\n"
-	"(at your option) any later version.\n\n"
-	"pdnsd is distributed in the hope that it will be useful,\n"
-	"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-	"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
-	"GNU General Public License for more details.\n\n"
-	"You should have received a copy of the GNU General Public License\n"
-	"along with pdsnd; see the file COPYING.  If not, see\n"
-	"<http://www.gnu.org/licenses/>.\n";
-
-
-/* the help page */
-static const char help_message[] =
-
-	"\n\nUsage: pdnsd [-h] [-V] [-s] [-d] [-g] [-t] [-p file] [-vn] [-mxx] [-c file]"
-#ifdef ENABLE_IPV4
-	" [-4]"
-#endif
-#ifdef ENABLE_IPV6
-	" [-6] [-i prefix]"
-#endif
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-	" [-a]"
-#endif
-	"\n\n"
-	"Options:\n"
-	"-h\t\t--or--\n"
-	"--help\t\tprint this help page and exit.\n"
-	"-V\t\t--or--\n"
-	"--version\tprint version and license information and exit.\n"
-	"--pdnsd-user\tprint the user pdnsd will run as and exit.\n"
-	"-s\t\t--or--\n"
-	"--status\tEnable status control socket in the cache directory.\n"
-	"-d\t\t--or--\n"
-	"--daemon\tStart pdnsd in daemon mode (as background process.)\n"
-	"-g\t\t--or--\n"
-	"--debug\t\tPrint some debug messages on the console or to the\n"
-	"\t\tfile pdnsd.debug in your cache directory (in daemon mode).\n"
-	"-t\t\t--or--\n"
-	"--tcp\t\tEnables the TCP server thread. pdnsd will then serve\n"
-	"\t\tTCP and UDP queries.\n"
-	"-p\t\tWrites the pid the server runs as to a specified filename.\n"
-	"\t\tWorks only in daemon mode.\n"
-	"-vn\t\tsets the verbosity of pdnsd. n is a numeric argument from 0\n"
-	"\t\t(normal operation) to 9 (many messages for debugging).\n"
-	"\t\tUse like -v2\n"
-	"-mxx\t\tsets the query method pdnsd uses. Possible values for xx are:\n"
-	"\t\tuo (UDP only), to (TCP only), tu (TCP or, if the server\n"
-	"\t\tdoes not support this, UDP) and ut (UDP and, if the reply was\n"
-	"\t\ttruncated, TCP). Use like -muo. Preset: "
-#if M_PRESET==UDP_ONLY
-	"-muo"
-#elif M_PRESET==TCP_ONLY
-	"-mto"
-#elif M_PRESET==TCP_UDP
-	"-mtu"
-#else
-	"-mut"
-#endif
-	"\n"
-	"-c\t\t--or--\n"
-	"--config-file\tspecifies the file the configuration is read from.\n"
-	"\t\tDefault is " CONFDIR "/pdnsd.conf\n"
-#ifdef ENABLE_IPV4
-	"-4\t\tswitches to IPv4 mode.\n"
-	"\t\t"
-#  if DEFAULT_IPV4
-	"On"
-#  else
-	"Off"
-#  endif
-	" by default.\n"
-#endif
-#ifdef ENABLE_IPV6
-	"-6\t\tswitches to IPv6 mode.\n"
-	"\t\t"
-#  if DEFAULT_IPV4
-	"Off"
-#  else
-	"On"
-#  endif
-	" by default.\n"
-	"-i\t\t--or--\n"
-	"--ipv4_6_prefix\tspecifies the prefix pdnsd uses to map IPv4 to IPv6\n"
-	"\t\taddresses. Must be a valid IPv6 address.\n"
-	"\t\tDefault is " DEFAULT_IPV4_6_PREFIX "\n"
-#endif
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-	"-a\t\tWith this option, pdnsd will try to detect automatically if\n"
-	"\t\tthe system supports IPv6, and revert to IPv4 otherwise.\n"
-#endif
-	"\n\n\"no\" can be prepended to the --status, --daemon, --debug and --tcp\n"
-	"options (e.g. --notcp) to reverse their effect.\n";
-
-
-/* These are some init steps we have to call before we get daemon on linux, but need
- * to call after daemonizing on other OSes.
- * Theay are also the last steps before we drop privileges. */
-int final_init()
-{
-#ifndef NO_TCP_SERVER
-	if (!global.notcp)
-		tcp_socket=init_tcp_socket();
-#endif
-	udp_socket=init_udp_socket();
-	if (tcp_socket==-1 && udp_socket==-1) {
-		log_error("tcp and udp initialization failed. Exiting.");
-		return 0;
-	}
-	if (global.strict_suid) {
-		if (!run_as(global.run_as)) {
-			return 0;
-		}
-	}
-	return 1;
-}
-
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-/* Check if IPv6 is available.
- * With thanks to Juliusz Chroboczek.
- */
-static int check_ipv6()
-{
-    int fd;
-    fd = socket(PF_INET6, SOCK_STREAM, 0);
-    if(fd < 0) {
-        if(errno == EPROTONOSUPPORT || errno == EAFNOSUPPORT || errno == EINVAL)
-            return 0;
-        return -1;
-    }
-    close(fd);
-    return 1;
-}
-#endif
-
-
-/*
- * Argument parsing, init, server startup
- */
-int main(int argc,char *argv[])
-{
-	int i,sig,pfd=-1;  /* Initialized to inhibit compiler warning */
-
-	main_thrid=pthread_self();
-	servstat_thrid=main_thrid;
-	statsock_thrid=main_thrid;
-	tcps_thrid=main_thrid;
-	udps_thrid=main_thrid;
-	init_uid=getuid();
-#ifdef ENABLE_IPV6
-	{
-		int err;
-		if((err=inet_pton(AF_INET6,DEFAULT_IPV4_6_PREFIX,&global.ipv4_6_prefix))<=0) {
-			fprintf(stderr,"Error: inet_pton() wont accept default prefix %s in %s, line %d\n",
-				DEFAULT_IPV4_6_PREFIX,__FILE__,__LINE__);
-			if(err)
-				perror("inet_pton");
-			exit(1);
-		}
-	}
-#endif
-
-	/* Parse the command line.
-	   Remember which options were specified here, because the command-line options
-	   shall override the ones given in the config file */
-	for (i=1;i<argc;i++) {
-		char *arg=argv[i];
-		if (strcmp(arg,"-h")==0 || strcmp(arg,"--help")==0) {
-			fputs(info_message,stdout);
-			fputs(help_message,stdout);
-			exit(1);
-		} else if (strcmp(arg,"-V")==0 || strcmp(arg,"--version")==0) {
-			fputs(info_message,stdout);
-			exit(1);
-		} else if (strcmp(arg,"-c")==0 || strcmp(arg,"--config-file")==0) {
-			if (++i<argc) {
-				conf_file=argv[i];
-			} else {
-				fprintf(stderr,"Error: file name expected after %s option.\n",arg);
-				exit(1);
-			}
-		} else if (strcmp(arg,"-4")==0) {
-#ifdef ENABLE_IPV4
-# ifdef ENABLE_IPV6
-			run_ipv4=1; cmdlineipv=1;
-# endif
-#else
-			fprintf(stderr,"Error: -4: pdnsd was compiled without IPv4 support.\n");
-			exit(1);
-#endif
-		} else if (strcmp(arg,"-6")==0) {
-#ifdef ENABLE_IPV6
-# ifdef ENABLE_IPV4
-			run_ipv4=0; cmdlineipv=1;
-# endif
-#else
-			fprintf(stderr,"Error: -6: pdnsd was compiled without IPv6 support.\n");
-			exit(1);
-#endif
-		} else if (strcmp(arg,"-a")==0) {
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-			int rv=check_ipv6();
-			if(rv<0) {
-				fprintf(stderr,"Error: -a: can't check availability of IPv6: %s\n"
-					"Try using -4 or -6 option instead.\n",strerror(errno));
-				exit(1);
-			}
-			if((run_ipv4= !rv))
-				fprintf(stderr,"Switching to IPv4 mode.\n");
-			cmdlineipv=1;
-#else
-			fprintf(stderr,"Warning: -a option does nothing unless pdnsd is compiled with both IPv4 AND IPv6 support.\n");
-#endif
-		} else if(strcmp(arg,"-i")==0 || strcmp(arg,"--ipv4_6_prefix")==0) {
-			if (++i<argc) {
-#ifdef ENABLE_IPV6
-				if(inet_pton(AF_INET6,argv[i],&global.ipv4_6_prefix)<=0) {
-					fprintf(stderr,"Error: %s: argument not a valid IPv6 address.\n",arg);
-					exit(1);
-				}
-				cmdline.prefix=1;
-#else
-				fprintf(stderr,"pdnsd was compiled without IPv6 support. %s will be ignored.\n",arg);
-#endif
-			} else {
-				fprintf(stderr,"Error: IPv6 address expected after %s option.\n",arg);
-				exit(1);
-			}
-		} else if (strcmp(arg,"-s")==0 || strcmp(arg,"--status")==0) {
-			global.stat_pipe=1; cmdline.stat_pipe=1;
-		} else if (strcmp(arg,"--nostatus")==0) {
-			global.stat_pipe=0; cmdline.stat_pipe=1;
-		} else if (strcmp(arg,"-d")==0 || strcmp(arg,"--daemon")==0) {
-			global.daemon=1; cmdline.daemon=1;
-		} else if (strcmp(arg,"--nodaemon")==0) {
-			global.daemon=0; cmdline.daemon=1;
-		} else if (strcmp(arg,"-t")==0 || strcmp(arg,"--tcp")==0) {
-			global.notcp=0; cmdline.notcp=1;
-#ifdef NO_TCP_SERVER
-			fprintf(stderr,"pdnsd was compiled without tcp server support. -t has no effect.\n");
-#endif
-		} else if (strcmp(arg,"--notcp")==0) {
-			global.notcp=1; cmdline.notcp=1;
-		} else if (strcmp(arg,"-p")==0) {
-			if (++i<argc) {
-				global.pidfile=argv[i]; cmdline.pidfile=1;
-			} else {
-				fprintf(stderr,"Error: file name expected after -p option.\n");
-				exit(1);
-			}
-		} else if (strncmp(arg,"-v",2)==0) {
-			if (strlen(arg)!=3 || !isdigit(arg[2])) {
-				fprintf(stderr,"Error: one digit expected after -v option (like -v2).\n");
-				exit(1);
-			}
-			global.verbosity=arg[2]-'0'; cmdline.verbosity=1;
-		} else if (strncmp(arg,"-m",2)==0) {
-			if (strlen(arg)!=4) {
-				fprintf(stderr,"Error: uo, to or tu expected after the  -m option (like -muo).\n");
-				exit(1);
-			}
-			if (strcmp(&arg[2],"uo")==0) {
-#ifdef NO_UDP_QUERIES
-				fprintf(stderr,"Error: pdnsd was compiled without UDP support.\n");
-				exit(1);
-#else
-				global.query_method=UDP_ONLY;
-#endif
-			} else if (strcmp(&arg[2],"to")==0) {
-#ifdef NO_TCP_QUERIES
-				fprintf(stderr,"Error: pdnsd was compiled without TCP support.\n");
-				exit(1);
-#else
-				global.query_method=TCP_ONLY;
-#endif
-			} else if (strcmp(&arg[2],"tu")==0) {
-#if defined(NO_UDP_QUERIES) || defined(NO_TCP_QUERIES)
-				fprintf(stderr,"Error: pdnsd was not compiled with UDP and TCP support.\n");
-				exit(1);
-#else
-				global.query_method=TCP_UDP;
-#endif
-			} else if (strcmp(&arg[2],"ut")==0) {
-#if defined(NO_UDP_QUERIES) || defined(NO_TCP_QUERIES)
-				fprintf(stderr,"Error: pdnsd was not compiled with UDP and TCP support.\n");
-				exit(1);
-#else
-				global.query_method=UDP_TCP;
-#endif
-			} else {
-				fprintf(stderr,"Error: uo, to, tu or ut expected after the  -m option (like -muo).\n");
-				exit(1);
-			}
-			cmdline.query_method=1;
-		} else if (strcmp(arg,"-g")==0 || strcmp(arg,"--debug")==0) {
-			global.debug=1; cmdline.debug=1;
-#if !DEBUG
-			fprintf(stderr,"pdnsd was compiled without debugging support. -g has no effect.\n");
-#endif
-		} else if (strcmp(arg,"--nodebug")==0) {
-			global.debug=0; cmdline.debug=1;
-		} else if (strcmp(arg,"--pdnsd-user")==0) {
-			cmdline.pdnsduser=1;
-		} else {
-			char *equ=strchr(arg,'=');
-			if(equ) {
-				int plen=equ-arg;
-				char *valstr=equ+1;
-#       			define arg_isparam(strlit) (!strncmp(arg,strlit,strlitlen(strlit)) && plen==strlitlen(strlit))
-
-				if(arg_isparam("--config-file")) {
-					conf_file=valstr;
-				}
-				else if(arg_isparam("--ipv4_6_prefix")) {
-#ifdef ENABLE_IPV6
-					if(inet_pton(AF_INET6,valstr,&global.ipv4_6_prefix)<=0) {
-						fprintf(stderr,"Error: --ipv4_6_prefix: argument not a valid IPv6 address.\n");
-						exit(1);
-					}
-					cmdline.prefix=1;
-#else
-					fprintf(stderr,"pdnsd was compiled without IPv6 support. --ipv4_6_prefix will be ignored.\n");
-#endif
-				}
-				else {
-					fprintf(stderr,"Error: unknown option: %.*s\n",plen,arg);
-					exit(1);
-				}
-			} else {
-				fprintf(stderr,"Error: unknown option: %s\n",arg);
-				exit(1);
-			}
-		}
-	}
-
-	init_cache();
-	{
-		char *errmsg;
-		if(!read_config_file(conf_file,&global,&servers,0,&errmsg)) {
-			fputs(errmsg?:"Out of memory.",stderr);
-			fputc('\n',stderr);
-			exit(3);
-		}
-	}
-
-	if(cmdline.pdnsduser) {
-		if (global.run_as[0]) {
-			printf("%s\n",global.run_as);
-		} else {
-			uid_t uid=getuid();
-			struct passwd *pws=getpwuid(uid);
-			if (pws)
-				printf("%s\n",pws->pw_name);
-			else
-				printf("%i\n",uid);
-		}
-		exit(0);
-	}
-
-	if(!global.cache_dir)   global.cache_dir = CACHEDIR;
-	if(!global.scheme_file) global.scheme_file = "/var/lib/pcmcia/scheme";
-	stat_pipe=global.stat_pipe;
-
-	if (!(global.run_as[0] && global.strict_suid)) {
-		for (i=0; i<DA_NEL(servers); i++) {
-			servparm_t *sp=&DA_INDEX(servers,i);
-			if (sp->uptest==C_EXEC && sp->uptest_usr[0]=='\0') {
-				uid_t uid=getuid();
-				struct passwd *pws=getpwuid(uid);
-
-				/* No explicit uptest user given. If we run_as and strict_suid, we assume that
-				 * this is safe. If not - warn. */
-				fprintf(stderr,"Warning: uptest command \"%s\" will implicitly be executed as user ", sp->uptest_cmd);
-				if (pws)
-					fprintf(stderr,"%s\n",pws->pw_name);
-				else
-					fprintf(stderr,"%i\n",uid);
-
-			}
-		}
-	}
-
-	if (global.daemon && global.pidfile) {
-		if (unlink(global.pidfile)!=0 && errno!=ENOENT) {
-			log_error("Error: could not unlink pid file %s: %s",global.pidfile, strerror(errno));
-			exit(1);
-		}
-		if ((pfd=open(global.pidfile,O_WRONLY|O_CREAT|O_EXCL
-#ifdef O_NOFOLLOW
-			      |O_NOFOLLOW
-#else
-		/*
-		 * No O_NOFOLLOW. Nevertheless, this not a hole, since the
-		 * directory for pidfiles should not be world writeable.
-		 * OS's that do not support O_NOFOLLOW are currently not
-		 * supported, this is just-in-case code.
-		 */
-#endif
-			      , 0600))==-1)
-		{
-			log_error("Error: could not open pid file %s: %s",global.pidfile, strerror(errno));
-			exit(1);
-		}
-	}
-	for (i=0;i<DA_NEL(servers);i++) {
-		if (DA_INDEX(servers,i).uptest==C_PING) {
-			init_ping_socket();
-			break;
-		}
-	}
-
-	if (!init_rng())
-		exit(1);
-#if (TARGET==TARGET_LINUX)
-	if (!final_init())
-		exit(1);
-#endif
-
-	{
-		struct sigaction action;
-		action.sa_handler = SIG_IGN;
-		sigemptyset(&action.sa_mask);
-		action.sa_flags = 0;
-		if(sigaction(SIGPIPE, &action, NULL) != 0)
-			log_error("Could not call sigaction to ignore SIGPIPE: %s",strerror(errno));
-	}
-
-	umask(0077); /* for security reasons */
-	if (global.daemon) {
-		pid_t pid;
-		int fd;
-
-		/* become a daemon */
-		pid=fork();
-		if (pid==-1) {
-			log_error("Could not become a daemon: fork #1 failed: %s",strerror(errno));
-			exit(1);
-		}
-		if (pid!=0) {
-			/* This is the parent.
-			   The child is going to do another fork() and will exit quickly.
-			   Perhaps we should wait for the child and return
-			   its exit status? */
-			exit(0); /* exit parent */
-		}
-		/* dissociate from controlling terminal */
-		if (setsid()==-1) {
-			log_error("Could not become a daemon: setsid failed: %s",strerror(errno));
-			_exit(1);
-		}
-		pid=fork();
-		if (pid==-1) {
-			log_error("Could not become a daemon: fork #2 failed: %s",strerror(errno));
-			_exit(1);
-		}
-		if (pid!=0) {
-			int exitval=0;
-			if (global.pidfile) {
-				if(fsprintf(pfd,"%i\n",(int)pid)<0) {
-					log_error("Error: could not write to pid file %s: %s",
-						  global.pidfile, strerror(errno));
-					exitval=1;
-				}
-				if(close(pfd)<0) {
-					log_error("Error: could not close pid file %s: %s",
-						  global.pidfile, strerror(errno));
-					exitval=1;
-				}
-			}
-			_exit(exitval); /* exit parent, so we are no session group leader */
-		}
-
-		if (global.pidfile) close(pfd);
-		if(chdir("/"))
-			log_warn("Cannot chdir to root directory: %s",strerror(errno));
-		if ((fd=open("/dev/null",O_RDONLY))==-1) {
-			log_error("Could not become a daemon: open for /dev/null failed: %s",strerror(errno));
-			_exit(1);
-		}
-		dup2(fd,0);
-		close(fd);
-		if ((fd=open("/dev/null",O_WRONLY))==-1) {
-			log_error("Could not become a daemon: open for /dev/null failed: %s",strerror(errno));
-			_exit(1);
-		}
-		dup2(fd,1);
-		dup2(fd,2);
-		close(fd);
-#if DEBUG>0
-		if (global.debug) {
-			char dbgpath[strlen(global.cache_dir)+sizeof("/pdnsd.debug")];
-			stpcpy(stpcpy(dbgpath,global.cache_dir),"/pdnsd.debug");
-			if (!(dbg_file=fopen(dbgpath,"w")))
-				log_warn("Warning: could not open debug file %s: %s",dbgpath, strerror(errno));
-		}
-#endif
-	} else {
-#if DEBUG>0
-		dbg_file=stdout;
-#endif
-	}
-
-#if DEBUG>0
-	debug_p= (global.debug && dbg_file);
-#endif
-	log_info(0,"pdnsd-%s starting.\n",VERSION);
-	DEBUG_MSG("Debug messages activated\n");
-
-#if (TARGET!=TARGET_LINUX)
-	if (!final_init())
-		_exit(1);
-#endif
-	DEBUG_MSG(SEL_IPVER("Using IPv4.\n", "Using IPv6.\n"));
-
-	/* initialize attribute for creating detached threads */
-	pthread_attr_init(&attr_detached);
-	pthread_attr_setdetachstate(&attr_detached,PTHREAD_CREATE_DETACHED);
-
-	read_disk_cache();
-
-	/* This must be done before any other thread is started to avoid races. */
-	if (stat_pipe)
-		init_stat_sock();
-
-
-	/* Before this point, logging and cache accesses are not locked because we are single-threaded. */
-	init_log_lock();
-	init_cache_lock();
-
-	sigemptyset(&sigs_msk);
-	sigaddset(&sigs_msk,SIGHUP);
-	sigaddset(&sigs_msk,SIGINT);
-#ifndef THREADLIB_NPTL
-	sigaddset(&sigs_msk,SIGILL);
-#endif
-	sigaddset(&sigs_msk,SIGABRT);
-	sigaddset(&sigs_msk,SIGFPE);
-#ifndef THREADLIB_NPTL
-	sigaddset(&sigs_msk,SIGSEGV);
-#endif
-	sigaddset(&sigs_msk,SIGTERM);
-	/* if (!daemon_p) {
-		sigaddset(&sigs_msk,SIGQUIT);
-	} */
-#if (TARGET==TARGET_LINUX)
-	pthread_sigmask(SIG_BLOCK,&sigs_msk,NULL);
-#endif
-
-#if DEBUG>0
-	{
-		int err;
-		/* Generate a key for storing our thread id's */
-		if ((err=pthread_key_create(&thrid_key, NULL)) != 0) {
-			log_error("pthread_key_create failed: %s",strerror(err));
-			_exit(1);
-		}
-	}
-#endif
-
-	{
-#if DEBUG>0
-		int thrdsucc=1;
-# define thrdfail (thrdsucc=0)
-#else
-# define thrdfail
-#endif
-
-		if(start_servstat_thread()) thrdfail;
-
-#if (TARGET==TARGET_LINUX)
-		if (!global.strict_suid) {
-			if (!run_as(global.run_as)) {
-				_exit(1);
-			}
-		}
-#endif
-
-		if (stat_pipe)
-			if(start_stat_sock()) thrdfail;
-
-		start_dns_servers();
-
-#if DEBUG>0
-		if(thrdsucc) {
-			DEBUG_MSG("All threads started successfully.\n");
-		}
-#endif
-#undef thrdfail
-	}
-
-#if (TARGET==TARGET_LINUX) && !defined(THREADLIB_NPTL)
-	pthread_sigmask(SIG_BLOCK,&sigs_msk,NULL);
-	waiting=1;
-#endif
-	{
-		int err;
-		while ((err=sigwait(&sigs_msk,&sig))) {
-			if (err!=EINTR) {
-				log_error("sigwait failed: %s",strerror(err));
-				sig=0;
-				break;
-			}
-		}
-	}
-	if(sig) DEBUG_MSG("Signal %i caught.\n",sig);
-	write_disk_cache();
-	destroy_cache();
-	if(sig) log_warn("Caught signal %i. Exiting.",sig);
-	if (sig==SIGSEGV || sig==SIGILL || sig==SIGBUS)
-		crash_msg("This is a fatal signal probably triggered by a bug.");
-	if (ping_isocket!=-1)
-		close(ping_isocket);
-#ifdef ENABLE_IPV6
-	if (ping6_isocket!=-1)
-		close(ping6_isocket);
-#endif
-	/* Close and delete the status socket */
-	if(stat_pipe) close(stat_sock);
-	if (sock_path && unlink(sock_path))
-		log_warn("Failed to unlink %s: %s",sock_path, strerror(errno));
-
-	free_rng();
-#if DEBUG>0
-	if (debug_p && global.daemon)
-		if(fclose(dbg_file)<0) {
-			log_warn("Could not close debug file: %s", strerror(errno));
-		}
-#endif
-	_exit(0);
-}
diff --git a/jni/pdnsd/src/make_rr_types_h.pl b/jni/pdnsd/src/make_rr_types_h.pl
deleted file mode 100644
index c8c0f9f..0000000
--- a/jni/pdnsd/src/make_rr_types_h.pl
+++ /dev/null
@@ -1,309 +0,0 @@
-#!/usr/bin/perl -w
-
-# This Perl script is used to generate rr_types.h, using rr_types.in as input.
-#
-# Copyright (C) 2010, 2011 Paul A. Rombouts
-#
-# This file is part of the pdnsd package.
-#
-
-use strict;
-use integer;
-
-print << "END-OF-TEXT";
-/* This file was generated by running '$0 @ARGV'.
-   Modifications to this file may be lost the next time it is automatically
-   regenerated.
-*/
-
-END-OF-TEXT
-
-my %valdic;
-my %namedic;
-my %classdic;
-my %muset;
-my $nrr=0;
-my $nmu=0;
-my $minval;
-my $maxval;
-#my $maxmuval;
-
-while(<>) {
-    if(/\S/ && !/^\s*\#/) {
-	if(/^\s*(?:([*+-])\s*)?([\w-]+)\s+(\d+)\s+(?:\((\w+)\))?/) {
-	    my $mu = $1; my $name=$2; my $val=$3+0; my $class=$4;
-	    $name =~ s/-/_/g;
-	    if(defined($valdic{$name})) {warn "The name \"$name\" does not have a unique value.\n"}
-	    if(defined($namedic{$val})) {warn "The value \"$val\" does not have a unique name.\n"}
-	    $valdic{$name}=$val; $namedic{$val}=$name; $classdic{$val}=$class if defined($class);
-	    if(defined($mu)) {
-		if($mu eq '-') {next}
-		$muset{$val}= 1;
-		++$nmu;
-		#if(!defined($maxmuval) || $val>$maxmuval) {$maxmuval=$val}
-	    }
-	    else {$muset{$val}= 0}
-	    ++$nrr;
-	    if(!defined($minval) || $val<$minval) {$minval=$val}
-	    if(!defined($maxval) || $val>$maxval) {$maxval=$val}
-	}
-	else {die "Can't find name-value pair in following line:\n$_\n"}
-    }
-}
-
-defined($minval) or die "No values defined.\n";
-if($nrr>255) {warn "Warning: total number of cache-able RR types is greater than 255.\n"}
-
-print << 'END-OF-TEXT';
-/* rr_types.h - A header file with names & descriptions of
-                all rr types known to pdnsd
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2007, 2010, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _RR_TYPES_H_
-#define _RR_TYPES_H_
-
-#include <config.h>
-
-END-OF-TEXT
-
-print "#define T_MIN $minval\n";
-foreach my $name (sort {$valdic{$a} <=> $valdic{$b} } (keys %valdic)) {
-    printf("#define %-12s %2d\n", "T_$name", $valdic{$name});
-}
-print "#define T_MAX $maxval\n";
-print("\n/* T_MAX - T_MIN + 1 */\n","#define T_NUM ",$maxval+1-$minval,"\n");
-#print("\n/* Largest most frequently used type value. */\n","#define T_MAXMU $maxmuval\n");
-print("\n/* Number of most frequently used rr types. */\n","#define NRRMU $nmu\n");
-print("\n/* Number of remaining rr types. */\n","#define NRREXT ",$nrr-$nmu,"\n");
-print("\n/* NRRMU + NRREXT */\n","#define NRRTOT $nrr\n");
-
-print << 'END-OF-TEXT';
-
-/* Lookup table for converting rr type values to internally used indices. */
-extern const unsigned short int rrlkuptab[T_NUM];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const unsigned short int rrlkuptab[T_NUM] = {
-END-OF-TEXT
-my @rrtpval=();
-for(my $val=$minval, my $i=0, my $j=$nmu, my $k=$nrr; $val<=$maxval; ++$val) {
-    my $idx;
-    if(defined($muset{$val})) {
-	if($muset{$val}) {
-	    $idx = $i++;
-	}
-	else {
-	    $idx =  $j++;
-	}
-	$rrtpval[$idx]=$val;
-    }
-    else {
-	$idx = $k++;
-    }
-
-    printf('%4d', $idx);
-    if(defined($namedic{$val})) {
-	print "  /* $namedic{$val} */";
-    }
-    print ',' if $val<$maxval;
-    print "\n";
-}
-#print << 'END-OF-TEXT';
-#};
-##endif
-#
-#/* Table for converting internally used indices to rr type values.
-#   This is more or less the inverse of the rrlkuptab[] mapping. */
-#extern const unsigned short int rrtpval[NRRTOT];
-##if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-#const unsigned short int rrtpval[NRRTOT] = {
-#END-OF-TEXT
-#for(my $i=0; $i<$nrr; ++$i) {
-#    if($i ==0) {
-#	print "  /* Most frequently used types. */\n";
-#    }
-#    else {
-#	print ",\n";
-#    }
-#    print "  /* Remaining (less frequently used) types. */\n"
-#	if $i == $nmu;
-#    my $val= $rrtpval[$i];
-#    print("  ",defined($namedic{$val})? "T_$namedic{$val}": $val);
-#}
-print << 'END-OF-TEXT';
-};
-#endif
-
-/* List of most frequently used RR types in ascending order. */
-extern const unsigned short int rrmuiterlist[NRRMU];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const unsigned short int rrmuiterlist[NRRMU] = {
-END-OF-TEXT
-for(my $val=$minval, my $i=0; $val<=$maxval; ++$val) {
-    if(defined($muset{$val}) && $muset{$val}) {
-	print ",\n" if $i++;
-	print("  ",defined($namedic{$val})? "T_$namedic{$val}": $val);
-    }
-}
-print << 'END-OF-TEXT';
-
-};
-#endif
-
-/* List of the cache-able RR types in ascending order. */
-extern const unsigned short int rrcachiterlist[NRRTOT];
-#if DEFINE_RR_TYPE_ARRAYS
-const unsigned short int rrcachiterlist[NRRTOT] = {
-END-OF-TEXT
-for(my $val=$minval, my $i=0; $val<=$maxval; ++$val) {
-    if(defined($muset{$val})) {
-	print ",\n" if $i++;
-	print("  ",defined($namedic{$val})? "T_$namedic{$val}": $val);
-    }
-}
-print << 'END-OF-TEXT';
-
-};
-#endif
-
-/* Optimized getrrset macros for fixed rr types. */
-END-OF-TEXT
-for(my $val=$minval, my $i=0, my $j=0; $val<=$maxval; ++$val) {
-    if(defined($muset{$val})) {
-	my $name = $namedic{$val};
-	my $mdef;
-	if($muset{$val}) {
-	    $mdef= "GET_RRSMU(cent,$i)";
-	    ++$i;
-	}
-	else {
-	    $mdef= "GET_RRSEXT(cent,$j)";
-	    ++$j;
-	}
-	printf("#define %-25s %s\n", "getrrset_$name(cent)", $mdef)
-	    if defined($name);
-    }
-}
-print << 'END-OF-TEXT';
-
-/* have_rr macros for fixed rr types. */
-END-OF-TEXT
-for(my $val=$minval, my $i=0, my $j=0; $val<=$maxval; ++$val) {
-    my $name = $namedic{$val};
-    my $mdef = '0';
-    if(defined($muset{$val})) {
-	if($muset{$val}) {
-	    $mdef= "HAVE_RRMU(cent,$i)";
-	    ++$i;
-	}
-	else {
-	    $mdef= "HAVE_RREXT(cent,$j)";
-	    ++$j;
-	}
-    }
-    printf("#define %-25s %s\n", "have_rr_$name(cent)", $mdef)
-	if defined($name);
-}
-print << 'END-OF-TEXT';
-
-/* These macros specify which RR types are cached by pdnsd. */
-END-OF-TEXT
-for(my $val=$minval; $val<=$maxval; ++$val) {
-    if(defined($muset{$val})) {
-	my $name = $namedic{$val};
-	printf("#define IS_CACHED_%-10s 1\n", defined($name)? $name: "TYPE$val")
-    }
-}
-print << 'END-OF-TEXT';
-
-/* Array indices for most frequently used rr types. */
-END-OF-TEXT
-for(my $val=$minval, my $i=0; $val<=$maxval; ++$val) {
-    if(defined($muset{$val}) && $muset{$val}) {
-	printf("#define %-18s %2d\n", "RRMUINDEX_$namedic{$val}", $i)
-	    if defined($namedic{$val});
-	++$i;
-    }
-}
-print << 'END-OF-TEXT';
-
-/* Table of rr names. */
-extern const char *const rrnames[T_NUM];
-#if DEFINE_RR_TYPE_ARRAYS
-const char *const rrnames[T_NUM] = {
-END-OF-TEXT
-for(my $val=$minval; $val<=$maxval; ++$val) {
-    my $name = $namedic{$val};
-    print('  "', defined($name)? $name: "TYPE$val", '"');
-    print ',' if $val<$maxval;
-    print "\n";
-}
-print << 'END-OF-TEXT';
-};
-#endif
-
-/* Structure for rr information */
-struct rr_infos {
-	unsigned short class;		/* class (values see below) */
-	unsigned short excludes;	/* relations to other classes.
-					   Mutual exclusion is marked by or'ing the
-					   respective RRCL value in this field.
-					   Exclusions should be symmetric. */
-};
-
-/* Class values */
-#define RRCL_ALIAS	1	/* for CNAMES, conflicts with RRCL_RECORD */
-#define RRCL_RECORD	2	/* normal direct record */
-#define RRCL_IDEM	4	/* types that conflict with no others (MX, CNAME, ...) */
-#define RRCL_PTR	8	/* PTR */
-
-/* Standard excludes for the classes */
-#define RRX_ALIAS	(RRCL_RECORD|RRCL_PTR)
-#define	RRX_RECORD	(RRCL_ALIAS|RRCL_PTR)
-#define	RRX_IDEM	0
-#define	RRX_PTR		(RRCL_ALIAS|RRCL_RECORD)
-
-/* There could be a separate table detailing the relationship of types, but this
- * is slightly more flexible, as it allows a finer granularity of exclusion. Also,
- * Membership in multiple classes could be added.
- * Index by internally used RR-set indices, not RR type values!
- */
-extern const struct rr_infos rr_info[NRRTOT];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const struct rr_infos rr_info[NRRTOT] = {
-END-OF-TEXT
-for(my $i=0; $i<$nrr; ++$i) {
-    print ",\n" if $i;
-    my $val=$rrtpval[$i];
-    my $class = (defined($classdic{$val})? $classdic{$val}: 'IDEM');
-    printf('  %-16s %-15s %s',"{RRCL_$class,", "RRX_$class}", defined($namedic{$val})?"/* $namedic{$val} */":"");
-}
-print << 'END-OF-TEXT';
-
-};
-#endif
-
-int rr_tp_byname(char *name);
-const char *loc2str(const void *binary, char *ascii, size_t asclen);
-
-#endif
-END-OF-TEXT
-
-exit
diff --git a/jni/pdnsd/src/netdev.c b/jni/pdnsd/src/netdev.c
deleted file mode 100644
index bd5f8c4..0000000
--- a/jni/pdnsd/src/netdev.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/* netdev.c - Test network devices for existence and status
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * Portions are under the following copyright and taken from FreeBSD
- * (clause 3 deleted as it no longer applies):
- *
- * Copyright (c) 1982, 1986, 1989, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)if.h	8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/net/if.h,v 1.58.2.1 2000/05/05 13:37:04 jlemon Exp $
- */
-
-#include <config.h>
-#include "ipvers.h"
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <net/if.h>
-#include <netdb.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include "helpers.h"
-#include "netdev.h"
-#include "error.h"
-
-
-#if (TARGET==TARGET_BSD)
-/* Taken from FreeBSD net/if.h rev. 1.58.2.1 */
-#define	SIZEOF_ADDR_IFREQ(ifr) \
-	((ifr).ifr_addr.sa_len > sizeof(struct sockaddr) ? \
-	 (sizeof(struct ifreq) - sizeof(struct sockaddr) + \
-	  (ifr).ifr_addr.sa_len) : sizeof(struct ifreq))
-#elif (TARGET==TARGET_CYGWIN)
-#define SIZEOF_ADDR_IFREQ(ifr) (sizeof(struct sockaddr))
-#endif
-
-#define MAX_SOCKETOPEN_ERRS 10
-static volatile unsigned long socketopen_errs=0;
-
-/*
- * Portions of the following code are Linux/FreeBSD specific.
- * Please write interface-detection routines for other flavours of Unix if you can and want.
- */
-
-#if (TARGET==TARGET_LINUX) || (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)
-# if (TARGET==TARGET_LINUX)
-
-static volatile unsigned long isdn_errs=0;
-
-#  ifdef ISDN_SUPPORT
-
-/*
- * Test the status of an ippp interface. Taken from the isdn4k-utils (thanks!) and adapted
- * by me (I love free software!)
- * This will not work with older kernels.
- * If your kernel is too old or too new, just try to get the status as uptest=exec command
- * This will work, although slower.
- */
-
-#   include <linux/isdn.h>
-
-int statusif(char *name)
-{
-	isdn_net_ioctl_phone phone;
-	int isdninfo,rc=0;
-
-	if ((isdninfo = open("/dev/isdninfo", O_RDONLY))<0) {
-		if (++isdn_errs<=2) {
-			log_warn("Could not open /dev/isdninfo for uptest: %s",strerror(errno));
-		}
-		return 0;
-	}
-
-	strncp(phone.name, name, sizeof(phone.name));
-	if (ioctl(isdninfo, IIOCNETGPN, &phone)==0)
-		rc=1;
-	close(isdninfo);
-	return rc;
-}
-#  endif
-
-/*
- * Test whether the network interface specified in ifname and its
- * associated device specified in devname have locks owned by the
- * same process.
- */
-int dev_up(char *ifname, char *devname)
-{
- 	FILE *fd;
- 	int pidi, pidd, rv;
-
-	{
-	  char path[sizeof("/var/run/.pid")+strlen(ifname)];
-	  stpcpy(stpcpy(stpcpy(path,"/var/run/"),ifname),".pid");
-	  if ((fd=fopen(path, "r")) == NULL )
-	    return 0;
-
-	  if (fscanf(fd, "%d", &pidi) != 1 ) {
-	    fclose(fd) ;
-	    return 0;
-	  }
-	  fclose(fd);
-	}
-
-	{
-	  char path[sizeof("/var/lock/LCK..")+strlen(devname)];
-	  stpcpy(stpcpy(path,"/var/lock/LCK.."),devname);
-	  if ((fd=fopen(path, "r")) == NULL)
-	    return 0;
-
-	  if (fscanf(fd, "%d", &pidd) != 1) {
-	    fclose(fd);
-	    return 0;
-	  }
-	  fclose(fd);
-	}
-
- 	if (pidi != pidd)
-		return 0;
-	/* Test whether pppd is still alive */
-	rv=kill(pidi,0);
-	return (rv==0 || (rv==-1 && errno!=ESRCH));
-}
-
-
-# endif /*(TARGET==TARGET_LINUX)*/
-
-/*
- * Test whether the network device specified in devname is up and
- * running (returns -1) or non-existent, down or not-running (returns 0)
- *
- * Note on IPv6-Comptability: rfc2133 requires all IPv6 implementation
- * to be backwards-compatible to IPv4 in means of permitting socket(PF_INET,...)
- * and similar. So, I don't put code here for both IPv4 and IPv6, since
- * I use that socket only for ioctls. If somebody notices incompatabilities,
- * please notify me.
- */
-int if_up(char *devname)
-{
-	int sock;
-	struct ifreq ifr;
-# if (TARGET==TARGET_LINUX)
-	unsigned int devnamelen=strlen(devname);
-	if (devnamelen>4 && devnamelen<=6 && strncmp(devname,"ippp",4)==0) {
-		/* This function didn't manage the interface uptest correctly. Thanks to
-		 * Joachim Dorner for pointing out.
-		 * The new code (statusif()) was shamelessly stolen from isdnctrl.c of the
-		 * isdn4k-utils. */
-#  ifdef ISDN_SUPPORT
-		return statusif(devname);
-#  else
-		if (isdn_errs++==0) {
-			log_warn("An ippp? device was specified for uptest, but pdnsd was compiled without ISDN support.");
-			log_warn("The uptest result will be wrong.");
-		}
-#  endif
-		/* If it doesn't match our rules for isdn devices, treat as normal if */
-	}
-# endif
-	if ((sock=socket(PF_INET,SOCK_DGRAM, IPPROTO_UDP))==-1) {
-		if(++socketopen_errs<=MAX_SOCKETOPEN_ERRS) {
-			log_warn("Could not open socket in if_up(): %s",strerror(errno));
-		}
-		return 0;
-	}
-	strncp(ifr.ifr_name,devname,IFNAMSIZ);
-	if (ioctl(sock,SIOCGIFFLAGS,&ifr)==-1) {
-		close(sock);
-		return 0;
-	}
-	close(sock);
-	return (ifr.ifr_flags&IFF_UP) && (ifr.ifr_flags&IFF_RUNNING);
-}
-
-# if (TARGET==TARGET_LINUX)
-#  ifdef ENABLE_IPV6
-#define MAX_IF_INET6_OPEN_ERRS 10
-static volatile unsigned long if_inet6_open_errs=0;
-#  endif
-
-int is_local_addr(pdnsd_a *a)
-{
-	int res=0;
-
-#  ifdef ENABLE_IPV4
-	if (run_ipv4) {
-		int i,sock;
-		struct ifreq ifr;
-		if ((sock=socket(PF_INET,SOCK_DGRAM, IPPROTO_UDP))==-1) {
-			if(++socketopen_errs<=MAX_SOCKETOPEN_ERRS) {
-				log_warn("Could not open socket in is_local_addr(): %s",strerror(errno));
-			}
-			return 0;
-		}
-		for (i=1;i<255;i++) {
-			ifr.ifr_ifindex=i;
-			if (ioctl(sock,SIOCGIFNAME,&ifr)==-1) {
-				/* There may be gaps in the interface enumeration, so just continue */
-				continue;
-			}
-			if (ioctl(sock,SIOCGIFADDR, &ifr)==-1) {
-				continue;
-			}
-			if (((struct sockaddr_in *)(&ifr.ifr_addr))->sin_addr.s_addr==a->ipv4.s_addr) {
-				res=1;
-				break;
-			}
-		}
-		close(sock);
-	}
-
-#  endif
-#  ifdef ENABLE_IPV6
-	ELSE_IPV6 {
-		char   buf[40];
-		FILE   *f;
-		struct in6_addr b;
-		/* the interface configuration and information retrieval is obiously currently done via
-		 * rt-netlink sockets. I think it is relatively likely to change in an incompatible way the
-		 * Linux kernel (there seem to be some major changes for 2.4).
-		 * Right now, I just analyze the /proc/net/if_inet6 entry. This may not be the fastest, but
-		 * should work and is easy to adapt should the format change. */
-		if (!(f=fopen("/proc/net/if_inet6","r"))) {
-			if(++if_inet6_open_errs<=MAX_IF_INET6_OPEN_ERRS) {
-				log_warn("Could not open /proc/net/if_inet6 in is_local_addr(): %s",strerror(errno));
-			}
-			return 0;
-		}
-		/* The address is at the start of the line. We just read 32 characters and insert a ':' 7
-		 * times. Such, we can use inet_pton conveniently. More portable, that. */
-		for(;;) {
-			int i,ch; char *p=buf;
-			for (i=0;i<32;i++) {
-				if(i && i%4==0) *p++ = ':';
-				if ((ch=fgetc(f))==EOF)
-					goto fclose_return; /* we are at the end of the file and haven't found anything.*/
-				if(ch=='\n') goto nextline;
-				*p++ = ch;
-			}
-			*p=0;
-			if (inet_pton(AF_INET6,buf,&b) >0) {
-				if (IN6_ARE_ADDR_EQUAL(&b,&a->ipv6)) {
-					res=1;
-					goto fclose_return;
-				}
-			}
-			do {
-				if ((ch=fgetc(f))==EOF) goto fclose_return;
-			} while(ch!='\n');
-		nextline:;
-		}
-	fclose_return:
-		fclose(f);
-	}
-#  endif
-	return res;
-}
-
-# else /*(TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)*/
-
-
-#define MAX_SIOCGIFCONF_ERRS 4
-static volatile unsigned long siocgifconf_errs=0;
-
-int is_local_addr(pdnsd_a *a)
-{
-	int retval=0, sock, cnt;
-        struct ifconf ifc;
-	char buf[2048];
-
-
-	if ((sock=socket(PF_INET,SOCK_DGRAM, IPPROTO_UDP))==-1) {
-		if(++socketopen_errs<=MAX_SOCKETOPEN_ERRS) {
-			log_warn("Could not open socket in is_local_addr(): %s",strerror(errno));
-		}
-		return 0;
-	}
-
-	ifc.ifc_len=sizeof(buf);
-	ifc.ifc_buf=buf;
-	if (ioctl(sock,SIOCGIFCONF,&ifc)==-1) {
-		if(++siocgifconf_errs<=MAX_SIOCGIFCONF_ERRS) {
-			log_warn("ioctl() call with request SIOCGIFCONF failed in is_local_addr(): %s",strerror(errno));
-		}
-	        goto close_sock_return;
-	}
-
-	cnt=0;
-	while(cnt+sizeof(struct ifreq)<=ifc.ifc_len) {
-		struct ifreq *ir= (struct ifreq *)(buf+cnt);
-		cnt += SIZEOF_ADDR_IFREQ(*ir);
-		if (cnt>ifc.ifc_len)
-			break;
-		if (SEL_IPVER(ir->ifr_addr.sa_family==AF_INET &&
-			       ((struct sockaddr_in *)&ir->ifr_addr)->sin_addr.s_addr==a->ipv4.s_addr,
-			      ir->ifr_addr.sa_family==AF_INET6 &&
-			       IN6_ARE_ADDR_EQUAL(&((struct sockaddr_in6 *)&ir->ifr_addr)->sin6_addr,
-						  &a->ipv6)))
-		{
-			retval=1;
-			break;
-		}
-	}
-
- close_sock_return:
-	close(sock);
-
-	return retval;
-}
-
-# endif
-
-#else
-# error "Huh. No OS macro defined."
-#endif
diff --git a/jni/pdnsd/src/netdev.h b/jni/pdnsd/src/netdev.h
deleted file mode 100644
index 529b8a8..0000000
--- a/jni/pdnsd/src/netdev.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* netdev.h - Test network devices for existence and status
-   Copyright (C) 2000 Thomas Moestl
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _NETDEV_H_
-#define _NETDEV_H_
-
-#include <config.h>
-#include "ipvers.h"
-
-int if_up(char *devname);
-int dev_up(char *ifname, char *devname);
-int is_local_addr(pdnsd_a *a);
-
-#endif
diff --git a/jni/pdnsd/src/pdnsd-ctl/Makefile.am b/jni/pdnsd/src/pdnsd-ctl/Makefile.am
deleted file mode 100644
index bcb7327..0000000
--- a/jni/pdnsd/src/pdnsd-ctl/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-
-sbin_PROGRAMS = pdnsd-ctl
-
-pdnsd_ctl_SOURCES = pdnsd-ctl.c
-pdnsd_ctl_LDADD =  rr_types.o
-pdnsd_ctl_DEPENDENCIES = rr_types.o
-
-# These are Symlinks we want to have in the package
-#EXTRA_DIST = rr_types.h
-
-pdnsd-ctl.o rr_types.o: ../rr_types.h
-
-../rr_types.h: ../make_rr_types_h.pl ../rr_types.in
-	perl ../make_rr_types_h.pl ../rr_types.in > ../rr_types.h
-
-rr_types.o: %.o: ../%.c
-	$(COMPILE) -DCLIENT_ONLY -c $<
-
diff --git a/jni/pdnsd/src/pdnsd-ctl/Makefile.in b/jni/pdnsd/src/pdnsd-ctl/Makefile.in
deleted file mode 100644
index 80f3987..0000000
--- a/jni/pdnsd/src/pdnsd-ctl/Makefile.in
+++ /dev/null
@@ -1,470 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-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 = :
-sbin_PROGRAMS = pdnsd-ctl$(EXEEXT)
-subdir = src/pdnsd-ctl
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__installdirs = "$(DESTDIR)$(sbindir)"
-PROGRAMS = $(sbin_PROGRAMS)
-am_pdnsd_ctl_OBJECTS = pdnsd-ctl.$(OBJEXT)
-pdnsd_ctl_OBJECTS = $(am_pdnsd_ctl_OBJECTS)
-DEFAULT_INCLUDES = -I. at 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)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(pdnsd_ctl_SOURCES)
-DIST_SOURCES = $(pdnsd_ctl_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-pdnsd_ctl_SOURCES = pdnsd-ctl.c
-pdnsd_ctl_LDADD = rr_types.o
-pdnsd_ctl_DEPENDENCIES = rr_types.o
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in:  $(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) --gnu src/pdnsd-ctl/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/pdnsd-ctl/Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-sbinPROGRAMS: $(sbin_PROGRAMS)
-	@$(NORMAL_INSTALL)
-	test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
-	@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
-	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)$(sbindir)$$dir'"; \
-	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
-	    } \
-	; done
-
-uninstall-sbinPROGRAMS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || 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)$(sbindir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(sbindir)" && rm -f $$files
-
-clean-sbinPROGRAMS:
-	-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
-pdnsd-ctl$(EXEEXT): $(pdnsd_ctl_OBJECTS) $(pdnsd_ctl_DEPENDENCIES) 
-	@rm -f pdnsd-ctl$(EXEEXT)
-	$(LINK) $(pdnsd_ctl_OBJECTS) $(pdnsd_ctl_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdnsd-ctl.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
-	for dir in "$(DESTDIR)$(sbindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-am
-
-clean-am: clean-generic clean-sbinPROGRAMS 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:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-sbinPROGRAMS
-
-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: uninstall-sbinPROGRAMS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-sbinPROGRAMS ctags distclean distclean-compile \
-	distclean-generic distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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-sbinPROGRAMS install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-sbinPROGRAMS
-
-
-# These are Symlinks we want to have in the package
-#EXTRA_DIST = rr_types.h
-
-pdnsd-ctl.o rr_types.o: ../rr_types.h
-
-../rr_types.h: ../make_rr_types_h.pl ../rr_types.in
-	perl ../make_rr_types_h.pl ../rr_types.in > ../rr_types.h
-
-rr_types.o: %.o: ../%.c
-	$(COMPILE) -DCLIENT_ONLY -c $<
-
-# 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:
diff --git a/jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c b/jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c
deleted file mode 100644
index 33a21ce..0000000
--- a/jni/pdnsd/src/pdnsd-ctl/pdnsd-ctl.c
+++ /dev/null
@@ -1,799 +0,0 @@
-/* pdnsd-ctl.c - Control pdnsd through a pipe
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
-#include <string.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <stddef.h>	/* for offsetof */
-#include "../helpers.h"
-#include "../status.h"
-#include "../conff.h"
-#include "../list.h"
-#include "../dns.h"
-#include "../rr_types.h"
-#include "../cache.h"
-
-#if !defined(HAVE_ALLOCA) && !defined(alloca)
-#define alloca malloc
-#endif
-
-
-#if defined(HAVE_STRUCT_IN6_ADDR) && defined(HAVE_INET_PTON)
-# define ALLOW_AAAA IS_CACHED_AAAA
-#else
-# define ALLOW_AAAA 0
-#endif
-
-static short int verbose=1;
-
-typedef struct {
-	char *name;
-	int  val;
-} cmd_s;
-
-#define CMD_LIST_RRTYPES (CTL_MAX+1)
-#define CMD_HELP         (CTL_MAX+2)
-#define CMD_VERSION      (CTL_MAX+3)
-
-static const cmd_s top_cmds[]={
-	{"help",CMD_HELP},{"version",CMD_VERSION},{"list-rrtypes",CMD_LIST_RRTYPES},
-	{"status",CTL_STATS},{"server",CTL_SERVER},{"record",CTL_RECORD},
-	{"source",CTL_SOURCE},{"add",CTL_ADD},{"neg",CTL_NEG},
-	{"config",CTL_CONFIG},{"include",CTL_INCLUDE},{"eval",CTL_EVAL},
-	{"empty-cache",CTL_EMPTY}, {"dump",CTL_DUMP},
-	{NULL,0}
-};
-static const cmd_s server_cmds[]= {{"up",CTL_S_UP},{"down",CTL_S_DOWN},{"retest",CTL_S_RETEST},{NULL,0}};
-static const cmd_s record_cmds[]= {{"delete",CTL_R_DELETE},{"invalidate",CTL_R_INVAL},{NULL,0}};
-static const cmd_s onoff_cmds[]= {{"off",0},{"on",1},{NULL,0}};
-static const cmd_s rectype_cmds[]= {{"a",T_A},
-#if ALLOW_AAAA
-				    {"aaaa",T_AAAA},
-#endif
-				    {"ptr",T_PTR},{"cname",T_CNAME},{"mx",T_MX},{"ns",T_NS},{NULL,0}};
-
-static const char version_message[] =
-	"pdnsd-ctl, version pdnsd-" VERSION "\n\n";
-
-static const char license_statement[] =
-	"Copyright (C) 2000, 2001 Thomas Moestl\n"
-	"Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011 Paul A. Rombouts\n\n"
-	"This program is part of the pdnsd package.\n\n"
-	"pdnsd is free software; you can redistribute it and/or modify\n"
-	"it under the terms of the GNU General Public License as published by\n"
-	"the Free Software Foundation; either version 3 of the License, or\n"
-	"(at your option) any later version.\n\n"
-	"pdnsd is distributed in the hope that it will be useful,\n"
-	"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-	"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
-	"GNU General Public License for more details.\n\n"
-	"You should have received a copy of the GNU General Public License\n"
-	"along with pdsnd; see the file COPYING.  If not, see\n"
-	"<http://www.gnu.org/licenses/>.\n";
-
-static const char *const help_messages[] =
-{
-	"Usage: pdnsd-ctl [-c cachedir] [-q] <command> [arguments]\n\n"
-
-	"Command-line options:\n"
-
-	"-c\tcachedir\n\tSet the cache directory to cachedir (must match pdnsd setting).\n"
-	"\tThe default is '" CACHEDIR "'.\n"
-	"-q\n\tBe quiet unless output is specified by command or something goes wrong.\n\n"
-
-	"Commands and needed arguments are:\n"
-
-	"help\t[no arguments]\n\tPrint this help.\n"
-	"version\t[no arguments]\n\tPrint version and license info.\n",
-
-	"status\t[no arguments]\n\tPrint pdnsd's status.\n",
-
-	"server\t(index|label)\t(up|down|retest)\t[dns1[,dns2[,...]]]\n"
-	"\tSet the status of the server with the given index to up or down, or\n"
-	"\tforce a retest. The index is assigned in the order of definition in\n"
-	"\tpdnsd.conf starting with 0. Use the status command to see the indexes.\n"
-	"\tYou can specify the label of a server (that matches the label option)\n"
-	"\tinstead of an index to make this easier.\n"
-
-	"\tYou can specify all instead of an index to perform the action for all\n"
-	"\tservers registered with pdnsd.\n"
-
-	"\tAn optional third argument can be given consisting of a list of IP\n"
-	"\taddresses separated by commas or spaces. This list will replace the\n"
-	"\taddresses of name servers used by pdnsd for the given server section.\n"
-	"\tThis feature is useful for run-time configuration of pdnsd with dynamic\n"
-	"\tDNS data in scripts called by ppp or DHCP clients. The last argument\n"
-	"\tmay also be an empty string, which causes existing IP addresses to be\n"
-	"\tremoved and the corresponding server section to become inactive.\n",
-
-	"record\tname\t(delete|invalidate)\n"
-	"\tDelete or invalidate the record of the given domain if it is in the\n"
-	"\tcache.\n",
-
-	"source\tfn\towner\t[ttl]\t[(on|off)]\t[noauth]\n"
-	"\tLoad a hosts-style file. Works like using the pdnsd source\n"
-	"\tconfiguration section.\n"
-	"\tOwner and ttl are used as in the source section. ttl has a default\n"
-	"\tof 900 (it does not need to be specified). The next to last argument\n"
-	"\tcorresponds to the serve_aliases option, and is off by default.\n"
-	"\tnoauth is used to make the domains non-authoritative (please\n"
-	"\tconsult the pdnsd manual for what that means).\n"
-	"\tfn is the name of the file, which must be readable by pdnsd.\n",
-
-	"add\ta\taddr\tname\t[ttl]\t[noauth]\n"
-#if ALLOW_AAAA
-	"add\taaaa\taddr\tname\t[ttl]\t[noauth]\n"
-#endif
-	"add\tptr\thost\tname\t[ttl]\t[noauth]\n"
-	"add\tcname\thost\tname\t[ttl]\t[noauth]\n"
-	"add\tmx\thost\tname\tpref\t[ttl]\t[noauth]\n"
-	"add\tns\thost\tname\t[ttl]\t[noauth]\n"
-	"\tAdd a record of the given type to the pdnsd cache, replacing existing\n"
-	"\trecords for the same name and type. The 2nd argument corresponds\n"
- 	"\tto the value of the option in the rr section that is named like\n"
- 	"\tthe first argument. The addr argument may be a list of IP addresses,\n"
-	"\tseparated by commas or white space. The ttl is optional, the default is\n"
-	"\t900 seconds. noauth is used to make the domains non-authoritative.\n"
- 	"\tIf you want no other record than the newly added in the cache, do\n"
- 	"\tpdnsdctl record <name> delete\n"
- 	"\tbefore adding records.\n",
-
-	"neg\tname\t[type]\t[ttl]\n"
- 	"\tAdd a negatively cached record to pdnsd's cache, replacing existing\n"
-	"\trecords for the same name and type. If no type is given, the whole\n"
-	"\tdomain is cached negatively. For negatively cached records, errors are\n"
-	"\timmediately returned on a query, without querying other servers first.\n"
-	"\tThe ttl is optional, the default is 900 seconds.\n",
-
-	"config\t[filename]\n"
-	"\tReload pdnsd's configuration file.\n"
-	"\tThe config file must be owned by the uid that pdnsd had when it was\n"
-	"\tstarted, and be readable by pdnsd's run_as uid. If no file name is\n"
-	"\tspecified, the config file used at start up is reloaded.\n",
-
-	"include\tfilename\n"
-	"\tParse the given file as an include file, which may contain the same\n"
-	"\ttype of sections as a config file, expect for global and server\n"
-	"\tsections, which are not allowed. This command can be used to add data\n"
-	"\tto the cache without reconfiguring pdnsd.\n",
-
-	"eval\tstring\n"
-	"\tParse string as if it were part of pdnsd's configuration file.\n"
-	"\tThe string should hold one or more complete configuration sections,\n"
-	"\tbut no global and server sections, which are not allowed.\n"
-	"\tIf multiple strings are given, they will be joined using newline chars\n"
-	"\tand parsed together.\n",
-
-	"empty-cache\t[[+|-]name ...]\n"
-	"\tDelete all entries in the cache matching include/exclude rules.\n"
-	"\tIf no arguments are provided, the cache is completely emptied,\n"
-	"\tfreeing all existing entries. This also removes \"local\" records,\n"
-	"\tas defined by the config file. To restore local records, run\n"
-	"\t\"pdnsd-ctl config\" or \"pdnsd-ctl include filename\"  immediately\n"
-	"\tafterwards.\n"
-	"\tIf one or more arguments are provided, these are interpreted as \n"
-	"\tinclude/exclude names. If an argument starts with a '+' the name is to\n"
-	"\tbe included. If an argument starts with a '-' it is to be excluded.\n"
-	"\tIf an argument does not begin with '+' or '-', a '+' is assumed.\n"
-	"\tIf the domain name of a cache entry ends in one of the names in the\n"
-	"\tlist, the first match will determine what happens. If the matching name\n"
-	"\tis to be included, the cache entry is deleted, otherwise it remains.\n"
-	"\tIf there are no matches, the default action is not to delete.\n",
-
-	"dump\t[name]\n"
-	"\tPrint information stored in the cache about name.\n"
-	"\tIf name begins with a dot and is not the root domain, information\n"
-	"\tabout the names in the cache ending in name (including name without\n"
-	"\tthe leading dot) will be printed. If name is missing, information about\n"
-	"\tall the names in the cache will be printed.\n",
-
-	"list-rrtypes\t[no arguments]\n"
-	"\tList available rr types for the neg command. Note that those are only\n"
-	"\tused for the neg command, not for add!\n"
-};
-
-#define NUM_HELP_MESSAGES (sizeof(help_messages)/sizeof(char*))
-
-
-/* Open connection to control socket and send command code.
-   If successful, open_sock returns a file descriptor for the new socket,
-   otherwise the program is aborted.
-*/
-static int open_sock(const char *cache_dir, uint16_t cmd)
-{
-	struct sockaddr_un *sa;
-	unsigned int sa_len;
-	int sock;
-	uint16_t nc;
-
-	if ((sock=socket(PF_UNIX,SOCK_STREAM,0))==-1) {
-		perror("Error: could not open socket");
-		exit(2);
-	}
-
-	sa_len = (offsetof(struct sockaddr_un, sun_path) + strlitlen("/pdnsd.status") + strlen(cache_dir));
-	sa=(struct sockaddr_un *)alloca(sa_len+1);
-	sa->sun_family=AF_UNIX;
-	stpcpy(stpcpy(sa->sun_path,cache_dir),"/pdnsd.status");
-
-	if (connect(sock,(struct sockaddr *)sa,sa_len)==-1) {
-		fprintf(stderr,"Error: could not open socket %s: %s\n",sa->sun_path,strerror(errno));
-		close(sock);
-		exit(2);
-	}
-	if(verbose) printf("Opening socket %s\n",sa->sun_path);
-
-	/* Send command code */
-
-	nc=htons(cmd|CTL_CMDVERNR); /* Add magic number, convert to network byte order. */
-
-	if (write(sock,&nc,sizeof(nc))!=sizeof(nc)) {
-		perror("Error: could not write command code");
-		close(sock);
-		exit(2);
-	}
-
-	return sock;
-}
-
-static void send_long(int fd,uint32_t cmd)
-{
-	uint32_t nc=htonl(cmd);
-
-	if (write(fd,&nc,sizeof(nc))!=sizeof(nc)) {
-		perror("Error: could not write long");
-		close(fd);
-		exit(2);
-	}
-}
-
-static void send_short(int fd,uint16_t cmd)
-{
-	uint16_t nc=htons(cmd);
-
-	if (write(fd,&nc,sizeof(nc))!=sizeof(nc)) {
-		perror("Error: could not write short");
-		close(fd);
-		exit(2);
-	}
-}
-
-#define MAXSENDSTRLEN 0xfffe
-
-static void send_string(int fd, const char *s)
-{
-	if(s) {
-		size_t len=strlen(s);
-		if(len>MAXSENDSTRLEN) {
-			fprintf(stderr,"Error: send_string: string length (%lu) exceeds maximum (%u).\n",
-				(unsigned long)len, MAXSENDSTRLEN);
-			close(fd);
-			exit(2);
-		}
-		send_short(fd,len);
-		if (write_all(fd,s,len)!=len) {
-			perror("Error: could not write string");
-			close(fd);
-			exit(2);
-		}
-	}
-	else
-		send_short(fd, ~0);
-}
-
-static uint16_t read_short(int fd)
-{
-	ssize_t err;
-	uint16_t nc;
-
-	if ((err=read(fd,&nc,sizeof(nc)))!=sizeof(nc)) {
-		fprintf(stderr,"Error: could not read short: %s\n",err<0?strerror(errno):"unexpected EOF");
-		close(fd);
-		exit(2);
-	}
-	return ntohs(nc);
-}
-
-/* copy data from file descriptor fd to file stream out until EOF
-   or error is encountered.
-*/
-static ssize_t copymsgtofile(int fd, FILE* out)
-{
-	ssize_t n,ntot=0;
-	char buf[1024];
-
-	while ((n=read(fd,buf,sizeof(buf)))>0)
-		ntot+=fwrite(buf,1,n,out);
-
-	if(n<0)
-		return n;
-
-	return ntot;
-}
-
-static int match_cmd(const char *cmd, const cmd_s cmds[])
-{
-	int i;
-	for(i=0; cmds[i].name; ++i) {
-		if (strcasecmp(cmd,cmds[i].name)==0)
-			return cmds[i].val;
-	}
-	return -1;
-}
-
-int main(int argc, char *argv[])
-{
-	char *cache_dir= CACHEDIR;
-	int rv=0;
-	{
-		int i;
-		char *arg;
-		for(i=1; i<argc && (arg=argv[i]) && *arg=='-'; ++i) {
-			if(!strcmp(arg,"-c")) {
-				if(++i<argc) {
-					cache_dir= argv[i];
-				}
-				else {
-					fprintf(stderr,"file name expected after -c option.\n");
-					goto print_try_pdnsd_ctl_help;
-				}
-			}
-			else if(!strcmp(arg,"-q")) {
-				verbose=0;
-			}
-			else {
-				fprintf(stderr,"Unknown option: %s\n",arg);
-				goto print_try_pdnsd_ctl_help;
-			}
-		}
-		argc -= i;
-		argv += i;
-	}
-
-	if (argc<1) {
-		fprintf(stderr,"No command specified.\n");
-	print_try_pdnsd_ctl_help:
-		fprintf(stderr,"Try 'pdnsd-ctl help' for available commands and options.\n");
-		exit(2);
-	} else {
-		int pf,acnt=0,cmd;
-
-		cmd=match_cmd(argv[0],top_cmds);
-		if(cmd==-1) {
-			fprintf(stderr,"Command not recognized: %s\n",argv[0]);
-			goto print_try_pdnsd_ctl_help;
-		}
-		switch (cmd) {
-		case CMD_HELP: {
-			int i;
-			fputs(version_message,stdout);
-			for(i=0; i<NUM_HELP_MESSAGES; ++i)
-				fputs(help_messages[i],stdout);
-		}
-			break;
-
-		case CMD_VERSION:
-			fputs(version_message,stdout);
-			fputs(license_statement,stdout);
-			break;
-
-		case CMD_LIST_RRTYPES: {
-			int i;
-			if (argc!=1)
-				goto wrong_args;
-			printf("Available RR types for the neg command:\n");
-			for (i=0; i<NRRTOT; ++i)
-				printf("%s\n",rrnames[rrcachiterlist[i]-T_MIN]);
-		}
-			break;
-
-		case CTL_STATS:
-			if (argc!=1)
-				goto wrong_args;
-			pf=open_sock(cache_dir, cmd);
-			goto copy_pf;
-
-		case CTL_SERVER: {
-			int server_cmd;
-			if (argc<3 || argc>4)
-				goto wrong_args;
-			acnt=2;
-			server_cmd=match_cmd(argv[2],server_cmds);
-			if(server_cmd==-1) goto bad_arg;
-			pf=open_sock(cache_dir, cmd);
-			send_string(pf,argv[1]);
-			send_short(pf,server_cmd);
-			send_string(pf,argc<4?NULL:argv[3]);
-		}
-			goto read_retval;
-
-		case CTL_RECORD: {
-			int record_cmd;
-			if (argc!=3)
-				goto wrong_args;
-			acnt=2;
-			record_cmd=match_cmd(argv[2],record_cmds);
-			if(record_cmd==-1) goto bad_arg;
-			pf=open_sock(cache_dir, cmd);
-			send_short(pf,record_cmd);
-			send_string(pf,argv[1]);
-		}
-			goto read_retval;
-
-		case CTL_SOURCE: {
-			long ttl;
-			int servaliases,flags;
-			if (argc<3 || argc>6)
-				goto wrong_args;
-			ttl=900;
-			flags=DF_LOCAL;
-			acnt=3;
-			if (argc==6 || (argc>=4 && isdigit(argv[3][0]))) {
-				char *endptr;
-				ttl=strtol(argv[3],&endptr,0);
-				if (*endptr)
-					goto bad_arg;
-				acnt++;
-			}
-			servaliases=0;
-			if (acnt<argc && (argc==6 || strcasecmp(argv[acnt], "noauth"))) {
-				servaliases=match_cmd(argv[acnt],onoff_cmds);
-				if(servaliases==-1) goto bad_arg;
-				acnt++;
-			}
-			if (acnt<argc) {
-				if (!strcasecmp(argv[acnt], "noauth"))
-					flags=0;
-				else
-					goto bad_arg;
-			}
-			pf=open_sock(cache_dir, cmd);
-			send_string(pf,argv[1]);
-			send_string(pf,argv[2]);
-			send_long(pf,ttl);
-			send_short(pf,servaliases);
-			send_short(pf,flags);
-		}
-			goto read_retval;
-
-		case CTL_ADD: {
-			long ttl;
-			int tp,flags,pref;
-			unsigned int nadr;
-			size_t adrsz, adrbufsz;
-			char *q;
-
-			if (argc<2) goto wrong_args;
-			acnt=1;
-			tp=match_cmd(argv[1],rectype_cmds);
-			if(tp==-1) goto bad_arg;
-			acnt=((tp==T_MX)?5:4);
-			if (argc<acnt || argc>acnt+2)
-				goto wrong_args;
-
-			ttl=900;
-			flags=DF_LOCAL;
-			pref=0;
-			if(tp==T_MX) {
-				char *endptr;
-				pref=strtol(argv[4],&endptr,0);
-				if (*endptr) {
-					acnt=4;
-					goto bad_arg;
-				}
-			}
-
-			if (acnt<argc && strcasecmp(argv[acnt],"noauth")) {
-				char *endptr;
-				ttl=strtol(argv[acnt],&endptr,0);
-				if (*endptr)
-					goto bad_arg;
-				acnt++;
-			}
-			if (acnt<argc && !strcasecmp(argv[acnt],"noauth")) {
-				flags=0;
-				acnt++;
-			}
-			if (acnt<argc)
-				goto bad_arg;
-
-			nadr=0; adrsz=0;
-			switch (tp) {
-			case T_A:
-				adrsz= sizeof(struct in_addr);
-#if ALLOW_AAAA
-				goto count_addresses;
-			case T_AAAA:
-				adrsz= sizeof(struct in6_addr);
-			count_addresses:
-#endif
-				/* first count the number of comma- or space-delimited address strings,
-				   ignoring blank strings. */
-				for(q=argv[2];;) {
-					for(;;++q) {
-						if(!*q) goto finished_counting_addresses;
-						if(*q!=',' && !isspace(*q)) break;
-					}
-					do {
-						++q;
-					} while(*q && *q!=',' && !isspace(*q));
-					++nadr;
-				}
-			finished_counting_addresses:
-				if (!nadr) {
-					fprintf(stderr,"Empty IP list for 'add %s' command.\n", argv[1]);
-					exit(2);
-				}
-				break;
-			}
-
-			adrbufsz = nadr*adrsz;
-			{
-				/* Variable-size array for storing IP addresses. */
-				unsigned char adrbuf[adrbufsz] __attribute__((aligned));
-
-				switch (tp) {
-				case T_A:
-#if ALLOW_AAAA
-				case T_AAAA:
-#endif
-				{
-					/* Convert the address strings into binary addresses and
-					   store them in adrbuf. */
-					unsigned char *adrp = adrbuf;
-					for(q=argv[2];;) {
-						char *p; size_t len;
-						for(;;++q) {
-							if(!*q) goto finished_converting_addresses;
-							if(*q!=',' && !isspace(*q)) break;
-						}
-						p=q;
-						do {
-							++q;
-						} while(*q && *q!=',' && !isspace(*q));
-						len = q-p;
-						{
-							char tmpbuf[len+1];
-							memcpy(tmpbuf,p,len);
-							tmpbuf[len]=0;
-
-							if(
-#if ALLOW_AAAA
-								tp==T_AAAA? inet_pton(AF_INET6,tmpbuf,adrp)<=0:
-#endif
-								!inet_aton(tmpbuf,(struct in_addr *)adrp))
-							{
-								fprintf(stderr,"Bad IP for 'add %s' command: %s\n",
-									argv[1],tmpbuf);
-								exit(2);
-							}
-						}
-						adrp += adrsz;
-					}
-				}
-				finished_converting_addresses:
-					break;
-				}
-
-				pf=open_sock(cache_dir, cmd);
-				send_short(pf,tp);
-				send_string(pf,argv[3]);
-				send_long(pf,ttl);
-				send_short(pf,flags);
-
-				switch (tp) {
-				case T_A:
-#if ALLOW_AAAA
-				case T_AAAA:
-#endif
-					send_short(pf,nadr);
-					if(write_all(pf,adrbuf,adrbufsz)!=adrbufsz) {
-						perror("Error: could not send IP address(es)");
-						close(pf);
-						exit(2);
-					}
-					break;
-				case T_MX:
-					send_short(pf,pref);
-					/* fall through */
-				case T_PTR:
-				case T_CNAME:
-				case T_NS:
-					send_string(pf,argv[2]);
-					break;
-				}
-			}
-		}
-			goto read_retval;
-
-		case CTL_NEG: {
-			long ttl;
-			int tp;
-
-			if (argc<2 || argc>4)
-				goto wrong_args;
-			tp=255;
-			ttl=900;
-			acnt=2;
-			if (argc==3) {
-				if (isdigit(argv[2][0])) {
-					char *endptr;
-					ttl=strtol(argv[2],&endptr,0);
-					if (*endptr)
-						goto bad_arg;
-				} else if ((tp=rr_tp_byname(argv[2]))==-1) {
-					goto bad_type;
-				}
-			} else if (argc==4) {
-				char *endptr;
-				if ((tp=rr_tp_byname(argv[2]))==-1)
-					goto bad_type;
-				ttl=strtol(argv[3],&endptr,0);
-				if (*endptr) {
-					acnt=3;
-					goto bad_arg;
-				}
-			}
-			pf=open_sock(cache_dir, cmd);
-			send_string(pf,argv[1]);
-			send_short(pf,tp);
-			send_long(pf,ttl);
-		}
-			goto read_retval;
-
-		case CTL_CONFIG:
-			if (argc>2)
-				goto wrong_args;
-			pf=open_sock(cache_dir, cmd);
-			send_string(pf,argc<2?NULL:argv[1]);
-			goto read_retval;
-
-		case CTL_INCLUDE:
-			if (argc!=2)
-				goto wrong_args;
-			pf=open_sock(cache_dir, cmd);
-			send_string(pf,argv[1]);
-			goto read_retval;
-
-		case CTL_EVAL: {
-			int i; size_t bufsz;
-
-			if (argc<2)
-				goto wrong_args;
-			bufsz=0;
-			for(i=1; i<argc; ++i)
-				bufsz += strlen(argv[i])+1;
-
-			if(bufsz>MAXSENDSTRLEN) {
-				fprintf(stderr,"Cannot send 'eval' command: "
-					"string length (%lu) exceeds maximum (%u).\n",
-				(unsigned long)bufsz, MAXSENDSTRLEN);
-				exit(2);
-			}
-			pf=open_sock(cache_dir, cmd);
-			send_short(pf,bufsz);
-			{
-				/* Variable-size array for storing the joined strings. */
-				char buf[bufsz];
-				char *p=buf;
-				for(i=1; i<argc; ++i) {
-					p=stpcpy(p,argv[i]);
-					*p++ = '\n';
-				}
-				if(write_all(pf,buf,bufsz)!=bufsz) {
-					perror("Error: could not write string");
-					close(pf);
-					exit(2);
-				}
-			}
-		}
-			goto read_retval;
-
-		case CTL_EMPTY: {
-			int i; size_t totsz=0;
-			for(i=1; i<argc; ++i)
-				totsz += strlen(argv[i])+1;
-
-			if(totsz>MAXSENDSTRLEN) {
-				fprintf(stderr,"Cannot send 'empty' command: "
-					"string length (%lu) exceeds maximum (%u).\n",
-					(unsigned long)totsz, MAXSENDSTRLEN);
-				exit(2);
-			}
-			pf=open_sock(cache_dir, cmd);
-			if(argc>1) {
-				send_short(pf,totsz);
-				for(i=1; i<argc; ++i) {
-					size_t sz=strlen(argv[i])+1;
-					if(write_all(pf,argv[i],sz)!=sz) {
-						perror("Error: could not write string");
-						close(pf);
-						exit(2);
-					}
-				}
-			}
-			else
-				send_short(pf,~0);
-		}
-			goto read_retval;
-
-		case CTL_DUMP:
-			if (argc>2)
-				goto wrong_args;
-			pf=open_sock(cache_dir, cmd);
-			send_string(pf,argc<2?NULL:argv[1]);
-		copy_pf:
-			if((rv=read_short(pf)))
-				goto retval_failed;
-			if(copymsgtofile(pf,stdout)<0) {
-				perror("Error while reading from socket");
-				close(pf);
-				exit(2);
-			}
-			goto close_pf;
-
-		read_retval:
-			if((rv=read_short(pf))) {
-			retval_failed:
-				fprintf(stderr,"Failed: ");
-				if(copymsgtofile(pf,stderr)<0)
-					fprintf(stderr,"(could not read error message from socket: %s)",strerror(errno));
-
-				fputc('\n',stderr);
-			}
-		close_pf:
-			if(close(pf)==-1)
-				perror("Couldn't close socket");
-			else if (rv==0 && verbose)
-				printf("Succeeded\n");
-			break;
-		wrong_args:
-			fprintf(stderr,"Wrong number of arguments for '%s' command.\n",argv[0]);
-			goto print_cmd_usage;
-		bad_arg:
-			fprintf(stderr,"Bad argument for '%s' command: %s\n",argv[0],argv[acnt]);
-		print_cmd_usage:
-			fprintf(stderr,"Usage:\n\n%s\n"
-				"Try 'pdnsd-ctl help' for a description of all available commands and options.\n",
-				help_messages[cmd]);
-			exit(2);
-		bad_type:
-			fprintf(stderr,"Bad (type) argument for '%s' command: %s\n"
-				"Run 'pdnsd-ctl list-rrtypes' for a list of available rr types.\n",
-				argv[0],argv[acnt]);
-			exit(2);
-		}
-	}
-
-	return rv;
-}
-
diff --git a/jni/pdnsd/src/pdnsd_assert.h b/jni/pdnsd/src/pdnsd_assert.h
deleted file mode 100644
index 0acdfc2..0000000
--- a/jni/pdnsd/src/pdnsd_assert.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* This include file was added by Paul A. Rombouts.
-   I had terrible difficulties with cyclic dependencies of the include files
-   written by Thomas Moestl. The only way I knew how to break the cycle was to
-   put some declarations in a seperate file.
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef PDNSD_ASSERT_H
-#define PDNSD_ASSERT_H
-
-/* Originally in helpers.h */
-
-/* format string checking for printf-like functions */
-#ifdef __GNUC__
-#define printfunc(fmt, firstva) __attribute__((__format__(__printf__, fmt, firstva)))
-#else
-#define printfunc(fmt, firstva)
-#endif
-
-void pdnsd_exit(void);
-
-
-/*
- * Assert macro, used in some places. For now, it should be always defined, not
- * only in the DEBUG case, to be on the safe side security-wise.
- */
-#define PDNSD_ASSERT(cond, msg)						\
-	{ if (!(cond)) {						\
-		log_error("%s:%d: %s", __FILE__, __LINE__, msg);	\
-		pdnsd_exit();						\
- 	} }
-
-#endif
diff --git a/jni/pdnsd/src/rc/ArchLinux/Makefile.am b/jni/pdnsd/src/rc/ArchLinux/Makefile.am
deleted file mode 100644
index 2a7b420..0000000
--- a/jni/pdnsd/src/rc/ArchLinux/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-
-install-exec-local:
-	if [ "$(distribution)" = "ArchLinux" ] ; then			\
-	  $(mkinstalldirs) "$(DESTDIR)/etc/rc.d";			\
-	  $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/rc.d/pdnsd";\
-	fi
-
diff --git a/jni/pdnsd/src/rc/ArchLinux/Makefile.in b/jni/pdnsd/src/rc/ArchLinux/Makefile.in
deleted file mode 100644
index 6af6f9e..0000000
--- a/jni/pdnsd/src/rc/ArchLinux/Makefile.in
+++ /dev/null
@@ -1,332 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-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 = :
-subdir = src/rc/ArchLinux
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/pdnsd.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = pdnsd
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(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) --gnu src/rc/ArchLinux/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/rc/ArchLinux/Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-pdnsd: $(top_builddir)/config.status $(srcdir)/pdnsd.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-am
-
-clean-am: clean-generic 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:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-exec-local
-
-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:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
-	distclean-generic distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-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 uninstall \
-	uninstall-am
-
-
-install-exec-local:
-	if [ "$(distribution)" = "ArchLinux" ] ; then			\
-	  $(mkinstalldirs) "$(DESTDIR)/etc/rc.d";			\
-	  $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/rc.d/pdnsd";\
-	fi
-
-# 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:
diff --git a/jni/pdnsd/src/rc/ArchLinux/pdnsd.in b/jni/pdnsd/src/rc/ArchLinux/pdnsd.in
deleted file mode 100644
index c392750..0000000
--- a/jni/pdnsd/src/rc/ArchLinux/pdnsd.in
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-
-. /etc/rc.conf
-. /etc/rc.d/functions
-
-PID=`pidof -o %PPID @prefix@/sbin/pdnsd`
-
-start() {
-  stat_busy "Starting PDNSD"
-  [ -z "$PID" ] && @prefix@/sbin/pdnsd -d -c /etc/pdnsd.conf
-  if [ $? -gt 0 ]; then
-    stat_fail
-  else
-    add_daemon pdnsd
-    stat_done
-  fi
-}
-
-stop() {
-  stat_busy "Stopping PDNSD"
-  [ ! -z "$PID" ]  && kill $PID &> /dev/null
-  if [ $? -gt 0 ]; then
-    stat_fail
-  else
-    rm_daemon pdnsd
-    stat_done
-  fi
-}
-
-case "$1" in
-  start)
-    start
-    ;;
-  stop)
-    stop
-    ;;
-  restart)
-    $0 stop
-    sleep 2
-    $0 start
-    ;;
-  *)
-    echo "usage: $0 {start|stop|restart}"  
-esac
-exit 0
diff --git a/jni/pdnsd/src/rc/Debian/Makefile.am b/jni/pdnsd/src/rc/Debian/Makefile.am
deleted file mode 100644
index 61d3eb3..0000000
--- a/jni/pdnsd/src/rc/Debian/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-
-install-exec-local:
-	if [ "$(distribution)" = "Debian" ] ; then \
-	  CURDIR=`pwd`; \
-	  $(mkinstalldirs) "$(DESTDIR)/etc/init.d"; \
-	  $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/init.d"; \
-	  update-rc.d pdnsd defaults 19 ;\
-	fi
diff --git a/jni/pdnsd/src/rc/Debian/Makefile.in b/jni/pdnsd/src/rc/Debian/Makefile.in
deleted file mode 100644
index 992a059..0000000
--- a/jni/pdnsd/src/rc/Debian/Makefile.in
+++ /dev/null
@@ -1,334 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-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 = :
-subdir = src/rc/Debian
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/pdnsd.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = pdnsd
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(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) --gnu src/rc/Debian/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/rc/Debian/Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-pdnsd: $(top_builddir)/config.status $(srcdir)/pdnsd.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-am
-
-clean-am: clean-generic 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:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-exec-local
-
-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:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
-	distclean-generic distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-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 uninstall \
-	uninstall-am
-
-
-install-exec-local:
-	if [ "$(distribution)" = "Debian" ] ; then \
-	  CURDIR=`pwd`; \
-	  $(mkinstalldirs) "$(DESTDIR)/etc/init.d"; \
-	  $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/init.d"; \
-	  update-rc.d pdnsd defaults 19 ;\
-	fi
-
-# 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:
diff --git a/jni/pdnsd/src/rc/Debian/pdnsd.in b/jni/pdnsd/src/rc/Debian/pdnsd.in
deleted file mode 100644
index 068606e..0000000
--- a/jni/pdnsd/src/rc/Debian/pdnsd.in
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-
-#
-# This script was written and contributed by Markus Mohr, and
-# slightly modified by me for version 1.0.6 (which obviously
-# broke it some way). I then applied a set of corrections
-# by Markus Mohr.
-#
-# Carsten Block has patched this with some magic so that
-# the actual script is generated by configure, and that
-# the pdnsd user is determined from pdnsd.conf
-# I changed this a little to use the --pdnsd-user option
-# of pdnsd to determine the run_as user.
-#
-
-PATH=/sbin:/bin:/usr/sbin:/usr/bin
-
-test -x @prefix@/sbin/pdnsd || exit 0
-
-case "$1" in
-    start)
-    	# Check if cache dir exists and recreate if neccessary
-	test -d @cachedir@ || mkdir @cachedir@
-	RUNAS=`@prefix@/sbin/pdnsd --pdnsd-user` || echo -n " failed"
-	[ -z "$RUNAS" ] && RUNAS=nobody
-	chown $RUNAS @cachedir@
-	echo -n "Starting domain name service: pdnsd"
-	start-stop-daemon --start --quiet --pidfile /var/run/pdnsd.pid --name pdnsd \
-	--exec @prefix@/sbin/pdnsd -- --daemon -p /var/run/pdnsd.pid \
-	|| echo -n " failed"
-	echo "."
-    ;;
-
-    stop)
-	echo -n "Stopping domain name service: pdnsd"
-	start-stop-daemon --stop --quiet  --pidfile /var/run/pdnsd.pid --name pdnsd --exec @prefix@/sbin/pdnsd \
-	|| echo -n " failed"
-	echo "."
-    ;;
-
-    restart)
-        $0 stop
-	$0 start
-    ;;
-    
-    *)
-	echo "Usage: /etc/init.d/pdnsd {start|stop|restart}" >&2
-	exit 1
-    ;;
-esac
-
-exit 0
diff --git a/jni/pdnsd/src/rc/Makefile.am b/jni/pdnsd/src/rc/Makefile.am
deleted file mode 100644
index abf2e6d..0000000
--- a/jni/pdnsd/src/rc/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-
-SUBDIRS = RedHat SuSE Debian Slackware ArchLinux
-
-EXTRA_DIST = README
-
diff --git a/jni/pdnsd/src/rc/Makefile.in b/jni/pdnsd/src/rc/Makefile.in
deleted file mode 100644
index 38ee297..0000000
--- a/jni/pdnsd/src/rc/Makefile.in
+++ /dev/null
@@ -1,526 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-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 = :
-subdir = src/rc
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-  distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
-  dir0=`pwd`; \
-  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
-  sed_rest='s,^[^/]*/*,,'; \
-  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
-  sed_butlast='s,/*[^/]*$$,,'; \
-  while test -n "$$dir1"; do \
-    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
-    if test "$$first" != "."; then \
-      if test "$$first" = ".."; then \
-        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
-        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
-      else \
-        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
-        if test "$$first2" = "$$first"; then \
-          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
-        else \
-          dir2="../$$dir2"; \
-        fi; \
-        dir0="$$dir0"/"$$first"; \
-      fi; \
-    fi; \
-    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
-  done; \
-  reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = RedHat SuSE Debian Slackware ArchLinux
-EXTRA_DIST = README
-all: all-recursive
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(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) --gnu src/rc/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/rc/Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(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.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; 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"
-
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	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; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
-	    $(am__relativize); \
-	    new_distdir=$$reldir; \
-	    dir1=$$subdir; dir2="$(top_distdir)"; \
-	    $(am__relativize); \
-	    new_top_distdir=$$reldir; \
-	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
-	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
-	    ($(am__cd) $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$new_top_distdir" \
-	        distdir="$$new_distdir" \
-		am__remove_distdir=: \
-		am__skip_length_check=: \
-		am__skip_mode_fix=: \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-recursive
-
-clean-am: clean-generic 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:
-
-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:
-
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic ctags \
-	ctags-recursive distclean distclean-generic distclean-tags \
-	distdir dvi dvi-am html html-am info info-am install \
-	install-am install-data install-data-am 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-recursive uninstall uninstall-am
-
-
-# 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:
diff --git a/jni/pdnsd/src/rc/README b/jni/pdnsd/src/rc/README
deleted file mode 100644
index 4e00764..0000000
--- a/jni/pdnsd/src/rc/README
+++ /dev/null
@@ -1,104 +0,0 @@
-rc/
-===
-
-These are start scripts for different Linux distros and other things that
-do not directly belong to pdnsd. 
-If you do start scripts for the distro you use, please GPL them and send 
-them in, so that they can be included in this package for other users.
-Note that there is NO WARRANTY OF ANY KIND on anything in this directory;
-read the COPYING that comes with pdnsd for details.
-So far there are files in the following directories:
-
-SuSE
-----
-pdnsd	- Start script for SuSE Linux. Tested for 6.? but should run on some
-	  versions below. You can do 'make install' as root in the SuSE 
-	  directory to install it, or you can install manually:
-	  --manual installation-------------------------------------------------
-	  For manual installation, copy it into /sbin/init.d/, go to
-	  /sbin/init.d/rc2.d/ and create there the following two symlinks:
-	S11pdnsd -> ../pdnsd (do "ln -s ../pdnsd S11pdnsd" in that dir)
-	K34pdnsd -> ../pdnsd (do "ln -s ../pdnsd K34pdnsd" in that dir)
-	  The numbers dictate the order different services are started and 
-	  might need to be modified. Then edit your /etc/rc.config file and
-	  add the line "START_PDNSD=yes" to start pdnsd at boot time.
-	  ----------------------------------------------------------------------
-	  If you used the 'make install' command, "START_PDNSD=yes" has been
-	  appended to your /etc/rc.config file, causing pdnsd to be started
-	  at boot time. If you don't want that, change the "yes" into "no". 
-	  This start script was created from /sbin/init.d/skeleton by me, so the
-	  most is copyrighted by SuSE. They put it under the GPL, however, so
-	  the licence stated in COPYING also applies to this script.
-          This is no official SuSE script, and SuSE naturally does NO support 
-	  for it.
-
-Redhat
-------
-The contents of the Redhat directory and the following documentation were 
-contributed by Torben Janssen. Thanks a lot!
-
-pdnsd	- Start script for Redhat Linux. Tested for 6.1 but should run on 5.0+.
-	  You can do 'make install' as root in the Redhat directory to
-	  install it, or you can install manually:
-	    
-	  --manual installation-------------------------------------------------
-	  For manual installation, copy pdnsd into /etc/rc.d/init.d/
-		
-	  Then go to /etc/rc.d/rc3.d and create there the following symlink:
-	  S78pdnsd -> ../init.d/pdnsd 
-	  (do "ln -f -s ../init.d/pdnsd S78pdnsd" in that dir)
-		
-	  Then go to /etc/rc.d/rc0.d and create there the following symlink:
-	  K78pdnsd -> ../init.d/pdnsd 
-	  (do "ln -f -s ../init.d/pdnsd K78pdnsd" in that dir)
-		
-	  Then go to /etc/rc.d/rc6.d and create there the following symlink:
-	  K78pdnsd -> ../init.d/pdnsd 
-	  (do "ln -f -s ../init.d/pdnsd K78pdnsd" in that dir)
-		
-	  WHY
-	  ---
-	  the rc[0-6].d dirs includes the scripts which starts/stops the 
-	  services on entering runlevel [0-6]
-	  the interesting runlevels on Redhat are: 
-	  0 - halt
-	  3 - multi user system
-	  6 - reboot
-	  The links have an 'S' or 'K' and a number at the beginnig. All links
-	  with 'S' starts the script on entering the runlevel and 'K' stops 
-	  them.
-	  So, there's an 'S' link in rc3 and 'K' links in rc0 and rc6.
-	  I choose 78 as number, because there was no script with this number on
-	  my system. You can choose every number you want, AFAIK .
-	
-	  This is no offical Redhat script, and Redhat naturally does NO support
-	  for it.
-
-Debian
-------
-The contents of the Debian directory were contributed by Markus Mohr. 
-His installation instructions are (translated):
-Install the pdnsd script to /etc/init and run 
-update-rc.d pdnsd defaults 19
-as root.
-
-Slackware
----------
-A Slackware start-up script rc.pdnsd was contributed by Nikola Kotur <kotnik at ns-linux.org>.
-His comments were:
-
-Slackware uses traditional BSD style init script layout instead of SystemV 
-style startup scripts.  So I adjusted the start-up script for pdnsd, and 
-now it can be used with Slackware 9.1 distribution, and probably with all the 
-others.
-
-Additional info:
-1) put these lines in the /etc/rc.d/rc.M:
-	if [ -x /etc/rc.d/rc.pdnsd ]; then
-		/etc/rc.d/rc.pdnsd start
-	fi
-
-2) put these lines in the /etc/rc.d/rc.6 and /etc/rc.d/rc.K:
-	if [ -x /etc/rc.d/rc.pdnsd ]; then
-		/etc/rc.d/rc.pdnsd stop
-	fi
diff --git a/jni/pdnsd/src/rc/RedHat/Makefile.am b/jni/pdnsd/src/rc/RedHat/Makefile.am
deleted file mode 100644
index cb8de88..0000000
--- a/jni/pdnsd/src/rc/RedHat/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-
-# no need to create links. 'chkconfig' will take care of this.
-# In the spec case, chkconfig is called during rpm install
-install-exec-local:
-	if [ "$(distribution)" = "RedHat" ] ; then \
-	  $(mkinstalldirs) "$(DESTDIR)/etc/rc.d/init.d"; \
-	  $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/rc.d/init.d/pdnsd"; \
-	    if [ "$(specbuild)" = "no" ] ; then \
-	      /sbin/chkconfig --add pdnsd; \
-	    fi \
-	fi
-
diff --git a/jni/pdnsd/src/rc/RedHat/Makefile.in b/jni/pdnsd/src/rc/RedHat/Makefile.in
deleted file mode 100644
index a88a037..0000000
--- a/jni/pdnsd/src/rc/RedHat/Makefile.in
+++ /dev/null
@@ -1,337 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-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 = :
-subdir = src/rc/RedHat
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/pdnsd.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = pdnsd
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(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) --gnu src/rc/RedHat/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/rc/RedHat/Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-pdnsd: $(top_builddir)/config.status $(srcdir)/pdnsd.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-am
-
-clean-am: clean-generic 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:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-exec-local
-
-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:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
-	distclean-generic distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-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 uninstall \
-	uninstall-am
-
-
-# no need to create links. 'chkconfig' will take care of this.
-# In the spec case, chkconfig is called during rpm install
-install-exec-local:
-	if [ "$(distribution)" = "RedHat" ] ; then \
-	  $(mkinstalldirs) "$(DESTDIR)/etc/rc.d/init.d"; \
-	  $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/etc/rc.d/init.d/pdnsd"; \
-	    if [ "$(specbuild)" = "no" ] ; then \
-	      /sbin/chkconfig --add pdnsd; \
-	    fi \
-	fi
-
-# 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:
diff --git a/jni/pdnsd/src/rc/RedHat/pdnsd.in b/jni/pdnsd/src/rc/RedHat/pdnsd.in
deleted file mode 100644
index b6d9081..0000000
--- a/jni/pdnsd/src/rc/RedHat/pdnsd.in
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/bin/bash
-#
-#	/etc/rc.d/init.d/pdnsd
-#
-# Script for starting the Proxy DNS Daemon
-# Modified by Paul Rombouts, 2003
-#
-# chkconfig: 2345 11 89
-# description: Proxy DNS Daemon
-# processname: pdnsd
-# config: /etc/pdnsd.conf
-
-PATH=/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin
-
-# Source function library.
-. /etc/rc.d/init.d/functions
-
-# Source networking configuration.
-. /etc/sysconfig/network
-
-# Check that networking is up.
-if [[ $NETWORKING == [Nn][Oo] ]]; then exit 0; fi
-
-# Source sysconfig settings, if any.
-if [ -f /etc/sysconfig/pdnsd ]; then . /etc/sysconfig/pdnsd; fi
-
-start() {
-	echo -n 'Starting pdnsd: '
-	daemon @prefix@/sbin/pdnsd -d -s -p /var/run/pdnsd.pid "$EXTRAOPTIONS"
-	local RETVAL=$?
-	echo
-	if [ $RETVAL -eq 0 ]; then touch /var/lock/subsys/pdnsd; fi
-	return $RETVAL
-}
-
-stop() {
-	echo -n 'Shutting down pdnsd: '
-	killproc pdnsd
-	local RETVAL=$?
-	case @threadlib@ in
-	    [Ll]inux[Tt]hreads*|lt*)
-		# Wait until all threads have terminated.
-		local -i count=20
-		while [[ count -gt 0 ]] && pidof pdnsd > /dev/null
-		do
-		  usleep 200000
-		  let --count
-		done
-		;;
-	esac
-	echo
-	if [ $RETVAL -eq 0 ]; then rm -f /var/lock/subsys/pdnsd; fi
-	return $RETVAL
-}
-
-restart() {
-	stop
-	start
-}
-
-#
-#	See how we were called.
-#
-case "$1" in
-  start)
-	start
-	;;
-  stop)
-	stop
-	;;
-  status)
-	status pdnsd
-	;;
-  reload)
-	@prefix@/sbin/pdnsd-ctl config
-	;;
-  restart)
-	restart
-  	;;
-  condrestart)
-	if [ -f /var/lock/subsys/pdnsd ]; then restart; fi
-  	;;
-  *)
-	echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
-	exit 1
-esac
-
-exit
diff --git a/jni/pdnsd/src/rc/Slackware/Makefile.am b/jni/pdnsd/src/rc/Slackware/Makefile.am
deleted file mode 100644
index e44b50f..0000000
--- a/jni/pdnsd/src/rc/Slackware/Makefile.am
+++ /dev/null
@@ -1,3 +0,0 @@
-# TODO: write an install rule for the Slackware start-up script.
-
-install-exec-local:
diff --git a/jni/pdnsd/src/rc/Slackware/Makefile.in b/jni/pdnsd/src/rc/Slackware/Makefile.in
deleted file mode 100644
index 14ebd33..0000000
--- a/jni/pdnsd/src/rc/Slackware/Makefile.in
+++ /dev/null
@@ -1,330 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-
-# TODO: write an install rule for the Slackware start-up script.
-VPATH = @srcdir@
-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 = :
-subdir = src/rc/Slackware
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/rc.pdnsd.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = rc.pdnsd
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(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) --gnu src/rc/Slackware/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/rc/Slackware/Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-rc.pdnsd: $(top_builddir)/config.status $(srcdir)/rc.pdnsd.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-am
-
-clean-am: clean-generic 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:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-exec-local
-
-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:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
-	distclean-generic distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-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 uninstall \
-	uninstall-am
-
-
-install-exec-local:
-
-# 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:
diff --git a/jni/pdnsd/src/rc/Slackware/rc.pdnsd.in b/jni/pdnsd/src/rc/Slackware/rc.pdnsd.in
deleted file mode 100644
index 6e96971..0000000
--- a/jni/pdnsd/src/rc/Slackware/rc.pdnsd.in
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/bash
-#
-#	/etc/rc.d/rc.pdnsd
-#
-# Starts the Proxy DNS Daemon
-#
-# description: Proxy DNS Daemon
-# processname: pdnsd
-# config: /etc/pdnsd.conf
-# distribution: Slackware
-# author: Nikola Kotur <kotnik at ns-linux.org>
-#
-# Additional info:
-# 1) put these lines in the /etc/rc.d/rc.M:
-#	if [ -x /etc/rc.d/rc.pdnsd ]; then
-#		/etc/rc.d/rc.pdnsd start
-#	fi
-#
-# 2) put these lines in the /etc/rc.d/rc.6 and /etc/rc.d/rc.K:
-#	if [ -x /etc/rc.d/rc.pdnsd ]; then
-#		/etc/rc.d/rc.pdnsd stop
-#	fi
-
-
-test -x @prefix@/sbin/pdnsd || exit 0
-[ -f @sysconfdir@/pdnsd.conf ] || exit 1
-
-RETVAL=0
-
-start() {
-	echo -n "Starting pdnsd... "
-	RETVAL=$?
- 	@prefix@/sbin/pdnsd -d
-	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/pdnsd
-	echo ' OK'
-}
-
-stop() {
-	echo -n "Shutting down pdnsd... "
-	killall pdnsd
-	RETVAL=$?
-	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/pdnsd
-	echo ' OK'
-}
-
-restart() {
-	stop
-	start
-}
-
-condrestart() {
-	[ -e /var/lock/subsys/pdnsd ] && restart
-	return 0
-}
-
-case "$1" in
-  start)
-	start
-	;;
-  stop)
-	stop
-	;;
-  reload|restart)
-	restart
-  	;;
-  condrestart)
-	condrestart
-  	;;
-  *)
-	echo $"Usage: $0 {start|stop|restart|condrestart|reload}"
-	RETVAL=1
-esac
-
-exit $RETVAL
diff --git a/jni/pdnsd/src/rc/SuSE/Makefile.am b/jni/pdnsd/src/rc/SuSE/Makefile.am
deleted file mode 100644
index dc5f485..0000000
--- a/jni/pdnsd/src/rc/SuSE/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-
-install-exec-local:
-	if [ "$(distribution)" = "SuSE" ] ; then \
-	  CURDIR=`pwd`; \
-	  $(mkinstalldirs) "$(DESTDIR)/sbin/init.d"; \
-	  $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/sbin/init.d/pdnsd"; \
-	  $(mkinstalldirs) "$(DESTDIR)/sbin/init.d/rc2.d"; \
-	  cd "$(DESTDIR)/sbin/init.d/rc2.d"; \
-	  ln -fs ../pdnsd K34pdnsd; ln -s ../pdnsd S11pdnsd; \
-	  cd $$CURDIR ; \
-	  $(mkinstalldirs) "$(DESTDIR)/sbin/init.d/rc3.d"; \
-	  cd "$(DESTDIR)/sbin/init.d/rc3.d"; \
-	  ln -fs ../pdnsd K34pdnsd; ln -s ../pdnsd S11pdnsd; \
-	  cd $$CURDIR ; \
-	  grep "START_PDNSD" "$(DESTDIR)/etc/rc.config" > /dev/null ; \
-	  if [ $$? -eq 1 ] ; then \
-	    echo -e "\n\n#\n# Set to yes to start pdnsd at boot time\n#\nSTART_PDNSD=yes" >> /etc/rc.config ; \
-	  fi \
-	fi
-
-
-
diff --git a/jni/pdnsd/src/rc/SuSE/Makefile.in b/jni/pdnsd/src/rc/SuSE/Makefile.in
deleted file mode 100644
index df1660f..0000000
--- a/jni/pdnsd/src/rc/SuSE/Makefile.in
+++ /dev/null
@@ -1,345 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-VPATH = @srcdir@
-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 = :
-subdir = src/rc/SuSE
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/pdnsd.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = pdnsd
-CONFIG_CLEAN_VPATH_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in:  $(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) --gnu src/rc/SuSE/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/rc/SuSE/Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-pdnsd: $(top_builddir)/config.status $(srcdir)/pdnsd.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-am
-
-clean-am: clean-generic 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:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-exec-local
-
-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:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic distclean \
-	distclean-generic distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am 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-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 uninstall \
-	uninstall-am
-
-
-install-exec-local:
-	if [ "$(distribution)" = "SuSE" ] ; then \
-	  CURDIR=`pwd`; \
-	  $(mkinstalldirs) "$(DESTDIR)/sbin/init.d"; \
-	  $(INSTALL_SCRIPT) $(srcdir)/pdnsd "$(DESTDIR)/sbin/init.d/pdnsd"; \
-	  $(mkinstalldirs) "$(DESTDIR)/sbin/init.d/rc2.d"; \
-	  cd "$(DESTDIR)/sbin/init.d/rc2.d"; \
-	  ln -fs ../pdnsd K34pdnsd; ln -s ../pdnsd S11pdnsd; \
-	  cd $$CURDIR ; \
-	  $(mkinstalldirs) "$(DESTDIR)/sbin/init.d/rc3.d"; \
-	  cd "$(DESTDIR)/sbin/init.d/rc3.d"; \
-	  ln -fs ../pdnsd K34pdnsd; ln -s ../pdnsd S11pdnsd; \
-	  cd $$CURDIR ; \
-	  grep "START_PDNSD" "$(DESTDIR)/etc/rc.config" > /dev/null ; \
-	  if [ $$? -eq 1 ] ; then \
-	    echo -e "\n\n#\n# Set to yes to start pdnsd at boot time\n#\nSTART_PDNSD=yes" >> /etc/rc.config ; \
-	  fi \
-	fi
-
-# 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:
diff --git a/jni/pdnsd/src/rc/SuSE/pdnsd.in b/jni/pdnsd/src/rc/SuSE/pdnsd.in
deleted file mode 100644
index 9711eca..0000000
--- a/jni/pdnsd/src/rc/SuSE/pdnsd.in
+++ /dev/null
@@ -1,68 +0,0 @@
-#! /bin/sh
-# Copyright (c) 1995-1998 SuSE GmbH Nuernberg, Germany.
-#
-# Modified 2000 from SuSE Linux 6.3 /sbin/init.d/skeleton by Thomas Moestl
-#
-# /sbin/init.d/pdnsd
-#
-#   and symbolic its link
-#
-# /sbin/rc?/pdnsd
-#
-
-. /etc/rc.config
-
-# Determine the base and follow a runlevel link name.
-base=${0##*/}
-link=${base#*[SK][0-9][0-9]}
-
-# Force execution if not called by a runlevel directory.
-test $link = $base && START_PDNSD=yes
-test "$START_PDNSD" = yes || exit 0
-
-# The echo return value for success (defined in /etc/rc.config).
-return=$rc_done
-case "$1" in
-    start)
-	echo -n "Starting pdnsd"
-	## Start daemon with startproc(8). If this fails
-	## the echo return value is set appropriate.
-
-	startproc @prefix@/sbin/pdnsd -d || return=$rc_failed
-	
-	echo -e "$return"
-	;;
-    stop)
-	echo -n "Shutting down pdnsd"
-	## Stop daemon with killproc(8) and if this fails
-	## set echo the echo return value.
-
-	killproc -TERM @prefix@/sbin/pdnsd || return=$rc_failed
-
-	echo -e "$return"
-	;;
-    restart)
-	## If first returns OK call the second, if first or
-	## second command fails, set echo return value.
-	$0 stop  &&  $0 start  ||  return=$rc_failed
-	;;
-    reload)
-	$0 stop  &&  $0 start  ||  return=$rc_failed
-	;;
-    status)
-	echo -n "Checking for pdnsd: "
-	## Check status with checkproc(8), if process is running
-	## checkproc will return with exit status 0.
-
-	checkproc @prefix@/sbin/pdnsd && echo OK || echo No process
-	;;
-    *)
-	echo "Usage: $0 {start|stop|status|restart|reload}"
-	exit 1
-	;;
-esac
-
-# Inform the caller not only verbosely and set an exit status.
-test "$return" = "$rc_done" || exit 1
-exit 0
-
diff --git a/jni/pdnsd/src/rr_types.c b/jni/pdnsd/src/rr_types.c
deleted file mode 100644
index 275a90a..0000000
--- a/jni/pdnsd/src/rr_types.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/* rr_types.c - Tables with information for handling
-                all rr types known to pdnsd, plus
-		some helper functions useful for turning
-		binary RR data into text or vice versa.
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2003, 2004, 2007, 2010, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <string.h>
-#include <stdio.h>
-#define DEFINE_RR_TYPE_ARRAYS 1
-#include "helpers.h"
-#include "dns.h"
-#include "rr_types.h"
-
-
-/*
- * OK, this is inefficient. But it is used _really_ seldom (only in some cases while parsing the
- * config file or by pdnsd-ctl), so it is much more effective to sort by id.
- */
-int rr_tp_byname(char *name)
-{
-	int i;
-
-	for (i=0;i<T_NUM;i++) {
-		if (strcmp(name, rrnames[i])==0)
-			return i+T_MIN;
-	}
-	return -1; /* invalid */
-}
-
-/* The following is not needed by pdnsd-ctl. */
-#ifndef CLIENT_ONLY
-
-static const unsigned int poweroften[8] = {1, 10, 100, 1000, 10000, 100000,
-					   1000000,10000000};
-#define NPRECSIZE (sizeof "90000000")
-/* takes an XeY precision/size value, returns a string representation.
-   This is an adapted version of the function of the same name that
-   can be found in the BIND 9 source.
- */
-static const char *precsize_ntoa(uint8_t prec,char *retbuf)
-{
-	unsigned int mantissa, exponent;
-
-	mantissa = (prec >> 4);
-	exponent = (prec & 0x0f);
-
-	if(mantissa>=10 || exponent>=10)
-		return NULL;
-	if (exponent>= 2)
-		sprintf(retbuf, "%u", mantissa * poweroften[exponent-2]);
-	else
-		sprintf(retbuf, "0.%.2u", mantissa * poweroften[exponent]);
-	return (retbuf);
-}
-
-/* takes an on-the-wire LOC RR and formats it in a human readable format.
-   This is an adapted version of the loc_ntoa function that
-   can be found in the BIND 9 source.
- */
-const char *loc2str(const void *binary, char *ascii, size_t asclen)
-{
-	const unsigned char *cp = binary;
-
-	int latdeg, latmin, latsec, latsecfrac;
-	int longdeg, longmin, longsec, longsecfrac;
-	char northsouth, eastwest;
-	const char *altsign;
-	int altmeters, altfrac;
-
-	const uint32_t referencealt = 100000 * 100;
-
-	int32_t latval, longval, altval;
-	uint32_t templ;
-	uint8_t sizeval, hpval, vpval, versionval;
-
-	char sizestr[NPRECSIZE],hpstr[NPRECSIZE],vpstr[NPRECSIZE];
-
-	versionval = *cp++;
-
-	if (versionval) {
-		/* unknown LOC RR version */
-		return NULL;
-	}
-
-	sizeval = *cp++;
-
-	hpval = *cp++;
-	vpval = *cp++;
-
-	GETINT32(templ, cp);
-	latval = (templ - ((unsigned)1<<31));
-
-	GETINT32(templ, cp);
-	longval = (templ - ((unsigned)1<<31));
-
-	GETINT32(templ, cp);
-	if (templ < referencealt) { /* below WGS 84 spheroid */
-		altval = referencealt - templ;
-		altsign = "-";
-	} else {
-		altval = templ - referencealt;
-		altsign = "";
-	}
-
-	if (latval < 0) {
-		northsouth = 'S';
-		latval = -latval;
-	} else
-		northsouth = 'N';
-
-	latsecfrac = latval % 1000;
-	latval /= 1000;
-	latsec = latval % 60;
-	latval /= 60;
-	latmin = latval % 60;
-	latval /= 60;
-	latdeg = latval;
-
-	if (longval < 0) {
-		eastwest = 'W';
-		longval = -longval;
-	} else
-		eastwest = 'E';
-
-	longsecfrac = longval % 1000;
-	longval /= 1000;
-	longsec = longval % 60;
-	longval /= 60;
-	longmin = longval % 60;
-	longval /= 60;
-	longdeg = longval;
-
-	altfrac = altval % 100;
-	altmeters = (altval / 100);
-
-	if(!precsize_ntoa(sizeval,sizestr) || !precsize_ntoa(hpval,hpstr) || !precsize_ntoa(vpval,vpstr))
-		return NULL;
-	{
-		int n=snprintf(ascii,asclen,
-			       "%d %.2d %.2d.%.3d %c %d %.2d %.2d.%.3d %c %s%d.%.2dm %sm %sm %sm",
-			       latdeg, latmin, latsec, latsecfrac, northsouth,
-			       longdeg, longmin, longsec, longsecfrac, eastwest,
-			       altsign, altmeters, altfrac,
-			       sizestr, hpstr, vpstr);
-		if(n<0 || n>=asclen)
-			return NULL;
-	}
-
-	return (ascii);
-}
-
-#endif
diff --git a/jni/pdnsd/src/rr_types.h b/jni/pdnsd/src/rr_types.h
deleted file mode 100644
index 6025fae..0000000
--- a/jni/pdnsd/src/rr_types.h
+++ /dev/null
@@ -1,536 +0,0 @@
-/* This file was generated by running 'make_rr_types_h.pl rr_types.in'.
-   Modifications to this file may be lost the next time it is automatically
-   regenerated.
-*/
-
-/* rr_types.h - A header file with names & descriptions of
-                all rr types known to pdnsd
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2007, 2010, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef _RR_TYPES_H_
-#define _RR_TYPES_H_
-
-#include <config.h>
-
-#define T_MIN 1
-#define T_A           1
-#define T_NS          2
-#define T_MD          3
-#define T_MF          4
-#define T_CNAME       5
-#define T_SOA         6
-#define T_MB          7
-#define T_MG          8
-#define T_MR          9
-#define T_NULL       10
-#define T_WKS        11
-#define T_PTR        12
-#define T_HINFO      13
-#define T_MINFO      14
-#define T_MX         15
-#define T_TXT        16
-#define T_RP         17
-#define T_AFSDB      18
-#define T_X25        19
-#define T_ISDN       20
-#define T_RT         21
-#define T_NSAP       22
-#define T_NSAP_PTR   23
-#define T_SIG        24
-#define T_KEY        25
-#define T_PX         26
-#define T_GPOS       27
-#define T_AAAA       28
-#define T_LOC        29
-#define T_NXT        30
-#define T_EID        31
-#define T_NIMLOC     32
-#define T_SRV        33
-#define T_ATMA       34
-#define T_NAPTR      35
-#define T_KX         36
-#define T_CERT       37
-#define T_A6         38
-#define T_DNAME      39
-#define T_SINK       40
-#define T_OPT        41
-#define T_APL        42
-#define T_DS         43
-#define T_SSHFP      44
-#define T_IPSECKEY   45
-#define T_RRSIG      46
-#define T_NSEC       47
-#define T_DNSKEY     48
-#define T_DHCID      49
-#define T_NSEC3      50
-#define T_NSEC3PARAM 51
-#define T_HIP        55
-#define T_NINFO      56
-#define T_RKEY       57
-#define T_TALINK     58
-#define T_SPF        99
-#define T_UINFO      100
-#define T_UID        101
-#define T_GID        102
-#define T_UNSPEC     103
-#define T_MAX 51
-
-/* T_MAX - T_MIN + 1 */
-#define T_NUM 51
-
-/* Number of most frequently used rr types. */
-#define NRRMU 8
-
-/* Number of remaining rr types. */
-#define NRREXT 39
-
-/* NRRMU + NRREXT */
-#define NRRTOT 47
-
-/* Lookup table for converting rr type values to internally used indices. */
-extern const unsigned short int rrlkuptab[T_NUM];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const unsigned short int rrlkuptab[T_NUM] = {
-   0  /* A */,
-   1  /* NS */,
-   8  /* MD */,
-   9  /* MF */,
-   2  /* CNAME */,
-   3  /* SOA */,
-  10  /* MB */,
-  11  /* MG */,
-  12  /* MR */,
-  13  /* NULL */,
-  14  /* WKS */,
-   4  /* PTR */,
-  15  /* HINFO */,
-  16  /* MINFO */,
-   5  /* MX */,
-   6  /* TXT */,
-  17  /* RP */,
-  18  /* AFSDB */,
-  19  /* X25 */,
-  20  /* ISDN */,
-  21  /* RT */,
-  22  /* NSAP */,
-  23  /* NSAP_PTR */,
-  24  /* SIG */,
-  25  /* KEY */,
-  26  /* PX */,
-  27  /* GPOS */,
-   7  /* AAAA */,
-  28  /* LOC */,
-  29  /* NXT */,
-  30  /* EID */,
-  31  /* NIMLOC */,
-  32  /* SRV */,
-  33  /* ATMA */,
-  34  /* NAPTR */,
-  35  /* KX */,
-  36  /* CERT */,
-  47  /* A6 */,
-  48  /* DNAME */,
-  49  /* SINK */,
-  50  /* OPT */,
-  37  /* APL */,
-  38  /* DS */,
-  39  /* SSHFP */,
-  40  /* IPSECKEY */,
-  41  /* RRSIG */,
-  42  /* NSEC */,
-  43  /* DNSKEY */,
-  44  /* DHCID */,
-  45  /* NSEC3 */,
-  46  /* NSEC3PARAM */
-};
-#endif
-
-/* List of most frequently used RR types in ascending order. */
-extern const unsigned short int rrmuiterlist[NRRMU];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const unsigned short int rrmuiterlist[NRRMU] = {
-  T_A,
-  T_NS,
-  T_CNAME,
-  T_SOA,
-  T_PTR,
-  T_MX,
-  T_TXT,
-  T_AAAA
-};
-#endif
-
-/* List of the cache-able RR types in ascending order. */
-extern const unsigned short int rrcachiterlist[NRRTOT];
-#if DEFINE_RR_TYPE_ARRAYS
-const unsigned short int rrcachiterlist[NRRTOT] = {
-  T_A,
-  T_NS,
-  T_MD,
-  T_MF,
-  T_CNAME,
-  T_SOA,
-  T_MB,
-  T_MG,
-  T_MR,
-  T_NULL,
-  T_WKS,
-  T_PTR,
-  T_HINFO,
-  T_MINFO,
-  T_MX,
-  T_TXT,
-  T_RP,
-  T_AFSDB,
-  T_X25,
-  T_ISDN,
-  T_RT,
-  T_NSAP,
-  T_NSAP_PTR,
-  T_SIG,
-  T_KEY,
-  T_PX,
-  T_GPOS,
-  T_AAAA,
-  T_LOC,
-  T_NXT,
-  T_EID,
-  T_NIMLOC,
-  T_SRV,
-  T_ATMA,
-  T_NAPTR,
-  T_KX,
-  T_CERT,
-  T_APL,
-  T_DS,
-  T_SSHFP,
-  T_IPSECKEY,
-  T_RRSIG,
-  T_NSEC,
-  T_DNSKEY,
-  T_DHCID,
-  T_NSEC3,
-  T_NSEC3PARAM
-};
-#endif
-
-/* Optimized getrrset macros for fixed rr types. */
-#define getrrset_A(cent)          GET_RRSMU(cent,0)
-#define getrrset_NS(cent)         GET_RRSMU(cent,1)
-#define getrrset_MD(cent)         GET_RRSEXT(cent,0)
-#define getrrset_MF(cent)         GET_RRSEXT(cent,1)
-#define getrrset_CNAME(cent)      GET_RRSMU(cent,2)
-#define getrrset_SOA(cent)        GET_RRSMU(cent,3)
-#define getrrset_MB(cent)         GET_RRSEXT(cent,2)
-#define getrrset_MG(cent)         GET_RRSEXT(cent,3)
-#define getrrset_MR(cent)         GET_RRSEXT(cent,4)
-#define getrrset_NULL(cent)       GET_RRSEXT(cent,5)
-#define getrrset_WKS(cent)        GET_RRSEXT(cent,6)
-#define getrrset_PTR(cent)        GET_RRSMU(cent,4)
-#define getrrset_HINFO(cent)      GET_RRSEXT(cent,7)
-#define getrrset_MINFO(cent)      GET_RRSEXT(cent,8)
-#define getrrset_MX(cent)         GET_RRSMU(cent,5)
-#define getrrset_TXT(cent)        GET_RRSMU(cent,6)
-#define getrrset_RP(cent)         GET_RRSEXT(cent,9)
-#define getrrset_AFSDB(cent)      GET_RRSEXT(cent,10)
-#define getrrset_X25(cent)        GET_RRSEXT(cent,11)
-#define getrrset_ISDN(cent)       GET_RRSEXT(cent,12)
-#define getrrset_RT(cent)         GET_RRSEXT(cent,13)
-#define getrrset_NSAP(cent)       GET_RRSEXT(cent,14)
-#define getrrset_NSAP_PTR(cent)   GET_RRSEXT(cent,15)
-#define getrrset_SIG(cent)        GET_RRSEXT(cent,16)
-#define getrrset_KEY(cent)        GET_RRSEXT(cent,17)
-#define getrrset_PX(cent)         GET_RRSEXT(cent,18)
-#define getrrset_GPOS(cent)       GET_RRSEXT(cent,19)
-#define getrrset_AAAA(cent)       GET_RRSMU(cent,7)
-#define getrrset_LOC(cent)        GET_RRSEXT(cent,20)
-#define getrrset_NXT(cent)        GET_RRSEXT(cent,21)
-#define getrrset_EID(cent)        GET_RRSEXT(cent,22)
-#define getrrset_NIMLOC(cent)     GET_RRSEXT(cent,23)
-#define getrrset_SRV(cent)        GET_RRSEXT(cent,24)
-#define getrrset_ATMA(cent)       GET_RRSEXT(cent,25)
-#define getrrset_NAPTR(cent)      GET_RRSEXT(cent,26)
-#define getrrset_KX(cent)         GET_RRSEXT(cent,27)
-#define getrrset_CERT(cent)       GET_RRSEXT(cent,28)
-#define getrrset_APL(cent)        GET_RRSEXT(cent,29)
-#define getrrset_DS(cent)         GET_RRSEXT(cent,30)
-#define getrrset_SSHFP(cent)      GET_RRSEXT(cent,31)
-#define getrrset_IPSECKEY(cent)   GET_RRSEXT(cent,32)
-#define getrrset_RRSIG(cent)      GET_RRSEXT(cent,33)
-#define getrrset_NSEC(cent)       GET_RRSEXT(cent,34)
-#define getrrset_DNSKEY(cent)     GET_RRSEXT(cent,35)
-#define getrrset_DHCID(cent)      GET_RRSEXT(cent,36)
-#define getrrset_NSEC3(cent)      GET_RRSEXT(cent,37)
-#define getrrset_NSEC3PARAM(cent) GET_RRSEXT(cent,38)
-
-/* have_rr macros for fixed rr types. */
-#define have_rr_A(cent)           HAVE_RRMU(cent,0)
-#define have_rr_NS(cent)          HAVE_RRMU(cent,1)
-#define have_rr_MD(cent)          HAVE_RREXT(cent,0)
-#define have_rr_MF(cent)          HAVE_RREXT(cent,1)
-#define have_rr_CNAME(cent)       HAVE_RRMU(cent,2)
-#define have_rr_SOA(cent)         HAVE_RRMU(cent,3)
-#define have_rr_MB(cent)          HAVE_RREXT(cent,2)
-#define have_rr_MG(cent)          HAVE_RREXT(cent,3)
-#define have_rr_MR(cent)          HAVE_RREXT(cent,4)
-#define have_rr_NULL(cent)        HAVE_RREXT(cent,5)
-#define have_rr_WKS(cent)         HAVE_RREXT(cent,6)
-#define have_rr_PTR(cent)         HAVE_RRMU(cent,4)
-#define have_rr_HINFO(cent)       HAVE_RREXT(cent,7)
-#define have_rr_MINFO(cent)       HAVE_RREXT(cent,8)
-#define have_rr_MX(cent)          HAVE_RRMU(cent,5)
-#define have_rr_TXT(cent)         HAVE_RRMU(cent,6)
-#define have_rr_RP(cent)          HAVE_RREXT(cent,9)
-#define have_rr_AFSDB(cent)       HAVE_RREXT(cent,10)
-#define have_rr_X25(cent)         HAVE_RREXT(cent,11)
-#define have_rr_ISDN(cent)        HAVE_RREXT(cent,12)
-#define have_rr_RT(cent)          HAVE_RREXT(cent,13)
-#define have_rr_NSAP(cent)        HAVE_RREXT(cent,14)
-#define have_rr_NSAP_PTR(cent)    HAVE_RREXT(cent,15)
-#define have_rr_SIG(cent)         HAVE_RREXT(cent,16)
-#define have_rr_KEY(cent)         HAVE_RREXT(cent,17)
-#define have_rr_PX(cent)          HAVE_RREXT(cent,18)
-#define have_rr_GPOS(cent)        HAVE_RREXT(cent,19)
-#define have_rr_AAAA(cent)        HAVE_RRMU(cent,7)
-#define have_rr_LOC(cent)         HAVE_RREXT(cent,20)
-#define have_rr_NXT(cent)         HAVE_RREXT(cent,21)
-#define have_rr_EID(cent)         HAVE_RREXT(cent,22)
-#define have_rr_NIMLOC(cent)      HAVE_RREXT(cent,23)
-#define have_rr_SRV(cent)         HAVE_RREXT(cent,24)
-#define have_rr_ATMA(cent)        HAVE_RREXT(cent,25)
-#define have_rr_NAPTR(cent)       HAVE_RREXT(cent,26)
-#define have_rr_KX(cent)          HAVE_RREXT(cent,27)
-#define have_rr_CERT(cent)        HAVE_RREXT(cent,28)
-#define have_rr_A6(cent)          0
-#define have_rr_DNAME(cent)       0
-#define have_rr_SINK(cent)        0
-#define have_rr_OPT(cent)         0
-#define have_rr_APL(cent)         HAVE_RREXT(cent,29)
-#define have_rr_DS(cent)          HAVE_RREXT(cent,30)
-#define have_rr_SSHFP(cent)       HAVE_RREXT(cent,31)
-#define have_rr_IPSECKEY(cent)    HAVE_RREXT(cent,32)
-#define have_rr_RRSIG(cent)       HAVE_RREXT(cent,33)
-#define have_rr_NSEC(cent)        HAVE_RREXT(cent,34)
-#define have_rr_DNSKEY(cent)      HAVE_RREXT(cent,35)
-#define have_rr_DHCID(cent)       HAVE_RREXT(cent,36)
-#define have_rr_NSEC3(cent)       HAVE_RREXT(cent,37)
-#define have_rr_NSEC3PARAM(cent)  HAVE_RREXT(cent,38)
-
-/* These macros specify which RR types are cached by pdnsd. */
-#define IS_CACHED_A          1
-#define IS_CACHED_NS         1
-#define IS_CACHED_MD         1
-#define IS_CACHED_MF         1
-#define IS_CACHED_CNAME      1
-#define IS_CACHED_SOA        1
-#define IS_CACHED_MB         1
-#define IS_CACHED_MG         1
-#define IS_CACHED_MR         1
-#define IS_CACHED_NULL       1
-#define IS_CACHED_WKS        1
-#define IS_CACHED_PTR        1
-#define IS_CACHED_HINFO      1
-#define IS_CACHED_MINFO      1
-#define IS_CACHED_MX         1
-#define IS_CACHED_TXT        1
-#define IS_CACHED_RP         1
-#define IS_CACHED_AFSDB      1
-#define IS_CACHED_X25        1
-#define IS_CACHED_ISDN       1
-#define IS_CACHED_RT         1
-#define IS_CACHED_NSAP       1
-#define IS_CACHED_NSAP_PTR   1
-#define IS_CACHED_SIG        1
-#define IS_CACHED_KEY        1
-#define IS_CACHED_PX         1
-#define IS_CACHED_GPOS       1
-#define IS_CACHED_AAAA       1
-#define IS_CACHED_LOC        1
-#define IS_CACHED_NXT        1
-#define IS_CACHED_EID        1
-#define IS_CACHED_NIMLOC     1
-#define IS_CACHED_SRV        1
-#define IS_CACHED_ATMA       1
-#define IS_CACHED_NAPTR      1
-#define IS_CACHED_KX         1
-#define IS_CACHED_CERT       1
-#define IS_CACHED_APL        1
-#define IS_CACHED_DS         1
-#define IS_CACHED_SSHFP      1
-#define IS_CACHED_IPSECKEY   1
-#define IS_CACHED_RRSIG      1
-#define IS_CACHED_NSEC       1
-#define IS_CACHED_DNSKEY     1
-#define IS_CACHED_DHCID      1
-#define IS_CACHED_NSEC3      1
-#define IS_CACHED_NSEC3PARAM 1
-
-/* Array indices for most frequently used rr types. */
-#define RRMUINDEX_A         0
-#define RRMUINDEX_NS        1
-#define RRMUINDEX_CNAME     2
-#define RRMUINDEX_SOA       3
-#define RRMUINDEX_PTR       4
-#define RRMUINDEX_MX        5
-#define RRMUINDEX_TXT       6
-#define RRMUINDEX_AAAA      7
-
-/* Table of rr names. */
-extern const char *const rrnames[T_NUM];
-#if DEFINE_RR_TYPE_ARRAYS
-const char *const rrnames[T_NUM] = {
-  "A",
-  "NS",
-  "MD",
-  "MF",
-  "CNAME",
-  "SOA",
-  "MB",
-  "MG",
-  "MR",
-  "NULL",
-  "WKS",
-  "PTR",
-  "HINFO",
-  "MINFO",
-  "MX",
-  "TXT",
-  "RP",
-  "AFSDB",
-  "X25",
-  "ISDN",
-  "RT",
-  "NSAP",
-  "NSAP_PTR",
-  "SIG",
-  "KEY",
-  "PX",
-  "GPOS",
-  "AAAA",
-  "LOC",
-  "NXT",
-  "EID",
-  "NIMLOC",
-  "SRV",
-  "ATMA",
-  "NAPTR",
-  "KX",
-  "CERT",
-  "A6",
-  "DNAME",
-  "SINK",
-  "OPT",
-  "APL",
-  "DS",
-  "SSHFP",
-  "IPSECKEY",
-  "RRSIG",
-  "NSEC",
-  "DNSKEY",
-  "DHCID",
-  "NSEC3",
-  "NSEC3PARAM"
-};
-#endif
-
-/* Structure for rr information */
-struct rr_infos {
-	unsigned short class;		/* class (values see below) */
-	unsigned short excludes;	/* relations to other classes.
-					   Mutual exclusion is marked by or'ing the
-					   respective RRCL value in this field.
-					   Exclusions should be symmetric. */
-};
-
-/* Class values */
-#define RRCL_ALIAS	1	/* for CNAMES, conflicts with RRCL_RECORD */
-#define RRCL_RECORD	2	/* normal direct record */
-#define RRCL_IDEM	4	/* types that conflict with no others (MX, CNAME, ...) */
-#define RRCL_PTR	8	/* PTR */
-
-/* Standard excludes for the classes */
-#define RRX_ALIAS	(RRCL_RECORD|RRCL_PTR)
-#define	RRX_RECORD	(RRCL_ALIAS|RRCL_PTR)
-#define	RRX_IDEM	0
-#define	RRX_PTR		(RRCL_ALIAS|RRCL_RECORD)
-
-/* There could be a separate table detailing the relationship of types, but this
- * is slightly more flexible, as it allows a finer granularity of exclusion. Also,
- * Membership in multiple classes could be added.
- * Index by internally used RR-set indices, not RR type values!
- */
-extern const struct rr_infos rr_info[NRRTOT];
-#if DEFINE_RR_TYPE_ARRAYS && !defined(CLIENT_ONLY)
-const struct rr_infos rr_info[NRRTOT] = {
-  {RRCL_RECORD,    RRX_RECORD}     /* A */,
-  {RRCL_IDEM,      RRX_IDEM}       /* NS */,
-  {RRCL_ALIAS,     RRX_ALIAS}      /* CNAME */,
-  {RRCL_IDEM,      RRX_IDEM}       /* SOA */,
-  {RRCL_PTR,       RRX_PTR}        /* PTR */,
-  {RRCL_IDEM,      RRX_IDEM}       /* MX */,
-  {RRCL_IDEM,      RRX_IDEM}       /* TXT */,
-  {RRCL_RECORD,    RRX_RECORD}     /* AAAA */,
-  {RRCL_IDEM,      RRX_IDEM}       /* MD */,
-  {RRCL_IDEM,      RRX_IDEM}       /* MF */,
-  {RRCL_IDEM,      RRX_IDEM}       /* MB */,
-  {RRCL_IDEM,      RRX_IDEM}       /* MG */,
-  {RRCL_IDEM,      RRX_IDEM}       /* MR */,
-  {RRCL_IDEM,      RRX_IDEM}       /* NULL */,
-  {RRCL_RECORD,    RRX_RECORD}     /* WKS */,
-  {RRCL_RECORD,    RRX_RECORD}     /* HINFO */,
-  {RRCL_IDEM,      RRX_IDEM}       /* MINFO */,
-  {RRCL_RECORD,    RRX_RECORD}     /* RP */,
-  {RRCL_RECORD,    RRX_RECORD}     /* AFSDB */,
-  {RRCL_RECORD,    RRX_RECORD}     /* X25 */,
-  {RRCL_RECORD,    RRX_RECORD}     /* ISDN */,
-  {RRCL_RECORD,    RRX_RECORD}     /* RT */,
-  {RRCL_RECORD,    RRX_RECORD}     /* NSAP */,
-  {RRCL_PTR,       RRX_PTR}        /* NSAP_PTR */,
-  {RRCL_IDEM,      RRX_IDEM}       /* SIG */,
-  {RRCL_IDEM,      RRX_IDEM}       /* KEY */,
-  {RRCL_IDEM,      RRX_IDEM}       /* PX */,
-  {RRCL_RECORD,    RRX_RECORD}     /* GPOS */,
-  {RRCL_RECORD,    RRX_RECORD}     /* LOC */,
-  {RRCL_IDEM,      RRX_IDEM}       /* NXT */,
-  {RRCL_RECORD,    RRX_RECORD}     /* EID */,
-  {RRCL_RECORD,    RRX_RECORD}     /* NIMLOC */,
-  {RRCL_RECORD,    RRX_RECORD}     /* SRV */,
-  {RRCL_RECORD,    RRX_RECORD}     /* ATMA */,
-  {RRCL_RECORD,    RRX_RECORD}     /* NAPTR */,
-  {RRCL_RECORD,    RRX_RECORD}     /* KX */,
-  {RRCL_RECORD,    RRX_RECORD}     /* CERT */,
-  {RRCL_IDEM,      RRX_IDEM}       /* APL */,
-  {RRCL_IDEM,      RRX_IDEM}       /* DS */,
-  {RRCL_IDEM,      RRX_IDEM}       /* SSHFP */,
-  {RRCL_IDEM,      RRX_IDEM}       /* IPSECKEY */,
-  {RRCL_IDEM,      RRX_IDEM}       /* RRSIG */,
-  {RRCL_IDEM,      RRX_IDEM}       /* NSEC */,
-  {RRCL_IDEM,      RRX_IDEM}       /* DNSKEY */,
-  {RRCL_IDEM,      RRX_IDEM}       /* DHCID */,
-  {RRCL_IDEM,      RRX_IDEM}       /* NSEC3 */,
-  {RRCL_IDEM,      RRX_IDEM}       /* NSEC3PARAM */
-};
-#endif
-
-int rr_tp_byname(char *name);
-const char *loc2str(const void *binary, char *ascii, size_t asclen);
-
-#endif
diff --git a/jni/pdnsd/src/rr_types.in b/jni/pdnsd/src/rr_types.in
deleted file mode 100644
index 5ebd2f3..0000000
--- a/jni/pdnsd/src/rr_types.in
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is part of the pdnsd package.
-
-# This file contains information about the RR types implemented in pdnsd
-# and is used for generating rr_types.h.
-# It was derived from the following source: http://www.bind9.net/dns-parameters
-#
-# After making modifications to this file the file rr_types.h should be regenerated!
-#
-# Info about the format of this file:
-#   Blank lines and lines starting with '#' are ignored, all other lines
-#   are assumed to define an RR type. Lines starting with '+' define most
-#   frequently used types. An RR type preceded by a '-' will not be cached
-#   by pdnsd. The next two fields are interpreted as the name and the value
-#   of the RR type, resp. A subsequent word in parenthesis will be interpreted a
-#   class name (used for conflict resolution). Remaining fields are ignored.
-#
-# Adding or removing an initial '+' can be done safely without requiring
-# changes to the source code (other than regenerating rr_types.h).
-#
-# If you are sure that you will never use certain RR types you can disable
-# caching for them and make pdnsd slightly more efficient by placing a
-# '-' sign in front of the lines that define those types.
-# For a list of obsolete RR types see e.g.
-#   http://en.wikipedia.org/wiki/List_of_DNS_record_types .
-# Note that some RR types are essential for pdnsd; these are currently:
-#   A, NS, CNAME, SOA, PTR, MX and (if you want IPv6 support) AAAA.
-# Disabling caching for these types will cause pdnsd to fail to compile
-# or cause a fatal run-time error.
-#
-# Removing a '-' sign to enable caching can be risky if the support in
-# the pdnsd code is missing or inadequate, so only do this if you really know
-# what you are doing. SPF records are supported, however, so it should be safe
-# to enable caching for them.
-
-# RR TYPE      Value (class) and meaning                      Reference
-# -----------  ---------------------------------------------  ---------
-+ A            1 (RECORD) a host address                      [RFC 1035]
-+ NS           2 an authoritative name server                 [RFC 1035]
-  MD           3 a mail destination (Obsolete - use MX)       [RFC 1035]
-  MF           4 a mail forwarder (Obsolete - use MX)         [RFC 1035]
-+ CNAME        5 (ALIAS) the canonical name for an alias      [RFC 1035]
-+ SOA          6 marks the start of a zone of authority       [RFC 1035]
-  MB           7 a mailbox domain name (EXPERIMENTAL)         [RFC 1035]
-  MG           8 a mail group member (EXPERIMENTAL)           [RFC 1035]
-  MR           9 a mail rename domain name (EXPERIMENTAL)     [RFC 1035]
-  NULL         10 a null RR (EXPERIMENTAL)                    [RFC 1035]
-  WKS          11 (RECORD) a well known service description   [RFC 1035]
-+ PTR          12 (PTR) a domain name pointer                 [RFC 1035]
-  HINFO        13 (RECORD) host information                   [RFC 1035]
-  MINFO        14 mailbox or mail list information            [RFC 1035]
-+ MX           15 mail exchange                               [RFC 1035]
-+ TXT          16 text strings                                [RFC 1035]
-  RP           17 (RECORD) for Responsible Person             [RFC 1183]
-  AFSDB        18 (RECORD) for AFS Data Base location         [RFC 1183][RFC 5864]
-  X25          19 (RECORD) for X.25 PSDN address              [RFC 1183]
-  ISDN         20 (RECORD) for ISDN address                   [RFC 1183]
-  RT           21 (RECORD) for Route Through                  [RFC 1183]
-  NSAP         22 (RECORD) for NSAP address, NSAP style A record [RFC 1706]
-  NSAP-PTR     23 (PTR) for domain name pointer, NSAP style   [RFC 1348]
-  SIG          24 for security signature                      [RFC 4034][RFC 3755][RFC 2535]
-  KEY          25 for security key                            [RFC 4034][RFC 3755][RFC 2535]
-  PX           26 X.400 mail mapping information              [RFC 2163]
-  GPOS         27 (RECORD) Geographical Position              [RFC 1712]
-+ AAAA         28 (RECORD) IP6 Address                        [RFC 3596]
-  LOC          29 (RECORD) Location Information               [RFC 1876]
-  NXT          30 Next Domain - OBSOLETE                      [RFC 3755][RFC 2535]
-  EID          31 (RECORD) Endpoint Identifier                [Patton]
-  NIMLOC       32 (RECORD) Nimrod Locator                     [Patton]
-  SRV          33 (RECORD) Server Selection                   [RFC 2782]
-  ATMA         34 (RECORD) ATM Address                        [ATMDOC]
-  NAPTR        35 (RECORD) Naming Authority Pointer           [RFC 2915][RFC 2168][RFC 3403]
-  KX           36 (RECORD) Key Exchanger                      [RFC 2230]
-  CERT         37 (RECORD) CERT                               [RFC 4398]
-- A6           38 A6 (Experimental)                           [RFC 3226][RFC 2874]
-- DNAME        39 (ALIAS) DNAME                               [RFC 2672]
-- SINK         40 SINK                                        [Eastlake]
-- OPT          41 OPT                                         [RFC 2671]
-  APL          42 APL                                         [RFC 3123]
-  DS           43 Delegation Signer                           [RFC 4034][RFC 3658]
-  SSHFP        44 SSH Key Fingerprint                         [RFC 4255]
-  IPSECKEY     45 IPSECKEY                                    [RFC 4025]
-  RRSIG        46 RRSIG                                       [RFC 4034][RFC 3755]
-  NSEC         47 NSEC                                        [RFC 4034][RFC 3755]
-  DNSKEY       48 DNSKEY                                      [RFC 4034][RFC 3755]
-  DHCID        49 DHCID                                       [RFC 4701]
-  NSEC3        50 NSEC3                                       [RFC 5155]
-  NSEC3PARAM   51 NSEC3PARAM                                  [RFC 5155]
-# Unassigned   52-54
-- HIP          55 Host Identity Protocol                      [RFC 5205]
-- NINFO        56 NINFO                                       [Reid]
-- RKEY         57 RKEY                                        [Reid]
-- TALINK       58 Trust Anchor LINK                           [Wijngaards]
-# Unassigned   59-98
-- SPF          99 Sender Policy Framework                     [RFC 4408]
-- UINFO        100                                            [IANA-Reserved]
-- UID          101                                            [IANA-Reserved]
-- GID          102                                            [IANA-Reserved]
-- UNSPEC       103                                            [IANA-Reserved]
-# Unassigned   104-248
diff --git a/jni/pdnsd/src/servers.c b/jni/pdnsd/src/servers.c
deleted file mode 100644
index 8549865..0000000
--- a/jni/pdnsd/src/servers.c
+++ /dev/null
@@ -1,856 +0,0 @@
-/* servers.c - manage a set of dns servers
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2005, 2007, 2009, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/wait.h>
-#include <string.h>
-#include <errno.h>
-#include <signal.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <fnmatch.h>
-#include <string.h>
-#include "thread.h"
-#include "error.h"
-#include "servers.h"
-#include "conff.h"
-#include "consts.h"
-#include "icmp.h"
-#include "netdev.h"
-#include "helpers.h"
-#include "dns_query.h"
-
-
-/*
- * We may be a little over-strict with locks here. Never mind...
- * Also, there may be some code-redundancy regarding uptests. It saves some locks, though.
- */
-
-static pthread_mutex_t servers_lock = PTHREAD_MUTEX_INITIALIZER;
-static pthread_cond_t server_data_cond = PTHREAD_COND_INITIALIZER;
-static pthread_cond_t server_test_cond = PTHREAD_COND_INITIALIZER;
-static int server_data_users = 0, server_status_ping = 0;
-/* Used to notify the server status thread that it should discontinue uptests. */
-volatile int signal_interrupt=0;
-#define statusintsig SIGHUP
-
-static short retest_flag=0;
-
-static char schm[32];
-
-static void sigint_handler(int signum);
-
-/*
- * Execute an individual uptest. Call with locks applied
- */
-static int uptest (servparm_t *serv, int j)
-{
-	int ret=0, count_running_ping=0;
-	pdnsd_a *s_addr= PDNSD_A2_TO_A(&DA_INDEX(serv->atup_a,j).a);
-
-	DEBUG_PDNSDA_MSG("performing uptest (type=%s) for %s\n",const_name(serv->uptest),PDNSDA2STR(s_addr));
-
-	/* Unlock the mutex because some of the tests may take a while. */
-	++server_data_users;
-	if((serv->uptest==C_PING || serv->uptest==C_QUERY) && pthread_equal(pthread_self(),servstat_thrid)) {
-		/* Inform other threads that a ping is in progress. */
-		count_running_ping=1;
-		++server_status_ping;
-	}
-	pthread_mutex_unlock(&servers_lock);
-
-	switch (serv->uptest) {
-	case C_NONE:
-		/* Don't change */
-		ret=DA_INDEX(serv->atup_a,j).is_up;
-		break;
-	case C_PING:
-		ret=ping(is_inaddr_any(&serv->ping_a) ? s_addr : &serv->ping_a, serv->ping_timeout,PINGREPEAT)!=-1;
-		break;
-	case C_IF:
- 	case C_DEV:
-	case C_DIALD:
- 		ret=if_up(serv->interface);
-#if (TARGET==TARGET_LINUX)
- 		if (ret!=0) {
-			if(serv->uptest==C_DEV)
-				ret=dev_up(serv->interface,serv->device);
-			else if (serv->uptest==C_DIALD)
-				ret=dev_up("diald",serv->device);
- 		}
-#endif
-		break;
-	case C_EXEC: {
-	  	pid_t pid;
-
-		if ((pid=fork())==-1) {
-			DEBUG_MSG("Could not fork to perform exec uptest: %s\n",strerror(errno));
-			break;
-		} else if (pid==0) { /* child */
-			/*
-			 * If we ran as setuid or setgid, do not inherit this to the
-			 * command. This is just a last guard. Running pdnsd as setuid()
-			 * or setgid() is a no-no.
-			 */
-			if (setgid(getgid()) == -1 || setuid(getuid()) == -1) {
-				log_error("Could not reset uid or gid: %s",strerror(errno));
-				_exit(1);
-			}
-			/* Try to setuid() to a different user as specified. Good when you
-			   don't want the test command to run as root */
-			if (!run_as(serv->uptest_usr)) {
-				_exit(1);
-			}
-			{
-			    struct rlimit rl; int i;
-			    /*
-			     * Mark all open fd's FD_CLOEXEC for paranoia reasons.
-			     */
-			    if (getrlimit(RLIMIT_NOFILE, &rl) == -1) {
-				    log_error("getrlimit() failed: %s",strerror(errno));
-				    _exit(1);
-			    }
-			    for (i = 0; i < rl.rlim_max; i++) {
-				    if (fcntl(i, F_SETFD, FD_CLOEXEC) == -1 && errno != EBADF) {
-					    log_error("fcntl(F_SETFD) failed: %s",strerror(errno));
-					    _exit(1);
-				    }
-			    }
-			}
-			execl("/bin/sh", "uptest_sh","-c",serv->uptest_cmd,(char *)NULL);
-			_exit(1); /* failed execl */
-		} else { /* parent */
-			int status;
-			pid_t wpid = waitpid(pid,&status,0);
-			if (wpid==pid) {
-				if(WIFEXITED(status)) {
-					int exitstatus=WEXITSTATUS(status);
-					DEBUG_MSG("uptest command \"%s\" exited with status %d\n",
-						  serv->uptest_cmd, exitstatus);
-					ret=(exitstatus==0);
-				}
-#if DEBUG>0
-				else if(WIFSIGNALED(status)) {
-					DEBUG_MSG("uptest command \"%s\" was terminated by signal %d\n",
-						  serv->uptest_cmd, WTERMSIG(status));
-				}
-				else {
-					DEBUG_MSG("status of uptest command \"%s\" is of unkown type (0x%x)\n",
-						  serv->uptest_cmd, status);
-				}
-#endif
-			}
-#if DEBUG>0
-			else if (wpid==-1) {
-				DEBUG_MSG("Error while waiting for uptest command \"%s\" to terminate: "
-					  "waitpid for pid %d failed: %s\n",
-					  serv->uptest_cmd, pid, strerror(errno));
-			}
-			else {
-				DEBUG_MSG("Error while waiting for uptest command \"%s\" to terminate: "
-					  "waitpid returned %d, expected pid %d\n",
-					  serv->uptest_cmd, wpid, pid);
-			}
-#endif
-		}
-	}
-		break;
-	case C_QUERY:
-		ret=query_uptest(s_addr, serv->port, serv->query_test_name,
-				 serv->timeout>=global.timeout?serv->timeout:global.timeout,
-				 PINGREPEAT);
-	} /* end of switch */
-
-	pthread_mutex_lock(&servers_lock);
-	if(count_running_ping)
-		--server_status_ping;
-	PDNSD_ASSERT(server_data_users>0, "server_data_users non-positive before attempt to decrement it");
-	if (--server_data_users==0) pthread_cond_broadcast(&server_data_cond);
-
-	DEBUG_PDNSDA_MSG("result of uptest for %s: %s\n",
-			 PDNSDA2STR(s_addr),
-			 ret?"OK":"failed");
-	return ret;
-}
-
-static int scheme_ok(servparm_t *serv)
-{
-	if (serv->scheme[0]) {
-		if (!schm[0]) {
-		  	ssize_t nschm;
-			int sc = open(global.scheme_file, O_RDONLY);
-			char *s;
-			if (sc<0)
-				return 0;
-			nschm = read(sc, schm, sizeof(schm)-1);
-			close(sc);
-			if (nschm < 0)
-				return 0;
-			schm[nschm] = '\0';
-			s = strchr(schm, '\n');
-			if (s)
-				*s='\0';
-		}
-		if (fnmatch(serv->scheme, schm, 0))
-		  	return 0;
-	}
-	return 1;
-}
-
-/* Internal server test. Call with locks applied.
-   May test a single server ip or several collectively.
- */
-static void retest(int i, int j)
-{
-  time_t s_ts;
-  servparm_t *srv=&DA_INDEX(servers,i);
-  int nsrvs=DA_NEL(srv->atup_a);
-
-  if(!nsrvs) return;
-  if(j>=0) {
-    if(j<nsrvs) nsrvs=j+1;  /* test just one */
-  }
-  else {
-    j=0;        /* test a range of servers */
-  }
-
-  if(!scheme_ok(srv)) {
-    s_ts=time(NULL);
-
-    for(;j<nsrvs;++j) {
-      atup_t *at=&DA_INDEX(srv->atup_a,j);
-      at->is_up=0;
-      at->i_ts=s_ts;
-    }
-  }
-  else if(srv->uptest==C_NONE) {
-    s_ts=time(NULL);
-
-    for(;j<nsrvs;++j) {
-	DA_INDEX(srv->atup_a,j).i_ts=s_ts;
-    }
-  }
-  else if(srv->uptest==C_QUERY || (srv->uptest==C_PING && is_inaddr_any(&srv->ping_a))) {  /* test each ip address separately */
-    for(;j<nsrvs;++j) {
-	atup_t *at=&DA_INDEX(srv->atup_a,j);
-	s_ts=time(NULL);
-	at->is_up=uptest(srv,j);
-	if(signal_interrupt)
-	  break;
-	at->i_ts=s_ts;
-    }
-  }
-  else {  /* test ip addresses collectively */
-    int res;
-
-    s_ts=time(NULL);
-    res=uptest(srv,j);
-    for(;j<nsrvs;++j) {
-      atup_t *at=&DA_INDEX(srv->atup_a,j);
-      at->is_up=res;
-      if(signal_interrupt && srv->uptest==C_PING)
-	continue;
-      at->i_ts=s_ts;
-    }
-  }
-}
-
-
-/* This is called by the server status thread to discover the addresses of root servers.
-   Call with server_lock applied.
-*/
-static addr2_array resolv_rootserver_addrs(atup_array a, int port, char edns_query, time_t timeout)
-{
-	addr2_array retval=NULL;
-
-	/* Unlock the mutex because this may take a while. */
-	++server_data_users;
-	pthread_mutex_unlock(&servers_lock);
-
-	retval= dns_rootserver_resolv(a,port,edns_query,timeout);
-
-	pthread_mutex_lock(&servers_lock);
-	PDNSD_ASSERT(server_data_users>0, "server_data_users non-positive before attempt to decrement it");
-	if (--server_data_users==0) pthread_cond_broadcast(&server_data_cond);
-
-	return retval;
-}
-
-/*
- * Refresh the server status by pinging or testing the interface in the given interval.
- * Note that you may get inaccuracies in the dimension of the ping timeout or the runtime
- * of your uptest command if you have uptest=ping or uptest=exec for at least one server.
- * This happens when all the uptests for the first n servers take more time than the inteval
- * of n+1 (or 0 when n+1>servnum). I do not think that these delays are critical, so I did
- * not to anything about that (because that may also be costly).
- */
-void *servstat_thread(void *p)
-{
-	struct sigaction action;
-	int keep_testing;
-
-	/* (void)p; */  /* To inhibit "unused variable" warning */
-
-	THREAD_SIGINIT;
-
-	pthread_mutex_lock(&servers_lock);
-	/* servstat_thrid=pthread_self(); */
-
-	signal_interrupt=0;
-	action.sa_handler = sigint_handler;
-	sigemptyset(&action.sa_mask);
-	action.sa_flags = 0;
-	if(sigaction(statusintsig, &action, NULL) == 0) {
-		sigset_t smask;
-		sigemptyset(&smask);
-		sigaddset(&smask, statusintsig);
-		pthread_sigmask(SIG_UNBLOCK,&smask,NULL);
-	}
-	else {
-		log_warn("Cannot install signal handler for server status thread: %s\n",strerror(errno));
-	}
-
-	for(;;) {
-		do {
-			int i,n;
-			keep_testing=0;
-			retest_flag=0;
-			schm[0] = '\0';
-			n=DA_NEL(servers);
-			for (i=0;i<n;++i) {
-				servparm_t *sp=&DA_INDEX(servers,i);
-				int j,m;
-				if(sp->rootserver==2) {
-					/* First get addresses of root servers. */
-					addr2_array adrs;
-					int l, one_up=0;
-
-					if(!scheme_ok(sp)) {
-						time_t now=time(NULL);
-						m=DA_NEL(sp->atup_a);
-						for(j=0;j<m;++j)
-							DA_INDEX(sp->atup_a,j).i_ts=now;
-					} else if(sp->uptest==C_PING || sp->uptest==C_QUERY) {
-						/* Skip ping or query tests until after discovery. */
-						if(sp->interval>0)
-							one_up= DA_NEL(sp->atup_a);
-						else {
-							time_t now=time(NULL);
-							m=DA_NEL(sp->atup_a);
-							for(j=0;j<m;++j) {
-								atup_t *at=&DA_INDEX(sp->atup_a,j);
-								if(at->is_up || at->i_ts==0)
-									one_up=1;
-								at->i_ts=now;
-							}
-						}
-					}
-					else {
-						retest(i,-1);
-
-						m=DA_NEL(sp->atup_a);
-						for(j=0;j<m;++j) {
-							if(DA_INDEX(sp->atup_a,j).is_up) {
-								one_up=1;
-								break;
-							}
-						}
-					}
-
-					if(!one_up) {
-						if (needs_intermittent_testing(sp)) keep_testing=1;
-						continue;
-					}
-
-					DEBUG_MSG("Attempting to discover root servers for server section #%d.\n",i);
-					adrs=resolv_rootserver_addrs(sp->atup_a,sp->port,sp->edns_query,sp->timeout);
-					l= DA_NEL(adrs);
-					if(l>0) {
-						struct timeval now;
-						struct timespec timeout;
-						atup_array ata;
-						DEBUG_MSG("Filling server section #%d with %d root server addresses.\n",i,l);
-						gettimeofday(&now,NULL);
-						timeout.tv_sec = now.tv_sec + 60;     /* time out after 60 seconds */
-						timeout.tv_nsec = now.tv_usec * 1000;
-						while (server_data_users>0) {
-							if(pthread_cond_timedwait(&server_data_cond, &servers_lock, &timeout) == ETIMEDOUT) {
-								DEBUG_MSG("Timed out while waiting for exclusive access to server data"
-									  " to set root server addresses of server section #%d\n",i);
-								da_free(adrs);
-								keep_testing=1;
-								continue;
-							}
-						}
-						ata = DA_CREATE(atup_array, l);
-						if(!ata) {
-							log_warn("Out of memory in servstat_thread() while discovering root servers.");
-							da_free(adrs);
-							keep_testing=1;
-							continue;
-						}
-						for(j=0; j<l; ++j) {
-							atup_t *at = &DA_INDEX(ata,j);
-							at->a = DA_INDEX(adrs,j);
-							at->is_up=sp->preset;
-							at->i_ts= sp->interval<0 ? time(NULL): 0;
-						}
-						da_free(sp->atup_a);
-						sp->atup_a=ata;
-						da_free(adrs);
-						/* Successfully set IP addresses for this server section. */
-						sp->rootserver=1;
-					}
-					else {
-						DEBUG_MSG("Failed to discover root servers in servstat_thread() (server section #%d).\n",i);
-						if(adrs) da_free(adrs);
-						if(DA_NEL(sp->atup_a)) keep_testing=1;
-						continue;
-					}
-				}
-
-				if (needs_testing(sp)) keep_testing=1;
-				m=DA_NEL(sp->atup_a);
-				for(j=0;j<m;++j)
-					if(DA_INDEX(sp->atup_a,j).i_ts)
-						goto individual_tests;
-				/* Test collectively */
-				if(!signal_interrupt) retest(i,-1);
-				continue;
-
-			individual_tests:
-				for(j=0; !signal_interrupt && j<m; ++j) {
-					time_t ts=DA_INDEX(sp->atup_a,j).i_ts, now;
-
-					if (ts==0 /* Always test servers with timestamp 0 */ ||
-					    (needs_intermittent_testing(sp) &&
-					     ((now=time(NULL))-ts>sp->interval ||
-					      ts>now /* kluge for clock skew */)))
-					{
-						retest(i,j);
-					}
-				}
-			}
-		} while(!signal_interrupt && retest_flag);
-
-		signal_interrupt=0;
-
-		/* Break the loop and exit the thread if it is no longer needed. */
-		if(!keep_testing) break;
-
-		{
-			struct timeval now;
-			struct timespec timeout;
-			time_t minwait;
-			int i,n,retval;
-
-			gettimeofday(&now,NULL);
-			minwait=3600; /* Check at least once every hour. */
-			n=DA_NEL(servers);
-			for (i=0;i<n;++i) {
-				servparm_t *sp=&DA_INDEX(servers,i);
-				int j,m=DA_NEL(sp->atup_a);
-				for(j=0;j<m;++j) {
-					time_t ts= DA_INDEX(sp->atup_a,j).i_ts;
-					if(ts==0) {
-						/* Test servers with timestamp 0 without delay */
-						if(minwait > 0) minwait=0;
-					}
-					else if(needs_intermittent_testing(sp)) {
-						time_t wait= ts + sp->interval - now.tv_sec;
-						if(wait < minwait) minwait=wait;
-					}
-				}
-			}
-			timeout.tv_sec = now.tv_sec;
-			if(minwait>0)
-				timeout.tv_sec += minwait;
-			timeout.tv_nsec = now.tv_usec * 1000 + 500000000;  /* wait at least half a second. */
-			if(timeout.tv_nsec>=1000000000) {
-				timeout.tv_nsec -= 1000000000;
-				++timeout.tv_sec;
-			}
-			/* While we wait for a server_test_cond condition or a timeout
-			   the servers_lock mutex is unlocked, so other threads can access
-			   server data
-			*/
-			retval=pthread_cond_timedwait(&server_test_cond, &servers_lock, &timeout);
-			DEBUG_MSG("Server status thread woke up (%s signal).\n",
-				  retval==0?"test condition":retval==ETIMEDOUT?"timer":retval==EINTR?"interrupt":"error");
-		}
-	}
-
-	/* server status thread no longer needed. */
-	servstat_thrid=main_thrid;
-	pthread_mutex_unlock(&servers_lock);
-	DEBUG_MSG("Server status thread exiting.\n");
-	return NULL;
-}
-
-/*
- * Start the server status thread.
- */
-int start_servstat_thread()
-{
-	pthread_t stt;
-
-	int rv=pthread_create(&stt,&attr_detached,servstat_thread,NULL);
-	if (rv)
-		log_warn("Failed to start server status thread: %s",strerror(rv));
-	else {
-		servstat_thrid=stt;
-		log_info(2,"Server status thread started.");
-	}
-	return rv;
-}
-
-/*
- * This can be used to mark a server (or a list of nadr servers) up (up=1) or down (up=0),
- * or to schedule an immediate retest (up=-1).
- * We can't always use indices to identify a server, because we allow run-time
- * configuration of server addresses, so the servers are identified by their IP addresses.
- */
-void sched_server_test(pdnsd_a *sa, int nadr, int up)
-{
-	int k,signal_test;
-
-	pthread_mutex_lock(&servers_lock);
-
-	signal_test=0;
-	/* This obviously isn't very efficient, but nadr should be small
-	   and anything else would introduce considerable overhead */
-	for(k=0;k<nadr;++k) {
-		pdnsd_a *sak= &sa[k];
-		int i,n=DA_NEL(servers);
-		for(i=0;i<n;++i) {
-			servparm_t *sp=&DA_INDEX(servers,i);
-			int j,m=DA_NEL(sp->atup_a);
-			for(j=0;j<m;++j) {
-				atup_t *at=&DA_INDEX(sp->atup_a,j);
-				if(equiv_inaddr2(sak,&at->a)) {
-					if(up>=0) {
-						at->is_up=up;
-						at->i_ts=time(NULL);
-						DEBUG_PDNSDA_MSG("Marked server %s %s.\n",PDNSDA2STR(sak),up?"up":"down");
-					}
-					else if(at->i_ts) {
-						/* A test may take a while, and we don't want to hold
-						   up the calling thread.
-						   Instead we set the timestamp to zero and signal
-						   a condition which should wake up the server test thread.
-						*/
-						at->i_ts=0;
-						signal_test=1;
-					}
-				}
-			}
-		}
-	}
-	if(signal_test) pthread_cond_signal(&server_test_cond);
-
-	pthread_mutex_unlock(&servers_lock);
-}
-
-/* Mark a set of servers up or down or schedule uptests.
- * If i>=0 only the server section with index i is scanned,
- * if i<0 all sections are scanned.
- * Only sections matching label are actually set. A NULL label matches
- * any section.
- * up=1 or up=0 means mark server up or down, up=-1 means retest.
- *
- * A non-zero return value indicates an error.
- */
-int mark_servers(int i, char *label, int up)
-{
-	int retval=0,n,signal_test;
-
-	pthread_mutex_lock(&servers_lock);
-
-	signal_test=0;
-	n=DA_NEL(servers);
-	if(i>=0) {
-		/* just one section */
-		if(i<n) n=i+1;
-	}
-	else {
-		i=0; /* scan all sections */
-	}
-	for(;i<n;++i) {
-		servparm_t *sp=&DA_INDEX(servers,i);
-		if(!label || (sp->label && !strcmp(sp->label,label))) {
-			int j,m=DA_NEL(sp->atup_a);
-
-			/* If a section with undiscovered root servers is marked up, signal a test. */
-			if(m && sp->rootserver>1 && up>0) signal_test=1;
-
-			for(j=0;j<m;++j) {
-				atup_t *at=&DA_INDEX(sp->atup_a,j);
-				if(up>=0) {
-					at->is_up=up;
-					at->i_ts=time(NULL);
-				}
-				else if(at->i_ts) {
-					/* A test may take a while, and we don't want to hold
-					   up the calling thread.
-					   Instead we set the timestamp to zero and signal
-					   a condition which should wake up the server test thread.
-					*/
-					at->i_ts=0;
-					signal_test=1;
-				}
-			}
-		}
-	}
-	if(signal_test) {
-		if(pthread_equal(servstat_thrid,main_thrid))
-			retval=start_servstat_thread();
-		else {
-			retest_flag=1;
-			retval=pthread_cond_signal(&server_test_cond);
-		}
-	}
-
-	pthread_mutex_unlock(&servers_lock);
-	return retval;
-}
-
-/*
- * Test called by the dns query handlers to handle interval=onquery cases.
- */
-void test_onquery()
-{
-	int i,n,signal_test;
-
-	pthread_mutex_lock(&servers_lock);
-	schm[0] = '\0';
-	signal_test=0;
-	n=DA_NEL(servers);
-	for (i=0;i<n;++i) {
-		servparm_t *sp=&DA_INDEX(servers,i);
-		if (sp->interval==-1) {
-			if(sp->rootserver<=1)
-				retest(i,-1);
-			else {
-				/* We leave root-server discovery to the server status thread */
-				int j,m=DA_NEL(sp->atup_a);
-				for(j=0;j<m;++j)
-					DA_INDEX(sp->atup_a,j).i_ts=0;
-				signal_test=1;
-			}
-		}
-	}
-
-	if(signal_test) {
-		int rv;
-		if(pthread_equal(servstat_thrid,main_thrid))
-			start_servstat_thread();
-		else {
-			retest_flag=1;
-			if((rv=pthread_cond_signal(&server_test_cond))) {
-				DEBUG_MSG("test_onquery(): couldn't signal server status thread: %s\n",strerror(rv));
-			}
-		}
-	}
-
-	pthread_mutex_unlock(&servers_lock);
-}
-
-/* non-exclusive lock, for read only access to server data. */
-void lock_server_data()
-{
-	pthread_mutex_lock(&servers_lock);
-	++server_data_users;
-	pthread_mutex_unlock(&servers_lock);
-}
-
-void unlock_server_data()
-{
-	pthread_mutex_lock(&servers_lock);
-	PDNSD_ASSERT(server_data_users>0, "server_data_users non-positive before attempt to decrement it");
-	if (--server_data_users==0) pthread_cond_broadcast(&server_data_cond);
-	pthread_mutex_unlock(&servers_lock);
-}
-
-/* Try to obtain an exclusive lock, needed for modifying server data.
-   Return 1 on success, 0 on failure (time out after tm seconds).
-*/
-int exclusive_lock_server_data(int tm)
-{
-	struct timeval now;
-	struct timespec timeout;
-
-	pthread_mutex_lock(&servers_lock);
-	if(server_status_ping>0 && !pthread_equal(servstat_thrid,main_thrid)) {
-		int err;
-		/* Try to interrupt server status thread to prevent delays. */
-		DEBUG_MSG("Sending server status thread an interrupt signal.\n");
-		if((err=pthread_kill(servstat_thrid,statusintsig))) {
-			DEBUG_MSG("pthread_kill failed: %s\n",strerror(err));
-		}
-	}
-	gettimeofday(&now,NULL);
-	timeout.tv_sec = now.tv_sec + tm;     /* time out after tm seconds */
-	timeout.tv_nsec = now.tv_usec * 1000;
-	while (server_data_users>0) {
-		if(pthread_cond_timedwait(&server_data_cond, &servers_lock, &timeout) == ETIMEDOUT) {
-			pthread_mutex_unlock(&servers_lock);
-			return 0;
-		}
-	}
-	return 1;
-}
-/* Call this to free the lock obtained with exclusive_lock_server_data().
-   If retest is nonzero, the server-status thread is reactivated to check
-   which servers are up. This is useful in case the configuration has changed.
-*/
-void exclusive_unlock_server_data(int retest)
-{
-	if(retest) {
-		if(pthread_equal(servstat_thrid,main_thrid))
-			start_servstat_thread();
-		else
-			pthread_cond_signal(&server_test_cond);
-	}
-	pthread_mutex_unlock(&servers_lock);
-}
-
-/*
-  Change addresses of servers during runtime.
-  i is the number of the server section to change.
-  ar should point to an array of IP addresses (may be NULL).
-  up=1 or up=0 means mark server up or down afterwards,
-  up=-1 means retest.
-
-  A non-zero return value indicates an error.
-*/
-int change_servers(int i, addr_array ar, int up)
-{
-	int retval=0,j,change,signal_test;
-	int n;
-	servparm_t *sp;
-
-	pthread_mutex_lock(&servers_lock);
-
-	signal_test=0;
-	change=0;
-	n=DA_NEL(ar);
-	sp=&DA_INDEX(servers,i);
-	if(n != DA_NEL(sp->atup_a) || sp->rootserver>1)
-		change=1;
-	else {
-		int j;
-		for(j=0;j<n;++j)
-			if(!same_inaddr2(&DA_INDEX(ar,j),&DA_INDEX(sp->atup_a,j).a)) {
-				change=1;
-				break;
-			}
-	}
-	if(change) {
-		/* we need exclusive access to the server data to make the changes */
-		struct timeval now;
-		struct timespec timeout;
-		atup_array ata;
-
-		if(server_status_ping>0 && !pthread_equal(servstat_thrid,main_thrid)) {
-			int err;
-			/* Try to interrupt server status thread to prevent delays. */
-			DEBUG_MSG("Sending server status thread an interrupt signal.\n");
-			if((err=pthread_kill(servstat_thrid,statusintsig))) {
-				DEBUG_MSG("pthread_kill failed: %s\n",strerror(err));
-			}
-		}
-
-		DEBUG_MSG("Changing IPs of server section #%d\n",i);
-		gettimeofday(&now,NULL);
-		timeout.tv_sec = now.tv_sec + 60;     /* time out after 60 seconds */
-		timeout.tv_nsec = now.tv_usec * 1000;
-		while (server_data_users>0) {
-			if(pthread_cond_timedwait(&server_data_cond, &servers_lock, &timeout) == ETIMEDOUT) {
-				retval=ETIMEDOUT;
-				goto unlock_mutex;
-			}
-		}
-
-		ata= DA_CREATE(atup_array, n);
-		if(!ata) {
-			log_warn("Out of memory in change_servers().");
-			retval=ENOMEM;
-			goto unlock_mutex;
-		}
-		da_free(sp->atup_a);
-		sp->atup_a=ata;
-		/* Stop trying to discover rootservers
-		   if we set the addresses using this routine. */
-		if(sp->rootserver>1) sp->rootserver=1;
-	}
-
-	for(j=0; j<n; ++j) {
-		atup_t *at = &DA_INDEX(sp->atup_a,j);
-		if(change) {
-			SET_PDNSD_A2(&at->a, &DA_INDEX(ar,j));
-			at->is_up=sp->preset;
-		}
-		if(up>=0) {
-			at->is_up=up;
-			at->i_ts=time(NULL);
-		}
-		else if(change || at->i_ts) {
-			/* A test may take a while, and we don't want to hold
-			   up the calling thread.
-			   Instead we set the timestamp to zero and signal
-			   a condition which should wake up the server test thread.
-			*/
-			at->i_ts=0;
-			signal_test=1;
-		}
-	}
-
-	if(signal_test) {
-		if(pthread_equal(servstat_thrid,main_thrid))
-			retval=start_servstat_thread();
-		else {
-			retest_flag=1;
-			retval=pthread_cond_signal(&server_test_cond);
-		}
-	}
-
- unlock_mutex:
-	pthread_mutex_unlock(&servers_lock);
-	return retval;
-}
-
-
-/*
-  The signal handler for the signal to tell the server status thread to discontinue testing.
-*/
-static void sigint_handler(int signum)
-{
-	signal_interrupt=1;
-}
diff --git a/jni/pdnsd/src/servers.h b/jni/pdnsd/src/servers.h
deleted file mode 100644
index fd263c0..0000000
--- a/jni/pdnsd/src/servers.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* servers.h - manage a set of dns servers
-
-   Copyright (C) 2000 Thomas Moestl
-   Copyright (C) 2002, 2003, 2004, 2005 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _SERVERS_H_
-#define _SERVERS_H_
-
-#include <config.h>
-#include "consts.h"
-
-/* Number of ping timeouts before we take a server offline. */
-#define PINGREPEAT 2
-
-extern pthread_t servstat_thrid;
-extern volatile int signal_interrupt;
-
-
-int start_servstat_thread(void);
-void sched_server_test(pdnsd_a *sa, int nadr, int up);
-int mark_servers(int i, char* label, int up);
-void test_onquery(void);
-void lock_server_data();
-void unlock_server_data();
-int exclusive_lock_server_data(int tm);
-void exclusive_unlock_server_data(int retest);
-int change_servers(int i, addr_array ar, int up);
-
-inline static int needs_testing(servparm_t *sp)
-  __attribute__((always_inline));
-inline static int needs_testing(servparm_t *sp)
-{
-  return ((sp->interval>0 || sp->interval==-2) && (sp->uptest!=C_NONE || sp->scheme[0]));
-}
-
-inline static int needs_intermittent_testing(servparm_t *sp)
-  __attribute__((always_inline));
-inline static int needs_intermittent_testing(servparm_t *sp)
-{
-  return (sp->interval>0 && (sp->uptest!=C_NONE || sp->scheme[0]));
-}
-
-inline static int is_interrupted_servstat_thread()
-  __attribute__((always_inline));
-inline static int is_interrupted_servstat_thread()
-{
-  return (signal_interrupt && pthread_equal(pthread_self(),servstat_thrid));
-}
-
-#endif
diff --git a/jni/pdnsd/src/sort_namevalues.pl b/jni/pdnsd/src/sort_namevalues.pl
deleted file mode 100644
index 2014f49..0000000
--- a/jni/pdnsd/src/sort_namevalues.pl
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-
-my %dic;
-my $maxkeylen=0;
-
-while(<>) {
-    if(/"(\w+)".*?(\w+)/) {
-	my $key=$1; my $val=$2;
-	if($dic{$key}) {die "The key \"$key\" does not have a unique value.\n"}
-	$dic{$key}=$val;
-	if(length($key)>$maxkeylen) {$maxkeylen=length($key)}
-    }
-    else {die "Can't find key-value pair in following line:\n$_\n"}
-}
-
-my $linenr=0;
-foreach my $key (sort(keys %dic)) {
-    if($linenr++) {print ",\n"}
-    printf("\t{%-*s%s}",$maxkeylen+4,"\"$key\",",$dic{$key});
-}
-print "\n";
-
-exit
diff --git a/jni/pdnsd/src/status.c b/jni/pdnsd/src/status.c
deleted file mode 100644
index 4240069..0000000
--- a/jni/pdnsd/src/status.c
+++ /dev/null
@@ -1,824 +0,0 @@
-/* status.c - Allow control of a running server using a socket
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2011 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/utsname.h>
-#include <errno.h>
-#include <pthread.h>
-#include <string.h>
-#include <ctype.h>
-#include <unistd.h>
-#include <signal.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <stddef.h>	/* for offsetof */
-#include "ipvers.h"
-#include "status.h"
-#include "thread.h"
-#include "cache.h"
-#include "error.h"
-#include "servers.h"
-#include "dns_answer.h"
-#include "helpers.h"
-#include "conf-parser.h"
-
-#if !defined(HAVE_ALLOCA) && !defined(alloca)
-#define alloca malloc
-#endif
-
-
-char *sock_path=NULL;
-int stat_sock;
-
-
-/* Print an error to the socket */
-static int print_serr(int rs, const char *msg)
-{
-	uint16_t cmd;
-
-	DEBUG_MSG("Sending error message to control socket: '%s'\n",msg);
-	cmd=htons(1);
-	if(write(rs,&cmd,sizeof(cmd))!=sizeof(cmd) ||
-	   write_all(rs,msg,strlen(msg))<0)
-	{
-		DEBUG_MSG("Error writing to control socket: %s\n",strerror(errno));
-		return 0;
-	}
-	return 1;
-}
-
-/* Print a success code to the socket */
-static int print_succ(int rs)
-{
-	uint16_t cmd;
-
-	cmd=htons(0);
-	if(write(rs,&cmd,sizeof(cmd))!=sizeof(cmd)) {
-		DEBUG_MSG("Error writing to control socket: %s\n"
-			  "Failed to send success code.\n",strerror(errno));
-		return 0;
-	}
-	return 1;
-}
-
-/* Read a cmd short */
-static int read_short(int fh, uint16_t *res)
-{
-	uint16_t cmd;
-
-	if (read(fh,&cmd,sizeof(cmd))!=sizeof(cmd)) {
-		/* print_serr(fh,"Bad arg."); */
-		return 0;
-	}
-	*res= ntohs(cmd);
-	return 1;
-}
-
-/* Read a cmd long */
-static int read_long(int fh, uint32_t *res)
-{
-	uint32_t cmd;
-
-	if (read(fh,&cmd,sizeof(cmd))!=sizeof(cmd)) {
-		/* print_serr(fh,"Bad arg."); */
-		return 0;
-	}
-	*res= ntohl(cmd);
-	return 1;
-}
-
-/* Read a string preceded by a char count.
-   A buffer of the right size is allocated to hold the result.
-   A return value of 1 means success,
-   -1 means the result is undefined (*res is set to NULL),
-   0 means read or allocation error.
-*/
-static int read_allocstring(int fh, char **res, unsigned *len)
-{
-	uint16_t count;
-	char *buf;
-	unsigned int nread;
-
-	if(!read_short(fh,&count)) return 0;
-	if(count==(uint16_t)(~0)) {*res=NULL; return -1;}
-	if(!(buf=malloc(count+1))) return 0;
-	nread=0;
-	while(nread<count) {
-		ssize_t m=read(fh,buf+nread,count-nread);
-		if(m<=0) {free(buf); return 0;}
-		nread+=m;
-	}
-	buf[count]=0;
-	*res=buf;
-	if(len) *len=count;
-	return 1;
-}
-
-/* Read a string preceded by a char count.
-   Place it in a buffer of size buflen and terminate with a null char.
-   A return value of 1 means success, -1 means not defined,
-   0 means error (read error, buffer too small).
-*/
-static int read_domain(int fh, char *buf, unsigned int buflen)
-{
-	uint16_t count;
-	unsigned int nread;
-
-	if(!read_short(fh,&count)) return 0;
-	if(count==(uint16_t)(~0)) return -1;
-	if(count >=buflen) return 0;
-	nread=0;
-	while(nread<count) {
-		ssize_t m=read(fh,buf+nread,count-nread);
-		if(m<=0) return 0;
-		nread+=m;
-	}
-	buf[count]=0;
-#if 0
-	if(count==0 || buf[count-1]!='.') {
-		if(count+1>=buflen) return 0;
-		buf[count]='.'; buf[count+1]=0;
-	}
-#endif
-	return 1;
-}
-
-static void *status_thread (void *p)
-{
-	THREAD_SIGINIT;
-	/* (void)p; */  /* To inhibit "unused variable" warning */
-
-	if (!global.strict_suid) {
-		if (!run_as(global.run_as)) {
-			pdnsd_exit();
-		}
-	}
-
-	if (listen(stat_sock,5)==-1) {
-		log_warn("Error: could not listen on socket: %s.\nStatus readback will be impossible",strerror(errno));
-		goto exit_thread;
-	}
-	for(;;) {
-		struct sockaddr_un ra;
-		socklen_t res=sizeof(ra);
-		int rs;
-		if ((rs=accept(stat_sock,(struct sockaddr *)&ra,&res))!=-1) {
-			uint16_t cmd;
-			DEBUG_MSG("Status socket query pending.\n");
-			if (read_short(rs,&cmd)) {
-			    /* Check magic number in command */
-			    if((cmd & 0xff00) == CTL_CMDVERNR) {
-				const char *errmsg;
-				cmd &= 0xff;
-				switch(cmd) {
-				case CTL_STATS: {
-					struct utsname nm;
-					DEBUG_MSG("Received STATUS query.\n");
-					if(!print_succ(rs))
-						break;
-					uname(&nm);
-					if(fsprintf(rs,"pdnsd-%s running on %s.\n",VERSION,nm.nodename)<0 ||
-					   report_cache_stat(rs)<0 ||
-					   report_thread_stat(rs)<0 ||
-					   report_conf_stat(rs)<0)
-					{
-						DEBUG_MSG("Error writing to control socket: %s\n"
-							  "Failed to send status report.\n",strerror(errno));
-					}
-				}
-					break;
-				case CTL_SERVER: {
-					char *label,*dnsaddr;
-					int indx;
-					uint16_t cmd2;
-					DEBUG_MSG("Received SERVER command.\n");
-					if (read_allocstring(rs,&label,NULL)<=0) {
-					    print_serr(rs,"Error reading server label.");
-					    break;
-					}
-					if (!read_short(rs,&cmd2)) {
-					    print_serr(rs,"Missing up|down|retest.");
-					    goto free_label_break;
-					}
-					if(!read_allocstring(rs, &dnsaddr,NULL)) {
-					    print_serr(rs,"Error reading DNS addresses.");
-					    goto free_label_break;
-					}
-					/* Note by Paul Rombouts:
-					   We are about to access server configuration data.
-					   Now that the configuration can be changed during run time,
-					   we should be using locks before accessing server config data, even if it
-					   is read-only access.
-					   However, as long as this is the only thread that calls reload_config_file()
-					   it should be OK to read the server config without locks, but it is
-					   something to keep in mind.
-					*/
-					{
-					    char *endptr;
-					    indx=strtol(label,&endptr,0);
-					    if(!*endptr) {
-						if (indx<0 || indx>=DA_NEL(servers)) {
-						    print_serr(rs,"Server index out of range.");
-						    goto free_dnsaddr_label_break;
-						}
-					    }
-					    else {
-						if (!strcmp(label, "all"))
-						    indx=-2; /* all servers */
-						else
-						    indx=-1; /* compare names */
-					    }
-					}
-					if(cmd2==CTL_S_UP || cmd2==CTL_S_DOWN || cmd2==CTL_S_RETEST) {
-					    if(!dnsaddr) {
-						if (indx==-1) {
-						    int i;
-						    for (i=0;i<DA_NEL(servers);++i) {
-							char *servlabel=DA_INDEX(servers,i).label;
-							if (servlabel && !strcmp(servlabel,label))
-							    goto found_label;
-						    }
-						    print_serr(rs,"Bad server label.");
-						    goto free_dnsaddr_label_break;
-						found_label:;
-						}
-						if(mark_servers(indx,(indx==-1)?label:NULL,(cmd2==CTL_S_RETEST)?-1:(cmd2==CTL_S_UP))==0)
-						    print_succ(rs);
-						else
-						    print_serr(rs,"Could not start up or signal server status thread.");
-					    }
-					    else { /* Change server addresses */
-						if(indx==-2) {
-						    print_serr(rs,"Can't use label \"all\" to change server addresses.");
-						    goto free_dnsaddr_label_break;
-						}
-						if(indx==-1) {
-						    int i;
-						    for(i=0;i<DA_NEL(servers);++i) {
-							char *servlabel=DA_INDEX(servers,i).label;
-							if (servlabel && !strcmp(servlabel,label)) {
-							    if(indx!=-1) {
-								print_serr(rs,"server label must be unique to change server addresses.");
-								goto free_dnsaddr_label_break;
-							    }
-							    indx=i;
-							}
-						    }
-						    if(indx==-1) {
-							print_serr(rs,"Bad server label.");
-							goto free_dnsaddr_label_break;
-						    }
-						}
-						{
-						    char *ipstr,*q=dnsaddr;
-						    addr_array ar=NULL;
-						    pdnsd_a addr;
-						    int err;
-						    for(;;) {
-							for(;;) {
-							    if(!*q) goto change_servs;
-							    if(*q!=',' && !isspace(*q)) break;
-							    ++q;
-							}
-							ipstr=q;
-							for(;;) {
-							    ++q;
-							    if(!*q) break;
-							    if(*q==',' || isspace(*q)) {*q++=0; break; }
-							}
-							if(!str2pdnsd_a(ipstr,&addr)) {
-							    print_serr(rs,"Bad server ip");
-							    goto free_ar;
-							}
-							if(!(ar=DA_GROW1(ar))) {
-							    print_serr(rs,"Out of memory.");
-							    goto free_dnsaddr_label_break;
-							}
-							DA_LAST(ar)=addr;
-						    }
-						change_servs:
-						    err=change_servers(indx,ar,(cmd2==CTL_S_RETEST)?-1:(cmd2==CTL_S_UP));
-						    if(err==0)
-							print_succ(rs);
-						    else
-							print_serr(rs,err==ETIMEDOUT?"Timed out while trying to gain access to server data.":
-								      err==ENOMEM?"Out of memory.":
-								      "Could not start up or signal server status thread.");
-						free_ar:
-						    da_free(ar);
-						}
-					    }
-					}
-					else
-					    print_serr(rs,"Bad command.");
-
-				free_dnsaddr_label_break:
-					free(dnsaddr);
-				free_label_break:
-					free(label);
-				}
-					break;
-				case CTL_RECORD: {
-					uint16_t cmd2;
-					unsigned char name[DNSNAMEBUFSIZE],buf[DNSNAMEBUFSIZE];
-					DEBUG_MSG("Received RECORD command.\n");
-					if (!read_short(rs,&cmd2))
-						goto incomplete_command;
-					if (read_domain(rs, charp buf, sizeof(buf))<=0)
-						goto incomplete_command;
-					if ((errmsg=parsestr2rhn(buf,sizeof(buf),name))!=NULL)
-						goto bad_domain_name;
-					switch (cmd2) {
-					case CTL_R_DELETE:
-						del_cache(name);
-						print_succ(rs);
-						break;
-					case CTL_R_INVAL:
-						invalidate_record(name);
-						print_succ(rs);
-						break;
-					default:
-						print_serr(rs,"Bad command.");
-					}
-				}
-					break;
-				case CTL_SOURCE: {
-					uint32_t ttl;
-					char *fn;
-					uint16_t servaliases,flags;
-					unsigned char buf[DNSNAMEBUFSIZE],owner[DNSNAMEBUFSIZE];
-
-					DEBUG_MSG("Received SOURCE command.\n");
-					if (read_allocstring(rs,&fn,NULL)<=0) {
-						print_serr(rs,"Bad filename name.");
-						break;
-					}
-					if (read_domain(rs, charp buf, sizeof(buf))<=0 ||
-					    !read_long(rs,&ttl) ||
-					    !read_short(rs,&servaliases) ||	/* serve aliases */
-					    !read_short(rs,&flags))		/* caching flags */
-					{
-						print_serr(rs,"Malformed or incomplete command.");
-						goto free_fn;
-					}
-					if ((errmsg=parsestr2rhn(buf,sizeof(buf),owner))!=NULL) {
-						print_serr(rs,errmsg);
-						goto free_fn;
-					}
-					if (ttl < 0) {
-						print_serr(rs, "Bad TTL.");
-						goto free_fn;
-					}
-					if(flags&DF_NEGATIVE) {
-						print_serr(rs, "Bad cache flags.");
-						goto free_fn;
-					}
-					{
-						char *errmsg;
-						if (read_hosts(fn,owner,ttl,flags,servaliases,&errmsg))
-							print_succ(rs);
-						else {
-							print_serr(rs,errmsg?:"Out of memory.");
-							free(errmsg);
-						}
-					}
-				free_fn:
-					free(fn);
-				}
-					break;
-				case CTL_ADD: {
-					uint32_t ttl;
-					unsigned sz;
-					uint16_t tp,flags,nadr=0;
-					unsigned char name[DNSNAMEBUFSIZE],buf[DNSNAMEBUFSIZE],dbuf[2+DNSNAMEBUFSIZE];
-					size_t adrbufsz=0;
-					unsigned char *adrbuf=NULL;
-
-					DEBUG_MSG("Received ADD command.\n");
-					if (!read_short(rs,&tp))
-						goto incomplete_command;
-					if (read_domain(rs, charp buf, sizeof(buf))<=0)
-						goto incomplete_command;
-					if (!read_long(rs,&ttl))
-						goto incomplete_command;
-					if (!read_short(rs,&flags))	/* caching flags */
-						goto incomplete_command;
-					if ((errmsg=parsestr2rhn(buf,sizeof(buf),name))!=NULL)
-						goto bad_domain_name;
-					if (ttl < 0)
-						goto bad_ttl;
-					if(flags&DF_NEGATIVE)
-						goto bad_flags;
-
-					switch (tp) {
-					case T_A:
-						sz=sizeof(struct in_addr);
-    #if ALLOW_LOCAL_AAAA
-						goto read_adress_list;
-					case T_AAAA:
-						sz=sizeof(struct in6_addr);
-					read_adress_list:
-    #endif
-						if (!read_short(rs,&nadr))
-							goto incomplete_command;
-						if (!nadr)
-							goto bad_arg;
-						adrbufsz= nadr * (size_t)sz;
-						adrbuf= malloc(adrbufsz);
-						if(!adrbuf)
-							goto out_of_memory;
-						{
-							size_t nread=0;
-							while(nread<adrbufsz) {
-								ssize_t m=read(rs,adrbuf+nread,adrbufsz-nread);
-								if(m<=0) {free(adrbuf); goto bad_arg;}
-								nread += m;
-							}
-						}
-						break;
-					case T_CNAME:
-					case T_PTR:
-					case T_NS:
-						if (read_domain(rs, charp buf, sizeof(buf))<=0)
-							goto incomplete_command;
-						if ((errmsg=parsestr2rhn(buf,sizeof(buf),dbuf))!=NULL)
-							goto bad_domain_name;
-						sz=rhnlen(dbuf);
-						break;
-					case T_MX:
-						if (read(rs,dbuf,2)!=2)
-							goto bad_arg;
-						if (read_domain(rs, charp buf, sizeof(buf))<=0)
-							goto incomplete_command;
-						if ((errmsg=parsestr2rhn(buf,sizeof(buf),dbuf+2))!=NULL)
-							goto bad_domain_name;
-						sz=rhnlen(dbuf+2)+2;
-						break;
-					default:
-						goto bad_arg;
-					}
-					{
-						dns_cent_t cent;
-
-						if (!init_cent(&cent, name, 0, 0, flags  DBG1)) {
-							free(adrbuf);
-							goto out_of_memory;
-						}
-						if(adrbuf) {
-							unsigned char *adrp; int i;
-							for(adrp=adrbuf,i=0; i<nadr; adrp += sz,++i) {
-								if (!add_cent_rr(&cent,tp,ttl,0,CF_LOCAL,sz,adrp  DBG1)) {
-									free_cent(&cent  DBG1);
-									free(adrbuf);
-									goto out_of_memory;
-								}
-							}
-							free(adrbuf);
-						}
-						else if (!add_cent_rr(&cent,tp,ttl,0,CF_LOCAL,sz,dbuf  DBG1)) {
-							free_cent(&cent  DBG1);
-							goto out_of_memory;
-						}
-
-						if(cent.qname[0]==1 && cent.qname[1]=='*') {
-							/* Wild card record.
-							   Set the DF_WILD flag for the name with '*.' removed. */
-							if(!set_cent_flags(&cent.qname[2],DF_WILD)) {
-								print_serr(rs,
-									   "Before defining records for a name with a wildcard"
-									   " you must first define some records for the name"
-									   " with '*.' removed.");
-								goto cleanup_cent;
-							}
-						}
-
-						add_cache(&cent);
-						print_succ(rs);
-					cleanup_cent:
-						free_cent(&cent  DBG1);
-					}
-				}
-					break;
-				case CTL_NEG: {
-					uint32_t ttl;
-					uint16_t tp;
-					unsigned char name[DNSNAMEBUFSIZE],buf[DNSNAMEBUFSIZE];
-
-					DEBUG_MSG("Received NEG command.\n");
-					if (read_domain(rs, charp buf, sizeof(buf))<=0)
-						goto incomplete_command;
-					if (!read_short(rs,&tp))
-						goto incomplete_command;
-					if (!read_long(rs,&ttl))
-						goto incomplete_command;
-					if ((errmsg=parsestr2rhn(buf,sizeof(buf),name))!=NULL) {
-						DEBUG_MSG("NEG: received bad domain name.\n");
-						goto bad_domain_name;
-					}
-					if (tp!=255 && PDNSD_NOT_CACHED_TYPE(tp)) {
-						DEBUG_MSG("NEG: received bad record type.\n");
-						print_serr(rs,"Bad record type.");
-						break;
-					}
-					if (ttl < 0)
-						goto bad_ttl;
-					{
-						dns_cent_t cent;
-
-						if (tp==255) {
-							if (!init_cent(&cent, name, ttl, 0, DF_LOCAL|DF_NEGATIVE  DBG1))
-								goto out_of_memory;
-						} else {
-							if (!init_cent(&cent, name, 0, 0, 0  DBG1))
-								goto out_of_memory;
-							if (!add_cent_rrset_by_type(&cent,tp,ttl,0,CF_LOCAL|CF_NEGATIVE  DBG1)) {
-								free_cent(&cent  DBG1);
-								goto out_of_memory;
-							}
-						}
-						add_cache(&cent);
-						free_cent(&cent DBG1);
-					}
-					print_succ(rs);
-				}
-					break;
-				case CTL_CONFIG: {
-					char *fn,*errmsg;
-					DEBUG_MSG("Received CONFIG command.\n");
-					if (!read_allocstring(rs,&fn,NULL)) {
-						print_serr(rs,"Bad filename name.");
-						break;
-					}
-					if (reload_config_file(fn,&errmsg))
-						print_succ(rs);
-					else {
-						print_serr(rs,errmsg?:"Out of memory.");
-						free(errmsg);
-					}
-					free(fn);
-				}
-					break;
-				case CTL_INCLUDE: {
-					char *fn,*errmsg;
-					DEBUG_MSG("Received INCLUDE command.\n");
-					if (read_allocstring(rs,&fn,NULL)<=0) {
-						print_serr(rs,"Bad filename name.");
-						break;
-					}
-					if (read_config_file(fn,NULL,NULL,0,&errmsg))
-						print_succ(rs);
-					else {
-						print_serr(rs,errmsg?:"Out of memory.");
-						free(errmsg);
-					}
-					free(fn);
-				}
-					break;
-				case CTL_EVAL: {
-					char *str,*errmsg;
-					DEBUG_MSG("Received EVAL command.\n");
-					if (!read_allocstring(rs,&str,NULL)) {
-						print_serr(rs,"Bad input string.");
-						break;
-					}
-					if (confparse(NULL,str,NULL,NULL,0,&errmsg))
-						print_succ(rs);
-					else {
-						print_serr(rs,errmsg?:"Out of memory.");
-						free(errmsg);
-					}
-					free(str);
-				}
-					break;
-				case CTL_EMPTY: {
-					slist_array sla=NULL;
-					char *names; unsigned len;
-
-					DEBUG_MSG("Received EMPTY command.\n");
-					if (!read_allocstring(rs,&names,&len)) {
-						print_serr(rs,"Bad arguments.");
-						break;
-					}
-					if(names) {
-						char *p=names, *last=names+len;
-
-						while(p<last) {
-							int tp;
-							char *q;
-							slist_t *sl;
-							unsigned sz;
-							unsigned char rhn[DNSNAMEBUFSIZE];
-
-							if(*p=='-') {
-								tp=C_EXCLUDED;
-								++p;
-							}
-							else {
-								tp=C_INCLUDED;
-								if(*p=='+') ++p;
-							}
-							/* skip a possible leading dot. */
-							if(p+1<last && *p=='.' && *(p+1)) ++p;
-							q=p;
-							while(q<last && *q) ++q;
-							if ((errmsg=parsestr2rhn(ucharp p,q-p,rhn))!=NULL) {
-								DEBUG_MSG("EMPTY: received bad domain name: %s\n",p);
-								print_serr(rs,errmsg);
-								goto free_sla_names_break;
-							}
-							sz=rhnlen(rhn);
-							if (!(sla=DA_GROW1_F(sla,free_slist_domain))) {
-								print_serr(rs,"Out of memory.");
-								goto free_names_break;
-							}
-							sl=&DA_LAST(sla);
-
-							if (!(sl->domain=malloc(sz))) {
-								print_serr(rs,"Out of memory.");
-								goto free_sla_names_break;
-							}
-							memcpy(sl->domain,rhn,sz);
-							sl->exact=0;
-							sl->rule=tp;
-							p = q+1;
-						}
-					}
-					if(empty_cache(sla))
-						print_succ(rs);
-					else
-						print_serr(rs,"Could not lock the cache.");
-				free_sla_names_break:
-					free_slist_array(sla);
-				free_names_break:
-					free(names);
-				}
-					break;
-				case CTL_DUMP: {
-					int rv,exact=0;
-					unsigned char *nm=NULL;
-					char buf[DNSNAMEBUFSIZE];
-					unsigned char rhn[DNSNAMEBUFSIZE];
-					DEBUG_MSG("Received DUMP command.\n");
-					if (!(rv=read_domain(rs,buf,sizeof(buf)))) {
-						print_serr(rs,"Bad domain name.");
-						break;
-					}
-					if(rv>0) {
-						int sz;
-						exact=1; nm= ucharp buf; sz=sizeof(buf);
-						if(buf[0]=='.' && buf[1]) {
-							exact=0; ++nm; --sz;
-						}
-						if ((errmsg=parsestr2rhn(nm,sz,rhn))!=NULL)
-							goto bad_domain_name;
-						nm=rhn;
-					}
-					if(!print_succ(rs))
-						break;
-					if((rv=dump_cache(rs,nm,exact))<0 ||
-					   (!rv && fsprintf(rs,"Could not find %s%s in the cache.\n",
-							    exact?"":nm?"any entries matching ":"any entries",
-							    nm?buf:"")<0))
-					{
-						DEBUG_MSG("Error writing to control socket: %s\n",strerror(errno));
-					}
-				}
-					break;
-				incomplete_command:
-					print_serr(rs,"Malformed or incomplete command.");
-					break;
-				bad_arg:
-					print_serr(rs,"Bad arg.");
-					break;
-				bad_domain_name:
-					print_serr(rs,errmsg);
-					break;
-				bad_ttl:
-					print_serr(rs, "Bad TTL.");
-					break;
-				bad_flags:
-					print_serr(rs, "Bad cache flags.");
-					break;
-				out_of_memory:
-					print_serr(rs,"Out of memory.");
-					break;
-				default:
-					print_serr(rs,"Unknown command.");
-				}
-			    }
-			    else {
-				    DEBUG_MSG("Incorrect magic number in status-socket command code: %02x\n",cmd>>8);
-				    print_serr(rs,"Command code contains incompatible version number.");
-			    }
-			}
-			else {
-				DEBUG_MSG("short status-socket query\n");
-				print_serr(rs,"Command code missing or too short.");
-			}
-			close(rs);
-			usleep_r(100000); /* sleep some time. I do not want the query frequency to be too high. */
-		}
-		else if (errno!=EINTR) {
-			log_warn("Failed to accept connection on status socket: %s. "
-				 "Status readback will be impossible",strerror(errno));
-			break;
-		}
-	}
-
- exit_thread:
-	stat_pipe=0;
-	close(stat_sock);
-	statsock_thrid=main_thrid;
-
-	return NULL;
-}
-
-/*
- * Initialize the status socket
- */
-void init_stat_sock()
-{
-	struct sockaddr_un *sa;
-	/* Should I include the terminating null byte in the calculation of the length parameter
-	   for the socket address? The glibc info page "Details of Local Namespace" tells me I should not,
-	   yet it is immediately followed by an example that contradicts that.
-	   The SUN_LEN macro seems to be defined as
-	   (offsetof(struct sockaddr_un, sun_path) + strlen(sa->sun_path)),
-	   so I conclude it is not necessary to count the null byte, but it probably makes no
-	   difference if you do.
-	*/
-	unsigned int sa_len = (offsetof(struct sockaddr_un, sun_path) + strlitlen("/pdnsd.status") + strlen(global.cache_dir));
-
-	sa=(struct sockaddr_un *)alloca(sa_len+1);
-	stpcpy(stpcpy(sa->sun_path,global.cache_dir),"/pdnsd.status");
-
-	if (unlink(sa->sun_path)!=0 && errno!=ENOENT) { /* Delete the socket */
-		log_warn("Failed to unlink %s: %s.\nStatus readback will be disabled",sa->sun_path, strerror(errno));
-		stat_pipe=0;
-		return;
-	}
-	if ((stat_sock=socket(PF_UNIX,SOCK_STREAM,0))==-1) {
-		log_warn("Failed to open socket: %s. Status readback will be impossible",strerror(errno));
-		stat_pipe=0;
-		return;
-	}
-	sa->sun_family=AF_UNIX;
-#ifdef BSD44_SOCKA
-	sa->sun_len=SUN_LEN(sa);
-#endif
-	/* Early initialization, so that umask can be used race-free. */
-	{
-		mode_t old_mask = umask((S_IRWXU|S_IRWXG|S_IRWXO)&(~global.ctl_perms));
-		if (bind(stat_sock,(struct sockaddr *)sa,sa_len)==-1) {
-			log_warn("Error: could not bind socket: %s.\nStatus readback will be impossible",strerror(errno));
-			close(stat_sock);
-			stat_pipe=0;
-		}
-		umask(old_mask);
-	}
-
-	if(stat_pipe) sock_path= strdup(sa->sun_path);
-}
-
-/*
- * Start the status socket thread (see above)
- */
-int start_stat_sock()
-{
-	pthread_t st;
-
-	int rv=pthread_create(&st,&attr_detached,status_thread,NULL);
-	if (rv)
-		log_warn("Failed to start status thread. The status socket will be unuseable");
-	else {
-		statsock_thrid=st;
-		log_info(2,"Status thread started.");
-	}
-	return rv;
-}
diff --git a/jni/pdnsd/src/status.h b/jni/pdnsd/src/status.h
deleted file mode 100644
index 1d249f7..0000000
--- a/jni/pdnsd/src/status.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* status.h - Make server status information accessible through a named pipe
-
-   Copyright (C) 2000, 2001 Thomas Moestl
-   Copyright (C) 2002, 2004, 2008, 2009 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _STATUS_H_
-#define _STATUS_H_
-
-#include <config.h>
-#include "conff.h"
-
-extern char *sock_path;
-extern int stat_sock;
-
-/* The commands for pdnsd-ctl */
-#define CTL_CMDVERNR 0x6800  /* pdnsd-ctl command version (magic number used to check compatibility) */
-
-#define CTL_MIN      1
-#define CTL_STATS    1 /* Give out stats (like the "traditional" status pipe) */
-#define CTL_SERVER   2 /* Enable or disable a server */
-#define CTL_RECORD   3 /* Delete or invalidate records */
-#define CTL_SOURCE   4 /* Read a hosts-style file */
-#define CTL_ADD      5 /* Add a record of the given type */
-#define CTL_NEG      6 /* Add a negative cached record */
-#define CTL_CONFIG   7 /* Re-read config file */
-#define CTL_INCLUDE  8 /* Read file as config file, disregarding global and server sections */
-#define CTL_EVAL     9 /* Parse string as if part of config file */
-#define CTL_EMPTY   10 /* Empty the cache */
-#define CTL_DUMP    11 /* Dump cache contents */
-#define CTL_MAX     11
-
-#define CTL_S_UP     1
-#define CTL_S_DOWN   2
-#define CTL_S_RETEST 3
-#define CTL_R_DELETE 1
-#define CTL_R_INVAL  2
-
-void init_stat_sock(void);
-int start_stat_sock(void);
-
-#endif
diff --git a/jni/pdnsd/src/test/Makefile.am b/jni/pdnsd/src/test/Makefile.am
deleted file mode 100644
index 81da088..0000000
--- a/jni/pdnsd/src/test/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-
-.PHONY: all clean distclean
-
-noinst_PROGRAMS = if_up is_local_addr tping random
-
-## Dirty trick:  I demand that these objects be built; then, with the knowledge
-## that the object files will end up here, I redefine the link chain. 
-
-TESTADDSRC=
-#TESTADDSRC= netdev.c error.c thread.c helpers.c icmp.c
-TESTDEPS = netdev.o error.o thread.o helpers.o icmp.o
-
-TESTOBJS = netdev.o error.o thread.o helpers.o icmp.o
-
-if_up_SOURCES = if_up.c $(TESTADDSRC)
-if_up_LDADD =  $(TESTOBJS) @thread_CFLAGS@
-if_up_DEPENDENCIES = $(TESTDEPS)
-
-is_local_addr_SOURCES = is_local_addr.c $(TESTADDSRC)
-is_local_addr_LDADD = $(TESTOBJS) @thread_CFLAGS@
-is_local_addr_DEPENDENCIES = $(TESTDEPS)
-
-tping_SOURCES = tping.c $(TESTADDSRC)
-tping_LDADD = $(TESTOBJS) @thread_CFLAGS@
-tping_DEPENDENCIES = $(TESTDEPS)
-
-random_SOURCES = random.c $(TESTADDSRC)
-random_LDADD = $(TESTOBJS) @thread_CFLAGS@
-random_DEPENDENCIES = $(TESTDEPS)
-
-# These are Symlinks we want to have in the package
-#EXTRA_DIST = conff.h error.h helpers.h icmp.h ipvers.h netdev.h thread.h cacheing
-
-$(TESTOBJS): %.o: ../%.c
-	$(COMPILE) @thread_CFLAGS@ -c $<
diff --git a/jni/pdnsd/src/test/Makefile.in b/jni/pdnsd/src/test/Makefile.in
deleted file mode 100644
index 2ad8641..0000000
--- a/jni/pdnsd/src/test/Makefile.in
+++ /dev/null
@@ -1,464 +0,0 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
-
- at SET_MAKE@
-
-VPATH = @srcdir@
-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 = :
-noinst_PROGRAMS = if_up$(EXEEXT) is_local_addr$(EXEEXT) tping$(EXEEXT) \
-	random$(EXEEXT)
-subdir = src/test
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am__objects_1 =
-am_if_up_OBJECTS = if_up.$(OBJEXT) $(am__objects_1)
-if_up_OBJECTS = $(am_if_up_OBJECTS)
-am_is_local_addr_OBJECTS = is_local_addr.$(OBJEXT) $(am__objects_1)
-is_local_addr_OBJECTS = $(am_is_local_addr_OBJECTS)
-am_random_OBJECTS = random.$(OBJEXT) $(am__objects_1)
-random_OBJECTS = $(am_random_OBJECTS)
-am_tping_OBJECTS = tping.$(OBJEXT) $(am__objects_1)
-tping_OBJECTS = $(am_tping_OBJECTS)
-DEFAULT_INCLUDES = -I. at 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)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(if_up_SOURCES) $(is_local_addr_SOURCES) $(random_SOURCES) \
-	$(tping_SOURCES)
-DIST_SOURCES = $(if_up_SOURCES) $(is_local_addr_SOURCES) \
-	$(random_SOURCES) $(tping_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-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@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build_alias = @build_alias@
-builddir = @builddir@
-cachedir = @cachedir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-def_id = @def_id@
-distribution = @distribution@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-fullversion = @fullversion@
-host_alias = @host_alias@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-packagerelease = @packagerelease@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-specbuild = @specbuild@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-thread_CFLAGS = @thread_CFLAGS@
-threadlib = @threadlib@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-TESTADDSRC = 
-#TESTADDSRC= netdev.c error.c thread.c helpers.c icmp.c
-TESTDEPS = netdev.o error.o thread.o helpers.o icmp.o
-TESTOBJS = netdev.o error.o thread.o helpers.o icmp.o
-if_up_SOURCES = if_up.c $(TESTADDSRC)
-if_up_LDADD = $(TESTOBJS) @thread_CFLAGS@
-if_up_DEPENDENCIES = $(TESTDEPS)
-is_local_addr_SOURCES = is_local_addr.c $(TESTADDSRC)
-is_local_addr_LDADD = $(TESTOBJS) @thread_CFLAGS@
-is_local_addr_DEPENDENCIES = $(TESTDEPS)
-tping_SOURCES = tping.c $(TESTADDSRC)
-tping_LDADD = $(TESTOBJS) @thread_CFLAGS@
-tping_DEPENDENCIES = $(TESTDEPS)
-random_SOURCES = random.c $(TESTADDSRC)
-random_LDADD = $(TESTOBJS) @thread_CFLAGS@
-random_DEPENDENCIES = $(TESTDEPS)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in:  $(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) --gnu src/test/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu src/test/Makefile
-.PRECIOUS: 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:  $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4):  $(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)
-if_up$(EXEEXT): $(if_up_OBJECTS) $(if_up_DEPENDENCIES) 
-	@rm -f if_up$(EXEEXT)
-	$(LINK) $(if_up_OBJECTS) $(if_up_LDADD) $(LIBS)
-is_local_addr$(EXEEXT): $(is_local_addr_OBJECTS) $(is_local_addr_DEPENDENCIES) 
-	@rm -f is_local_addr$(EXEEXT)
-	$(LINK) $(is_local_addr_OBJECTS) $(is_local_addr_LDADD) $(LIBS)
-random$(EXEEXT): $(random_OBJECTS) $(random_DEPENDENCIES) 
-	@rm -f random$(EXEEXT)
-	$(LINK) $(random_OBJECTS) $(random_LDADD) $(LIBS)
-tping$(EXEEXT): $(tping_OBJECTS) $(tping_DEPENDENCIES) 
-	@rm -f tping$(EXEEXT)
-	$(LINK) $(tping_OBJECTS) $(tping_LDADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/if_up.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/is_local_addr.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/random.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tping.Po at am__quote@
-
-.c.o:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
-
-.c.obj:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	set x; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	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"
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-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."
-clean: clean-am
-
-clean-am: clean-generic 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:
-
-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-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-noinstPROGRAMS ctags distclean distclean-compile \
-	distclean-generic distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am 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 uninstall \
-	uninstall-am
-
-
-.PHONY: all clean distclean
-
-# These are Symlinks we want to have in the package
-#EXTRA_DIST = conff.h error.h helpers.h icmp.h ipvers.h netdev.h thread.h cacheing
-
-$(TESTOBJS): %.o: ../%.c
-	$(COMPILE) @thread_CFLAGS@ -c $<
-
-# 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:
diff --git a/jni/pdnsd/src/test/if_up.c b/jni/pdnsd/src/test/if_up.c
deleted file mode 100644
index af6ec97..0000000
--- a/jni/pdnsd/src/test/if_up.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <config.h>
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "../helpers.h"
-#include "../conff.h"
-#include "../netdev.h"
-
-short int daemon_p=0;
-#if DEBUG>0
-short int debug_p=0;
-#endif
-short int verbosity=VERBOSITY;
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-short int run_ipv4=DEFAULT_IPV4;
-#endif
-#ifdef ENABLE_IPV6
-struct in6_addr ipv4_6_prefix;
-#endif
-pthread_t main_thrid,servstat_thrid;
-volatile int signal_interrupt;
-#if DEBUG>0
-FILE *dbg_file;
-#endif
-globparm_t global;
-
-
-int main(int argc, char *argv[])
-{
-	if (argc!=2) {
-		printf("Usage: %s <interface>\n",argv[0]);
-		exit(1);
-	}
-	printf("if_up: %s - %s\n",argv[1],if_up(argv[1])?"up":"down");
-	return 0;
-}
diff --git a/jni/pdnsd/src/test/is_local_addr.c b/jni/pdnsd/src/test/is_local_addr.c
deleted file mode 100644
index fda517d..0000000
--- a/jni/pdnsd/src/test/is_local_addr.c
+++ /dev/null
@@ -1,57 +0,0 @@
-#include <config.h>
-#include <pthread.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "../helpers.h"
-#include "../conff.h"
-#include "../netdev.h"
-#include "../ipvers.h"
-
-short int daemon_p=0;
-#if DEBUG>0
-short int debug_p=0;
-#endif
-short int verbosity=VERBOSITY;
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-short int run_ipv4=DEFAULT_IPV4;
-#endif
-#ifdef ENABLE_IPV6
-struct in6_addr ipv4_6_prefix;
-#endif
-pthread_t main_thrid,servstat_thrid;
-volatile int signal_interrupt;
-#if DEBUG>0
-FILE *dbg_file;
-#endif
-globparm_t global;
-
-
-int main(int argc, char *argv[])
-{
-	pdnsd_a a;
-
-	if (argc!=2) {
-		printf("Usage: %s <address>\n",argv[0]);
-		exit(1);
-	}
-#ifdef ENABLE_IPV4
-	if (inet_aton(argv[1],&a.ipv4)) {
-# ifdef ENABLE_IPV6
-		run_ipv4=1;
-# endif
-		printf("is %s a local addr: %s\n",argv[1],is_local_addr(&a)?"yes":"no");
-		return 0;
-	}
-#endif
-#ifdef ENABLE_IPV6
-	if (inet_pton(AF_INET6,argv[1],&a.ipv6)) {
-# ifdef ENABLE_IPV4
-		run_ipv4=0;
-# endif
-		printf("is %s a local addr: %s\n",argv[1],is_local_addr(&a)?"yes":"no");
-		return 0;
-	}
-#endif
-	printf("Adress invalid.\n");
-	return 0;
-}
diff --git a/jni/pdnsd/src/test/random.c b/jni/pdnsd/src/test/random.c
deleted file mode 100644
index a447e80..0000000
--- a/jni/pdnsd/src/test/random.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include <config.h>
-#include <stdio.h>
-#include <pthread.h>
-#include <string.h>
-#include "../helpers.h"
-#include "../conff.h"
-
-short int daemon_p=0;
-#if DEBUG>0
-short int debug_p=0;
-#endif
-short int verbosity=VERBOSITY;
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-short int run_ipv4=DEFAULT_IPV4;
-#endif
-#ifdef ENABLE_IPV6
-struct in6_addr ipv4_6_prefix;
-#endif
-pthread_t main_thrid,servstat_thrid;
-volatile int signal_interrupt;
-#if DEBUG>0
-FILE *dbg_file;
-#endif
-globparm_t global;
-
-
-int main(void)
-{
-	init_rng();
-	printf("%i\n",(int)get_rand16());
-	free_rng();
-	return 0;
-}
diff --git a/jni/pdnsd/src/test/tping.c b/jni/pdnsd/src/test/tping.c
deleted file mode 100644
index 734a25f..0000000
--- a/jni/pdnsd/src/test/tping.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include <config.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <pthread.h>
-#include "../helpers.h"
-#include "../conff.h"
-#include "../icmp.h"
-#include "../ipvers.h"
-
-short int daemon_p=0;
-#if DEBUG>0
-short int debug_p=0;
-#endif
-short int verbosity=VERBOSITY;
-#if defined(ENABLE_IPV4) && defined(ENABLE_IPV6)
-short int run_ipv4=DEFAULT_IPV4;
-#endif
-#ifdef ENABLE_IPV6
-struct in6_addr ipv4_6_prefix;
-#endif
-pthread_t main_thrid,servstat_thrid;
-volatile int signal_interrupt;
-#if DEBUG>0
-FILE *dbg_file;
-#endif
-globparm_t global;
-
-
-int main(int argc, char *argv[])
-{
-	pdnsd_a a;
-
-	if (argc!=2) {
-		printf("Usage: %s <address>\n",argv[0]);
-		exit(1);
-	}
-#ifdef ENABLE_IPV4
-	if (inet_aton(argv[1],&a.ipv4)) {
-# ifdef ENABLE_IPV6
-		run_ipv4=1;
-# endif
-		init_ping_socket();
-		printf("ping (v4) echo from %s: %i\n",argv[1],ping(&a,100,2));
-		return 0;
-	}
-#endif
-#ifdef ENABLE_IPV6
-	if (inet_pton(AF_INET6,argv[1],&a.ipv6)) {
-# ifdef ENABLE_IPV4
-		run_ipv4=0;
-# endif
-		init_ping_socket();
-		printf("ping (v6) echo from %s: %i\n",argv[1],ping(&a,100,2));
-		return 0;
-	}
-#endif
-	printf("Adress invalid.\n");
-	return 0;
-}
diff --git a/jni/pdnsd/src/thread.c b/jni/pdnsd/src/thread.c
deleted file mode 100644
index 84c34f6..0000000
--- a/jni/pdnsd/src/thread.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* thread.c - Threading helpers
-
-   Copyright (C) 2000 Thomas Moestl
-   Copyright (C) 2002, 2003 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-#include <config.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <pthread.h>
-#include <signal.h>
-#include <string.h>
-#include "thread.h"
-#include "error.h"
-#include "helpers.h"
-#include "conff.h"
-
-
-#if (TARGET==TARGET_LINUX) && !defined(THREADLIB_NPTL)
-volatile short int waiting=0; /* Has the main thread already done sigwait() ? */
-#endif
-pthread_attr_t attr_detached;
-#if DEBUG>0
-pthread_key_t thrid_key;
-#endif
-
-/* This is a handler for signals to the threads. We just hand the sigs on to the main thread.
- * Note that this may result in blocked locks. We have no means to open the locks here, because in LinuxThreads
- * the mutex functions are not async-signal safe. So, locks may still be active. We account for this by using
- * softlocks (see below) in any functions called after sigwait from main(). */
-#if (TARGET==TARGET_LINUX) && !defined(THREADLIB_NPTL)
-void thread_sig(int sig)
-{
-	if (sig==SIGTSTP || sig==SIGTTOU || sig==SIGTTIN) {
-		/* nonfatal signal. Ignore, because proper handling is very difficult. */
-		return;
-	}
-	if (waiting) {
-		log_warn("Caught signal %i.",sig);
-		if (sig==SIGSEGV || sig==SIGILL || sig==SIGBUS)
-			crash_msg("A fatal signal occured.");
-		pthread_kill(main_thrid,SIGTERM);
-		pthread_exit(NULL);
-	} else {
-		crash_msg("An error occured at startup.");
-		_exit(1);
-	}
-}
-#endif
-
-/* This is now defined as an inline function in thread.h */
-#if 0
-void usleep_r(unsigned long usec)
-{
-#if ((TARGET==TARGET_LINUX) || (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)) && defined(HAVE_USLEEP)
-	usleep(usec);
-#else
-	struct timeval tv;
-
-	tv.tv_sec=usec/1000000;
-	tv.tv_usec=usec%1000000;
-	select(0, NULL, NULL, NULL, tv);
-#endif
-}
-#endif
-
diff --git a/jni/pdnsd/src/thread.h b/jni/pdnsd/src/thread.h
deleted file mode 100644
index 12d17dd..0000000
--- a/jni/pdnsd/src/thread.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/* thread.h - Threading helpers
-
-   Copyright (C) 2000 Thomas Moestl
-   Copyright (C) 2002, 2003, 2005 Paul A. Rombouts
-
-  This file is part of the pdnsd package.
-
-  pdnsd 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.
-
-  pdnsd 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 pdnsd; see the file COPYING. If not, see
-  <http://www.gnu.org/licenses/>.
-*/
-
-
-#ifndef _THREAD_H_
-#define _THREAD_H_
-
-#include <config.h>
-#include <pthread.h>
-#include <signal.h>
-
-/* --- from main.c */
-extern sigset_t sigs_msk;
-/* --- */
-
-#if (TARGET==TARGET_LINUX) && !defined(THREADLIB_NPTL)
-extern volatile short int waiting;
-void thread_sig(int sig);
-#endif
-
-/* These are macros for setting up the signal handling of a new thread. They
- * are needed because the LinuxThreads implementation obviously has some
- * problems in signal handling, which makes the recommended solution (doing
- * sigwait() in one thread and blocking the signals in all threads) impossible.
- * So, for Linux, we have to install the fatal_sig handler.
- * It seems to me that signal handlers in fact aren't shared between threads
- * under Linux. Also, sigwait() does not seem to work as indicated in the docs */
-
-/* Note added by Paul Rombouts: In the new Native POSIX Thread Library for Linux (NPTL)
-   signal handling has changed from per-thread signal handling to POSIX process signal handling,
-   which makes the recommended solution mentioned by Thomas Moestl possible.
-   In this case I can simply define THREAD_SIGINIT to be empty.
-   The signals are blocked in main() before any threads are created,
-   and we simply never unblock them except by calling sigwait() in main(). */
-
-#if (TARGET==TARGET_LINUX)
-# ifdef THREADLIB_NPTL
-# define THREAD_SIGINIT
-# else
-#  ifdef THREADLIB_LINUXTHREADS2
-#  define THREAD_SIGINIT   {				\
-	struct sigaction action;			\
-	pthread_sigmask(SIG_UNBLOCK,&sigs_msk,NULL);	\
-	action.sa_handler = thread_sig;			\
-	action.sa_mask = sigs_msk;			\
-	action.sa_flags = 0;				\
-	sigaction(SIGINT,&action,NULL);			\
-	sigaction(SIGILL,&action,NULL);			\
-	sigaction(SIGABRT,&action,NULL);		\
-	sigaction(SIGFPE,&action,NULL);			\
-	sigaction(SIGSEGV,&action,NULL);		\
-	sigaction(SIGTSTP,&action,NULL);		\
-	sigaction(SIGTTOU,&action,NULL);		\
-	sigaction(SIGTTIN,&action,NULL);		\
-	sigaction(SIGTERM,&action,NULL);		\
-	action.sa_handler = SIG_IGN;			\
-	sigemptyset(&action.sa_mask);			\
-	action.sa_flags = 0;				\
-	sigaction(SIGPIPE,&action,NULL);		\
-   }
-#  else
-#  define THREAD_SIGINIT   {				\
-	struct sigaction action;			\
-	pthread_sigmask(SIG_UNBLOCK,&sigs_msk,NULL);	\
-	action.sa_handler = thread_sig;			\
-	action.sa_mask = sigs_msk;			\
-	action.sa_flags = 0;				\
-	sigaction(SIGILL,&action,NULL);			\
-	sigaction(SIGABRT,&action,NULL);		\
-	sigaction(SIGFPE,&action,NULL);			\
-	sigaction(SIGSEGV,&action,NULL);		\
-	sigaction(SIGTSTP,&action,NULL);		\
-	sigaction(SIGTTOU,&action,NULL);		\
-	sigaction(SIGTTIN,&action,NULL);		\
-	action.sa_handler = SIG_IGN;			\
-	sigemptyset(&action.sa_mask);			\
-	action.sa_flags = 0;				\
-	sigaction(SIGPIPE,&action,NULL);		\
-   }
-#  endif
-# endif
-#elif (TARGET==TARGET_BSD) || (TARGET==TARGET_CYGWIN)
-#define THREAD_SIGINIT pthread_sigmask(SIG_BLOCK,&sigs_msk,NULL)
-#else
-# error Unsupported platform!
-#endif
-
-
-/* This is a thread-safe usleep().
-   Implementation of the BSD usleep function using nanosleep.
-*/
-inline static int usleep_r(unsigned long useconds)
-  __attribute__((always_inline));
-inline static int usleep_r(unsigned long useconds)
-{
-  struct timespec ts = { tv_sec: (useconds / 1000000),
-			 tv_nsec: (useconds % 1000000) * 1000ul };
-
-  return nanosleep(&ts, NULL);
-}
-
-/* This is a thread-safe sleep().
-   The semantics are somewhat different from the POSIX sleep function,
-   but it suits our purposes.
-*/
-inline static int sleep_r (unsigned int seconds)
-  __attribute__((always_inline));
-inline static int sleep_r (unsigned int seconds)
-{
-  struct timespec ts = { tv_sec: seconds, tv_nsec: 0 };
-
-  return nanosleep(&ts, NULL);
-}
-
-
-/* Used for creating detached threads */
-extern pthread_attr_t attr_detached;
-
-#if DEBUG>0
-/* Key for storing private thread ID's */
-extern pthread_key_t thrid_key;
-#endif
-
-#endif
diff --git a/jni/pdnsd/version b/jni/pdnsd/version
deleted file mode 100644
index c400a37..0000000
--- a/jni/pdnsd/version
+++ /dev/null
@@ -1 +0,0 @@
-1.2.9b-par
diff --git a/libs/android-support-v4.jar b/libs/android-support-v4.jar
deleted file mode 100644
index aa0b1a5..0000000
Binary files a/libs/android-support-v4.jar and /dev/null differ
diff --git a/res/drawable-hdpi-v11/ic_stat_notifyerr.png b/res/drawable-hdpi-v11/ic_stat_notifyerr.png
deleted file mode 100644
index 1f97a9e..0000000
Binary files a/res/drawable-hdpi-v11/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-hdpi-v11/ic_stat_tor.png b/res/drawable-hdpi-v11/ic_stat_tor.png
deleted file mode 100644
index b4d2e33..0000000
Binary files a/res/drawable-hdpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-hdpi-v11/ic_stat_tor_off.png b/res/drawable-hdpi-v11/ic_stat_tor_off.png
deleted file mode 100644
index 6df646e..0000000
Binary files a/res/drawable-hdpi-v11/ic_stat_tor_off.png and /dev/null differ
diff --git a/res/drawable-hdpi-v11/ic_stat_tor_xfer.png b/res/drawable-hdpi-v11/ic_stat_tor_xfer.png
deleted file mode 100644
index 3d75721..0000000
Binary files a/res/drawable-hdpi-v11/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-hdpi-v11/inverse.png b/res/drawable-hdpi-v11/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-hdpi-v11/inverse.png and /dev/null differ
diff --git a/res/drawable-hdpi-v9/ic_stat_notifyerr.png b/res/drawable-hdpi-v9/ic_stat_notifyerr.png
deleted file mode 100644
index 58fc5ae..0000000
Binary files a/res/drawable-hdpi-v9/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-hdpi-v9/ic_stat_tor.png b/res/drawable-hdpi-v9/ic_stat_tor.png
deleted file mode 100644
index 1dfdc09..0000000
Binary files a/res/drawable-hdpi-v9/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-hdpi-v9/inverse.png b/res/drawable-hdpi-v9/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-hdpi-v9/inverse.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_action_settings.png b/res/drawable-hdpi/ic_action_settings.png
deleted file mode 100644
index d57b290..0000000
Binary files a/res/drawable-hdpi/ic_action_settings.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png
deleted file mode 100644
index e9954eb..0000000
Binary files a/res/drawable-hdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_stat_notifyerr.png b/res/drawable-hdpi/ic_stat_notifyerr.png
deleted file mode 100644
index b65fa64..0000000
Binary files a/res/drawable-hdpi/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_stat_tor.png b/res/drawable-hdpi/ic_stat_tor.png
deleted file mode 100644
index 0f3b147..0000000
Binary files a/res/drawable-hdpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_stat_tor_xfer.png b/res/drawable-hdpi/ic_stat_tor_xfer.png
deleted file mode 100644
index d222fb6..0000000
Binary files a/res/drawable-hdpi/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-hdpi/inverse.png b/res/drawable-hdpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-hdpi/inverse.png and /dev/null differ
diff --git a/res/drawable-ldpi-v11/ic_stat_notifyerr.png b/res/drawable-ldpi-v11/ic_stat_notifyerr.png
deleted file mode 100644
index b73292d..0000000
Binary files a/res/drawable-ldpi-v11/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-ldpi-v11/ic_stat_tor.png b/res/drawable-ldpi-v11/ic_stat_tor.png
deleted file mode 100644
index 0f24ee8..0000000
Binary files a/res/drawable-ldpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-ldpi-v11/inverse.png b/res/drawable-ldpi-v11/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-ldpi-v11/inverse.png and /dev/null differ
diff --git a/res/drawable-ldpi-v9/ic_stat_notifyerr.png b/res/drawable-ldpi-v9/ic_stat_notifyerr.png
deleted file mode 100644
index 2787bbb..0000000
Binary files a/res/drawable-ldpi-v9/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-ldpi-v9/ic_stat_tor.png b/res/drawable-ldpi-v9/ic_stat_tor.png
deleted file mode 100644
index 82d5446..0000000
Binary files a/res/drawable-ldpi-v9/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-ldpi-v9/inverse.png b/res/drawable-ldpi-v9/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-ldpi-v9/inverse.png and /dev/null differ
diff --git a/res/drawable-ldpi/ic_action_settings.png b/res/drawable-ldpi/ic_action_settings.png
deleted file mode 100644
index c3927fd..0000000
Binary files a/res/drawable-ldpi/ic_action_settings.png and /dev/null differ
diff --git a/res/drawable-ldpi/ic_launcher.png b/res/drawable-ldpi/ic_launcher.png
deleted file mode 100644
index dd665db..0000000
Binary files a/res/drawable-ldpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-ldpi/ic_stat_notifyerr.png b/res/drawable-ldpi/ic_stat_notifyerr.png
deleted file mode 100644
index 518e188..0000000
Binary files a/res/drawable-ldpi/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-ldpi/ic_stat_tor.png b/res/drawable-ldpi/ic_stat_tor.png
deleted file mode 100644
index 3cd399d..0000000
Binary files a/res/drawable-ldpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-ldpi/inverse.png b/res/drawable-ldpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-ldpi/inverse.png and /dev/null differ
diff --git a/res/drawable-mdpi-v11/ic_stat_notifyerr.png b/res/drawable-mdpi-v11/ic_stat_notifyerr.png
deleted file mode 100644
index 935e209..0000000
Binary files a/res/drawable-mdpi-v11/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-mdpi-v11/ic_stat_tor.png b/res/drawable-mdpi-v11/ic_stat_tor.png
deleted file mode 100644
index a34840d..0000000
Binary files a/res/drawable-mdpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-mdpi-v11/ic_stat_tor_xfer.png b/res/drawable-mdpi-v11/ic_stat_tor_xfer.png
deleted file mode 100644
index fe291e7..0000000
Binary files a/res/drawable-mdpi-v11/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-mdpi-v11/inverse.png b/res/drawable-mdpi-v11/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-mdpi-v11/inverse.png and /dev/null differ
diff --git a/res/drawable-mdpi-v9/ic_stat_notifyerr.png b/res/drawable-mdpi-v9/ic_stat_notifyerr.png
deleted file mode 100644
index b149031..0000000
Binary files a/res/drawable-mdpi-v9/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-mdpi-v9/ic_stat_tor.png b/res/drawable-mdpi-v9/ic_stat_tor.png
deleted file mode 100644
index c150ced..0000000
Binary files a/res/drawable-mdpi-v9/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-mdpi-v9/inverse.png b/res/drawable-mdpi-v9/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-mdpi-v9/inverse.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_action_settings.png b/res/drawable-mdpi/ic_action_settings.png
deleted file mode 100644
index d90f125..0000000
Binary files a/res/drawable-mdpi/ic_action_settings.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_launcher.png b/res/drawable-mdpi/ic_launcher.png
deleted file mode 100644
index e45ce29..0000000
Binary files a/res/drawable-mdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_stat_notifyerr.png b/res/drawable-mdpi/ic_stat_notifyerr.png
deleted file mode 100644
index c4b3178..0000000
Binary files a/res/drawable-mdpi/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_stat_tor.png b/res/drawable-mdpi/ic_stat_tor.png
deleted file mode 100644
index 6649e14..0000000
Binary files a/res/drawable-mdpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-mdpi/ic_stat_tor_xfer.png b/res/drawable-mdpi/ic_stat_tor_xfer.png
deleted file mode 100644
index 73ab233..0000000
Binary files a/res/drawable-mdpi/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-mdpi/inverse.png b/res/drawable-mdpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-mdpi/inverse.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v11/ic_stat_notifyerr.png b/res/drawable-xhdpi-v11/ic_stat_notifyerr.png
deleted file mode 100644
index bed9e21..0000000
Binary files a/res/drawable-xhdpi-v11/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v11/ic_stat_tor.png b/res/drawable-xhdpi-v11/ic_stat_tor.png
deleted file mode 100644
index e742ae7..0000000
Binary files a/res/drawable-xhdpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png b/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png
deleted file mode 100644
index 27e8672..0000000
Binary files a/res/drawable-xhdpi-v11/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v11/inverse.png b/res/drawable-xhdpi-v11/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-xhdpi-v11/inverse.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v9/ic_stat_notifyerr.png b/res/drawable-xhdpi-v9/ic_stat_notifyerr.png
deleted file mode 100644
index 7d1139c..0000000
Binary files a/res/drawable-xhdpi-v9/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v9/ic_stat_tor.png b/res/drawable-xhdpi-v9/ic_stat_tor.png
deleted file mode 100644
index 9e56f4f..0000000
Binary files a/res/drawable-xhdpi-v9/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xhdpi-v9/inverse.png b/res/drawable-xhdpi-v9/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-xhdpi-v9/inverse.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_action_settings.png b/res/drawable-xhdpi/ic_action_settings.png
deleted file mode 100644
index f2572c8..0000000
Binary files a/res/drawable-xhdpi/ic_action_settings.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_launcher.png b/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100644
index 13ee02b..0000000
Binary files a/res/drawable-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_stat_notifyerr.png b/res/drawable-xhdpi/ic_stat_notifyerr.png
deleted file mode 100644
index f48e8e8..0000000
Binary files a/res/drawable-xhdpi/ic_stat_notifyerr.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_stat_tor.png b/res/drawable-xhdpi/ic_stat_tor.png
deleted file mode 100644
index 11254d2..0000000
Binary files a/res/drawable-xhdpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_stat_tor_xfer.png b/res/drawable-xhdpi/ic_stat_tor_xfer.png
deleted file mode 100644
index 522d653..0000000
Binary files a/res/drawable-xhdpi/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xhdpi/inverse.png b/res/drawable-xhdpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-xhdpi/inverse.png and /dev/null differ
diff --git a/res/drawable-xxhdpi-v11/ic_stat_tor.png b/res/drawable-xxhdpi-v11/ic_stat_tor.png
deleted file mode 100644
index 1451c50..0000000
Binary files a/res/drawable-xxhdpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png b/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png
deleted file mode 100644
index 59e63d4..0000000
Binary files a/res/drawable-xxhdpi-v11/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xxhdpi/ic_launcher.png b/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100644
index c2f2f45..0000000
Binary files a/res/drawable-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-xxhdpi/ic_stat_tor.png b/res/drawable-xxhdpi/ic_stat_tor.png
deleted file mode 100644
index 778cc1e..0000000
Binary files a/res/drawable-xxhdpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xxhdpi/ic_stat_tor_xfer.png b/res/drawable-xxhdpi/ic_stat_tor_xfer.png
deleted file mode 100644
index eb8809c..0000000
Binary files a/res/drawable-xxhdpi/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xxhdpi/inverse.png b/res/drawable-xxhdpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-xxhdpi/inverse.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi-v11/ic_stat_tor.png b/res/drawable-xxxhdpi-v11/ic_stat_tor.png
deleted file mode 100644
index a78d290..0000000
Binary files a/res/drawable-xxxhdpi-v11/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png b/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png
deleted file mode 100644
index 30fe589..0000000
Binary files a/res/drawable-xxxhdpi-v11/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi/ic_launcher.png b/res/drawable-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 74a3130..0000000
Binary files a/res/drawable-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi/ic_stat_tor.png b/res/drawable-xxxhdpi/ic_stat_tor.png
deleted file mode 100644
index a2ff338..0000000
Binary files a/res/drawable-xxxhdpi/ic_stat_tor.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi/ic_stat_tor_xfer.png b/res/drawable-xxxhdpi/ic_stat_tor_xfer.png
deleted file mode 100644
index 8f96779..0000000
Binary files a/res/drawable-xxxhdpi/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi/inverse.png b/res/drawable-xxxhdpi/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable-xxxhdpi/inverse.png and /dev/null differ
diff --git a/res/drawable/button.xml b/res/drawable/button.xml
deleted file mode 100644
index 4bff579..0000000
--- a/res/drawable/button.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:state_pressed="true" >
-    <shape>
-      <solid
-          android:color="@color/panel_background" />
-      <stroke
-          android:width="1dp"
-          android:color="#ffffff" />
-      <corners
-          android:radius="6dp" />
-      <padding
-          android:left="10dp"
-          android:top="10dp"
-          android:right="10dp"
-          android:bottom="10dp" />
-    </shape>
-  </item>
-  <item>
-    <shape>
-      <gradient
-          android:startColor="@color/panel_background_dark"
-          android:endColor="@color/panel_background_main"
-          android:angle="270" />
-      <stroke
-          android:width="2dp"
-          android:color="#aaaaaa" />
-      <corners
-          android:radius="6dp" />
-      <padding
-          android:left="10dp"
-          android:top="10dp"
-          android:right="10dp"
-          android:bottom="10dp" />
-    </shape>
-  </item>
-</selector>
\ No newline at end of file
diff --git a/res/drawable/button_off.xml b/res/drawable/button_off.xml
deleted file mode 100644
index 18da286..0000000
--- a/res/drawable/button_off.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:state_pressed="true" >
-    <shape>
-      <solid
-          android:color="@color/panel_background" />
-      <stroke
-          android:width="1dp"
-          android:color="#ffffff" />
-      <corners
-          android:radius="6dp" />
-      <padding
-          android:left="10dp"
-          android:top="10dp"
-          android:right="10dp"
-          android:bottom="10dp" />
-    </shape>
-  </item>
-  <item>
-    <shape>
-      <gradient
-          android:startColor="@color/panel_background_dark"
-          android:endColor="@color/panel_background_main"
-          android:angle="270" />
-      <stroke
-          android:width="2dp"
-          android:color="#555555" />
-      <corners
-          android:radius="6dp" />
-      <padding
-          android:left="10dp"
-          android:top="10dp"
-          android:right="10dp"
-          android:bottom="10dp" />
-    </shape>
-  </item>
-</selector>
\ No newline at end of file
diff --git a/res/drawable/button_on.xml b/res/drawable/button_on.xml
deleted file mode 100644
index 348a6df..0000000
--- a/res/drawable/button_on.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:state_pressed="true" >
-    <shape>
-      <solid
-          android:color="@color/bright_green" />
-      <stroke
-          android:width="1dp"
-          android:color="#ffffff" />
-      <corners
-          android:radius="6dp" />
-      <padding
-          android:left="10dp"
-          android:top="10dp"
-          android:right="10dp"
-          android:bottom="10dp" />
-    </shape>
-  </item>
-  <item>
-  <shape>
-      <solid
-          android:color="@color/dark_green" />
-      <stroke
-          android:width="1dp"
-          android:color="#ffffff" />
-      <corners
-          android:radius="6dp" />
-      <padding
-          android:left="10dp"
-          android:top="10dp"
-          android:right="10dp"
-          android:bottom="10dp" />
-    </shape>
-  </item>
-</selector>
\ No newline at end of file
diff --git a/res/drawable/classyfabric.png b/res/drawable/classyfabric.png
deleted file mode 100644
index ca3d267..0000000
Binary files a/res/drawable/classyfabric.png and /dev/null differ
diff --git a/res/drawable/error.png b/res/drawable/error.png
deleted file mode 100644
index 42dc6d6..0000000
Binary files a/res/drawable/error.png and /dev/null differ
diff --git a/res/drawable/ic_chatsecure.png b/res/drawable/ic_chatsecure.png
deleted file mode 100644
index aaddd88..0000000
Binary files a/res/drawable/ic_chatsecure.png and /dev/null differ
diff --git a/res/drawable/ic_duckduckgo.png b/res/drawable/ic_duckduckgo.png
deleted file mode 100644
index 696dcd6..0000000
Binary files a/res/drawable/ic_duckduckgo.png and /dev/null differ
diff --git a/res/drawable/ic_launcher.png b/res/drawable/ic_launcher.png
deleted file mode 100644
index ea47373..0000000
Binary files a/res/drawable/ic_launcher.png and /dev/null differ
diff --git a/res/drawable/ic_menu_about.png b/res/drawable/ic_menu_about.png
deleted file mode 100644
index 866d4e0..0000000
Binary files a/res/drawable/ic_menu_about.png and /dev/null differ
diff --git a/res/drawable/ic_menu_exit.png b/res/drawable/ic_menu_exit.png
deleted file mode 100644
index d301ea6..0000000
Binary files a/res/drawable/ic_menu_exit.png and /dev/null differ
diff --git a/res/drawable/ic_menu_goto.png b/res/drawable/ic_menu_goto.png
deleted file mode 100644
index 40183eb..0000000
Binary files a/res/drawable/ic_menu_goto.png and /dev/null differ
diff --git a/res/drawable/ic_play.png b/res/drawable/ic_play.png
deleted file mode 100644
index a919794..0000000
Binary files a/res/drawable/ic_play.png and /dev/null differ
diff --git a/res/drawable/ic_stat_tor_off.png b/res/drawable/ic_stat_tor_off.png
deleted file mode 100644
index 6df646e..0000000
Binary files a/res/drawable/ic_stat_tor_off.png and /dev/null differ
diff --git a/res/drawable/ic_stat_tor_xfer.png b/res/drawable/ic_stat_tor_xfer.png
deleted file mode 100644
index 73ab233..0000000
Binary files a/res/drawable/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/res/drawable/ic_twitter.png b/res/drawable/ic_twitter.png
deleted file mode 100644
index 1e61c0a..0000000
Binary files a/res/drawable/ic_twitter.png and /dev/null differ
diff --git a/res/drawable/icon_martus.png b/res/drawable/icon_martus.png
deleted file mode 100644
index e72db19..0000000
Binary files a/res/drawable/icon_martus.png and /dev/null differ
diff --git a/res/drawable/icon_orfox.png b/res/drawable/icon_orfox.png
deleted file mode 100644
index 57ed1f0..0000000
Binary files a/res/drawable/icon_orfox.png and /dev/null differ
diff --git a/res/drawable/icon_story_maker.png b/res/drawable/icon_story_maker.png
deleted file mode 100644
index 9c54ca5..0000000
Binary files a/res/drawable/icon_story_maker.png and /dev/null differ
diff --git a/res/drawable/inverse.png b/res/drawable/inverse.png
deleted file mode 100644
index 65eff2c..0000000
Binary files a/res/drawable/inverse.png and /dev/null differ
diff --git a/res/drawable/n8fr8.jpg b/res/drawable/n8fr8.jpg
deleted file mode 100644
index 4939d5c..0000000
Binary files a/res/drawable/n8fr8.jpg and /dev/null differ
diff --git a/res/drawable/oldtoroff.png b/res/drawable/oldtoroff.png
deleted file mode 100644
index 4b23e0b..0000000
Binary files a/res/drawable/oldtoroff.png and /dev/null differ
diff --git a/res/drawable/oldtoron.png b/res/drawable/oldtoron.png
deleted file mode 100644
index a99bec1..0000000
Binary files a/res/drawable/oldtoron.png and /dev/null differ
diff --git a/res/drawable/oldtorstarting.png b/res/drawable/oldtorstarting.png
deleted file mode 100644
index a56844a..0000000
Binary files a/res/drawable/oldtorstarting.png and /dev/null differ
diff --git a/res/drawable/onion32.png b/res/drawable/onion32.png
deleted file mode 100644
index 7846760..0000000
Binary files a/res/drawable/onion32.png and /dev/null differ
diff --git a/res/drawable/tilebg.xml b/res/drawable/tilebg.xml
deleted file mode 100644
index 6f0d2a3..0000000
--- a/res/drawable/tilebg.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/classyfabric"
-    android:tileMode="repeat" />
\ No newline at end of file
diff --git a/res/drawable/toggle.xml b/res/drawable/toggle.xml
deleted file mode 100644
index 0f9a36e..0000000
--- a/res/drawable/toggle.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_checked="false"
-        android:drawable="@drawable/button_off" />
-    <item
-        android:state_checked="true"
-        android:drawable="@drawable/button_on" />
-</selector>
\ No newline at end of file
diff --git a/res/drawable/tor.png b/res/drawable/tor.png
deleted file mode 100644
index 0d63dd9..0000000
Binary files a/res/drawable/tor.png and /dev/null differ
diff --git a/res/drawable/tor25.png b/res/drawable/tor25.png
deleted file mode 100644
index 20b7666..0000000
Binary files a/res/drawable/tor25.png and /dev/null differ
diff --git a/res/drawable/toroff.png b/res/drawable/toroff.png
deleted file mode 100644
index a72790b..0000000
Binary files a/res/drawable/toroff.png and /dev/null differ
diff --git a/res/drawable/toron.png b/res/drawable/toron.png
deleted file mode 100644
index e3592b1..0000000
Binary files a/res/drawable/toron.png and /dev/null differ
diff --git a/res/drawable/torstarting.png b/res/drawable/torstarting.png
deleted file mode 100644
index 6e84a6f..0000000
Binary files a/res/drawable/torstarting.png and /dev/null differ
diff --git a/res/layout-v21/layout_notification_expanded.xml b/res/layout-v21/layout_notification_expanded.xml
deleted file mode 100644
index 179b95e..0000000
--- a/res/layout-v21/layout_notification_expanded.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:internal="http://schemas.android.com/apk/prv/res/android"
-    android:id="@+id/status_bar_latest_event_content"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"    
-    android:background="#333333"
-    >
-    <ImageView android:id="@+id/icon"
-        android:layout_width="@dimen/notification_large_icon_width"
-        android:layout_height="@dimen/notification_large_icon_height"
-        android:scaleType="center"
-        />
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="fill_vertical"
-        android:layout_marginStart="@dimen/notification_large_icon_width"
-        android:minHeight="@dimen/notification_large_icon_height"
-        android:orientation="vertical"
-        android:paddingEnd="8dp"
-        android:paddingTop="2dp"
-        android:paddingBottom="2dp"
-        android:gravity="top"
-        >
-        <LinearLayout
-            android:id="@+id/line1"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingTop="6dp"
-            android:layout_marginStart="8dp"
-            android:orientation="horizontal"
-            >
-            <TextView android:id="@+id/title"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:singleLine="true"
-                android:ellipsize="marquee"
-                android:fadingEdge="horizontal"
-                android:layout_weight="1"
-                android:textStyle="bold"
- 				android:textAppearance="@style/NotificationTitle"
-                 />
-            
-        </LinearLayout>
-        <LinearLayout
-            android:id="@+id/line3"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal"       
-            android:layout_marginStart="8dp"                
-            >
-            <TextView android:id="@+id/text"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_weight="1"
-                android:layout_gravity="center"
-                android:singleLine="true"
-                android:ellipsize="marquee"
-                android:fadingEdge="horizontal"
-				android:textAppearance="@style/NotificationText"                
-                />
-            <TextView android:id="@+id/info"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:layout_weight="0"
-                android:singleLine="true"
-                android:gravity="center"
-                android:paddingStart="8dp"
-				android:textAppearance="@style/NotificationText"
-                />
-            <ImageView android:id="@+id/right_icon"
-                android:layout_width="16dp"
-                android:layout_height="16dp"
-                android:layout_gravity="center"
-                android:layout_weight="0"
-                android:layout_marginStart="8dp"
-                android:scaleType="centerInside"
-                android:visibility="gone"
-                />
-            <!-- 
-            <ImageButton
-		    android:id="@+id/_tor_notificationBT"
-		    android:layout_width="24dp"
-		    android:layout_height="24dp"		   
-		    android:src="@drawable/nav_refresh" />
-		     -->
-        </LinearLayout>
-         <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="1dp"
-            android:orientation="horizontal"       
-          	android:background="#999999"         
-          	android:layout_marginTop="3dp"    
-          	android:layout_marginBottom="3dp"    
-          	
-            />
-        <TextView android:id="@+id/text2"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="-2dp"
-            android:layout_marginBottom="-2dp"
-            android:layout_marginStart="8dp"            
-            android:fadingEdge="horizontal"        
-            />
-    </LinearLayout>
-</FrameLayout>
diff --git a/res/layout/layout_about.xml b/res/layout/layout_about.xml
deleted file mode 100644
index 82f3079..0000000
--- a/res/layout/layout_about.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-	<ScrollView android:id="@+id/aboutscrollview" 
-		android:orientation="vertical"
-		android:layout_width="fill_parent" 
-		android:layout_height="fill_parent">    
-		<LinearLayout
-		    android:orientation="vertical"
-		    android:layout_width="fill_parent"
-		    android:layout_height="fill_parent">
-		    <TextView android:text="@string/wizard_details"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"		
-				android:paddingTop="15px"
-				android:paddingLeft="15px"
-				android:textStyle="bold"
-				android:textColor="#00ff00" />	
-			<TextView android:text="@string/wizard_details_msg"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:autoLink="web"
-				android:textColorLink="#ffffff"
-				android:paddingLeft="15px"		
-				android:textColor="#ffffff" />
-				
-			<TextView android:text="Version: "
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:paddingTop="15px"
-				android:paddingLeft="15px"
-				android:textStyle="bold"
-				android:textColor="#00ff00" />
-			<TextView android:text="- Unknown -"
-				android:id="@+id/versionName"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:paddingLeft="15px"		
-				android:layout_gravity="center_vertical"
-				android:textColor="#ffffff" />	
-			<TextView android:text="@string/project_home"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"		
-				android:paddingTop="15px"
-				android:paddingLeft="15px"
-				android:textStyle="bold"
-				android:textColor="#00ff00" />
-			<TextView android:text="@string/project_urls"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:autoLink="web"
-				android:textColorLink="#ffffff"
-				android:paddingLeft="15px"		
-				android:textColor="#ffffff" />
-			<TextView android:text="License: "
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:paddingTop="15px"
-				android:paddingLeft="15px"
-				android:textStyle="bold"
-				android:textColor="#00ff00" />	
-			<TextView android:text="@string/the_tor_license"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:paddingLeft="15px"								
-				android:textColor="#ffffff" />	
-			<TextView android:text="@string/https_torproject_org"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:autoLink="web"
-				android:textColorLink="#ffffff"
-				android:paddingLeft="15px"		
-				android:textColor="#ffffff" />				
-			<TextView android:text="@string/third_party_software"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"		
-				android:paddingTop="15px"
-				android:paddingLeft="15px"
-				android:textStyle="bold"
-				android:textColor="#00ff00" />	
-			<TextView android:text="@string/tor_version"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:autoLink="web"
-				android:textColorLink="#ffffff"
-				android:paddingLeft="15px"
-				android:textColor="#ffffff" />				
-			<TextView android:text="@string/libevent_version"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:autoLink="web"
-				android:textColorLink="#ffffff"
-				android:paddingLeft="15px"	
-				android:textColor="#ffffff" />	
-			<TextView android:text="@string/polipo_version"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:autoLink="web"
-				android:textColorLink="#ffffff"
-				android:paddingLeft="15px"	
-				android:textColor="#ffffff" />	
-			<TextView android:text="@string/iptables_version"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:autoLink="web"
-				android:textColorLink="#ffffff"
-				android:paddingLeft="15px"
-				android:textColor="#ffffff"/>
-			<TextView android:text="@string/openssl_version"
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:autoLink="web"
-				android:textColorLink="#ffffff"
-				android:paddingLeft="15px"	
-				android:textColor="#ffffff" />						
-			</LinearLayout>
-		</ScrollView>			
-</LinearLayout>
diff --git a/res/layout/layout_apps.xml b/res/layout/layout_apps.xml
deleted file mode 100644
index d3633a0..0000000
--- a/res/layout/layout_apps.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:orientation="vertical"
-        android:duplicateParentState="true">
-
-    <!-- 
-      <TextView android:text="Select apps to use with Tor:"
-              android:layout_width="fill_parent" 
-              android:layout_height="wrap_content"
-              android:textSize="16sp"		
-              android:padding="3px" 
-              android:layout_above="@+id/applistview"
-          />
-  -->
-
-    <ListView
-        android:id="@+id/applistview"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_above="@+id/layout_button_filters"
-        android:layout_alignParentTop="true" >
-
-    </ListView>
-
-    <Button
-        android:id="@+id/btnsave"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:layout_alignParentStart="true"
-        android:layout_alignParentLeft="true"
-        android:text="@string/button_close" />
-
-    <RelativeLayout
-        android:id="@+id/layout_button_filters"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_above="@+id/btnsave"
-        android:orientation="horizontal" >
-
-        <Button
-            android:id="@+id/button_proxy_all"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentLeft="true"
-            android:layout_alignParentStart="true"
-            android:layout_toLeftOf="@+id/button_proxy_none"
-            android:layout_toStartOf="@+id/button_proxy_none"
-            android:text="@string/button_proxy_all" />
-
-        <Button
-            android:id="@+id/button_invert_selection"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentRight="true"
-            android:layout_alignParentEnd="true"
-            android:layout_alignParentTop="true"
-            android:text="@string/button_invert_selection" />
-
-        <Button
-            android:id="@+id/button_proxy_none"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentTop="true"
-            android:layout_toLeftOf="@+id/button_invert_selection"
-            android:layout_toStartOf="@+id/button_invert_selection"
-            android:text="@string/button_proxy_none" />
-
-    </RelativeLayout>
-
-</RelativeLayout>
diff --git a/res/layout/layout_apps_item.xml b/res/layout/layout_apps_item.xml
deleted file mode 100644
index 9d16efd..0000000
--- a/res/layout/layout_apps_item.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    android:stretchColumns="1">
-    <TableRow>
-    <ImageView android:id="@+id/itemicon" android:layout_width="50dip" android:layout_height="50dip"  android:padding="3dip"></ImageView>
-
-<TextView android:layout_height="wrap_content" android:id="@+id/itemtext" android:text="uid:packages"  android:textSize="18sp"  android:padding="3dip"></TextView>
-
-<CheckBox  android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/itemcheck" ></CheckBox>
-       
-    </TableRow>
-    
-</TableLayout>
-
diff --git a/res/layout/layout_diag.xml b/res/layout/layout_diag.xml
deleted file mode 100644
index c19a5b1..0000000
--- a/res/layout/layout_diag.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ScrollView android:id="@+id/aboutscrollview" 
-    xmlns:android="http://schemas.android.com/apk/res/android"
-	android:orientation="vertical"
-	android:layout_width="match_parent" 
-	android:layout_height="match_parent">    
-    <TextView 
-        android:id="@+id/diaglog"
-		android:layout_width="fill_parent" 
-		android:layout_height="wrap_content"
-		android:textAppearance="?android:attr/textAppearanceMedium"
-		android:layout_margin="9dp"
-		/>
-</ScrollView>
\ No newline at end of file
diff --git a/res/layout/layout_help.xml b/res/layout/layout_help.xml
deleted file mode 100644
index da29a52..0000000
--- a/res/layout/layout_help.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content">
-	<ScrollView android:id="@+id/helpscrollview" 
-		android:orientation="vertical"
-		android:layout_width="fill_parent" 
-		android:layout_height="fill_parent">    
-		<LinearLayout
-		    android:orientation="vertical"
-		    android:layout_width="fill_parent"
-		    android:layout_height="fill_parent">
-			<TextView android:text=""
-				android:layout_width="fill_parent" 
-				android:layout_height="wrap_content"
-				android:textColor="#ffffff" />				
-			</LinearLayout>
-		</ScrollView>			
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/layout_log.xml b/res/layout/layout_log.xml
deleted file mode 100644
index b9c7623..0000000
--- a/res/layout/layout_log.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-    
-    	<RelativeLayout android:id="@+id/layoutHeaderMain"
-		android:layout_width="fill_parent"
-		android:layout_height="30dp"
-		android:layout_gravity="center_horizontal"
-		android:background="#A0909090">
-        <ImageView android:id="@+id/radioModeImage"
- 		    android:layout_width="wrap_content"
-		    android:layout_height="wrap_content"
-			android:layout_marginTop="0px"
-			android:layout_marginRight="3px"
-			android:gravity="right"
-			android:layout_toRightOf="@+id/radioModeLabel"
-			android:layout_alignParentRight="true"
-			android:layout_alignParentTop="true"
-			android:src="@drawable/tor25"
-			/>
-		<TextView android:id="@+id/radioModeText"
- 		    android:layout_width="wrap_content"
-		    android:layout_height="wrap_content"           
-            android:text="@string/powered_by"
-			android:layout_marginTop="9px"
-			android:layout_marginRight="0px"
-			android:gravity="right"
-			android:layout_toLeftOf="@+id/radioModeImage"
-            android:textColor="#333333" />
-	</RelativeLayout>
-	
-     <ScrollView  android:orientation="vertical"
-      android:layout_height="wrap_content"
-         android:layout_width="fill_parent"  android:id="@+id/logScrollView"
-        >
-         
-         <TextView android:id="@+id/messageLog"
-         android:layout_height="wrap_content"
-         android:layout_width="fill_parent"
-         android:layout_x="2px"
-		 android:layout_y="2px"
-         android:textSize="14px"
-         android:background="#A0222222"
-         />	
-        
-	</ScrollView>
-     	
-     </LinearLayout>
-            
\ No newline at end of file
diff --git a/res/layout/layout_main.xml b/res/layout/layout_main.xml
deleted file mode 100644
index 4a041c3..0000000
--- a/res/layout/layout_main.xml
+++ /dev/null
@@ -1,244 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout android:gravity="center_vertical|center_horizontal"
-     xmlns:android="http://schemas.android.com/apk/res/android"
-     android:orientation="vertical" android:layout_width="match_parent"
-      android:layout_height="match_parent"
-      
-      >
-    
-     <android.support.v7.widget.Toolbar
-        android:id="@+id/toolbar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:minHeight="?attr/actionBarSize" />
-    <android.support.v4.widget.DrawerLayout
-    android:id="@+id/drawer_layout"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    >
-    
-<LinearLayout
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:id="@+id/content_frame"
-     >
-        
-    <LinearLayout android:gravity="center_vertical|center_horizontal"
-     android:orientation="vertical" android:layout_width="match_parent"
-      android:layout_height="wrap_content"
-      
-      >
-      
-        <LinearLayout
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    
-     >
-        
-    		
-    <!-- 
-	<TextView android:id="@+id/lblStatus"
-		android:text="status status status"
-		android:gravity="center_horizontal"
-		android:textSize="20sp"
-		android:layout_width="match_parent"
-		android:layout_height="wrap_content"
-		android:layout_marginBottom="10dp"
-		android:layout_marginTop="10dp"
-		android:layout_marginLeft="40dp"
-		android:layout_marginRight="40dp"
-		android:textColor="#ffffff"
-		android:maxLines="1"
-		android:fontFamily="sans-serif-light"	
-		 />
-		     -->
-		     
-	    <RelativeLayout 
-		     android:id="@+id/rowTrafficDown" 
-		     android:layout_width="match_parent"
-		      android:layout_height="wrap_content"
-		       android:orientation="horizontal"
-		       android:paddingLeft="3sp"
-		       android:paddingRight="3sp"
-		       
-		      >
-	    <TextView
-	    	android:id="@+id/trafficLabelDown"
-			android:layout_width="wrap_content"
-			android:layout_height="wrap_content"
-			 android:layout_alignParentLeft="true"
-			android:textSize="15sp"
-			android:text="@string/main_layout_download"
-			android:gravity="center_vertical"
-			android:fontFamily="sans-serif-light" />
-	    <TextView
-			android:id="@+id/trafficLabelUp"
-			android:layout_width="wrap_content"
-			android:layout_height="wrap_content"
-			 android:layout_alignParentRight="true"
-			android:text="@string/main_layout_upload"
-			android:textSize="15sp"
-			android:gravity="center_vertical"
-			android:fontFamily="sans-serif-light" />
-		
-		</RelativeLayout>
-		 <RelativeLayout 
-		     android:id="@+id/rowTrafficUp"
-		     android:layout_width="fill_parent"
-		      android:layout_height="wrap_content"
-		     	  android:paddingLeft="3sp"
-		       android:paddingRight="3sp"
-		       android:paddingBottom="3sp"
-		     
-		      >
-		<TextView
-			android:id="@+id/trafficDown"
-			android:layout_width="wrap_content"
-			android:layout_height="wrap_content"
-			 android:layout_alignParentLeft="true"
-			android:textSize="15sp"
-			android:gravity="center_vertical"
-			android:fontFamily="sans-serif-light"
-			 />
-		
-		<TextView
-			android:id="@+id/trafficUp"
-			android:layout_width="wrap_content"
-			android:layout_height="wrap_content"
-			 android:layout_alignParentRight="true"
-			android:textSize="15sp"
-			android:gravity="center_vertical"
-			android:fontFamily="sans-serif-light"
-			 />
-		</RelativeLayout>
-		    </LinearLayout>
-		 
-        
-       <ProgressBar
-   android:id="@+id/pbConnecting"
-   style="?android:attr/progressBarStyleLarge"
-   android:layout_width="wrap_content"
-   android:layout_height="wrap_content"
-   		android:layout_marginTop="60dp"
-   			android:visibility="gone"	  
-   		
-android:layout_gravity="center_horizontal|center_vertical"/>
-       
-	<LinearLayout
-	    	android:layout_width="match_parent"
-		android:layout_height="wrap_content"
-		android:id="@+id/frameMain"
-		android:visibility="visible"	
-		 android:orientation="vertical"   
-		android:layout_gravity="center_horizontal|center_vertical"
-		 >
-		       <org.torproject.android.ui.ImageProgressView
-				android:id="@+id/imgStatus"
-				android:layout_width="match_parent"
-				android:layout_height="0dp"		
-						android:layout_weight=".8"
-				
-				android:padding="0dp"
-				android:layout_margin="0dp"
-				android:src="@drawable/toroff" />
-		       
-		       	<TextView
-					android:id="@+id/lblStatus"
-					android:layout_width="match_parent"
-					android:layout_height="wrap_content"
-					android:textSize="14sp"
-					android:gravity="center_horizontal"
-					android:fontFamily="sans-serif-light"
-					android:text=""
-					android:lines="2"
-					android:maxLines="2"				
-					android:layout_gravity="center_horizontal"
-					android:layout_margin="0dp"
-					android:layout_marginLeft="5dp"			
-					android:layout_marginRight="5dp"
-					 />
-		
-		<LinearLayout android:gravity="center_horizontal"
-	     android:orientation="horizontal" android:layout_width="match_parent"
-	      android:layout_height="wrap_content"
-	      
-			android:layout_gravity="bottom"
-	      >
-	
-			<Button
-			    android:id="@+id/btnBrowser"
-			    android:layout_width="wrap_content"
-			    android:layout_height="wrap_content"
-			    android:text="@string/menu_verify_browser"			    
-          		android:layout_marginTop="3dp"
-          		android:layout_marginBottom="3dp"
-          		 android:ellipsize="end"
-          android:singleLine="true"
-			     />
-	
-			
-			<ToggleButton
-			    android:id="@+id/btnVPN"
-			    android:layout_width="wrap_content"
-			    android:layout_height="wrap_content"
-			    android:textOff="@string/menu_vpn"
-			    android:textOn="@string/menu_vpn"	
-          android:layout_margin="3dp"
-          android:ellipsize="end"
-          android:singleLine="true"
-			    />
-			
-			
-			<ToggleButton
-			    android:id="@+id/btnBridges"
-			    android:layout_width="wrap_content"
-			    android:layout_height="wrap_content"
-			    android:textOff="@string/bridges"
-			    android:textOn="@string/bridges"	
-          		    android:layout_marginTop="3dp"
-          		android:layout_marginBottom="3dp"
-          		     android:ellipsize="end"
-          android:singleLine="true"
-			    />
-
-			<Spinner
-			    android:id="@+id/spinnerCountry"
-			    android:layout_width="wrap_content"
-			    android:layout_height="wrap_content"
-			    android:layout_weight="1" />
-			 
-		    </LinearLayout>
-		     </LinearLayout>
-	
-	    </LinearLayout>
-	    </LinearLayout>
-	    
-	 <LinearLayout
-    android:layout_width="320dp"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:id="@+id/left_drawer"
-    android:layout_gravity="start"            
-    android:background="#333333"
-     >
-    	<TextView
-			android:id="@+id/orbotLog"
-			android:textSize="12sp"
-			android:gravity="left"
-			android:layout_width="fill_parent"
-			android:layout_height="wrap_content"
-			android:layout_alignParentLeft="true"
-			android:layout_marginTop="10dp"
-			android:textIsSelectable="true"
-			android:fontFamily="monospace"
-			 />
-    </LinearLayout>
-	
-	</android.support.v4.widget.DrawerLayout>
-	
-</LinearLayout>
-
-
diff --git a/res/layout/layout_notification_expanded.xml b/res/layout/layout_notification_expanded.xml
deleted file mode 100644
index c2a9c9e..0000000
--- a/res/layout/layout_notification_expanded.xml
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:internal="http://schemas.android.com/apk/prv/res/android"
-    android:id="@+id/status_bar_latest_event_content"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"    
-    >
-    <ImageView android:id="@+id/icon"
-        android:layout_width="@dimen/notification_large_icon_width"
-        android:layout_height="@dimen/notification_large_icon_height"
-        android:scaleType="center"
-        />
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="fill_vertical"
-        android:layout_marginStart="@dimen/notification_large_icon_width"
-        android:minHeight="@dimen/notification_large_icon_height"
-        android:orientation="vertical"
-        android:paddingEnd="8dp"
-        android:paddingTop="2dp"
-        android:paddingBottom="2dp"
-        android:gravity="top"
-        >
-        <LinearLayout
-            android:id="@+id/line1"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingTop="6dp"
-            android:layout_marginStart="8dp"
-            android:orientation="horizontal"
-            >
-            <TextView android:id="@+id/title"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:singleLine="true"
-                android:ellipsize="marquee"
-                android:fadingEdge="horizontal"
-                android:layout_weight="1"
-                android:textStyle="bold"
- 				android:textAppearance="@style/NotificationTitle"
-                 />
-            
-        </LinearLayout>
-        <LinearLayout
-            android:id="@+id/line3"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal"       
-            android:layout_marginStart="8dp"                
-            >
-            <TextView android:id="@+id/text"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_weight="1"
-                android:layout_gravity="center"
-                android:singleLine="true"
-                android:ellipsize="marquee"
-                android:fadingEdge="horizontal"
-				android:textAppearance="@style/NotificationText"                
-                />
-            <TextView android:id="@+id/info"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:layout_weight="0"
-                android:singleLine="true"
-                android:gravity="center"
-                android:paddingStart="8dp"
-				android:textAppearance="@style/NotificationText"
-                />
-            <ImageView android:id="@+id/right_icon"
-                android:layout_width="16dp"
-                android:layout_height="16dp"
-                android:layout_gravity="center"
-                android:layout_weight="0"
-                android:layout_marginStart="8dp"
-                android:scaleType="centerInside"
-                android:visibility="gone"
-                />
-            <!-- 
-            <ImageButton
-		    android:id="@+id/_tor_notificationBT"
-		    android:layout_width="24dp"
-		    android:layout_height="24dp"		   
-		    android:src="@drawable/nav_refresh" />
-		     -->
-        </LinearLayout>
-         <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="1dp"
-            android:orientation="horizontal"       
-          	android:background="#999999"         
-          	android:layout_marginTop="3dp"    
-          	android:layout_marginBottom="3dp"    
-          	
-            />
-        <TextView android:id="@+id/text2"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="-2dp"
-            android:layout_marginBottom="-2dp"
-            android:layout_marginStart="8dp"            
-            android:fadingEdge="horizontal"        
-            />
-    </LinearLayout>
-</FrameLayout>
diff --git a/res/layout/layout_promo_apps.xml b/res/layout/layout_promo_apps.xml
deleted file mode 100644
index 00c1f6f..0000000
--- a/res/layout/layout_promo_apps.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-            
-   
-<TableLayout  android:id="@+id/TableLayout01" android:stretchColumns="*" android:layout_height="fill_parent" android:layout_width="wrap_content">
-
-<TableRow android:layout_margin="10dip"   android:id="@+id/TableRow01" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="fill_parent">
-
-
-	<ScrollView android:id="@+id/helpscrollview" 
-		android:orientation="vertical"
-		android:layout_width="fill_parent" 
-		android:layout_height="fill_parent"
-		 android:layout_span="3">    
-
-<LinearLayout
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    android:background="#575757"
-    android:orientation="vertical"
-    android:paddingRight="20dip" >
-
-    <TextView
-        android:id="@+id/WizardTextBody1"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_weight="0.31"
-        android:padding="20dip"
-        android:text="@string/wizard_tips_msg"
-        android:textColor="#ffffff"
-        android:textSize="8pt" >
-    </TextView>
-    
-    <Button
-        android:id="@+id/WizardRootButtonInstallOrweb"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="left"
-        android:layout_marginTop="10px"
-        android:drawableLeft="@drawable/icon_orfox"
-        android:text="@string/wizard_tips_orweb" />
-
-    <Button
-        android:id="@+id/WizardRootButtonInstallGibberbot"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="left"
-        android:layout_marginTop="10px"
-        android:drawableLeft="@drawable/ic_chatsecure"
-        android:text="@string/wizard_tips_gibberbot" />
-
-    
-    <Button
-        android:id="@+id/WizardRootButtonInstallDuckgo"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="left"
-        android:layout_marginTop="10px"
-        android:drawableLeft="@drawable/ic_duckduckgo"
-        android:text="@string/wizard_tips_duckgo" />
-    
-    <Button
-        android:id="@+id/WizardRootButtonInstallTwitter"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="left"
-        android:layout_marginTop="10px"
-        android:drawableLeft="@drawable/ic_twitter"
-        android:text="@string/wizard_tips_twitter" />
-    
-    <Button
-        android:id="@+id/WizardRootButtonInstallStoryMaker"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="left"
-        android:layout_marginTop="10px"
-        android:drawableLeft="@drawable/icon_story_maker"
-        android:text="@string/wizard_tips_story_maker" />
-    
-         <Button
-        android:id="@+id/WizardRootButtonInstallMartus"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="left"
-        android:layout_marginTop="10px"
-        android:drawableLeft="@drawable/icon_martus"
-        android:text="@string/wizard_tips_martus" />
-         
-     <Button
-        android:id="@+id/WizardRootButtonGooglePlay"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="left"
-        android:layout_marginTop="10px"
-        android:drawableLeft="@drawable/ic_play"
-        android:text="@string/wizard_tips_fdroid_org" />
-    
-
-</LinearLayout>
-
-		</ScrollView>
-		
-</TableRow>
-<TableRow android:background="#000000" android:layout_marginTop="10dip" android:paddingTop="10dip" android:id="@+id/TableRow02" android:textColor="#00ff00" android:layout_width="fill_parent" android:layout_height="30px">
-	   <!-- 	<Button android:text="@string/btn_back" android:id="@+id/btnWizard1" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button> -->
-    	<Button android:text="@string/btn_okay" android:id="@+id/btnWizard2"  android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>	    
-</TableRow>			
-</TableLayout>
-</LinearLayout>
-
-
diff --git a/res/layout/layout_settings.xml b/res/layout/layout_settings.xml
deleted file mode 100644
index f9b6971..0000000
--- a/res/layout/layout_settings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-    
-     
-        <ScrollView  android:layout_height="380px"
-            android:layout_width="fill_parent">
-            
-            <EditText android:id="@+id/textSettings"
-            android:layout_height="fill_parent"
-            android:layout_width="fill_parent"
-            android:layout_weight="1.0"
-            android:singleLine="false"
-            android:textSize="11px"
-            />	
-            
-        </ScrollView>
-            
-          <Button android:id="@+id/btnSettingsSave" 
-            android:layout_width="fill_parent" 
-            android:layout_height="40px" 
-             android:text="@string/btn_save_settings"        
-             android:layout_margin="0sp"
-      
-             
-            />
-</LinearLayout>
diff --git a/res/layout/layout_vpn_setup.xml b/res/layout/layout_vpn_setup.xml
deleted file mode 100644
index 5d2c6dc..0000000
--- a/res/layout/layout_vpn_setup.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<ScrollView android:id="@+id/aboutscrollview" 
-    xmlns:android="http://schemas.android.com/apk/res/android"
-	android:orientation="vertical"
-	android:layout_width="match_parent" 
-	android:layout_height="fill_parent">    
-	<LinearLayout
-	    android:orientation="vertical"
-	    android:layout_width="fill_parent"
-	    android:layout_height="fill_parent">
-	    <TextView android:text="Apps Mode"
-			android:layout_width="fill_parent" 
-			android:layout_height="wrap_content"		
-			android:paddingTop="15px"
-			android:paddingLeft="15px"
-			android:textStyle="bold"
-			android:textColor="#00ff00" />	
-			<TextView android:text=""
-			android:layout_width="fill_parent" 
-			android:layout_height="wrap_content"
-			android:autoLink="web"
-			android:textColorLink="#ffffff"
-			android:paddingLeft="15px"		
-			android:textColor="#ffffff" />
-			
-			 <Button android:id="@+id/btnActivateVPN" 
-           android:layout_width="wrap_content" 
-           android:layout_height="wrap_content" 
-            android:text="Activate"        
-            android:layout_margin="0sp"/>
-			
-		</LinearLayout>
-	</ScrollView>
diff --git a/res/layout/notification_template_part_chronometer.xml b/res/layout/notification_template_part_chronometer.xml
deleted file mode 100644
index 14a4758..0000000
--- a/res/layout/notification_template_part_chronometer.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<Chronometer android:id="@+id/chronometer" xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:layout_gravity="center"
-    android:layout_weight="0"
-    android:singleLine="true"
-    android:gravity="center"
-    android:paddingStart="8dp"
-    />
diff --git a/res/layout/notification_template_part_time.xml b/res/layout/notification_template_part_time.xml
deleted file mode 100644
index e3b91fa..0000000
--- a/res/layout/notification_template_part_time.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<DateTimeView android:id="@+id/time" xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:layout_gravity="center"
-    android:layout_weight="0"
-    android:singleLine="true"
-    android:gravity="center"
-    android:paddingStart="8dp"
-    />
diff --git a/res/layout/scrollingtext_buttons_view.xml b/res/layout/scrollingtext_buttons_view.xml
deleted file mode 100644
index beea00a..0000000
--- a/res/layout/scrollingtext_buttons_view.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-   >
-            
-
-       
-<TableLayout  android:id="@+id/TableLayout01" android:stretchColumns="*" android:layout_height="fill_parent" android:layout_width="wrap_content" >
-
-<TableRow android:id="@+id/TableRow01"  android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="10dip">
-
-
-	<ScrollView android:id="@+id/helpscrollview" 
-		android:orientation="vertical"
-		android:layout_width="fill_parent" 
-		android:layout_height="fill_parent"
-		 android:layout_span="3">    
-
-			<TextView  android:background="#575757" android:text="this is sample text this is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample textthis is sample text"  android:textColor="#ffffff"  android:id="@+id/WizardTextBody" android:textSize="8pt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="20dip"></TextView>
-
-		</ScrollView>
-		
-</TableRow>
-<TableRow  android:background="#000000" android:id="@+id/TableRow01" android:textColor="#00ff00" android:layout_width="fill_parent" android:layout_height="30px" android:layout_marginTop="10dip" android:paddingTop="10dip">
-	   	<Button android:text="@string/btn_back" android:id="@+id/btnWizard1" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
-    	<Button android:text="@string/btn_next" android:id="@+id/btnWizard2"  android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>	    
-</TableRow>			
-</TableLayout>
-</LinearLayout>
-
-
diff --git a/res/menu/orbot_main.xml b/res/menu/orbot_main.xml
deleted file mode 100644
index 9f97a81..0000000
--- a/res/menu/orbot_main.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
- * Copyright (C) 2008 Esmertec AG.
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:yourapp="http://schemas.android.com/apk/res-auto"
-    >
-
- <item android:id="@+id/menu_settings"
-        android:title="@string/menu_settings"
-         android:icon="@drawable/ic_action_settings"
-         yourapp:showAsAction="always"
-         />
-
- <item
-        android:title="@string/menu_qr"
-         android:showAsAction="never"
-         >
-  <menu>
-  <item android:id="@+id/menu_scan"
-        android:title="@string/menu_scan"
-         android:showAsAction="never"
-         />
-  
-  <item android:id="@+id/menu_share_bridge"
-        android:title="@string/menu_share_bridge"
-         android:showAsAction="never"
-         />
-  </menu>
- </item>
- 
-        
- 
-  <item android:id="@+id/menu_promo_apps"
-        android:title="@string/menu_promo_apps"
-         android:icon="@drawable/ic_menu_goto"
-                  android:showAsAction="never"
-         
-         />
- 
-  <item android:id="@+id/menu_about"
-        android:title="@string/menu_about"
-         android:icon="@drawable/ic_menu_about"
-                  android:showAsAction="never"
-         
-         />
- 
-  <item android:id="@+id/menu_exit"
-        android:title="@string/menu_exit"
-         android:icon="@drawable/ic_menu_exit"
-                  android:showAsAction="never"
-         
-         />
- 
-</menu>
diff --git a/res/menu/share_menu.xml b/res/menu/share_menu.xml
deleted file mode 100644
index 2352da0..0000000
--- a/res/menu/share_menu.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-            android:id="@+id/menu_item_share"
-            android:showAsAction="always"
-            android:title="Share Log" />
-   
-</menu>
\ No newline at end of file
diff --git a/res/raw/geoip.mp3 b/res/raw/geoip.mp3
deleted file mode 100644
index 3db9c63..0000000
Binary files a/res/raw/geoip.mp3 and /dev/null differ
diff --git a/res/raw/geoip6.mp3 b/res/raw/geoip6.mp3
deleted file mode 100644
index 0e439b9..0000000
--- a/res/raw/geoip6.mp3
+++ /dev/null
@@ -1,1663 +0,0 @@
-
-
-
-
-<!DOCTYPE html>
-<html lang="en" class="">
-  <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#">
-    <meta charset='utf-8'>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta http-equiv="Content-Language" content="en">
-    
-    
-    <title>orbot/geoip6.mp3 at master · n8fr8/orbot</title>
-    <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
-    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
-    <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png">
-    <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png">
-    <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png">
-    <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png">
-    <meta property="fb:app_id" content="1401488693436528">
-
-      <meta content="@github" name="twitter:site" /><meta content="summary" name="twitter:card" /><meta content="n8fr8/orbot" name="twitter:title" /><meta content="My dev mirror of https://gitweb.torproject.org/n8fr8/orbot.git" name="twitter:description" /><meta content="https://avatars1.githubusercontent.com/u/30851?v=3&s=400" name="twitter:image:src" />
-<meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="https://avatars1.githubusercontent.com/u/30851?v=3&s=400" property="og:image" /><meta content="n8fr8/orbot" property="og:title" /><meta content="https://github.com/n8fr8/orbot" property="og:url" /><meta content="My dev mirror of https://gitweb.torproject.org/n8fr8/orbot.git" property="og:description" />
-
-      <meta name="browser-stats-url" content="/_stats">
-    <link rel="assets" href="https://assets-cdn.github.com/">
-    <link rel="conduit-xhr" href="https://ghconduit.com:25035">
-    <link rel="xhr-socket" href="/_sockets">
-    <meta name="pjax-timeout" content="1000">
-    <link rel="sudo-modal" href="/sessions/sudo_modal">
-
-    <meta name="msapplication-TileImage" content="/windows-tile.png">
-    <meta name="msapplication-TileColor" content="#ffffff">
-    <meta name="selected-link" value="repo_source" data-pjax-transient>
-      <meta name="google-analytics" content="UA-3769691-2">
-
-    <meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="D10693A5:67D1:B7ACB61:5460FBA6" name="octolytics-dimension-request_id" /><meta content="30851" name="octolytics-actor-id" /><meta content="n8fr8" name="octolytics-actor-login" /><meta content="49360e5b97233bb7342ef464ba150d5510000db2a2342cda0caf1f5b272307ea" name="octolytics-actor-hash" />
-    
-    <meta content="Rails, view, blob#show" name="analytics-event" />
-
-    
-    
-    <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico">
-
-
-    <meta content="authenticity_token" name="csrf-param" />
-<meta content="IYMVx4jhFZWjsIbaBF2PfpJkJd+JDhomrwrNBcgVWt/2AyRQihknFfGD+XTHggwxwlRUZOQOcm9F6eyHHLjfCQ==" name="csrf-token" />
-
-    <link href="https://assets-cdn.github.com/assets/github-2fb9b25b51546977e75d8ae9e070af4aadc0746368d44698ea83ec6e76cb392b.css" media="all" rel="stylesheet" type="text/css" />
-    <link href="https://assets-cdn.github.com/assets/github2-cbef91bb0032999dd66abd1af1d76685d497d0815df7a0c7761bf4c09c06b714.css" media="all" rel="stylesheet" type="text/css" />
-    
-    
-
-
-    <meta http-equiv="x-pjax-version" content="f1bf8b6c4433c64f418b520942f0c02a">
-
-      
-  <meta name="description" content="My dev mirror of https://gitweb.torproject.org/n8fr8/orbot.git">
-  <meta name="go-import" content="github.com/n8fr8/orbot git https://github.com/n8fr8/orbot.git">
-
-  <meta content="30851" name="octolytics-dimension-user_id" /><meta content="n8fr8" name="octolytics-dimension-user_login" /><meta content="20008432" name="octolytics-dimension-repository_id" /><meta content="n8fr8/orbot" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="20008432" name="octolytics-dimension-repository_network_root_id" /><meta content="n8fr8/orbot" name="octolytics-dimension-repository_network_root_nwo" />
-  <link href="https://github.com/n8fr8/orbot/commits/master.atom" rel="alternate" title="Recent Commits to orbot:master" type="application/atom+xml">
-
-  </head>
-
-
-  <body class="logged_in  env-production linux vis-public page-blob">
-    <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a>
-    <div class="wrapper">
-      
-      
-      
-      
-
-
-      <div class="header header-logged-in true" role="banner">
-  <div class="container clearfix">
-
-    <a class="header-logo-invertocat" href="https://github.com/" data-hotkey="g d" aria-label="Homepage" ga-data-click="Header, go to dashboard, icon:logo">
-  <span class="mega-octicon octicon-mark-github"></span>
-</a>
-
-
-      <div class="site-search repo-scope js-site-search" role="search">
-          <form accept-charset="UTF-8" action="/n8fr8/orbot/search" class="js-site-search-form" data-global-search-url="/search" data-repo-search-url="/n8fr8/orbot/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
-  <input type="text"
-    class="js-site-search-field is-clearable"
-    data-hotkey="s"
-    name="q"
-    placeholder="Search"
-    data-global-scope-placeholder="Search GitHub"
-    data-repo-scope-placeholder="Search"
-    tabindex="1"
-    autocapitalize="off">
-  <div class="scope-badge">This repository</div>
-</form>
-      </div>
-      <ul class="header-nav left" role="navigation">
-        <li class="header-nav-item explore">
-          <a class="header-nav-link" href="/explore" data-ga-click="Header, go to explore, text:explore">Explore</a>
-        </li>
-          <li class="header-nav-item">
-            <a class="header-nav-link" href="https://gist.github.com" data-ga-click="Header, go to gist, text:gist">Gist</a>
-          </li>
-          <li class="header-nav-item">
-            <a class="header-nav-link" href="/blog" data-ga-click="Header, go to blog, text:blog">Blog</a>
-          </li>
-        <li class="header-nav-item">
-          <a class="header-nav-link" href="https://help.github.com" data-ga-click="Header, go to help, text:help">Help</a>
-        </li>
-      </ul>
-
-    
-<ul class="header-nav user-nav right" id="user-links">
-  <li class="header-nav-item dropdown js-menu-container">
-    <a class="header-nav-link name" href="/n8fr8" data-ga-click="Header, go to profile, text:username">
-      <img alt="n8fr8" class="avatar" data-user="30851" height="20" src="https://avatars3.githubusercontent.com/u/30851?v=3&s=40" width="20" />
-      <span class="css-truncate">
-        <span class="css-truncate-target">n8fr8</span>
-      </span>
-    </a>
-  </li>
-
-  <li class="header-nav-item dropdown js-menu-container">
-    <a class="header-nav-link js-menu-target tooltipped tooltipped-s" href="#" aria-label="Create new..." data-ga-click="Header, create new, icon:add">
-      <span class="octicon octicon-plus"></span>
-      <span class="dropdown-caret"></span>
-    </a>
-
-    <div class="dropdown-menu-content js-menu-content">
-      
-<ul class="dropdown-menu">
-  <li>
-    <a href="/new"><span class="octicon octicon-repo"></span> New repository</a>
-  </li>
-  <li>
-    <a href="/organizations/new"><span class="octicon octicon-organization"></span> New organization</a>
-  </li>
-
-
-    <li class="dropdown-divider"></li>
-    <li class="dropdown-header">
-      <span title="n8fr8/orbot">This repository</span>
-    </li>
-      <li>
-        <a href="/n8fr8/orbot/issues/new"><span class="octicon octicon-issue-opened"></span> New issue</a>
-      </li>
-      <li>
-        <a href="/n8fr8/orbot/settings/collaboration"><span class="octicon octicon-person"></span> New collaborator</a>
-      </li>
-</ul>
-
-    </div>
-  </li>
-
-  <li class="header-nav-item">
-        <a href="/n8fr8/orbot/notifications" aria-label="You have unread notifications in this repository" class="header-nav-link notification-indicator tooltipped tooltipped-s" data-ga-click="Header, go to notifications, icon:unread" data-hotkey="g n">
-        <span class="mail-status unread"></span>
-        <span class="octicon octicon-inbox"></span>
-</a>
-  </li>
-
-  <li class="header-nav-item">
-    <a class="header-nav-link tooltipped tooltipped-s" href="/settings/profile" id="account_settings" aria-label="Settings" data-ga-click="Header, go to settings, icon:settings">
-      <span class="octicon octicon-gear"></span>
-    </a>
-  </li>
-
-  <li class="header-nav-item">
-    <form accept-charset="UTF-8" action="/logout" class="logout-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="HjRChgYajLZtVVXyeH257jhP2/4FAQeXIgc6YcUuMlQHE+D78qgPWo4jRvgAzSSG+HCpblQ+eZViYCWKuCy/ew==" /></div>
-      <button class="header-nav-link sign-out-button tooltipped tooltipped-s" aria-label="Sign out" data-ga-click="Header, sign out, icon:logout">
-        <span class="octicon octicon-sign-out"></span>
-      </button>
-</form>  </li>
-
-</ul>
-
-
-    
-  </div>
-</div>
-
-      
-
-        
-
-
-      <div id="start-of-content" class="accessibility-aid"></div>
-          <div class="site" itemscope itemtype="http://schema.org/WebPage">
-    <div id="js-flash-container">
-      
-    </div>
-    <div class="pagehead repohead instapaper_ignore readability-menu">
-      <div class="container">
-        
-<ul class="pagehead-actions">
-
-    <li class="subscription">
-      <form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="suDhnxjOgyUS/nUDuqsP5VCn+wHKXUuwX1Y2lMWD8rt2ct1innb9/LbTkKkmYnKDfIRpkwMeuLeDaAtAOKlFyA==" /></div>  <input id="repository_id" name="repository_id" type="hidden" value="20008432" />
-
-    <div class="select-menu js-menu-container js-select-menu">
-      <a class="social-count js-social-count" href="/n8fr8/orbot/watchers">
-        1
-      </a>
-      <a href="/n8fr8/orbot/subscription"
-        class="minibutton select-menu-button with-count js-menu-target" role="button" tabindex="0" aria-haspopup="true">
-        <span class="js-select-button">
-          <span class="octicon octicon-eye"></span>
-          Unwatch
-        </span>
-      </a>
-
-      <div class="select-menu-modal-holder">
-        <div class="select-menu-modal subscription-menu-modal js-menu-content" aria-hidden="true">
-          <div class="select-menu-header">
-            <span class="select-menu-title">Notifications</span>
-            <span class="octicon octicon-x js-menu-close" role="button" aria-label="Close"></span>
-          </div> <!-- /.select-menu-header -->
-
-          <div class="select-menu-list js-navigation-container" role="menu">
-
-            <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <div class="select-menu-item-text">
-                <input id="do_included" name="do" type="radio" value="included" />
-                <h4>Not watching</h4>
-                <span class="description">Be notified when participating or @mentioned.</span>
-                <span class="js-select-button-text hidden-select-button-text">
-                  <span class="octicon octicon-eye"></span>
-                  Watch
-                </span>
-              </div>
-            </div> <!-- /.select-menu-item -->
-
-            <div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
-              <span class="select-menu-item-icon octicon octicon octicon-check"></span>
-              <div class="select-menu-item-text">
-                <input checked="checked" id="do_subscribed" name="do" type="radio" value="subscribed" />
-                <h4>Watching</h4>
-                <span class="description">Be notified of all conversations.</span>
-                <span class="js-select-button-text hidden-select-button-text">
-                  <span class="octicon octicon-eye"></span>
-                  Unwatch
-                </span>
-              </div>
-            </div> <!-- /.select-menu-item -->
-
-            <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <div class="select-menu-item-text">
-                <input id="do_ignore" name="do" type="radio" value="ignore" />
-                <h4>Ignoring</h4>
-                <span class="description">Never be notified.</span>
-                <span class="js-select-button-text hidden-select-button-text">
-                  <span class="octicon octicon-mute"></span>
-                  Stop ignoring
-                </span>
-              </div>
-            </div> <!-- /.select-menu-item -->
-
-          </div> <!-- /.select-menu-list -->
-
-        </div> <!-- /.select-menu-modal -->
-      </div> <!-- /.select-menu-modal-holder -->
-    </div> <!-- /.select-menu -->
-
-</form>
-    </li>
-
-  <li>
-    
-  <div class="js-toggler-container js-social-container starring-container ">
-
-    <form accept-charset="UTF-8" action="/n8fr8/orbot/unstar" class="js-toggler-form starred js-unstar-button" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="kAC65QMMg5xEzDd3tUiIxGzYEzoiv1MemXsSlQYQgOFoiVJ/tTWLqnBbeFn0y7SbwFEjNfM+yLDV6vO/frw1Ew==" /></div>
-      <button
-        class="minibutton with-count js-toggler-target star-button"
-        aria-label="Unstar this repository" title="Unstar n8fr8/orbot">
-        <span class="octicon octicon-star"></span>
-        Unstar
-      </button>
-        <a class="social-count js-social-count" href="/n8fr8/orbot/stargazers">
-          4
-        </a>
-</form>
-    <form accept-charset="UTF-8" action="/n8fr8/orbot/star" class="js-toggler-form unstarred js-star-button" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="4AA5vm/aRGfPxhwOSDd57h4X5OOdm/O6Se/MKrg2lPw07oNp5MvJk3mF6X4FkNM89OhxIC812fQUZY4KYJl35g==" /></div>
-      <button
-        class="minibutton with-count js-toggler-target star-button"
-        aria-label="Star this repository" title="Star n8fr8/orbot">
-        <span class="octicon octicon-star"></span>
-        Star
-      </button>
-        <a class="social-count js-social-count" href="/n8fr8/orbot/stargazers">
-          4
-        </a>
-</form>  </div>
-
-  </li>
-
-
-        <li>
-          <a href="/n8fr8/orbot/fork" class="minibutton with-count js-toggler-target fork-button tooltipped-n" title="Fork your own copy of n8fr8/orbot to your account" aria-label="Fork your own copy of n8fr8/orbot to your account" rel="facebox nofollow">
-            <span class="octicon octicon-repo-forked"></span>
-            Fork
-          </a>
-          <a href="/n8fr8/orbot/network" class="social-count">4</a>
-        </li>
-
-</ul>
-
-        <h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
-          <span class="mega-octicon octicon-repo"></span>
-          <span class="author"><a href="/n8fr8" class="url fn" itemprop="url" rel="author"><span itemprop="title">n8fr8</span></a></span><!--
-       --><span class="path-divider">/</span><!--
-       --><strong><a href="/n8fr8/orbot" class="js-current-repository js-repo-home-link" data-pjax-container-selector="#js-repo-pjax-container">orbot</a></strong>
-
-          <span class="page-context-loader">
-            <img alt="" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-          </span>
-
-        </h1>
-      </div><!-- /.container -->
-    </div><!-- /.repohead -->
-
-    <div class="container">
-      <div class="repository-with-sidebar repo-container new-discussion-timeline  ">
-        <div class="repository-sidebar clearfix">
-            
-<nav class="sunken-menu repo-nav js-repo-nav js-sidenav-container-pjax js-octicon-loaders" role="navigation" data-issue-count-url="/n8fr8/orbot/issues/counts" data-pjax-container-selector="#js-repo-pjax-container">
-  <ul class="sunken-menu-group">
-    <li class="tooltipped tooltipped-w" aria-label="Code">
-      <a href="/n8fr8/orbot" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-hotkey="g c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /n8fr8/orbot">
-        <span class="octicon octicon-code"></span> <span class="full-word">Code</span>
-        <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>    </li>
-
-      <li class="tooltipped tooltipped-w" aria-label="Issues">
-        <a href="/n8fr8/orbot/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /n8fr8/orbot/issues">
-          <span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
-          <span class="js-issue-replace-counter"></span>
-          <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>      </li>
-
-    <li class="tooltipped tooltipped-w" aria-label="Pull Requests">
-      <a href="/n8fr8/orbot/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-hotkey="g p" data-selected-links="repo_pulls /n8fr8/orbot/pulls">
-          <span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
-          <span class="js-pull-replace-counter"></span>
-          <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>    </li>
-
-
-      <li class="tooltipped tooltipped-w" aria-label="Wiki">
-        <a href="/n8fr8/orbot/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-hotkey="g w" data-selected-links="repo_wiki /n8fr8/orbot/wiki">
-          <span class="octicon octicon-book"></span> <span class="full-word">Wiki</span>
-          <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>      </li>
-  </ul>
-  <div class="sunken-menu-separator"></div>
-  <ul class="sunken-menu-group">
-
-    <li class="tooltipped tooltipped-w" aria-label="Pulse">
-      <a href="/n8fr8/orbot/pulse/weekly" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /n8fr8/orbot/pulse/weekly">
-        <span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
-        <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>    </li>
-
-    <li class="tooltipped tooltipped-w" aria-label="Graphs">
-      <a href="/n8fr8/orbot/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /n8fr8/orbot/graphs">
-        <span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
-        <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>    </li>
-  </ul>
-
-
-    <div class="sunken-menu-separator"></div>
-    <ul class="sunken-menu-group">
-      <li class="tooltipped tooltipped-w" aria-label="Settings">
-        <a href="/n8fr8/orbot/settings" aria-label="Settings" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_settings /n8fr8/orbot/settings">
-          <span class="octicon octicon-tools"></span> <span class="full-word">Settings</span>
-          <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
-</a>      </li>
-    </ul>
-</nav>
-
-              <div class="only-with-full-nav">
-                
-  
-<div class="clone-url open"
-  data-protocol-type="http"
-  data-url="/users/set_protocol?protocol_selector=http&protocol_type=push">
-  <h3><span class="text-emphasized">HTTPS</span> clone URL</h3>
-  <div class="input-group">
-    <input type="text" class="input-mini input-monospace js-url-field"
-           value="https://github.com/n8fr8/orbot.git" readonly="readonly">
-    <span class="input-group-button">
-      <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="https://github.com/n8fr8/orbot.git" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
-    </span>
-  </div>
-</div>
-
-  
-<div class="clone-url "
-  data-protocol-type="ssh"
-  data-url="/users/set_protocol?protocol_selector=ssh&protocol_type=push">
-  <h3><span class="text-emphasized">SSH</span> clone URL</h3>
-  <div class="input-group">
-    <input type="text" class="input-mini input-monospace js-url-field"
-           value="git at github.com:n8fr8/orbot.git" readonly="readonly">
-    <span class="input-group-button">
-      <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="git at github.com:n8fr8/orbot.git" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
-    </span>
-  </div>
-</div>
-
-  
-<div class="clone-url "
-  data-protocol-type="subversion"
-  data-url="/users/set_protocol?protocol_selector=subversion&protocol_type=push">
-  <h3><span class="text-emphasized">Subversion</span> checkout URL</h3>
-  <div class="input-group">
-    <input type="text" class="input-mini input-monospace js-url-field"
-           value="https://github.com/n8fr8/orbot" readonly="readonly">
-    <span class="input-group-button">
-      <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="https://github.com/n8fr8/orbot" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
-    </span>
-  </div>
-</div>
-
-
-<p class="clone-options">You can clone with
-      <a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>,
-      <a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>,
-      or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
-  <a href="https://help.github.com/articles/which-remote-url-should-i-use" class="help tooltipped tooltipped-n" aria-label="Get help on which URL is right for you.">
-    <span class="octicon octicon-question"></span>
-  </a>
-</p>
-
-
-
-                <a href="/n8fr8/orbot/archive/master.zip"
-                   class="minibutton sidebar-button"
-                   aria-label="Download the contents of n8fr8/orbot as a zip file"
-                   title="Download the contents of n8fr8/orbot as a zip file"
-                   rel="nofollow">
-                  <span class="octicon octicon-cloud-download"></span>
-                  Download ZIP
-                </a>
-              </div>
-        </div><!-- /.repository-sidebar -->
-
-        <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
-          
-
-<a href="/n8fr8/orbot/blob/3c4642cc823ac5ec30993ad2eb8af2a0efcfef39/res/raw/geoip6.mp3" class="hidden js-permalink-shortcut" data-hotkey="y">Permalink</a>
-
-<!-- blob contrib key: blob_contributors:v21:4e79b88b33c0a5c810d7088e347629bf -->
-
-<div class="file-navigation">
-  
-<div class="select-menu js-menu-container js-select-menu left">
-  <span class="minibutton select-menu-button js-menu-target css-truncate" data-hotkey="w"
-    data-master-branch="master"
-    data-ref="master"
-    title="master"
-    role="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true">
-    <span class="octicon octicon-git-branch"></span>
-    <i>branch:</i>
-    <span class="js-select-button css-truncate-target">master</span>
-  </span>
-
-  <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax aria-hidden="true">
-
-    <div class="select-menu-modal">
-      <div class="select-menu-header">
-        <span class="select-menu-title">Switch branches/tags</span>
-        <span class="octicon octicon-x js-menu-close" role="button" aria-label="Close"></span>
-      </div> <!-- /.select-menu-header -->
-
-      <div class="select-menu-filters">
-        <div class="select-menu-text-filter">
-          <input type="text" aria-label="Find or create a branch…" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Find or create a branch…">
-        </div>
-        <div class="select-menu-tabs">
-          <ul>
-            <li class="select-menu-tab">
-              <a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
-            </li>
-            <li class="select-menu-tab">
-              <a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
-            </li>
-          </ul>
-        </div><!-- /.select-menu-tabs -->
-      </div><!-- /.select-menu-filters -->
-
-      <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
-
-        <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
-
-
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/amoghbl1-issue_3014_wizard_workflow/res/raw/geoip6.mp3"
-                 data-name="amoghbl1-issue_3014_wizard_workflow"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="amoghbl1-issue_3014_wizard_workflow">amoghbl1-issue_3014_wizard_workflow</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/amoghbl1-new_notification_expanded/res/raw/geoip6.mp3"
-                 data-name="amoghbl1-new_notification_expanded"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="amoghbl1-new_notification_expanded">amoghbl1-new_notification_expanded</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/bug_2803_jabberdotorg/res/raw/geoip6.mp3"
-                 data-name="bug_2803_jabberdotorg"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="bug_2803_jabberdotorg">bug_2803_jabberdotorg</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/bug_build_fix_mvdan/res/raw/geoip6.mp3"
-                 data-name="bug_build_fix_mvdan"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="bug_build_fix_mvdan">bug_build_fix_mvdan</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/bug_fix_binary_install/res/raw/geoip6.mp3"
-                 data-name="bug_fix_binary_install"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="bug_fix_binary_install">bug_fix_binary_install</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/bug_transproxy_fixes/res/raw/geoip6.mp3"
-                 data-name="bug_transproxy_fixes"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="bug_transproxy_fixes">bug_transproxy_fixes</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/bug_ui_disconnect/res/raw/geoip6.mp3"
-                 data-name="bug_ui_disconnect"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="bug_ui_disconnect">bug_ui_disconnect</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/bug_wizard_cleanup/res/raw/geoip6.mp3"
-                 data-name="bug_wizard_cleanup"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="bug_wizard_cleanup">bug_wizard_cleanup</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/bugs_v13_fixes/res/raw/geoip6.mp3"
-                 data-name="bugs_v13_fixes"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="bugs_v13_fixes">bugs_v13_fixes</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/dev_orbotvpn/res/raw/geoip6.mp3"
-                 data-name="dev_orbotvpn"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="dev_orbotvpn">dev_orbotvpn</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/feature_add_orchid/res/raw/geoip6.mp3"
-                 data-name="feature_add_orchid"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="feature_add_orchid">feature_add_orchid</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/feature_remove_abs/res/raw/geoip6.mp3"
-                 data-name="feature_remove_abs"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="feature_remove_abs">feature_remove_abs</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/hans_build_patches/res/raw/geoip6.mp3"
-                 data-name="hans_build_patches"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="hans_build_patches">hans_build_patches</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/hans_feature_desc/res/raw/geoip6.mp3"
-                 data-name="hans_feature_desc"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="hans_feature_desc">hans_feature_desc</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item selected">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/master/res/raw/geoip6.mp3"
-                 data-name="master"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="master">master</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/blob/v13_dev/res/raw/geoip6.mp3"
-                 data-name="v13_dev"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="v13_dev">v13_dev</a>
-            </div> <!-- /.select-menu-item -->
-        </div>
-
-          <form accept-charset="UTF-8" action="/n8fr8/orbot/branches" class="js-create-branch select-menu-item select-menu-new-item-form js-navigation-item js-new-item-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="4z8e4vvpHHxLttekMVFIaQiGVX+Fysb6mixyner/ETQP59dBPuIXvJl6rS80FV+ueWr2OJHjj8rNg3qOFu0rww==" /></div>
-            <span class="octicon octicon-git-branch select-menu-item-icon"></span>
-            <div class="select-menu-item-text">
-              <h4>Create branch: <span class="js-new-item-name"></span></h4>
-              <span class="description">from ‘master’</span>
-            </div>
-            <input type="hidden" name="name" id="name" class="js-new-item-value">
-            <input type="hidden" name="branch" id="branch" value="master">
-            <input type="hidden" name="path" id="path" value="res/raw/geoip6.mp3">
-          </form> <!-- /.select-menu-item -->
-
-      </div> <!-- /.select-menu-list -->
-
-      <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
-        <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
-
-
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/v12-beta-tor-0.2.4.15-rc/res/raw/geoip6.mp3"
-                 data-name="v12-beta-tor-0.2.4.15-rc"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="v12-beta-tor-0.2.4.15-rc">v12-beta-tor-0.2.4.15-rc</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/v11-RC2/res/raw/geoip6.mp3"
-                 data-name="v11-RC2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="v11-RC2">v11-RC2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.7.1/res/raw/geoip6.mp3"
-                 data-name="14.0.7.1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.7.1">14.0.7.1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.7/res/raw/geoip6.mp3"
-                 data-name="14.0.7"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.7">14.0.7</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.6/res/raw/geoip6.mp3"
-                 data-name="14.0.6"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.6">14.0.6</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.5-beta-2/res/raw/geoip6.mp3"
-                 data-name="14.0.5-beta-2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.5-beta-2">14.0.5-beta-2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.5-beta/res/raw/geoip6.mp3"
-                 data-name="14.0.5-beta"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.5-beta">14.0.5-beta</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.5-RC1/res/raw/geoip6.mp3"
-                 data-name="14.0.5-RC1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.5-RC1">14.0.5-RC1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.5.4/res/raw/geoip6.mp3"
-                 data-name="14.0.5.4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.5.4">14.0.5.4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.5.3/res/raw/geoip6.mp3"
-                 data-name="14.0.5.3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.5.3">14.0.5.3</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.5.2/res/raw/geoip6.mp3"
-                 data-name="14.0.5.2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.5.2">14.0.5.2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.5.1/res/raw/geoip6.mp3"
-                 data-name="14.0.5.1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.5.1">14.0.5.1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.5/res/raw/geoip6.mp3"
-                 data-name="14.0.5"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.5">14.0.5</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.4.3/res/raw/geoip6.mp3"
-                 data-name="14.0.4.3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.4.3">14.0.4.3</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.4.2/res/raw/geoip6.mp3"
-                 data-name="14.0.4.2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.4.2">14.0.4.2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.4.1/res/raw/geoip6.mp3"
-                 data-name="14.0.4.1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.4.1">14.0.4.1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.4/res/raw/geoip6.mp3"
-                 data-name="14.0.4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.4">14.0.4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.3.1/res/raw/geoip6.mp3"
-                 data-name="14.0.3.1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.3.1">14.0.3.1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.3/res/raw/geoip6.mp3"
-                 data-name="14.0.3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.3">14.0.3</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.2.1/res/raw/geoip6.mp3"
-                 data-name="14.0.2.1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.2.1">14.0.2.1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.2/res/raw/geoip6.mp3"
-                 data-name="14.0.2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.2">14.0.2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.1/res/raw/geoip6.mp3"
-                 data-name="14.0.1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.1">14.0.1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.0-RC3/res/raw/geoip6.mp3"
-                 data-name="14.0.0-RC3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.0-RC3">14.0.0-RC3</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.0-RC-1/res/raw/geoip6.mp3"
-                 data-name="14.0.0-RC-1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.0-RC-1">14.0.0-RC-1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.0-BETA-2/res/raw/geoip6.mp3"
-                 data-name="14.0.0-BETA-2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.0-BETA-2">14.0.0-BETA-2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.0-BETA-1/res/raw/geoip6.mp3"
-                 data-name="14.0.0-BETA-1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.0-BETA-1">14.0.0-BETA-1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.0-ALPHA-4/res/raw/geoip6.mp3"
-                 data-name="14.0.0-ALPHA-4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.0-ALPHA-4">14.0.0-ALPHA-4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.0-ALPHA-3/res/raw/geoip6.mp3"
-                 data-name="14.0.0-ALPHA-3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.0-ALPHA-3">14.0.0-ALPHA-3</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.0-ALPHA-2b/res/raw/geoip6.mp3"
-                 data-name="14.0.0-ALPHA-2b"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.0-ALPHA-2b">14.0.0-ALPHA-2b</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.0-ALPHA-2/res/raw/geoip6.mp3"
-                 data-name="14.0.0-ALPHA-2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.0-ALPHA-2">14.0.0-ALPHA-2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/14.0.0/res/raw/geoip6.mp3"
-                 data-name="14.0.0"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="14.0.0">14.0.0</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.7-BETA-1/res/raw/geoip6.mp3"
-                 data-name="13.0.7-BETA-1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.7-BETA-1">13.0.7-BETA-1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.7/res/raw/geoip6.mp3"
-                 data-name="13.0.7"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.7">13.0.7</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-RC-4a/res/raw/geoip6.mp3"
-                 data-name="13.0.6-RC-4a"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-RC-4a">13.0.6-RC-4a</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-RC-4/res/raw/geoip6.mp3"
-                 data-name="13.0.6-RC-4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-RC-4">13.0.6-RC-4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-RC-3/res/raw/geoip6.mp3"
-                 data-name="13.0.6-RC-3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-RC-3">13.0.6-RC-3</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-RC-2/res/raw/geoip6.mp3"
-                 data-name="13.0.6-RC-2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-RC-2">13.0.6-RC-2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-RC-1/res/raw/geoip6.mp3"
-                 data-name="13.0.6-RC-1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-RC-1">13.0.6-RC-1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-BETA-8/res/raw/geoip6.mp3"
-                 data-name="13.0.6-BETA-8"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-BETA-8">13.0.6-BETA-8</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-BETA-7/res/raw/geoip6.mp3"
-                 data-name="13.0.6-BETA-7"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-BETA-7">13.0.6-BETA-7</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-BETA-6/res/raw/geoip6.mp3"
-                 data-name="13.0.6-BETA-6"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-BETA-6">13.0.6-BETA-6</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-BETA-5/res/raw/geoip6.mp3"
-                 data-name="13.0.6-BETA-5"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-BETA-5">13.0.6-BETA-5</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-BETA-4/res/raw/geoip6.mp3"
-                 data-name="13.0.6-BETA-4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-BETA-4">13.0.6-BETA-4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-BETA-3/res/raw/geoip6.mp3"
-                 data-name="13.0.6-BETA-3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-BETA-3">13.0.6-BETA-3</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-BETA-2/res/raw/geoip6.mp3"
-                 data-name="13.0.6-BETA-2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-BETA-2">13.0.6-BETA-2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.6-BETA-1/res/raw/geoip6.mp3"
-                 data-name="13.0.6-BETA-1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.6-BETA-1">13.0.6-BETA-1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.5/res/raw/geoip6.mp3"
-                 data-name="13.0.5"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.5">13.0.5</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.4a/res/raw/geoip6.mp3"
-                 data-name="13.0.4a"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.4a">13.0.4a</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.4/res/raw/geoip6.mp3"
-                 data-name="13.0.4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.4">13.0.4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.3/res/raw/geoip6.mp3"
-                 data-name="13.0.3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.3">13.0.3</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.2/res/raw/geoip6.mp3"
-                 data-name="13.0.2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.2">13.0.2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.1/res/raw/geoip6.mp3"
-                 data-name="13.0.1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.1">13.0.1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.0-alpha-1/res/raw/geoip6.mp3"
-                 data-name="13.0.0-alpha-1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.0-alpha-1">13.0.0-alpha-1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/13.0.0/res/raw/geoip6.mp3"
-                 data-name="13.0.0"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="13.0.0">13.0.0</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/12.0.5/res/raw/geoip6.mp3"
-                 data-name="12.0.5"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="12.0.5">12.0.5</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/12.0.4/res/raw/geoip6.mp3"
-                 data-name="12.0.4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="12.0.4">12.0.4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/12.0.2/res/raw/geoip6.mp3"
-                 data-name="12.0.2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="12.0.2">12.0.2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/12.0.1/res/raw/geoip6.mp3"
-                 data-name="12.0.1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="12.0.1">12.0.1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.4.4-alpha-1.0.11-RC4/res/raw/geoip6.mp3"
-                 data-name="0.2.4.4-alpha-1.0.11-RC4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.4.4-alpha-1.0.11-RC4">0.2.4.4-alpha-1.0.11-RC4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.4.3-alpha-1.0.11-RC3/res/raw/geoip6.mp3"
-                 data-name="0.2.4.3-alpha-1.0.11-RC3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.4.3-alpha-1.0.11-RC3">0.2.4.3-alpha-1.0.11-RC3</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.4.3-alpha-1.0.11-RC1/res/raw/geoip6.mp3"
-                 data-name="0.2.4.3-alpha-1.0.11-RC1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.4.3-alpha-1.0.11-RC1">0.2.4.3-alpha-1.0.11-RC1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.23-rc-1.0.11-RC6/res/raw/geoip6.mp3"
-                 data-name="0.2.3.23-rc-1.0.11-RC6"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.23-rc-1.0.11-RC6">0.2.3.23-rc-1.0.11-RC6</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.17-beta-1.0.9-rc5a/res/raw/geoip6.mp3"
-                 data-name="0.2.3.17-beta-1.0.9-rc5a"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.17-beta-1.0.9-rc5a">0.2.3.17-beta-1.0.9-rc5a</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.17-beta-1.0.9-rc4/res/raw/geoip6.mp3"
-                 data-name="0.2.3.17-beta-1.0.9-rc4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.17-beta-1.0.9-rc4">0.2.3.17-beta-1.0.9-rc4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.17-beta-1.0.9-rc3/res/raw/geoip6.mp3"
-                 data-name="0.2.3.17-beta-1.0.9-rc3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.17-beta-1.0.9-rc3">0.2.3.17-beta-1.0.9-rc3</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.17-beta-1.0.9-RC2/res/raw/geoip6.mp3"
-                 data-name="0.2.3.17-beta-1.0.9-RC2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.17-beta-1.0.9-RC2">0.2.3.17-beta-1.0.9-RC2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.17-beta-1.0.9-RC1/res/raw/geoip6.mp3"
-                 data-name="0.2.3.17-beta-1.0.9-RC1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.17-beta-1.0.9-RC1">0.2.3.17-beta-1.0.9-RC1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.15-alpha-orbot-1.0.8-RC1/res/raw/geoip6.mp3"
-                 data-name="0.2.3.15-alpha-orbot-1.0.8-RC1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.15-alpha-orbot-1.0.8-RC1">0.2.3.15-alpha-orbot-1.0.8-RC1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.11-alpha-1.0.7.2-OBFS-FINAL/res/raw/geoip6.mp3"
-                 data-name="0.2.3.11-alpha-1.0.7.2-OBFS-FINAL"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.11-alpha-1.0.7.2-OBFS-FINAL">0.2.3.11-alpha-1.0.7.2-OBFS-FINAL</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.10-orbot-1.0.7-RC6/res/raw/geoip6.mp3"
-                 data-name="0.2.3.10-orbot-1.0.7-RC6"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.10-orbot-1.0.7-RC6">0.2.3.10-orbot-1.0.7-RC6</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-orbot-1.0.7-RC7/res/raw/geoip6.mp3"
-                 data-name="0.2.3.10-alpha-orbot-1.0.7-RC7"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.10-alpha-orbot-1.0.7-RC7">0.2.3.10-alpha-orbot-1.0.7-RC7</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-orbot-1.0.7-RC4/res/raw/geoip6.mp3"
-                 data-name="0.2.3.10-alpha-orbot-1.0.7-RC4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.10-alpha-orbot-1.0.7-RC4">0.2.3.10-alpha-orbot-1.0.7-RC4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-orbot-1.0.7-RC3/res/raw/geoip6.mp3"
-                 data-name="0.2.3.10-alpha-orbot-1.0.7-RC3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.10-alpha-orbot-1.0.7-RC3">0.2.3.10-alpha-orbot-1.0.7-RC3</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-orbot-1.0.7-RC2/res/raw/geoip6.mp3"
-                 data-name="0.2.3.10-alpha-orbot-1.0.7-RC2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.10-alpha-orbot-1.0.7-RC2">0.2.3.10-alpha-orbot-1.0.7-RC2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-orbot-1.0.7-RC1/res/raw/geoip6.mp3"
-                 data-name="0.2.3.10-alpha-orbot-1.0.7-RC1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.10-alpha-orbot-1.0.7-RC1">0.2.3.10-alpha-orbot-1.0.7-RC1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.10-alpha-1.0.7-FINAL/res/raw/geoip6.mp3"
-                 data-name="0.2.3.10-alpha-1.0.7-FINAL"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.10-alpha-1.0.7-FINAL">0.2.3.10-alpha-1.0.7-FINAL</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.7-alpha-orbot-1.0.6-RC4/res/raw/geoip6.mp3"
-                 data-name="0.2.3.7-alpha-orbot-1.0.6-RC4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.7-alpha-orbot-1.0.6-RC4">0.2.3.7-alpha-orbot-1.0.6-RC4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.7-alpha-orbot-1.0.6-FINAL/res/raw/geoip6.mp3"
-                 data-name="0.2.3.7-alpha-orbot-1.0.6-FINAL"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.7-alpha-orbot-1.0.6-FINAL">0.2.3.7-alpha-orbot-1.0.6-FINAL</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.3.6-alpha-orbot-1.0.6/res/raw/geoip6.mp3"
-                 data-name="0.2.3.6-alpha-orbot-1.0.6"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.3.6-alpha-orbot-1.0.6">0.2.3.6-alpha-orbot-1.0.6</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.25-alpha-orbot-1.0.5-RC1%4024716/res/raw/geoip6.mp3"
-                 data-name="0.2.2.25-alpha-orbot-1.0.5-RC1 at 24716"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.25-alpha-orbot-1.0.5-RC1 at 24716">0.2.2.25-alpha-orbot-1.0.5-RC1 at 24716</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.25-alpha-orbot-1.0.5-RC1/res/raw/geoip6.mp3"
-                 data-name="0.2.2.25-alpha-orbot-1.0.5-RC1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.25-alpha-orbot-1.0.5-RC1">0.2.2.25-alpha-orbot-1.0.5-RC1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.25-alpha-orbot-1.0.5.1/res/raw/geoip6.mp3"
-                 data-name="0.2.2.25-alpha-orbot-1.0.5.1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.25-alpha-orbot-1.0.5.1">0.2.2.25-alpha-orbot-1.0.5.1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.25-alpha-orbot-1.0.5/res/raw/geoip6.mp3"
-                 data-name="0.2.2.25-alpha-orbot-1.0.5"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.25-alpha-orbot-1.0.5">0.2.2.25-alpha-orbot-1.0.5</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-1.0.4/res/raw/geoip6.mp3"
-                 data-name="0.2.2.14-alpha-orbot-1.0.4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.14-alpha-orbot-1.0.4">0.2.2.14-alpha-orbot-1.0.4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-1.0.2/res/raw/geoip6.mp3"
-                 data-name="0.2.2.14-alpha-orbot-1.0.2"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.14-alpha-orbot-1.0.2">0.2.2.14-alpha-orbot-1.0.2</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-1.0.1/res/raw/geoip6.mp3"
-                 data-name="0.2.2.14-alpha-orbot-1.0.1"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.14-alpha-orbot-1.0.1">0.2.2.14-alpha-orbot-1.0.1</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-1.0.0/res/raw/geoip6.mp3"
-                 data-name="0.2.2.14-alpha-orbot-1.0.0"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.14-alpha-orbot-1.0.0">0.2.2.14-alpha-orbot-1.0.0</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-0.0.10/res/raw/geoip6.mp3"
-                 data-name="0.2.2.14-alpha-orbot-0.0.10"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.14-alpha-orbot-0.0.10">0.2.2.14-alpha-orbot-0.0.10</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.14-alpha-orbot-0.0.9/res/raw/geoip6.mp3"
-                 data-name="0.2.2.14-alpha-orbot-0.0.9"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.14-alpha-orbot-0.0.9">0.2.2.14-alpha-orbot-0.0.9</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.13-alpha-orbot-0.0.8/res/raw/geoip6.mp3"
-                 data-name="0.2.2.13-alpha-orbot-0.0.8"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.13-alpha-orbot-0.0.8">0.2.2.13-alpha-orbot-0.0.8</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.13-alpha-orbot-0.0.7/res/raw/geoip6.mp3"
-                 data-name="0.2.2.13-alpha-orbot-0.0.7"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.13-alpha-orbot-0.0.7">0.2.2.13-alpha-orbot-0.0.7</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.13-alpha-orbot-0.0.6/res/raw/geoip6.mp3"
-                 data-name="0.2.2.13-alpha-orbot-0.0.6"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.13-alpha-orbot-0.0.6">0.2.2.13-alpha-orbot-0.0.6</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.9-alpha-orbot-0.0.5/res/raw/geoip6.mp3"
-                 data-name="0.2.2.9-alpha-orbot-0.0.5"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.9-alpha-orbot-0.0.5">0.2.2.9-alpha-orbot-0.0.5</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.9-alpha-orbot-0.0.4/res/raw/geoip6.mp3"
-                 data-name="0.2.2.9-alpha-orbot-0.0.4"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.9-alpha-orbot-0.0.4">0.2.2.9-alpha-orbot-0.0.4</a>
-            </div> <!-- /.select-menu-item -->
-            <div class="select-menu-item js-navigation-item ">
-              <span class="select-menu-item-icon octicon octicon-check"></span>
-              <a href="/n8fr8/orbot/tree/0.2.2.9-alpha-orbot-0.0.3/res/raw/geoip6.mp3"
-                 data-name="0.2.2.9-alpha-orbot-0.0.3"
-                 data-skip-pjax="true"
-                 rel="nofollow"
-                 class="js-navigation-open select-menu-item-text css-truncate-target"
-                 title="0.2.2.9-alpha-orbot-0.0.3">0.2.2.9-alpha-orbot-0.0.3</a>
-            </div> <!-- /.select-menu-item -->
-        </div>
-
-        <div class="select-menu-no-results">Nothing to show</div>
-      </div> <!-- /.select-menu-list -->
-
-    </div> <!-- /.select-menu-modal -->
-  </div> <!-- /.select-menu-modal-holder -->
-</div> <!-- /.select-menu -->
-
-  <div class="button-group right">
-    <a href="/n8fr8/orbot/find/master"
-          class="js-show-file-finder minibutton empty-icon tooltipped tooltipped-s"
-          data-pjax
-          data-hotkey="t"
-          aria-label="Quickly jump between files">
-      <span class="octicon octicon-list-unordered"></span>
-    </a>
-    <button aria-label="Copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="res/raw/geoip6.mp3" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
-  </div>
-
-  <div class="breadcrumb">
-    <span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/n8fr8/orbot" class="" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">orbot</span></a></span></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/n8fr8/orbot/tree/master/res" class="" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">res</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/n8fr8/orbot/tree/master/res/raw" class="" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">raw</span></a></span><span class="separator"> / </span><strong class="final-path">geoip6.mp3</strong>
-  </div>
-</div>
-
-<include-fragment class="commit commit-loader file-history-tease" src="/n8fr8/orbot/contributors/master/res/raw/geoip6.mp3">
-  <div class="file-history-tease-header">
-    Fetching contributors…
-  </div>
-
-  <div class="participation">
-    <p class="loader-loading"><img alt="" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32-EAF2F5.gif" width="16" /></p>
-    <p class="loader-error">Cannot retrieve contributors at this time</p>
-  </div>
-</include-fragment>
-<div class="file-box">
-  <div class="file">
-    <div class="meta clearfix">
-      <div class="info file-name">
-        <span>81.42 kb</span>
-      </div>
-      <div class="actions">
-        <div class="button-group">
-          <a href="/n8fr8/orbot/raw/master/res/raw/geoip6.mp3" class="minibutton " id="raw-url">Raw</a>
-          <a href="/n8fr8/orbot/commits/master/res/raw/geoip6.mp3" class="minibutton " rel="nofollow">History</a>
-        </div><!-- /.button-group -->
-
-
-
-            <a class="octicon-button danger"
-               href="/n8fr8/orbot/delete/master/res/raw/geoip6.mp3"
-               aria-label="Delete this file"
-               data-method="post" data-test-id="delete-blob-file" rel="nofollow">
-          <span class="octicon octicon-trashcan"></span>
-        </a>
-      </div><!-- /.actions -->
-    </div>
-    
-
-  <div class="blob-wrapper data type-text">
-      <div class="image">
-          <a href="/n8fr8/orbot/blob/master/res/raw/geoip6.mp3?raw=true">View Raw</a>
-      </div>
-  </div>
-
-  </div>
-</div>
-
-<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" style="display:none">Jump to Line</a>
-<div id="jump-to-line" style="display:none">
-  <form accept-charset="UTF-8" class="js-jump-to-line-form">
-    <input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line…" autofocus>
-    <button type="submit" class="button">Go</button>
-  </form>
-</div>
-
-        </div>
-
-      </div><!-- /.repo-container -->
-      <div class="modal-backdrop"></div>
-    </div><!-- /.container -->
-  </div><!-- /.site -->
-
-
-    </div><!-- /.wrapper -->
-
-      <div class="container">
-  <div class="site-footer" role="contentinfo">
-    <ul class="site-footer-links right">
-      <li><a href="https://status.github.com/">Status</a></li>
-      <li><a href="https://developer.github.com">API</a></li>
-      <li><a href="http://training.github.com">Training</a></li>
-      <li><a href="http://shop.github.com">Shop</a></li>
-      <li><a href="/blog">Blog</a></li>
-      <li><a href="/about">About</a></li>
-
-    </ul>
-
-    <a href="/" aria-label="Homepage">
-      <span class="mega-octicon octicon-mark-github" title="GitHub"></span>
-    </a>
-
-    <ul class="site-footer-links">
-      <li>© 2014 <span title="0.08933s from github-fe127-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
-        <li><a href="/site/terms">Terms</a></li>
-        <li><a href="/site/privacy">Privacy</a></li>
-        <li><a href="/security">Security</a></li>
-        <li><a href="/contact">Contact</a></li>
-    </ul>
-  </div><!-- /.site-footer -->
-</div><!-- /.container -->
-
-
-    <div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
-  <div class="fullscreen-container js-suggester-container">
-    <div class="textarea-wrap">
-      <textarea name="fullscreen-contents" id="fullscreen-contents" class="fullscreen-contents js-fullscreen-contents js-suggester-field" placeholder=""></textarea>
-    </div>
-  </div>
-  <div class="fullscreen-sidebar">
-    <a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped tooltipped-w" aria-label="Exit Zen Mode">
-      <span class="mega-octicon octicon-screen-normal"></span>
-    </a>
-    <a href="#" class="theme-switcher js-theme-switcher tooltipped tooltipped-w"
-      aria-label="Switch themes">
-      <span class="octicon octicon-color-mode"></span>
-    </a>
-  </div>
-</div>
-
-
-
-    <div id="ajax-error-message" class="flash flash-error">
-      <span class="octicon octicon-alert"></span>
-      <a href="#" class="octicon octicon-x flash-close js-ajax-error-dismiss" aria-label="Dismiss error"></a>
-      Something went wrong with that request. Please try again.
-    </div>
-
-
-      <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/frameworks-fe1dc1d9b25d6a0cda010576a3c4be01906c9fd2ac07462042e5fceda326d50c.js" type="text/javascript"></script>
-      <script async="async" crossorigin="anonymous" src="https://assets-cdn.github.com/assets/github-aba45b8411f81a17de91f1837c70a8cb5d105fa6d6db2134e5b19f082a8049ce.js" type="text/javascript"></script>
-      
-      
-  </body>
-</html>
-
diff --git a/res/raw/pluto.properties b/res/raw/pluto.properties
deleted file mode 100644
index 74c0307..0000000
--- a/res/raw/pluto.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-obfs2=obfsclient
-obfs3=obfsclient
-scramblesuit=obfsclient
diff --git a/res/raw/torpolipo.conf b/res/raw/torpolipo.conf
deleted file mode 100644
index 0aeaf63..0000000
--- a/res/raw/torpolipo.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-proxyAddress = "127.0.0.1"
-proxyPort = 8118
-allowedClients = 127.0.0.1
-allowedPorts = 1-65535
-proxyName = "127.0.0.1"
-cacheIsShared = false
-socksParentProxy = "127.0.0.1:9050"
-socksProxyType = socks5
-diskCacheRoot = ""
-localDocumentRoot = ""
-disableLocalInterface = true
-disableConfiguration = true
-dnsUseGethostbyname = yes
-disableVia = true
-censoredHeaders = from,accept-language,x-pad,link
-censorReferer = maybe
-maxConnectionAge = 5m
-maxConnectionRequests = 120
-serverMaxSlots = 8
-serverSlots = 2
-tunnelAllowedPorts = 1-65535
-chunkHighMark = 512000
-objectHighMark = 128
\ No newline at end of file
diff --git a/res/raw/torrc b/res/raw/torrc
deleted file mode 100644
index fd0223e..0000000
--- a/res/raw/torrc
+++ /dev/null
@@ -1,8 +0,0 @@
-RunAsDaemon 1
-AvoidDiskWrites 1
-ControlPort auto
-SOCKSPort 0
-DNSPort 0
-TransPort 0
-CookieAuthentication 1
-DisableNetwork 1
\ No newline at end of file
diff --git a/res/values-ach/strings.xml b/res/values-ach/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-ach/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
deleted file mode 100644
index d4a224f..0000000
--- a/res/values-ar/strings.xml
+++ /dev/null
@@ -1,262 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">اوربوت</string>
-  <string name="app_description">اوربوت هو تطبيق الوكيل-البروكسي الحر الذي يمكّن تطبيقات أخرى لاستخدام الإنترنت بأمان أكثر . يُستخدم اوربوت تور لتشفير تحركات مرورك على الإنترنت ، ثم يخفيك ويجعلك وهمي من خلال سلسلة من أجهزة الكمبيوتر في جميع أنحاء العالم . تور هو تطبيق حر وشبكة مفتوحة والتي تساعدك على حماية نفسك من مراقبة الشبكات التي تهدد الحرية الشخصية والخصوصية ، والأنشطة التجارية السرية والعلاقات ، وأمن الدولة والحكومات القمعيّة والتي تستخدم مايعرف باسم تحليل حركة مرور البيانات .</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">فعل و اوقف تور</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">جاري تشغيل اوربوت...</string>
-  <string name="status_activated">متصل بشبكة تور</string>
-  <string name="status_disabled">تم إيقاف اوربوت</string>
-  <string name="status_shutting_down">جاري ايقاف خدمة تور</string>
-  <string name="tor_process_starting">جاري تشغيل تور...</string>
-  <string name="tor_process_complete">كامل.</string>
-  <string name="tor_process_waiting">انتظار.</string>
-  <string name="not_anonymous_yet">تحذير: حركة مرورك ليست خفية حتي الآن! من فضلك قم بتكوين التطبيقات الخاصة بك لإستخدام بروكسي HTTP 127.0.0.1:8118 أو SOCK4A أو SOKS5 127.0.0.1:9050</string>
-  <string name="menu_home">القائمة الرئيسية</string>
-  <string name="menu_browse">تصفّح</string>
-  <string name="menu_settings">إعدادات</string>
-  <string name="menu_log">السجل</string>
-  <string name="menu_info">مساعدة</string>
-  <string name="menu_apps">في بي ان شبكة وهمية خاصة</string>
-  <string name="menu_start">بدء</string>
-  <string name="menu_stop">توقف</string>
-  <string name="menu_about">حول</string>
-  <string name="menu_promo_apps">حمل التطبيق ...</string>
-  <string name="main_layout_download">تحميل</string>
-  <string name="main_layout_upload">رفع</string>
-  <string name="button_help">مساعدة</string>
-  <string name="button_close">إغلاق</string>
-  <string name="button_about">حول</string>
-  <string name="button_clear_log">مسح السجل</string>
-  <string name="menu_verify">تحقق</string>
-  <string name="menu_exit">خروج</string>
-  <string name="menu_scan">فحص QR الجسر</string>
-  <string name="menu_share_bridge">مشاركة QR الجسر</string>
-  <string name="press_to_start">- اضغط لفترة طويلة للبدء -</string>
-  <string name="pref_trans_proxy_group">بروكسي ضمني (يتطلب اذن حساب رووت)</string>
-  <string name="pref_trans_proxy_title">بروكسي ضمني</string>
-  <string name="pref_trans_proxy_summary">عملية توريفاي أوتوماتيكية للتطبيقات</string>
-  <string name="pref_transparent_all_title">استخدم تور مع جميع التطبيقات</string>
-  <string name="pref_transparent_all_summary">مرر كل بيانات المرور الخاصة بالتطبيقات عبر تور</string>
-  <string name="pref_transparent_port_fallback_title">تراجع منفذ البروكسي</string>
-  <string name="pref_transparent_port_fallback_summary">تحذير: تتحايل علي المنافذ الشائعة  (80, 443, إلى آخره) *استخدم فقط* إذا كان وضع \'كل\' أو \'التطبيق\' لا يعمل.</string>
-  <string name="pref_transparent_port_title">قائمة المنافذ</string>
-  <string name="pref_transparent_port_summary">قائمة بجميع المنافذ إلي البروكسي. *استخدم فقط* إذا كان وضع \'كل\' أو \'التطبيق\' لا يعمل.</string>
-  <string name="pref_transparent_port_dialog">ادخل المناقذ للبروكسي</string>
-  <string name="pref_has_root">اطلب إذن رووت</string>
-  <string name="pref_has_root_summary">اطلب إذن رووت لتفعيل البروكسي الضمني</string>
-  <string name="status_install_success">تم تثبيت تور بنجاح!</string>
-  <string name="status_install_fail">غير قادر على تثبيت ملفات تور. يرجى مراجعة السجل وإعلامنا على البريد الإلكتروني tor-assistants at torproject.org</string>
-  <string name="title_error">خطأ في التطبيق</string>
-  <string name="wizard_title">اوربوت</string>
-  <string name="wizard_btn_tell_me_more">عن اوربوت</string>
-  <string name="btn_next">التالي</string>
-  <string name="btn_back">رجوع</string>
-  <string name="btn_finish">إنهاء</string>
-  <string name="btn_okay">موافق</string>
-  <string name="btn_cancel">إلغاء</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">بعض التفاصيل عن اوربوت</string>
-  <string name="wizard_details_msg">اوربوت تطبيق مفتوح المصدر يحتويه تور، \"ليب افنت\" و \"بوليبو\". 
-وهو يوفر الوكيل-البروكسي المحلي HTTP (8118) ووكيل SOCKS (9050) في شبكة تور. 
- اوربوت أيضا قادر على الوصول لجذور الجهاز ، لإرسال كل تحركات الإنترنت من خلاله.</string>
-  <string name="wizard_permissions_root">تم منح الإذن</string>
-  <string name="wizard_permissions_stock">أذونات اوربوت</string>
-  <string name="wizard_premissions_msg_root">ممتاز! لقد وجدنا بأنه لديك صلاحية حساب رووت لتمكين اوربوت. سوف نستخدم هذه السلطة بحكمة.</string>
-  <string name="wizard_permissions_msg_stock">رغم أنه ليس ضروريا، يمكن ان يصبح أوربوت أداة قوية إذا كان لدى جهازك صلاحية حساب رووت. استخدم الزر بالأسفل لمنح اوربوت قوة أكبر!</string>
-  <string name="wizard_permissions_no_root">إذا لم يكن لديك صلاحية حساب رووت أو ليست لديك أدنى فكرة عما نتحدث عنه، تأكد فقط من استخدام تطبيقات تعمل مع اوربوت.</string>
-  <string name="wizard_permissions_consent">أفهم ذلك وأود أن أستمر بدون صلاحيات حساب رووت</string>
-  <string name="wizard_permission_enable_root">امنح اوربوت صلاحية حساب رووت</string>
-  <string name="wizard_configure">تكوين توريفاي</string>
-  <string name="wizard_configure_msg">اوربوت يعطيك الخيار لتوجيه جميع حركات مرور التطبيقات عبر تور او لإختيار التطبيقات بشكل فردي.</string>
-  <string name="wizard_configure_all">مرر جميع التطبيقات عبر تور</string>
-  <string name="wizard_configure_select_apps">اختر التطبيقات الفردية لتور</string>
-  <string name="wizard_tips_tricks">تطبيقات مهيئة لاوربوت</string>
-  <string name="wizard_tips_msg">التطبيقات التالية تم تطويرها حتي تعمل مع اوربوت. اضغط علي ما تريد تثبيتة علي جهازك الأن, أو يمكنك ان تجدهم لاحقاً علي جوجل بلاي, أو علي موقعنا GuardianProject.info أو من خلال F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">الدردشة الآمنة - تأمين الرسائل الفورية لمستخدمي الاندرويد</string>
-  <string name="wizard_tips_proxy">إعدادات البروكسي - تعلم كيفية تكوين التطبيقات لتعمل مع اوربوت</string>
-  <string name="wizard_tips_duckgo">تطبيق محرك البحث DuckDuckGo</string>
-  <string name="wizard_tips_twitter">اضبط البروكسي الخاص بتويتر إلي مستضيف \"localhost\" و المنفذ إلي 8118</string>
-  <string name="wizard_tips_story_maker">صانع القصة - اصنع قصة واتركها لأمان تور !</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">إعدادات البروكسي</string>
-  <string name="wizard_proxy_help_msg">إذا كان تطبيق الاندرويد الذي تستخدمه يدعم استخدام وكيل - بروكسيHTTP أو SOCKS  إذاً يمكنك تكوينه للاتصال باوربوت واستخدام تور.  إعدادات المضيف 127.0.0.1 أو \"مضيف\". ل HTTP، إعداد المنفذ هو 8118. لSOCKS، الوكيل هو 9050. يجب عليك استخدام SOCKS4A أو SOCKS5 إذا أمكن \ N \ N \ N \ N يمكنك معرفة المزيد حول إنشاء الوكلاء على الروبوت من خلال التعليمات على: 
-HTTP: / /tinyurl.com/proxyandroid\n</string>
-  <string name="wizard_final">اوربوت جاهز للاستخدام!</string>
-  <string name="wizard_final_msg">الملايين من الناس في جميع أنحاء العالم تستخدم تور لمجموعة واسعة من الأسباب . الصحفيين والمدونين , المدافعين عن حقوق الإنسان ، وضباط تنفيذ القانون ، والجنود ، والشركات والمواطنين من الأنظمة القمعية ، وايضاً المواطنين العاديين ... والآن هل أنت جاهز ، هيا بنا !</string>
-  <string name="wizard_exit_at_first_screen_toast">يرجى تكوين اوربوت واعداده لتستطيع البدء بإستخدامه !</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">لديك اتصال ناجح بشبكة تور - ولكن هذا لا يعني أن جهازك آمن . يمكنك استخدام زر \"متصفح\" لاختبار اتصالك .
-  زرنا على https://guardianproject.info/apps/orbot أو ارسل بريد الكتروني الى help at guardianproject.info  لمعرفة المزيد.</string>
-  <string name="tor_check">سيؤدي هذا إلى فتح المتصفح الخاص بك لزيارة عنوان https://check.torproject.org من اجل التحقق إذا كان تكوين اوربوت يعمل بشكل صحيح ام لا وبأنك متصل بتور.</string>
-  <string name="pref_hs_group">استضافة الخدمة المخفية</string>
-  <string name="pref_general_group">عام</string>
-  <string name="pref_start_boot_title">شغل اوربوت عند فتح الجهاز</string>
-  <string name="pref_start_boot_summary">فعل اوربوت و اتصل بتور تلقائياً عندما يبدء جهاز الأندرويد الخاص بك بالعمل</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">اوربت يجعل تور ممكناً على نظام الأندرويد. يساعدك تور في الدفاع ضد عملية ترشيح المحتويات, تحليل مسارات المرور, ومراقبة الشبكة والتي تهدد خصوصيتك, المعلومات السرية والعلاقات الشخصية. هذه الأداة ستساعدك من تهيئة اوربت مع تور على جهازك</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">تحذير</string>
-  <string name="wizard_warning_msg">لن يقوم اوربت بأخفاء هوية مسارك بشكل اوتوماتيكي او آلي بمجرد تنصيبه. بل يجب عليك ان تقوم بتهيئته مع جهازك بالأضافة الى تهيئة تطبيقات اخرى لتستطيع استخدام تور بنجاح.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">الصلاحيات</string>
-  <string name="wizard_permissions_root_msg1">يمكنك اعطاء اوربوت صلاحيات حساب رووت لتشغيل المميزات المتقدمة مثل البروكسي الضمني.</string>
-  <string name="wizard_permissions_root_msg2">إذا كنت لا تريد أن تفعل هذا, الرجاء إستخدام برامج معدة للعمل مع اوربوت</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title"> برامج معدة للعمل مع اوربوت</string>
-  <string name="wizard_tips_gibberbot">جات سكيور: هو تطبيق للدردشة بشكل آمن مع تشفير عالي جداً</string>
-  <string name="wizard_tips_orweb">اورفوكس: متصفح ذو خصوصية متقدمة يعمل ظمن او من خلال تور</string>
-  <string name="wizard_tips_play">يمكنك الحصول علي جميع تطبيقات مشروع الجاردين على جوجل بلاي</string>
-  <string name="wizard_tips_fdroid">اكتشف كل تطبيقات مشروع الجارديان على اف-درويد</string>
-  <string name="wizard_tips_fdroid_org">اكتشف كل تطبيقات مشروع الجارديان على https://f-droid.org </string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">بروكسي ضمني</string>
-  <string name="wizard_transproxy_msg">هذه ستسمح للبرامج بالاتصال بشبكة تور تلقائياً دون اعداد مسبق.</string>
-  <string name="wizard_transproxy_hint">(اختر هذا المربع إذا كنت لا تعلم عما نتحدث)</string>
-  <string name="wizard_transproxy_none">لا شيء</string>
-  <string name="pref_transparent_tethering_title">الربط بتور</string>
-  <string name="pref_transparent_tethering_summary">اسمح بالبروكسي الضمني للواي فاي و اجهزة اليو اس بي  (تحتاج لإعادة تشغيل الجهاز)</string>
-  <string name="button_grant_superuser">اطلب صلاحيات حساب رووت</string>
-  <string name="pref_select_apps">حدد البرامج</string>
-  <string name="pref_select_apps_summary">اختر البرامح التي تريد تمريرها إلي شبكة تور</string>
-  <string name="pref_node_configuration">تكوين نقطة الاتصال</string>
-  <string name="pref_node_configuration_summary">هذه الإعدادات متقدمة و قد تقلل من حماية هويتك</string>
-  <string name="pref_entrance_node">نقاط الدخول</string>
-  <string name="pref_entrance_node_summary">بصمات، اسماء مستعارة، البلدان و العناوين لأول نقطة اتصال</string>
-  <string name="pref_entrance_node_dialog">أدخل نقاط الدخول</string>
-  <string name="pref_allow_background_starts_title">إسمح للخلفية بألبدأ</string>
-  <string name="pref_allow_background_starts_summary">إسمح لأي تطبيق بأن يُخبِر اوربت بأن يفعل تور مع الخدمات المرتبطة به</string>
-  <string name="button_proxy_all">اُخوِّل الكل</string>
-  <string name="button_proxy_none">بدون تخويل</string>
-  <string name="button_invert_selection">اعكس المُحدد</string>
-  <string name="pref_proxy_title">بروكسي الشبكة الصادرة (اختياري)</string>
-  <string name="pref_proxy_type_title">نوع البروكسي الصادر</string>
-  <string name="pref_proxy_type_summary">البروتوكول المستخدم لخادم البروكسي: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">أدخل نوع البروكسي</string>
-  <string name="pref_proxy_host_title">عنوان البروكسي الصادر</string>
-  <string name="pref_proxy_host_summary">اسم مضيف خادم البروكسي</string>
-  <string name="pref_proxy_host_dialog">أدخل مضيف البروكسي</string>
-  <string name="pref_proxy_port_title">منفذ البروكسي الصادر</string>
-  <string name="pref_proxy_port_summary">منفذ خادم البروكسي</string>
-  <string name="pref_proxy_port_dialog">أدخل منفذ البروكسي</string>
-  <string name="pref_proxy_username_title">اسم مستخدم البروكسي الصادر</string>
-  <string name="pref_proxy_username_summary">اسم مستخدم البروكسي (اختياري)</string>
-  <string name="pref_proxy_username_dialog">ادخل اسم مستخدم البروكسي</string>
-  <string name="pref_proxy_password_title">كلمة مرور بروكسي الشبكة الصادرة</string>
-  <string name="pref_proxy_password_summary">كلمة مرور البروكسي (اختياري)</string>
-  <string name="pref_proxy_password_dialog">ادخل كلمة مرور البروكسي</string>
-  <string name="status">الحالة</string>
-  <string name="setting_up_full_transparent_proxying_">يتم إعداد بروكسي ضمني كامل...</string>
-  <string name="setting_up_app_based_transparent_proxying_">يتم إعداد البروكسي الضمني حسب البرامج...</string>
-  <string name="transparent_proxying_enabled">البروكسي الضمني مُفعل</string>
-  <string name="transproxy_enabled_for_tethering_">البروكسي الضمني جاهز للربط!</string>
-  <string name="warning_error_starting_transparent_proxying_">تحذير: حصل خطأ بتشغيل البروكسي الضمني!</string>
-  <string name="transproxy_rules_cleared">تم مسح قواعد البروكسي الضمني</string>
-  <string name="couldn_t_start_tor_process_">لقد تعذر بدء تشغيل تور:</string>
-  <string name="privoxy_is_running_on_port_">بوليبو يعمل على  المحمول </string>
-  <string name="setting_up_port_based_transparent_proxying_">يتم إعداد البروكسي الضمني حسب المنفذ...</string>
-  <string name="bridge_error">خطأ بالجسر</string>
-  <string name="bridge_requires_ip">حتي تستطيع إستخدم ميزة الجسور، يجب عليك ادخال عنوان انترنت لجسر واحد علي الأقل.</string>
-  <string name="send_email_for_bridges">أرسل بريد إلكتروني إلى bridges at torproject.org مع عبارة \"get bridges\" بداخل الرسالة من حساب بريد gmail.</string>
-  <string name="error">خطأ</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">إعدادات العنوان القابل للاتصال لديك تسببت بخطأ!</string>
-  <string name="your_relay_settings_caused_an_exception_">إعدادات المرحلات لديك تسببت بخطأ!</string>
-  <string name="exit_nodes">نقاط الخروج</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">البصمات، الاسماء المستعارة، البلدان و العناوين لآخر نقطة اتصال</string>
-  <string name="enter_exit_nodes">أدخل نقاط الخروج</string>
-  <string name="exclude_nodes">استثني النقاط</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">بصمات، الأسماء المستعارة، البلدان و العناوين ليتم استثنائها</string>
-  <string name="enter_exclude_nodes">أدخل النقاط المستثناه</string>
-  <string name="strict_nodes">النقاط المشددة</string>
-  <string name="use_only_these_specified_nodes">استخدم فقط تلك النقاط المحددة</string>
-  <string name="bridges">الجسور</string>
-  <string name="use_bridges">استخدم الجسور</string>
-  <string name="bridges_obfuscated">الجسور الغامضة</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">اسمح باستخدام نقاط دخول بديلة إلي شبكة تور</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">فعل هذا الخيار إذا كانت الجسور المحددة جسور غامضة</string>
-  <string name="ip_address_and_port_of_bridges">عنوان الانترنت و المنفذ للجسور</string>
-  <string name="enter_bridge_addresses">أدخل عناوين الجسور</string>
-  <string name="relays">المرحلات</string>
-  <string name="relaying">يرحل</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">اسمح لجهازك ليكون مرحل غير نهائي</string>
-  <string name="relay_port">منفذ المرحل</string>
-  <string name="listening_port_for_your_tor_relay">المنفذ المصغي لمُرحل تور الخاص بك</string>
-  <string name="enter_or_port">أدخل منفذ OR</string>
-  <string name="relay_nickname">الاسم المستعار للمُرحل</string>
-  <string name="the_nickname_for_your_tor_relay">الاسم المستعار لمُرحل تور الخاص بك</string>
-  <string name="enter_a_custom_relay_nickname">أدخل اسم مستعار للمُرحل</string>
-  <string name="reachable_addresses">العناوين التي يمكن الوصول إليها</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">العمل كخدمة من وراء جدار ناري بسياسات تقيدية</string>
-  <string name="reachable_ports">المنافذ التي يمكن الوصول إليها</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">منافذ مفتوحة عبر جدار ناري تقيدي</string>
-  <string name="enter_ports">أدخل المنافذ</string>
-  <string name="enable_hidden_services">استضافة الخدمة المخفية</string>
-  <string name="run_servers_accessible_via_the_tor_network">السماح للخادم الذي علي جهازك بأمكانية الوصول إليه من خلال شبكة تور</string>
-  <string name="enter_localhost_ports_for_hidden_services">أدخل المنافذ المحلية للخدمات المخفية</string>
-  <string name="hidden_service_ports">منافذ الخدمات المخفية</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">اسم العنوان لخدمتك المخفية (يتم انشائه تلقائياً)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">شغل سجل الـdebug ( للمراجعة يجب استخدام adb أو LogCat)</string>
-  <string name="project_home">الموقع الرسمي للمشروع (المشاريع):</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">رخصة استخدام تور</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">برامج من الطرف الثالث:</string>
-  <string name="tor_version">تور: https://www.torproject.org</string>
-  <string name="libevent_version">لب إيفينت النسخة http://www.monkey.org/~provos/libevent/ :v2.0.21</string>
-  <string name="polipo_version">بوليبو النسخة 1.1.9 : https://github.com/jech/polipo</string>
-  <string name="iptables_version">آي بي تايبلز النسخة 1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">اوبن اس اس ال النسخة: http://www.openssl.org 1.0.1q</string>
-  <string name="hidden_service_request">هناك برنامج يحاول فتح منفذ لخادم مخفي %S إلي شبكة تور. هذا السلوك آمن إذا كنت تثق بهذا البرنامج.</string>
-  <string name="found_existing_tor_process">عُثر علي عملية تور سابقة تعمل...</string>
-  <string name="something_bad_happened">حصل خطأ ما. افحص السجل</string>
-  <string name="hidden_service_on">الخدمات المخفية التي تعمل حالياً:</string>
-  <string name="unable_to_read_hidden_service_name">غير قادر على قراءة اسم الخدمة المخفية</string>
-  <string name="unable_to_start_tor">غير قادر على بدء تور:</string>
-  <string name="unable_to_reset_tor">أعِد تشغيل جهازك, غير قادر على اعادة تشغيل تور</string>
-  <string name="pref_use_sys_iptables_title">استخدم الـiptables التلقائية</string>
-  <string name="pref_use_sys_iptables_summary">استخدم مكونات الـiptables الموجودة ضمناً بالجهاز بدل النسخة المرفقة مع اوربوت</string>
-  <string name="error_installing_binares">غير قادرة على تثبيت أو تحديث تور</string>
-  <string name="pref_use_persistent_notifications">دائما ضع الأيقونة في شريط الأدوات عندما يكون اوربوت متصلاً</string>
-  <string name="pref_use_persistent_notifications_title">تنبيهات دائمة</string>
-  <string name="pref_use_expanded_notifications">قم بأظهار التنبيه بشكل موسع بأستخدام تور. أخرج من البلد ورقم الآي بي رقم العنوان على الشبكة</string>
-  <string name="pref_use_expanded_notifications_title">تنبيه موسّع</string>
-  <string name="notification_using_bridges">تم تفعيل الجسور!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">اللغة</string>
-  <string name="set_locale_summary">اختار  الإعدادات المحلية و اللغة لاوربوت</string>
-  <string name="wizard_locale_title">اختار اللغة</string>
-  <string name="wizard_locale_msg">إما ان تترك اللغة الافتراضية او إما ان تغير اللغة</string>
-  <string name="powered_by">مدعومة من قبل تور</string>
-  <string name="btn_save_settings">حفظ الإعدادات</string>
-  <string name="no_internet_connection_tor">لا يوجد ارتباط بألانترنيت: تور في وضع الوقف المؤقت</string>
-  <string name="bandwidth_">عرض النطاق</string>
-  <string name="down">اسفل</string>
-  <string name="up">أعلى</string>
-  <string name="pref_disable_network_title">لاتوجد شبكة نوم-آلي</string>
-  <string name="pref_disable_network_summary">ضع تور في وضع النوم عند عدم وجود الأنترنيت</string>
-  <string name="newnym">لقد تحولت الى هوية تور جديدة</string>
-  <string name="menu_verify_browser">متصفح</string>
-  <string name="menu_use_chatsecure">استخدم جات سكيور </string>
-  <string name="permission_manage_tor_label">أدارة تور</string>
-  <string name="permission_manage_tor_description">قم بتمكين هذا التطبيق من التحكم بخدمات تور</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">لا يبدو بأن لديك اورفوكس منصباً. هل تريد مساعدتاً في ذلك او لنقم فقط بتشغيل المتصفح؟</string>
-  <string name="install_apps_">هل ترغب بتنصيب التطبيقات؟</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">لا يوجد اتصال بألشبكة. سيدخل تور الى وضع النوم</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">الاتصال بألشبكة جيد. تنبيه تور من النوم</string>
-  <string name="updating_settings_in_tor_service">تحديث الاعدادات في خدمات تور</string>
-  <string name="pref_socks_title">تور  سوكس</string>
-  <string name="pref_socks_summary">منفذ الشبكات الحاسوبية او بورت الذي يقدمه تور الى وحدة الخدمة النائبة البروكسي في سوكس. (التقصير 9050 او 0 عدم القدرة)</string>
-  <string name="pref_socks_dialog">تهيئة منفذ الشبكات الحاسوبية  بورت في سوكس</string>
-  <string name="pref_transport_title">منفذ الشبكات الحاسوبية في وحدة الخدمة النائبة البروكسي في تور</string>
-  <string name="pref_transport_summary">منفذ الشبكات الحاسوبية او بورت الذي يقدمه تور الى البروكسي الشفاف (التقصير 9040 او 0 عدم القدرة)</string>
-  <string name="pref_transport_dialog">تهيئة بورت البروكسي الشفاف</string>
-  <string name="pref_dnsport_title">تور, نظام اسماء النطاقات, بورت</string>
-  <string name="pref_dnsport_summary">منفذ الشبكات الحاسوبية او بورت الذي يقدمه تور الى خدمة اسماء النطاق دي ان اس. (التقصير 5400 او 0 لعدم القدرة)</string>
-  <string name="pref_dnsport_dialog">إعدادات بورت خادم اسماء النطاق</string>
-  <string name="menu_vpn">في بي ان شبكة وهمية خاصة</string>
-</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
deleted file mode 100644
index d93f8d2..0000000
--- a/res/values-az/strings.xml
+++ /dev/null
@@ -1,297 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Pulsuz proksi tətbiqetməsi olan Orbot başqa tətbiqetmələrə internetdən daha təhlükəsiz istifadə etmək imkanı verir. Orbot sizin internet trafikinizi şifrələmək üçün Tordan istifadə edir və dünyanın hər yerində kompüterlərin birindən o birinə sıçramaqla bunu gizlədir. Tor pulsuz proqram təminatıdır, eyni zamanda sizin şəxsi azadlığınız və təhlükəsizliyinizə, gizli biznes fəaliyyəti və əlaqələrə, o cümlədən trafik analiz adlanan dövlət təhlükəsizliyinə xələl gətirə biləcək şəbəkə nəzarəti formalarından müdafiə olunmağa yardım edən açıq şəbəkədir.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">Toru başlat və dayandır
-</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot başlayır...</string>
-  <string name="status_activated">Tor şəbəkəsinə bağlandı</string>
-  <string name="status_disabled">Orbot deaktivasiya edildi</string>
-  <string name="status_shutting_down">Tor xidməti işini başa vurur</string>
-  <string name="tor_process_starting">Tor xidməti başlayır...</string>
-  <string name="tor_process_complete">tamamla.</string>
-  <string name="tor_process_waiting">gözləyirik.</string>
-  <string name="not_anonymous_yet">TƏHLÜKƏ: Sənin trafikin hələ anonim deyil! Lütfən, aplikasiyanı ya HTTP proksi 127.0.0.1:8118, ya SOCKS4A, ya da SOCKS5 proksi 127.0.0.1:9050 istifadə etmək üçün quraşdır.</string>
-  <string name="menu_home">Ev</string>
-  <string name="menu_browse">Bax</string>
-  <string name="menu_settings">Quraşdırmalar</string>
-  <string name="menu_log">Jurnal</string>
-  <string name="menu_info">Kömək</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Başla</string>
-  <string name="menu_stop">Dur</string>
-  <string name="menu_about">Haqqında</string>
-  <string name="menu_promo_apps">Tətbiqetmələri əldə edin...</string>
-  <string name="main_layout_download">Endir</string>
-  <string name="main_layout_upload">Yüklə</string>
-  <string name="button_help">Kömək</string>
-  <string name="button_close">Bağla</string>
-  <string name="button_about">Haqqında</string>
-  <string name="button_clear_log">Jurnalı Təmizlə</string>
-  <string name="menu_verify">Yoxla</string>
-  <string name="menu_exit">Çıx</string>
-  <string name="menu_scan">KörpüQR kodu skan edin</string>
-  <string name="menu_share_bridge">KörpüQR kodu paylaşın</string>
-  <string name="press_to_start">- başlamaq üçün uzun klik -</string>
-  <string name="pref_trans_proxy_group">Şəffaf Proksiləmə (Root Tələb Edir)</string>
-  <string name="pref_trans_proxy_title">Şəffaf Proksiləmə</string>
-  <string name="pref_trans_proxy_summary">Aplikasiyaların Avtomatik Torlanması</string>
-  <string name="pref_transparent_all_title">Hər şeyi Torla</string>
-  <string name="pref_transparent_all_summary">Tor vasitəsilə bütün aplikasiyaların proksi trafiki</string>
-  <string name="pref_transparent_port_fallback_title">Port Proksi Ehtiyatı</string>
-  <string name="pref_transparent_port_fallback_summary">TƏHLÜKƏ: Ümumi alt portlar (80, 443 və s.). \'Hamısı\' və ya \'Tətbiqetmə\' işləmirsə, *YALNIZ İSTİFADƏ ET*.</string>
-  <string name="pref_transparent_port_title">Port Siyahısı</string>
-  <string name="pref_transparent_port_summary">Proksiyə port siyahısı. \'Hamısı\' və ya \'Tətbiqetmə\' işləmirsə, *YALNIZ İSTİFADƏ ET*.</string>
-  <string name="pref_transparent_port_dialog">Proksiyə port daxil et</string>
-  <string name="pref_has_root">Root Giriş Tələb Et</string>
-  <string name="pref_has_root_summary">Şəffaf proksiləmə üçün mənbə tələb et</string>
-  <string name="status_install_success">Tor ikilisi müvəffəqiyyətlə yükləndi!</string>
-  <string name="status_install_fail">Tor ikili fayllarının quraşdırılması mümkün olmadı. Lütfən girişi yoxla və assistants at torproject.org-a xəbər ver.</string>
-  <string name="title_error">Tətbiq Səhvi</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Orbot Haqqında</string>
-  <string name="btn_next">Sonrakı</string>
-  <string name="btn_back">Geri</string>
-  <string name="btn_finish">Bitir</string>
-  <string name="btn_okay">Okey</string>
-  <string name="btn_cancel">Ləğv et</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Bəzi Orbot Detalları</string>
-  <string name="wizard_details_msg">Orbot Tor, LibEvent və Polipodan ibarət olan açıq mənbəli tətbiqetmədir. O, Tor şəbəkəsini yerli HTTP proksi (8118) və SOCKS proksi (9050) ilə təmin edir. Orbot həm də bütün internet trafikləri köklü mexanizm əsasında Tor vasitəsiylə göndərmək qabiliyyətinə malikdir. </string>
-  <string name="wizard_permissions_root">İcazə Verilir</string>
-  <string name="wizard_permissions_stock">Orbot İcazələri</string>
-  <string name="wizard_premissions_msg_root">Əla! Sənin Orbot üçün mənbə icazələrinə malik olmanı müəyyən etmişik. Biz bu gücü ağılla istifadə edəcəyik.</string>
-  <string name="wizard_permissions_msg_stock">Bu tələb edilmədiyi halda sənin qurğunun mənbə girişi varsa, Orbot daha güclü işləyəcək. Orbota super gücü vermək üçün aşağıdakı düyməni istifadə et!</string>
-  <string name="wizard_permissions_no_root">Əgər sənin mənbə girişinə icazən yoxdursa, ya da nə haqqında danışdığımızı anlamırsansa, əmin ol ki, istifadə etdiyin aplikasiyalar Orbotla işləyə biləndirlər.</string>
-  <string name="wizard_permissions_consent">Superistifadəçisiz davam etməyi anlayır və istəyirəm</string>
-  <string name="wizard_permission_enable_root">Orbot üçün Mənbə Ver</string>
-  <string name="wizard_configure">Torifikasiyanı Quraşdır</string>
-  <string name="wizard_configure_msg">Orbot sənə bütün və ya seçilmiş aplikasiyalarını Tor vasitəsilə istifadə etməyə imkan yaradır.</string>
-  <string name="wizard_configure_all">Bütün Aplikasiyaları Tor Vasitəsilə Proksi Et</string>
-  <string name="wizard_configure_select_apps">Tor üçün Müəyyən Aplikasiyaları Seç</string>
-  <string name="wizard_tips_tricks">Orbota-açıq Aplikasiyalar</string>
-  <string name="wizard_tips_msg">Aşağıdakı aplikasiyalar Orbotla işləmək üçün quraşdırılmışdır. İndi quraşdırmaq üçün hər düyməni kliklə, ya da başqa vaxt onları Google Play, GuardianProject.info saytı və ya F-Doid.org-da tap.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Android üçün təhlükəsiz mesajlaşma müştərisi</string>
-  <string name="wizard_tips_proxy">Proksi Seçimləri - Aplikasiyaların Orbotla necə işləyəcəyini öyrən</string>
-  <string name="wizard_tips_duckgo">DuckDuckGO Axtarış Qurğu aplikasiyası</string>
-  <string name="wizard_tips_twitter">\"Yerlihost\" və 8118 portuna sahiblik üçün Twitter proksini quraşdır</string>
-  <string name="wizard_tips_story_maker">StoryMaker--Yazı yaz, təhlükəsizlik məsələsini torun öhdəsinə burax!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proksi qurğuları</string>
-  <string name="wizard_proxy_help_msg">İstifadə etdiyiniz Android tətbiqetməsi HTTP və SOCKS proksinin istifadəsini dəstəkləyə bilirsə, siz onu Orbotla birləşdirmək üçün tənzimləyə və Tor.\n\n\n-dən istifadə edə bilərsiniz.   Host quraşdırmaları 127.0.0.1-dir, yaxud \"yerlihost\"dur. HTTP üçün port quraşdırması 8118-dir. SOCKS üçün proksi  9050-dir. Siz SOCKS4A, yaxud mümkünsə, SOCKS5-dən istifadə etməlisiniz.\n \n\n\n FAQ vasitəsiylə siz Androiddə proksiləmə haqda daha çox məlumat ala bilərsiniz: http://tinyurl.com/proxyandroid\n</string>
-  <string name="wizard_final">Orbot hazırdır!</string>
-  <string name="wizard_final_msg">Dünyanın müxtəlif yerlərində milyonlarla insan Tordan müxtəlif məqsədlərlə istifadə edir. \n\n Jurnalistlər, blogerlər, insan haqları müdafiəçiləri, hüquq-mühafizə orqanlarının işçiləri, əsgərlər, korporasiyalar, repressiv rejimlərin vətəndaşları, ya da adi vətəndaşlar...İndi buna siz də hazırsınız!</string>
-  <string name="wizard_exit_at_first_screen_toast">Zəhmət olmasa, istifadəyə başlamazdan əvvəl Orbotu tənzimləyin!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Siz Tor şəbəkəsinə uğurla qoşuldunuz. Ancaq bu o demək deyil ki, sizin cihazınız təhlükəsizdir. Əlqəni yoxlamaq üçün  \'Browser\' düyməsindən istifadə edə bilərsiniz. \n\n Bizə https://guardianproject.info/apps/orbot səhifəsində qonaq ola bilərsiniz. Daha çox məlumat əldə etmək üçün help at guardianproject.info ünvanına məktub yazmaq olar. </string>
-  <string name="tor_check">Orbotun konfiqurasiya edilməsini və sənin Tor-a qoşulduğunu dəqiqləşdirmək üçün bu sənin brauzerini https://check.torproject.org saytı ilə açacaq.</string>
-  <string name="pref_hs_group">Gizli Xidmət Hostinqi</string>
-  <string name="pref_general_group">Əsas</string>
-  <string name="pref_start_boot_title">Android Açıldıqda Orbotu Başlat</string>
-  <string name="pref_start_boot_summary">Android cihazın işə başladıqda avtomatik olaraq Orbot başlansın və Tor-a qoşulsun</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot Toru Androidə gətirir!\n\nTor məxfiliyə, gizli informasiya və şəxsi münasibətlərə xələl gətirə biləcək şəbəkə nəzarəti, məzmunun süzgəcdən keçirilməsi və trafik analizindən müdafiə olunmaqda sizə yardım edir.\n\nBu sehrbaz Orbot və Toru sizin cihazınıza quraşdırmağa kömək edəcək.  </string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Xəbərdarlıq</string>
-  <string name="wizard_warning_msg">Sadəcə Orbotun quraşdırılması mobil trafikinizi avtomatik olaraq anonimləşdirə bilməz.\n\nTordan uğurla istifadə etmək üçün siz Orbotu, cihazınızı və başqa tətbiqetmələri bir-birinə uyğunlaşdırmalısınız.  </string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">İcazə</string>
-  <string name="wizard_permissions_root_msg1">Sən istəsən Orbot-un \'Superistifadəçi\' girişini əldə edib Şəffaf Proksiləmə kimi əlavə seçimlər qazana bilərsən.</string>
-  <string name="wizard_permissions_root_msg2">Bunu etmək istəmirsənsə, yalnız Orbot-la işləməsi mümkün aplikasiyalara sahib olduğuna əmin ol</string>
-  <string name="wizard_permissions_no_root_msg">Sizin cihazınız yəqin ki, rout olunmayıb, ya da rout və ya \"Superistifadəçi\" keçidi ilə təmin etmir.\n\nXahiş edirik, bunun əvəzinə əsas ekranda \'Tətbiqetmələr\' rejimindən istifadə etməyə çalışın. </string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-a Açıq Aplikasiyalar</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Çat aplikasiyasını Qeydsiz Şifrləmə ilə təhlükəsizləşdir</string>
-  <string name="wizard_tips_orweb">Orfox: Tor vasitəsiylə işləyən və məxfiliyi artıran brauzer</string>
-  <string name="wizard_tips_play">Google Play-də bütün Guardian Layihə aplikasiyaları tap</string>
-  <string name="wizard_tips_fdroid">F-Droiddəki bütün Guardian Project tətbiqetmələrini tapın </string>
-  <string name="wizard_tips_fdroid_org">https://f-droid.org-də bütün Guardian Project tətbiqetmələrini tapın</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Şəffaf Proksiləmə</string>
-  <string name="wizard_transproxy_msg">Bu heç bir konfiqurasiyaya ehtiyac olmadan aplikasiyalarının avtomatik olaraq Tor şəbəkəsi vasitəsilə işləməsini təmin edir.</string>
-  <string name="wizard_transproxy_hint">(Dediklərimizdən heç biri haqqında xəbərin yoxdursa, qutunu işarələ)</string>
-  <string name="wizard_transproxy_none">Heç biri</string>
-  <string name="pref_transparent_tethering_title">Tor-un Son Həddi</string>
-  <string name="pref_transparent_tethering_summary">Wifi və USB ilə Bağlanan Cihazlar üçün Tor Şəffaf Proksiləməni Aktivləşdir (cihazın yenidən yüklənməsini tələb edir)</string>
-  <string name="button_grant_superuser">Superistifadəçi Giriş Tələbi</string>
-  <string name="pref_select_apps">Aplikasiya Seç</string>
-  <string name="pref_select_apps_summary">Tor vasitəsilə açılması üçün Aplikasiya seç</string>
-  <string name="pref_node_configuration">Kəsişmə Konfiqurasiyası</string>
-  <string name="pref_node_configuration_summary">Bunlar sənin anonimliyini azalda biləcək ətraflı seçimlərdir</string>
-  <string name="pref_entrance_node">Giriş Kəsişmələri</string>
-  <string name="pref_entrance_node_summary">Birinci sıçrayış üçün barmaq izləri, nişanlar, ölkələr və ünvanlar</string>
-  <string name="pref_entrance_node_dialog">Giriş Kəsişmələrini Əlavə et</string>
-  <string name="pref_allow_background_starts_title">Arxa fonun işə başlamasına icazə verin</string>
-  <string name="pref_allow_background_starts_summary">Qoy hər-hansı tətbiqetmə Orbota Tor və əlaqəli xidmətləri işə salmalı olduğunu desin</string>
-  <string name="button_proxy_all">Hər şeyi proksilə
-</string>
-  <string name="button_proxy_none">Heç nəyi proksiləmə</string>
-  <string name="button_invert_selection">Seçiminin yerini dəyiş</string>
-  <string name="pref_proxy_title">İxrac Edilən Şəbəkə Proksisi (istəyə bağlı)</string>
-  <string name="pref_proxy_type_title">İxrac Edilən Proksi Növü</string>
-  <string name="pref_proxy_type_summary">Proksi serveri istifadə etmək üçün protokol: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Proksi Növünü Daxil Et</string>
-  <string name="pref_proxy_host_title">İxrac Edilən Proksi Hostu</string>
-  <string name="pref_proxy_host_summary">Proksi Server host adı</string>
-  <string name="pref_proxy_host_dialog">Proksi Hostu Daxil Et</string>
-  <string name="pref_proxy_port_title">İxrac Edilən Proksi Port</string>
-  <string name="pref_proxy_port_summary">Proksi Server portu</string>
-  <string name="pref_proxy_port_dialog">Proksi portu daxil et</string>
-  <string name="pref_proxy_username_title">İxrac Edilən Proxy İstifadəçi Adı</string>
-  <string name="pref_proxy_username_summary">Proksi İstifadəçi Adı (istəyə bağlı)</string>
-  <string name="pref_proxy_username_dialog">Proksi İstifadəçi Adı Daxil Et</string>
-  <string name="pref_proxy_password_title">İxrac Edilən Proksi Şifrə</string>
-  <string name="pref_proxy_password_summary">Proksi Şifrə (istəyə bağlı)</string>
-  <string name="pref_proxy_password_dialog">Proksi Şifrə Daxil et</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Tam şəffaf proksiləmənin quraşdırılması...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Aplikasiya əsaslı şəffaf proksiləmənin quraşdırılması...</string>
-  <string name="transparent_proxying_enabled">Şəffaf proksiləmə AKTİVLƏŞDİRİLDİ</string>
-  <string name="transproxy_enabled_for_tethering_">Bağlanma üçün TransProksi aktivləşdirildi!</string>
-  <string name="warning_error_starting_transparent_proxying_">TƏHLÜKƏ: şəffaf proksiləmənin başlanmasında xəta!</string>
-  <string name="transproxy_rules_cleared">TransProksi qaydalar təmizləndi</string>
-  <string name="couldn_t_start_tor_process_">Tor prosesi başlana bilmədi:</string>
-  <string name="privoxy_is_running_on_port_">Polipo portda işləyir</string>
-  <string name="setting_up_port_based_transparent_proxying_">Porta əsaslanmış proksiləmənin quraşdırılması...</string>
-  <string name="bridge_error">Körpü Xətası</string>
-  <string name="bridge_requires_ip">Körpü funksiyasını istifadə etmək üçün ən azı bir körpü IP ünvanı əlavə etməlisən.</string>
-  <string name="send_email_for_bridges">Gmail hesabından bridges at torproject.org ünvanına mətn hissəsində \"körpü əldə et\" sözləri yazılmaqla məktub göndər.</string>
-  <string name="error">Xəta</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Sənin ƏlçatanÜnvanlar seçimin istisnaya səbəb oldu!</string>
-  <string name="your_relay_settings_caused_an_exception_">Sənin keçid seçimlərin istisnaya səbəb oldu!</string>
-  <string name="exit_nodes">Kəsişmələri Xaric Et</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Son sıçrayış üçün barmaq izləri, nişanlar, ölkələr və ünvanlar</string>
-  <string name="enter_exit_nodes">Çıxış Kəsişmələrini Daxil Et</string>
-  <string name="exclude_nodes">Kəsişmələri Xaric Et</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">İxrac üçün barmaq izləri, nişanlar, ölkələr və ünvanlar</string>
-  <string name="enter_exclude_nodes">İxrac Kəsişmələrini Daxil Et</string>
-  <string name="strict_nodes">Kəskin Kəsişmələr</string>
-  <string name="use_only_these_specified_nodes">*Yalnız* bu xüsusi kəsişmələri istifadə et</string>
-  <string name="bridges">Körpülər</string>
-  <string name="use_bridges">Körpü İstifadə Et</string>
-  <string name="bridges_obfuscated">Çaşdırıcı Körpülər</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Tor Şəbəkəsinə alternativ giriş kəsişmələrini aktivləşdir</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Quraşdırılmış körpülər çaşdırıcı körpülər olsa, aktivləşdir</string>
-  <string name="ip_address_and_port_of_bridges">Körpülərin IP ünvanı və portu</string>
-  <string name="enter_bridge_addresses">Körpü Ünvanlarını Daxil et</string>
-  <string name="relays">Keçidlər</string>
-  <string name="relaying">Keçidləmə</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Cihazının son-keçid funksiyasını aktivləşdir</string>
-  <string name="relay_port">Keçid Portu</string>
-  <string name="listening_port_for_your_tor_relay">Tor keçidin üçün portun dinlənməsi</string>
-  <string name="enter_or_port">OR port daxil et</string>
-  <string name="relay_nickname">Keçid adı</string>
-  <string name="the_nickname_for_your_tor_relay">Tor keçidin üçün ad</string>
-  <string name="enter_a_custom_relay_nickname">İlkin keçidə ad daxil et</string>
-  <string name="reachable_addresses">Əlçatan Ünvanlar</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Məhdudlaşmış siyasətlə qoruyucu divar arxasındakı müştəri kimi işlət</string>
-  <string name="reachable_ports">Əlçatan portlar</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Məhdudlaşdırılmış qoruyucu divar arxasında əlçatan portlar</string>
-  <string name="enter_ports">Port daxil et</string>
-  <string name="enable_hidden_services">Gizli Xidmət Hostinqi</string>
-  <string name="run_servers_accessible_via_the_tor_network">cihaz serverinin Tor şəbəkəsi tərəfindənəldə edilən olmasına icazə ver</string>
-  <string name="enter_localhost_ports_for_hidden_services">gizli xidmətlər üçün yerlihost portlarını daxil et</string>
-  <string name="hidden_service_ports">Gizli Xidmət Portları</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">gizli xidmətin üçün ünvanlanan ad (avtomatik hazırlanmış)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">məhsul üçün sazlama girişi daxil et (baxmaq üçün adb və ya aLogCat istifadə etməlisən)</string>
-  <string name="project_home">Layihə Evi(ləri):</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Tor Lisenziyası</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Xidməti Quraşdırma:</string>
-  <string name="tor_version">
-Tor: https://www.torproject.org</string>
-  <string name="libevent_version">
-LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">SSL-i aç v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Aplikasiya Tor şəbəkəsinə %S gizli server portu açmaq istəyir. Aplikasiyaya inandığın halda bu təhlükəsizdir.</string>
-  <string name="found_existing_tor_process">mövcud Tor prosesi tapıldı...</string>
-  <string name="something_bad_happened">Nə isə pis bir şey oldu. Girişi yoxla</string>
-  <string name="hidden_service_on">burada gizli xidməti:</string>
-  <string name="unable_to_read_hidden_service_name">gizli xidmət adını oxumağı deaktivləşdir</string>
-  <string name="unable_to_start_tor">Tor-un başlanmasını dayandır:</string>
-  <string name="unable_to_reset_tor">Cihazınızı yenidən yükləyin, Toru bərpa etmək olmur!</string>
-  <string name="pref_use_sys_iptables_title">Mövcud Ipstol İstifadə Et</string>
-  <string name="pref_use_sys_iptables_summary">Orbotla bağlanmış ipstol əvəzinə daxili cüt ipstol istifadə et</string>
-  <string name="error_installing_binares">Tor cütlükləri quraşdırıla və ya təkmilləşdirilə bilmədi.</string>
-  <string name="pref_use_persistent_notifications">Həmişə Orbot qoşulduğu hallarda nişanı alətlət panelində saxla</string>
-  <string name="pref_use_persistent_notifications_title">Həmişə Açıq Xəbərdarlıqlar</string>
-  <string name="pref_use_expanded_notifications">Torla birlikdə ətraflı bildirişi göstərib ölkə və IP-dən çıxın. </string>
-  <string name="pref_use_expanded_notifications_title">Ətraflı bildirişlər</string>
-  <string name="notification_using_bridges">Körpülər aktivləşdirildi!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Dil</string>
-  <string name="set_locale_summary">Orbot üçün dil standartlarını və dili seç</string>
-  <string name="wizard_locale_title">Dil Seç</string>
-  <string name="wizard_locale_msg">Olduğu kimi saxla, ya da mövcud dilə keç</string>
-  <string name="powered_by">Tor tərəfindən yaradılmış</string>
-  <string name="btn_save_settings">Seçimləri Saxla</string>
-  <string name="no_internet_connection_tor">İnternet yoxdur; Tor gözləyir</string>
-  <string name="bandwidth_">Ötürmə qabiliyyəti:</string>
-  <string name="down">aşağı</string>
-  <string name="up">yuxarı</string>
-  <string name="pref_disable_network_title">Avto-Yuxu Şəbəkəsi Yoxdur</string>
-  <string name="pref_disable_network_summary">İnternet olmadıqda icazə ver Tor yatsın</string>
-  <string name="newnym">Yeni Tor oxşarına qoşuldun!</string>
-  <string name="menu_verify_browser">Bax</string>
-  <string name="menu_use_chatsecure">ChatSecure istifadə et</string>
-  <string name="permission_manage_tor_label">Toru İdarə Et</string>
-  <string name="permission_manage_tor_description">Tor xidmətini idarə etməsi üçün aplikasiyanı aktivləşdir</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Deyəsən Orfoxu quraşdırmamısınız. Yardıma ehtiyacınız var, yoxsa yalnız brauzeri açmalıyıq?</string>
-  <string name="install_apps_">Aplikasiya quraşdırılsın?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">İnternetlə əlaqə yoxdur. Tor gözləmə rejiminə keçir...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">İnternetlə əlaqə yaxşıdır. Tor iş rejiminə keçir...</string>
-  <string name="updating_settings_in_tor_service">Tor xidmətində quraşdırmalar yüklənir</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Torun təklif etdiyi Port SOCKS proksi işləyir (standart: 9050, yaxud söndürmək üçün 0) </string>
-  <string name="pref_socks_dialog">SOCKS Port Config</string>
-  <string name="pref_transport_title">Tor TransProxy Port</string>
-  <string name="pref_transport_summary">Torun təklif etdiyi Port Transparent proksi işləyir (standart: 9040, yaxud söndürmək üçün 0) </string>
-  <string name="pref_transport_dialog">TransProxy Port Config</string>
-  <string name="pref_dnsport_title">Tor DNS Port</string>
-  <string name="pref_dnsport_summary">Torun təklif etdiyi Port DNS işləyir (standart: 5400, yaxud söndürmək üçün 0)</string>
-  <string name="pref_dnsport_dialog">DNS Port Config</string>
-  <string name="pref_torrc_title">Torrc Custom Config</string>
-  <string name="pref_torrc_summary">YALNIZ EKSPERTLƏR: birbaşa torrc config xətlərini daxil edin</string>
-  <string name="pref_torrc_dialog">Custom Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech İnsan haqları Sənədləri tətbiqetməsi</string>
-  <string name="your_tor_public_ips_">Sizin ictimai Tor İP-ləriniz</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Orbotla bağlı probleminiz varsa, lütfən, Android->Settings->Apps-də bu tətbiqetməni söndürün;</string>
-  <string name="app_conflict">Tətbiqetmə konflikti</string>
-  <string name="pref_transproxy_refresh_title">Transproxy avtomatik yeniləmə</string>
-  <string name="pref_transproxy_refresh_summary">Şəbəkə vəziyyəti dəyişəndə Transproxy qaydalarını yenidən tətbiq edin</string>
-  <string name="pref_transproxy_flush_title">Transproxy MƏCBURİ POZMA</string>
-  <string name="pref_transproxy_flush_summary">Bütün transproxy şəbəkə qaydalarını elə İNDİ ləğv etmək üçün bura klikləyin</string>
-  <string name="transparent_proxy_rules_flushed_">Transparent proksi qaydaları ləğv edildi</string>
-  <string name="you_do_not_have_root_access_enabled">Root girişiniz yoxdur</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Quraşdırma dəyişikliklərinin tətbiq edilməsi üçün Orbota başlamağa və ya onu dayandırmağa ehtiyacınız ola bilər. </string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Körpülər yeniləndi</string>
-  <string name="restart_orbot_to_use_this_bridge_">Lütfən, Orbotu söndürün və yenidən yandırın ki, dəyişikliklər tətbiq edilsin.</string>
-  <string name="menu_qr">QR kodlar</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Sənin mobil şəbəkən Toru aktiv şəkildə əngəlləyirsə,  şəbəkəyə daxil olmaq üçün Körpüdən istifadə edə bilərsən. Körpüləri aktivləşdirmək üçün yuxarıdakı körpü növlərindən birini SEÇ.</string>
-  <string name="bridge_mode">Körpü rejimi</string>
-  <string name="get_bridges_email">Emeyl</string>
-  <string name="get_bridges_web">Veb</string>
-  <string name="activate">Aktivləşdir</string>
-  <string name="apps_mode">Tətbiqetmələr VPN Rejimi</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Tor şəbəkəsi vasitəsiylə qoşulmaq üçün Android.\n\n*WARNING*-in VPN funksiyasından istifadə edərək öz qurğunda bütün tətbiqetmələri aktivləşdirə bilərsən. Bu, yeni, eksperimental funksiyadır və bəzən avtomatik olaraq başlamaya, yaxud dayana bilər. Bundan anonimlik məqsədiylə istifadə etmək OLMAZ, bundan YALNIZ  süzgəc və qoruma divarlarından keçmək üçün istifadə etmək lazımdır. </string>
-  <string name="send_email">Emeyl göndərin</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Körpü ünvanını siz emeyl və veb vasitəsiylə, ya da körpünün QR kodunu skan etməklə əldə edə bilərsiniz. Körpü ünvanı haqda sorğunun altında  \'Email\'i, yaxud \'Web\'i seçin.\n\nÜnvanı əldə edəndən sonra  &amp-i nüsxələyin və onu Orbot quraşdırmasındakı \"Bridges\" parametrinə qoyun və cihazı yenidən yükləyin.</string>
-  <string name="install_orweb">Orfoxu quraşdırın</string>
-  <string name="standard_browser">Standart Brauzer</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">QEYD: Intel X86/ATOM cihazlarında yalnız standart Tor körpülər işləyir.</string>
-  <string name="vpn_default_world">Dünya</string>
-</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
deleted file mode 100644
index ed881a2..0000000
--- a/res/values-bg/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Орбот</string>
-  <string name="app_description">Orbot е безплатна прокси програма, която дава възможноста на други програми да използват интерент по-сигурно. Orbot използва Tor, за да криптира Интернет трафика и след това го скрива като препраща през няколко компютъра по целия свят. Tor е безплатен софтуер и отворена мрежа, която ти помага да се предпазиш от шпиониране по мрежата, което заплашва твоята свобода и лично пространство, конфиденциални бизнес отношение и връзки, и от вид правителствено следене наречено трафик анализ.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">стартирай и стопирай Тор</string>
-  <string name="tor_proxy_service_process">Tor прокси</string>
-  <string name="status_starting_up">Орбот стартира...</string>
-  <string name="status_activated">Свързан към Тор мрежата</string>
-  <string name="status_disabled">Орбот е деактивиран</string>
-  <string name="status_shutting_down">TorService спира</string>
-  <string name="tor_process_starting">Стартиране на Тор клиент...</string>
-  <string name="tor_process_complete">завършено.</string>
-  <string name="tor_process_waiting">изчакване.</string>
-  <string name="not_anonymous_yet">ВНИМАНИЕ: Трафикът Ви не е анонимен! Моля конфигурирайте приложенията си да използват HTTP proxy 127.0.0.1:8118 или SOCKS4A или SOCKS5 proxy 127.0.0.1:9050</string>
-  <string name="menu_home">Начало</string>
-  <string name="menu_browse">Прелисти</string>
-  <string name="menu_settings">Настройки</string>
-  <string name="menu_log">Лог</string>
-  <string name="menu_info">Помощ</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Старт</string>
-  <string name="menu_stop">Стоп</string>
-  <string name="menu_about">Относно</string>
-  <string name="menu_promo_apps">Изтегли приложения...</string>
-  <string name="main_layout_download">Изтегли</string>
-  <string name="main_layout_upload">Качи</string>
-  <string name="button_help">Помощ</string>
-  <string name="button_close">Затвори</string>
-  <string name="button_about">Относно</string>
-  <string name="button_clear_log">Изчисти лог</string>
-  <string name="menu_verify">Check</string>
-  <string name="menu_exit">Изход</string>
-  <string name="menu_scan">Сканирай BridgeQR</string>
-  <string name="menu_share_bridge">Сподели BridgeQR</string>
-  <string name="press_to_start">- за старт натисни и задръж -</string>
-  <string name="pref_trans_proxy_group">Прозрачно прокси (Изисква Root)</string>
-  <string name="pref_trans_proxy_title">Прозрачно прокси</string>
-  <string name="pref_trans_proxy_summary">Автоматично прекарване на приложенията през Тор</string>
-  <string name="pref_transparent_all_title">Всичко през Тор</string>
-  <string name="pref_transparent_all_summary">Прехвърляй през Тор трафика на всички приложения</string>
-  <string name="pref_transparent_port_fallback_title">Тор прокси услугата смени порта</string>
-  <string name="pref_transparent_port_fallback_summary">ВНИМАНИЕ: Заобикаля стандартните портове(80, 443, т.н.). *ИЗПОЛЗВАЙ САМО* ако режимиете \'Всички\' или \'Програма\' не работят.</string>
-  <string name="pref_transparent_port_title">Списък портове</string>
-  <string name="pref_transparent_port_summary">Списък с портовете, на които да се ползва прокси. *ИЗПОЛЗВАЙ САМО* ако режимиете \'Всички\' или \'Програма\' не работят.</string>
-  <string name="pref_transparent_port_dialog">Въведи портове на прокси</string>
-  <string name="pref_has_root">Изисквай Root достъп</string>
-  <string name="pref_has_root_summary">Изисквай root достъп за прозрачно прокси</string>
-  <string name="status_install_success">Тор е успешно инсталиран!</string>
-  <string name="status_install_fail">Двуичните файлове на Тор не са инсталирани. Моля проверете лога и уведомете tor-assistants at torproject.org</string>
-  <string name="title_error">Грешка в приложението</string>
-  <string name="wizard_title">Орбот</string>
-  <string name="wizard_btn_tell_me_more">Относно Орбот</string>
-  <string name="btn_next">Следващ</string>
-  <string name="btn_back">Обратно</string>
-  <string name="btn_finish">Край</string>
-  <string name="btn_okay">ОК</string>
-  <string name="btn_cancel">Откажи</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Някои Орбот детайли</string>
-  <string name="wizard_details_msg">Orbot е приложение с отворен код, което съдържа Tor, LibEvent и Polipo. То предлага локално HTTP прокси (8118) и SOCKS прокси (9050) към Tor мрежата. Orbot също така има възможноста, на усройства с root достъп, да препраща целият интернет трафик през Tor.</string>
-  <string name="wizard_permissions_root">Правата дадени</string>
-  <string name="wizard_permissions_stock">Orbot Permissions</string>
-  <string name="wizard_premissions_msg_root">Отлично! Засякохме, че имате root права достъпни за Орбот. Ще използваме тази сила разумно.</string>
-  <string name="wizard_permissions_msg_stock"> Въпреки че не е задължително, Орбот може да стане по-мощно приложение ако има root достъп. Използвайте бутона долу за да дадете на Орбот суперсили!</string>
-  <string name="wizard_permissions_no_root">Ако нямате root достъп или не знаете за какво става въпрос, просто използвайте приложения направени да работят с Орбот.</string>
-  <string name="wizard_permissions_consent">Разбирам и искам да продължа без Суперпотребител</string>
-  <string name="wizard_permission_enable_root">Разреши Root за Орбот</string>
-  <string name="wizard_configure">Настрой Торификацията</string>
-  <string name="wizard_configure_msg">Орбот Ви дава възможност да прекарате всичкия трафик през Тор или да изберете приложения по отделно.</string>
-  <string name="wizard_configure_all">Прекарай всички приложения през Тор</string>
-  <string name="wizard_configure_select_apps">Избери отделни приложения за Тор</string>
-  <string name="wizard_tips_tricks">Поддържани от Орбот приложения</string>
-  <string name="wizard_tips_msg">Приложенията по-долу са създадени така, че да работят с Орбот. Цъкни на всеки бутон, за да инсталираш сега или може да ги намериш по-късно в Андроид маркет.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Криптиран чат програма за Андроид</string>
-  <string name="wizard_tips_proxy">Proxy Settings - Научете как да конфигурирате приложения да работят през Орбот</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo Търсачка</string>
-  <string name="wizard_tips_twitter">Нагласете проксито на Twitter на \"localhost\" и порт 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Създай история и остави сигурноста на tor!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Прокси настройки</string>
-  <string name="wizard_proxy_help_msg">Ако Андроид приложението, което използваш поддържа HTTP или SOCKS прокси, тогава мжоеш да го конфигурираш да се свързва с Orbot и да използва Tor.\n\n\nНастойките са host 127.0.0.1 или \"localhost\". За HTTP, портът е 8118. За SOCKS проксито е 9050. Най-добре е по възможност да се използва SOCKS4A или SOCKS5.\n\n\n\nМожеш да научиш повече за прокситата в Андроид през странцита с въпроси и отговори: http://tinyurl.com/proxyandroid\n </string>
-  <string name="wizard_final">Орбот е готов!</string>
-  <string name="wizard_final_msg">Милиони хора по света използват Tor по голям брой причини.\n\nЖурналисти и блогъри, защитници на човешките права, органите на реда, войници, корпорации, граждани на държави с репресивни режими, и най-обикновени граждани... а сега и ти!</string>
-  <string name="wizard_exit_at_first_screen_toast">Моля, настрой Orbot преди да почнеш да го използваш!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Успешн се свързахте с Tor мрежата - това НЕ значи, че устройството Ви е предпазено. Може да използвате \'Браузър\' бутона да тествате връзката. \n\nОтидете на https://guardianproject.info/apps/orbot или изпратете имейл на help at guardianproject.info, за да научите повече.</string>
-  <string name="tor_check">Това ще те заведе на https://check.torproject.org, за да провери дали Orbot е правилно настроен и дали си свързан с Tор.</string>
-  <string name="pref_hs_group">Скрити услуги</string>
-  <string name="pref_general_group">Главни</string>
-  <string name="pref_start_boot_title">Стартирай Орбот при стартиране на устройството</string>
-  <string name="pref_start_boot_summary">Автоматично стартирай Орбот и се свържи към Тор когато твоето Андроид устройство стартира</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Орбот дава достъп до Tor през Android!\n\nTor ти помага да се предпазиш от филтриране на интернетът, анализ на трафика и подслушване по интернет всички, от които заплашват личното ти пространство, конфиденциалната ти информация и личните ти връзки.\n\nТози стъпка по стъпка наръчни ще ти помогне да настроиш Orbot и Tor на устройството си.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Внимание</string>
-  <string name="wizard_warning_msg">Самото инсталиране на Orbot няма автоматично да анонимизира мобилния ти трафик.\n\nТрябва да настроиш Orbot, устройството ти и други приложения, за да ползваш Tor успешно.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Права</string>
-  <string name="wizard_permissions_root_msg1">Ако желаеш може да разрешиш на Orbot \'Superuser\' права, за да включиш допълнителни функиции, като Прозрачно Проксифициране.</string>
-  <string name="wizard_permissions_root_msg2">Ако не желаеш това се увери, че програмите, които ще използваш са съвместими с Orbot </string>
-  <string name="wizard_permissions_no_root_msg">Устройството ти не изглежда да има или предлага root или така наречения \'Суперпотребителски\' достъп.\n\nМоля, използвай режидъмът \'Приложения\' на главния екран.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Приложения през Орбот</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Криптирана чат програма с подръжка на Off-the-Record енкрипция.</string>
-  <string name="wizard_tips_orweb">Orfox: Браузър с насоченост към осигуряване на личното пространство, който работи през Tor</string>
-  <string name="wizard_tips_play">Намери всики Guardin Project програми в Google Play</string>
-  <string name="wizard_tips_fdroid">Намери всички приложения на Guardian Project в F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Намери всички Guardian Project приложения на https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Прозрачно прокси</string>
-  <string name="wizard_transproxy_msg">Това позволява на приложенията Ви автоматично да използват мрежата на Тор без никаква конфигурация.</string>
-  <string name="wizard_transproxy_hint">(Избери тази опция ако нямаш представа за какво става въпрос)</string>
-  <string name="wizard_transproxy_none">Нищо</string>
-  <string name="pref_transparent_tethering_title">Тетъринг през Тор</string>
-  <string name="pref_transparent_tethering_summary">Включи Прозрачно Тор Проксифициране през Wifi и USB (изисква рестартирване)</string>
-  <string name="button_grant_superuser">Изискай достъп на Суперпотребител</string>
-  <string name="pref_select_apps">Избери приложения</string>
-  <string name="pref_select_apps_summary">Избрери приложения за използване през Тор</string>
-  <string name="pref_node_configuration">Настройки на node-а</string>
-  <string name="pref_node_configuration_summary">Това са допълнителни настройки, които могат да намалят Вашата анонимност</string>
-  <string name="pref_entrance_node">Входящи точки</string>
-  <string name="pref_entrance_node_summary">Отпечатъци, никсове, държави и адреси за първия скок</string>
-  <string name="pref_entrance_node_dialog">Въведи входящи точки</string>
-  <string name="pref_allow_background_starts_title">Разреши тихо стартиране</string>
-  <string name="pref_allow_background_starts_summary">Разреши на всяко приложение да иска от Orbot да стартира Tor услуги</string>
-  <string name="button_proxy_all">Прокси за всички</string>
-  <string name="button_proxy_none">Прокси за нито една</string>
-  <string name="button_invert_selection">Обърни селекцията</string>
-  <string name="pref_proxy_title">Изходящо Мрежово Прокси (Незадължително)</string>
-  <string name="pref_proxy_type_title">Тип прокси</string>
-  <string name="pref_proxy_type_summary">Протокол за прокси сървър: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Тип на входящо прокси</string>
-  <string name="pref_proxy_host_title">Прокси хост</string>
-  <string name="pref_proxy_host_summary">Адреса на Прокси Сървърът</string>
-  <string name="pref_proxy_host_dialog">Въведи прокси хост</string>
-  <string name="pref_proxy_port_title">Порт на прокси</string>
-  <string name="pref_proxy_port_summary">Порта на Прокси Сървърът</string>
-  <string name="pref_proxy_port_dialog">Въведи прокси порт</string>
-  <string name="pref_proxy_username_title">Изходящ Прокси Потребителско Име</string>
-  <string name="pref_proxy_username_summary">Прокси Потребителско Име (Незадължително)</string>
-  <string name="pref_proxy_username_dialog">Въведи Прокси Потребителско Име</string>
-  <string name="pref_proxy_password_title">Изходяща Прокси Парола</string>
-  <string name="pref_proxy_password_summary">Прокси Парола (Незадължително)</string>
-  <string name="pref_proxy_password_dialog">Въведи Прокси Парола</string>
-  <string name="status">Статус</string>
-  <string name="setting_up_full_transparent_proxying_">Конфигуриране на напълно прозрачно прокси...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Конфигуриране на прозрачно прокси на база приложение...</string>
-  <string name="transparent_proxying_enabled">Прозрачно прокси АКТИВНО</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy е включен за Тетъринг!</string>
-  <string name="warning_error_starting_transparent_proxying_">ВНИМАНИЕ: грешка при стартиране на прозрачно проски!</string>
-  <string name="transproxy_rules_cleared">TransProxy правила изчистени</string>
-  <string name="couldn_t_start_tor_process_">Неуспешно стартиране на Тор процес: </string>
-  <string name="privoxy_is_running_on_port_">Polipo работи на порт:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Конфигуриране на прозрачно прокси на база порт...</string>
-  <string name="bridge_error">Бридж грешка</string>
-  <string name="bridge_requires_ip">За да използвате бридж функционалността трябва да въведете поне един IP адрес на бридж.</string>
-  <string name="send_email_for_bridges">Изпрати и-мейл до bridges at torproject.org със съдържание \"get bridges\" в  и-мейл от акаунт в gmail.</string>
-  <string name="error">Грешка</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Твоята ReachableAddresses настройка предизвика грешка!</string>
-  <string name="your_relay_settings_caused_an_exception_">Твоите настройки за препращане предизвикаха изключение!</string>
-  <string name="exit_nodes">Изходни точки</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Отпечатъци, никсове, държави и адреси за последния скок</string>
-  <string name="enter_exit_nodes">Въведи изходни точки</string>
-  <string name="exclude_nodes">Не ползвай Node-ве</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Отпечатъци, никсове, държави и адреси, които да не бъдат ползвани</string>
-  <string name="enter_exclude_nodes">Край</string>
-  <string name="strict_nodes">Задължителни Node-we</string>
-  <string name="use_only_these_specified_nodes">Използвай *само* изброените node-ве</string>
-  <string name="bridges">Бриджове</string>
-  <string name="use_bridges">Използвай Бриджове</string>
-  <string name="bridges_obfuscated">Скрити Мостове</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Включи алтернативени входящи node-ве в Tor Мрежата</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Включи ако настроените мостове са скрити мостове</string>
-  <string name="ip_address_and_port_of_bridges">IP адрес и порт на бриджове</string>
-  <string name="enter_bridge_addresses">Въведи адреси на бриджове</string>
-  <string name="relays">Препращачи(Relays)</string>
-  <string name="relaying">Препращане</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Разреши устройството ти да бъде не изходен препращач</string>
-  <string name="relay_port">Порт за Препращане</string>
-  <string name="listening_port_for_your_tor_relay">Порт за слушане на твоя Тор препращач</string>
-  <string name="enter_or_port">Въведи OR порт</string>
-  <string name="relay_nickname">Прякор на препращача</string>
-  <string name="the_nickname_for_your_tor_relay">Прякор за твоя Tor препращач</string>
-  <string name="enter_a_custom_relay_nickname">Въведи прякор за препращача</string>
-  <string name="reachable_addresses">Достижими адреси</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Стартирай като клиент зад firewall с рестриктивни политики</string>
-  <string name="reachable_ports">Достъпни портове</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Портове достъпни зад firewall с рестриктивни политики</string>
-  <string name="enter_ports">Въведи портове</string>
-  <string name="enable_hidden_services">Включи скрити услуги</string>
-  <string name="run_servers_accessible_via_the_tor_network">стартирай сървъри достъпни през Тор мрежата</string>
-  <string name="enter_localhost_ports_for_hidden_services">въведи локални портове за скрити услуги</string>
-  <string name="hidden_service_ports">Портове на скрити услуги</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Автоматично генериран адрес за твоята скрита услуга(hidden service)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">включи запис на дебъг доклади (трябва да ползвате aLogCat или adb, за да ги разглеждаш)</string>
-  <string name="project_home">Начални Станици на Проектите:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Тор лиценз</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Софтуер на трети страни: </string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Приложение иска да отвори порт на скрит сървър %S към Тор мрежата. Безопасно е да се доверите на приложението.</string>
-  <string name="found_existing_tor_process">намерил си съвместим Tor проект...</string>
-  <string name="something_bad_happened">Нещо лошо се случи. Проверете лога</string>
-  <string name="hidden_service_on">Скрита услуга включена:</string>
-  <string name="unable_to_read_hidden_service_name">не може да прочете име на скрита услуга</string>
-  <string name="unable_to_start_tor">Не може да стартира Тор:</string>
-  <string name="unable_to_reset_tor">Рестартирай устройството си, неуспешно рестариване на Tor!</string>
-  <string name="pref_use_sys_iptables_title">Използвай Iptables по подразбиране</string>
-  <string name="pref_use_sys_iptables_summary">използвай вградените двуични iptables вместо тези идващи с Orbot</string>
-  <string name="error_installing_binares">Двуичните файлове на Тор не бяха инсталирани или обновени.</string>
-  <string name="pref_use_persistent_notifications">Винаги показвай икона в тулбара когато Орбот е свързан</string>
-  <string name="pref_use_persistent_notifications_title">Уведомления винаги включени</string>
-  <string name="pref_use_expanded_notifications">Покажи разширена информация за Tor изходната държава и IP в лентата за известия</string>
-  <string name="pref_use_expanded_notifications_title">Разширени известия</string>
-  <string name="notification_using_bridges">Мостове включени!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Език</string>
-  <string name="set_locale_summary">Избери местоположение и език за Орбот</string>
-  <string name="wizard_locale_title">Избери език</string>
-  <string name="wizard_locale_msg">Остави по подразбиране или смени наличния език</string>
-  <string name="powered_by">базиран на Tor</string>
-  <string name="btn_save_settings">Запази настройки</string>
-  <string name="no_internet_connection_tor">Няма интернет връзка; Tor е в режим на изчакване...</string>
-  <string name="bandwidth_">Скорост:</string>
-  <string name="down">теглене</string>
-  <string name="up">изпращане</string>
-  <string name="pref_disable_network_title">Лиспва Автоматичен Режим на Изчакване</string>
-  <string name="pref_disable_network_summary">Сложи Tor в режим на изчакване, когато няма интернет</string>
-  <string name="newnym">Сменихте своята Тор идентичност!</string>
-  <string name="menu_verify_browser">Браузър</string>
-  <string name="menu_use_chatsecure">Използвай ChatSecure</string>
-  <string name="permission_manage_tor_label">Настрой Tor</string>
-  <string name="permission_manage_tor_description">Разреши тази програма да контролира Tor</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Не изглежда да имате Orfox инсталиран. Желаете ли помощ с това, или просто да отворим браузъра?</string>
-  <string name="install_apps_">Инсталирай програми?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Няма интернет връзка. Преминаване в режим на изчкаване...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Добра интернет връзка. Събуждане на Tor...</string>
-  <string name="updating_settings_in_tor_service">обновяване на настройките в Tor услугата</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Порт, на който Tor предлага своето SOCKS прокси(подразбиране: 9050 или 0, за да забраниш)</string>
-  <string name="pref_socks_dialog">SOCKS Port Config</string>
-  <string name="pref_transport_title">Tor TransProxy Port</string>
-  <string name="pref_transport_summary">Порт, на който Tor предлага своето Transparent прокси прокси(подразбиране: 9040 или 0, за да забраниш)</string>
-  <string name="pref_transport_dialog">TransProxy Port Config</string>
-  <string name="pref_dnsport_title">Tor DNS Port</string>
-  <string name="pref_dnsport_summary">Порт, на който Tor предлага своят DNS (подразбиране: 5400 или 0, за да забраниш)</string>
-  <string name="pref_dnsport_dialog">DNS Port Config</string>
-  <string name="pref_torrc_title">Torrc Custom Config</string>
-  <string name="pref_torrc_summary">САМО ЗА ЕКСПЕРТИ: въведи директно torrc конфигурационният код</string>
-  <string name="pref_torrc_dialog">Ръчно настроен Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech Human Rights Documentation App</string>
-  <string name="your_tor_public_ips_">Твоите публични Tor IP-та:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Моля, забрани тази програма в  Android->Настройки->Приложения ако имаш проблеми с Orbot:</string>
-  <string name="app_conflict">Конфликт с друго приложение</string>
-  <string name="pref_transproxy_refresh_title">Транспрокси автоматично освежаване</string>
-  <string name="pref_transproxy_refresh_summary">Приложи повторно транспрокси правилата при промяна на състоянието на мрежата</string>
-  <string name="pref_transproxy_flush_title">Транспроски ПРИНУДИТЕЛНО ПРЕМАХВАНЕ</string>
-  <string name="pref_transproxy_flush_summary">Натисни тук, за да изтриеш всички транспркси мрежови правила ВЕДНАГА</string>
-  <string name="transparent_proxy_rules_flushed_">Транспрокси правилата изтрити!</string>
-  <string name="you_do_not_have_root_access_enabled">Нямаш ROOT достъп до устройството</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Може да се наложи да спреш и стартираш Orbot, за да могат някои настройки да влязат в действие.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Мостове включени!</string>
-  <string name="restart_orbot_to_use_this_bridge_">Моля, рестартирай Orbot, за да влязат в действие промените</string>
-  <string name="menu_qr">QR Кодове</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ако вашата мрежа целенасочено блирва Tor, може да използвате Мост, за да се свържете. ИЗБЕРЕТЕ един от видовете мостове изброени по-горе, за да включите тази функционалност.</string>
-  <string name="bridge_mode">Режим мост</string>
-  <string name="get_bridges_email">Имейл</string>
-  <string name="get_bridges_web">Уеб</string>
-  <string name="activate">Активирай</string>
-  <string name="apps_mode">Приложения във VPN режим</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Можеш да настроиш всички приложения да минават през Tor мрежата използвайки VPN функцията на Андроид.\n\n*ПРЕДУПРЕЖДЕНИЕ* Това е нова, експериментална функция и в някои случаи може да не стартира автоматично, или да спре. НЕ бива да се използва за анонимност, а САМО за преминаване през файъруоли и филтри.</string>
-  <string name="send_email">Изпрати имейл</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Можеш да получиш адреса на мост по имейл, интернет или като сканираш QR kod. Избери \'Имейл\' или \'Интернет\' по-долу, за да поискаш адрес на мост.\n\nВеднъж щом получиш адреса го копирай в \"Мостове\", в настройките на Orbot и рестартирай приложението.</string>
-  <string name="install_orweb">Инсталирай Orfox</string>
-  <string name="standard_browser">Нормален Браузър</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">БЕЛЕЖКА: Само стандартни Tor мостове работя на Intel X86/ATOM устройства</string>
-  <string name="vpn_default_world">Свят</string>
-</resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
deleted file mode 100644
index dc265b9..0000000
--- a/res/values-bn-rBD/strings.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">অরবট</string>
-  <string name="app_description">Orbot একটি ফ্রি প্রক্সি অ্যাপ্লিকেশন যা অন্যান্য Apps কে আরও নিরাপদভাবে ইন্টারনেট ব্যবহার করার ক্ষমতাপ্রদান করে।  Orbot আপনার ইন্টারনেট ট্রাফিক এনক্রিপ্ট করতে টর ব্যবহার এবং তারপর সারা বিশ্বের কম্পিউটারের সিরিজের moddho diye porichalito kore gopon kore. টর ফ্রি সফটওয়্যার এবং আপনি ট্রাফিক বিশ্লেষণ হিসেবে পরিচিত ব্যক্তিগত স্বাধীনতা ও গোপনীয়তা, গোপনীয় বাণিজ্যিক কার্যক্রম এবং সম্পর্ক, এবং রà¦
 ¾à¦·à§à¦Ÿà§à¦°à§€à¦¯à¦¼ নিরাপত্তা হুমকির মুখে পড়ে নেটওয়ার্ক নজরদারি একটি ফর্ম বিরুদ্ধে রক্ষা করতে সাহায্য করে যে একটি খোলা নেটওয়ার্ক.</string>
-  <string name="tor_proxy_service_process">টর প্রক্সি সার্ভিস</string>
-  <string name="status_starting_up">অরবট চালু হচ্ছে . . . </string>
-  <string name="status_activated">টর নেটওয়ার্কের সাথে সংযুক্ত হয়েছে</string>
-  <string name="status_disabled">অরবট নিষ্ক্রিয় করা হয়েছে</string>
-  <string name="tor_process_starting">টর ক্লায়েন্ট চালু করা হচ্ছে</string>
-  <string name="tor_process_complete">সম্পূর্ণ</string>
-  <string name="tor_process_waiting">অপেক্ষা করা হচ্ছে</string>
-  <string name="menu_home">হোম</string>
-  <string name="menu_settings">নিয়ম বিন্যাস</string>
-  <string name="menu_info">সাহায্য</string>
-  <string name="menu_start">শুরু</string>
-  <string name="menu_stop">শেষ</string>
-  <string name="button_help">সাহায্য</string>
-  <string name="button_close">বন্ধ</string>
-  <string name="press_to_start">চালু করার জন্য ধরে থাকুন</string>
-  <string name="pref_transparent_all_title">সব কিছু টরের মাধ্যমে করুন </string>
-  <string name="wizard_title">অরবট</string>
-  <string name="btn_next">পরবর্তী</string>
-  <string name="btn_back">পেছনে</string>
-  <string name="btn_finish">শেষ</string>
-  <string name="btn_okay">ঠিক আছে</string>
-  <string name="btn_cancel">বাদ</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_permissions_stock">অরবট এর অনুমতিসমূহ </string>
-  <string name="wizard_permissions_consent">আমি বুঝতে পেরেছি এবং এগিয়ে যেতে চাই Superuser ছাড়া।</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">সাধারণ</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">অনুমতিসমূহ</string>
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-bn-rIN/strings.xml b/res/values-bn-rIN/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-bn-rIN/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-bn/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-brx/strings.xml b/res/values-brx/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-brx/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
deleted file mode 100644
index 31d4475..0000000
--- a/res/values-bs/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_info">Pomoć</string>
-  <string name="button_help">Pomoć</string>
-  <string name="button_close">Zatvori</string>
-  <string name="btn_back">Nazad</string>
-  <string name="btn_cancel">Otkaži</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">Proksi postavke</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
deleted file mode 100644
index 715c6fa..0000000
--- a/res/values-ca/strings.xml
+++ /dev/null
@@ -1,226 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">https://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">Inicia i atura Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">L\'Orbot s\'està iniciant...</string>
-  <string name="status_activated">Esteu connectat a la xarxa Tor</string>
-  <string name="status_disabled">L\'Orbot està desactivat</string>
-  <string name="tor_process_starting">S\'està iniciant el client Tor...</string>
-  <string name="tor_process_complete">fet.</string>
-  <string name="tor_process_waiting">s\'està esperant.</string>
-  <string name="not_anonymous_yet">ATENCIÓ: El trànsit de la vostra connexió encara no és anònim! Heu de configurar les vostres aplicacions per utilitzar un proxy HTTP a 127.0.0.1:8118, o un proxy SOCKS4A o SOCKS5 a 127.0.0.1:9050</string>
-  <string name="menu_home">Inici</string>
-  <string name="menu_browse">Navega</string>
-  <string name="menu_settings">Preferències</string>
-  <string name="menu_log">Registre</string>
-  <string name="menu_info">Ajuda</string>
-  <string name="menu_start">Inicia</string>
-  <string name="menu_stop">Atura</string>
-  <string name="menu_about">Quant a...</string>
-  <string name="main_layout_download">Baixada</string>
-  <string name="main_layout_upload">Pujada</string>
-  <string name="button_help">Ajuda</string>
-  <string name="button_close">Tanca</string>
-  <string name="button_about">Quant a...</string>
-  <string name="button_clear_log">Esborra el registre</string>
-  <string name="menu_verify">Prova</string>
-  <string name="menu_exit">Surt</string>
-  <string name="press_to_start">- mantén-lo premut per iniciar -</string>
-  <string name="pref_trans_proxy_group">Proxy transparent (requereix Root)</string>
-  <string name="pref_trans_proxy_title">Utilitza un proxy transparent</string>
-  <string name="pref_trans_proxy_summary">Torificació automàtica de les apps</string>
-  <string name="pref_transparent_all_title">Tor per a tot</string>
-  <string name="pref_transparent_all_summary">Canalitza el trànsit de totes les aplicacions a través de Tor</string>
-  <string name="pref_transparent_port_fallback_title">Port alternatiu per al proxy </string>
-  <string name="pref_transparent_port_fallback_summary">ATENCIÓ: Això trampeja els ports habituals (80, 443, etc.) *UTILITZEU-HO NOMÉS* si el mode «Totes» o «App» no funcionen.</string>
-  <string name="pref_transparent_port_title">Llista de ports</string>
-  <string name="pref_transparent_port_summary">Llista de ports a canalitzar per proxy. *UTILITZEU-HO NOMÉS* si el mode «Totes» o «App» no funcionen.</string>
-  <string name="pref_transparent_port_dialog">Introduïu els ports a canalitzar per proxy</string>
-  <string name="pref_has_root">Demana l\'accés root</string>
-  <string name="pref_has_root_summary">Demana l\'accés root per a la canalització a través de proxy transparent</string>
-  <string name="status_install_success">Els binaris de Tor s\'han instal·lat correctament.</string>
-  <string name="status_install_fail">Els fitxers binaris de Tor no s\'han pogut instal·lar. Comproveu el registre i notifiqueu-ho a tor-assistants at torproject.org</string>
-  <string name="title_error">Error de l\'aplicació</string>
-  <string name="wizard_title">Us donem la benvinguda a l\'Orbot</string>
-  <string name="wizard_btn_tell_me_more">Quant a Orbot...</string>
-  <string name="btn_next">Següent</string>
-  <string name="btn_back">Enrere</string>
-  <string name="btn_finish">Fi</string>
-  <string name="btn_okay">D\'acord</string>
-  <string name="btn_cancel">Cancel·la</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Alguns detalls de l\'Orbot...</string>
-  <string name="wizard_permissions_root">Permís concedit</string>
-  <string name="wizard_permissions_stock">Permisos de l\'Orbot</string>
-  <string name="wizard_premissions_msg_root">Perfecte! Hem detectat que teniu els permisos root activats per a l\'Orbot. Utilitzarem aquesta capacitat amb sensatesa.</string>
-  <string name="wizard_permissions_msg_stock">Encara que no és imprescindible, l\'Orbot pot esdevenir una eina molt més potent si el vostre terminal té accés root. Utilitzeu el botó d\'aquí sota per concedir superpoders a l\'Orbot!</string>
-  <string name="wizard_permissions_no_root">Si no teniu accés root, o no teniu ni idea del què us estem parlant, simplement assegureu-vos d\'utilitzar aplicacions dissenyades per funcionar amb l\'Orbot.</string>
-  <string name="wizard_permissions_consent">Ho entenc i vull continuar sense accés de superusuari</string>
-  <string name="wizard_permission_enable_root">Concedeix accés root a l\'Orbot</string>
-  <string name="wizard_configure">Configura la connexió a Tor</string>
-  <string name="wizard_configure_msg">L\'Orbot us ofereix l\'opció de canalitzar el trànsit de totes les aplicacions a través de Tor o bé escollir quines aplicacions voleu que utilitzin Tor.</string>
-  <string name="wizard_configure_all">Canalitza totes les aplicacions a través de Tor.</string>
-  <string name="wizard_configure_select_apps">Selecciona les aplicacions individualment</string>
-  <string name="wizard_tips_tricks">Aplicacions per utilitzar amb l\'Orbot</string>
-  <string name="wizard_tips_msg">Les aplicacions d\'aquí sota s\'han dissenyat per funcionar amb l\'Orbot. Feu clic a cada botó per instalar-les ara, o busqueu-les després a Google Play Store, al lloc web de GuardianProject.info o a F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Client de missatgeria instantània segura per a Android</string>
-  <string name="wizard_tips_proxy">Proxy Settings - Aprèn a configurar aplicacions per a què funcionin amb l\'Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo - Aplicació de cerca al web</string>
-  <string name="wizard_tips_twitter">Estableix el proxy de Twitter a l\'amfitrió «localhost» i port 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Ajustaments del proxy</string>
-  <string name="wizard_final">L\'Orbot és a punt!</string>
-  <string name="wizard_exit_at_first_screen_toast">Configureu l\'Orbot abans d\'utilitzar-lo!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">S\'obrirà el vostre navegador web a https://check.torproject.org per tal de comprovar si l\'Orbot està ben configurat i estàs connectat a Tor.</string>
-  <string name="pref_hs_group">Serveis ocults</string>
-  <string name="pref_general_group">General</string>
-  <string name="pref_start_boot_title">Inicia l\'Obot a l\'arrencada</string>
-  <string name="pref_start_boot_summary">Inicia l\'Orbot i connecta a Tor automàticament quan el vostre dispositiu Android arrenca.</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Advertència</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Permisos</string>
-  <string name="wizard_permissions_root_msg1">Opcionalment podeu concedir accés «superusuari» a l\'Orbot per activar funcions avançades, com el servidor intermediari transparent.</string>
-  <string name="wizard_permissions_root_msg2">Si no voleu fer això assegureu-vos de fer servir aplicacions dissenyades per funcionar amb l\'Orbot.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Aplicacions dissenyades per a l\'Orbot</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Aplicació de xat segur amb encriptació confidencial.</string>
-  <string name="wizard_tips_play">Trobareu totes les aplicacions de Guardian Project a Google Play Store</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Servidor intermediari transparent</string>
-  <string name="wizard_transproxy_msg">Això permet que les vostres aplicacions es connectin a través de la xarxa Tor sense haver de configurar res.</string>
-  <string name="wizard_transproxy_hint">(Marqueu aquesta casella si no teniu ni idea del que estem parlant)</string>
-  <string name="wizard_transproxy_none">Cap</string>
-  <string name="pref_transparent_tethering_title">Compartició de xarxa amb Tor</string>
-  <string name="pref_transparent_tethering_summary">Activa el servidor intermediari transparent de Tor pels dispositius connectats a través de la compartició de xarxa via Wifi o USB (cal reiniciar)</string>
-  <string name="button_grant_superuser">Petició d\'accés de superusuari</string>
-  <string name="pref_select_apps">Selecciona les apps</string>
-  <string name="pref_select_apps_summary">Trieu quines apps s\'han de canalitzar a través de Tor</string>
-  <string name="pref_node_configuration">Configuració de node</string>
-  <string name="pref_node_configuration_summary">Aquests són paràmetres avançats que poden reduir el vostre anonimat</string>
-  <string name="pref_entrance_node">Node d\'entrada</string>
-  <string name="pref_entrance_node_summary">Empremtes, àlies, països i adreces pel primer salt</string>
-  <string name="pref_entrance_node_dialog">Introduïu els nodes d\'entrada</string>
-  <string name="button_proxy_all">Totes via proxy</string>
-  <string name="button_proxy_none">Cap via proxy</string>
-  <string name="button_invert_selection">Inverteix selecció</string>
-  <string name="pref_proxy_title">Servidor intermediari de sortida a la xarxa (opcional)</string>
-  <string name="pref_proxy_type_title">Tipus de servidor intermediari de sortida</string>
-  <string name="pref_proxy_type_summary">Protocol a utilitzar pel servidor intermediari: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Introduïu el tipus de servidor intermediari</string>
-  <string name="pref_proxy_host_title">Amfitrió del servidor intermediari de sortida</string>
-  <string name="pref_proxy_host_summary">Nom de l\'amfitrió del servidor intermediari</string>
-  <string name="pref_proxy_host_dialog">Introduïu l\'amfitrió del servidor intermediari</string>
-  <string name="pref_proxy_port_title">Port del servidor intermediari de sortida</string>
-  <string name="pref_proxy_port_summary">Port del servidor intermediari</string>
-  <string name="pref_proxy_port_dialog">Introduïu el port del servidor intermediari</string>
-  <string name="pref_proxy_username_title">Nom d\'usuari del servidor intermediari de sortida</string>
-  <string name="pref_proxy_username_summary">Nom d\'usuari del servidor intermediari (opcional)</string>
-  <string name="pref_proxy_username_dialog">Introduïu el nom d\'usuari del servidor intermediari</string>
-  <string name="pref_proxy_password_title">Contrasenya del servidor intermediari de sortida</string>
-  <string name="pref_proxy_password_summary">Contrasenya del servidor intermediari (opcional)</string>
-  <string name="pref_proxy_password_dialog">Introduïu la contrasenya del servidor intermediari</string>
-  <string name="status">Estat</string>
-  <string name="setting_up_full_transparent_proxying_">S\'està configurant el servidor intermediari transparent complet...</string>
-  <string name="setting_up_app_based_transparent_proxying_">S\'està configurant el servidor intermediari transparent per apps...</string>
-  <string name="transparent_proxying_enabled">S\'ha ACTIVAT el servidor intermediari transparent</string>
-  <string name="transproxy_enabled_for_tethering_">S\'ha activat el servidor intermediari per la compartició de xarxa</string>
-  <string name="warning_error_starting_transparent_proxying_">ATENCIÓ: hi ha hagut un error en iniciar el servidor intermediari transparent</string>
-  <string name="transproxy_rules_cleared">S\'han esborrat les regles del servidor intermediari transparent</string>
-  <string name="couldn_t_start_tor_process_">No s\'ha pogut iniciar el procés Tor:</string>
-  <string name="setting_up_port_based_transparent_proxying_">S\'està configurant el servidor intermediari transparent per ports...</string>
-  <string name="bridge_error">Hi ha hagut un error de pont</string>
-  <string name="bridge_requires_ip">Per poder utilitzar la funcionalitat de pont, cal que introduïu almenys una adreça IP de pont.</string>
-  <string name="send_email_for_bridges">Envieu un correu a bridges at torproject.org amb la línia «get bridges» sola al cos del missatge des d\'un compte de gmail.</string>
-  <string name="error">Error</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Els paràmetres d\'adreces accessibles han provocat una excepció.</string>
-  <string name="your_relay_settings_caused_an_exception_">Els paràmetres de reemissió han causat una excepció.</string>
-  <string name="exit_nodes">Nodes de sortida</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Empremtes, àlies, països i adreces per l\'últim salt</string>
-  <string name="enter_exit_nodes">Introduïu els nodes de sortida</string>
-  <string name="exclude_nodes">Nodes per excloure</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Empremtes, àlies, països i adreces per excloure</string>
-  <string name="enter_exclude_nodes">Introduïu nodes per excloure</string>
-  <string name="strict_nodes">Nodes estrictes</string>
-  <string name="use_only_these_specified_nodes">Utilitza *només* aquests nodes especificats</string>
-  <string name="bridges">Ponts</string>
-  <string name="use_bridges">Utilitza ponts</string>
-  <string name="bridges_obfuscated">Ponts ofuscats</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Activa nodes alternatius d\'entrada a la xarxa Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Activeu-ho si els ponts configurats són ponts ofuscats</string>
-  <string name="ip_address_and_port_of_bridges">Adreça IP i port dels ponts</string>
-  <string name="enter_bridge_addresses">Introduïu les adreces del pont</string>
-  <string name="relays">Reemissors</string>
-  <string name="relaying">Reemissió</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Activa el vostre dispositiu per ser un reemissor sense sortida</string>
-  <string name="relay_port">Port de reemissió</string>
-  <string name="listening_port_for_your_tor_relay">Port d\'escolta per la vostra reemissió de Tor</string>
-  <string name="enter_or_port">Introduïu el port OR</string>
-  <string name="relay_nickname">Àlies del reemissor</string>
-  <string name="the_nickname_for_your_tor_relay">L\'àlies pel vostre reemissor de Tor</string>
-  <string name="enter_a_custom_relay_nickname">Introduïu un àlies personalitzat pel vostre reemissor</string>
-  <string name="reachable_addresses">Adreces accessibles</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">S\'executa com a client darrera d\'un tallafocs amb normes restrictives</string>
-  <string name="reachable_ports">Ports accessibles</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Ports que es poden accedir darrera d\'un tallafocs restrictiu</string>
-  <string name="enter_ports">Introduïu els ports</string>
-  <string name="enable_hidden_services">Allotjament de servei ocult</string>
-  <string name="run_servers_accessible_via_the_tor_network">Permet que un servidor al dispositiu sigui accessible des de la xarxa Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">introduïu els ports de l\'amfitrió local pels serveis ocults</string>
-  <string name="hidden_service_ports">Ports del servei coult</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">el nom adreçable pel vostre servei ocult (generat automàticament)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">activa la sortida del registre de depuració (cal utilitzar l\'adb o l\'aLogCat per veure\'l)</string>
-  <string name="project_home">Lloc(s) web del projecte:</string>
-  <string name="the_tor_license">La llicència Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Programari de terceres parts:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="hidden_service_request">Una aplicació vol obrir el port %S de servei ocult a la xarxa Tor. Això és segur si confieu en l\'aplicació.</string>
-  <string name="found_existing_tor_process">s\'ha trobat un procés Tor existent...</string>
-  <string name="something_bad_happened">Ha fallat alguna cosa. Comproveu el registre</string>
-  <string name="hidden_service_on">servei ocult a:</string>
-  <string name="unable_to_read_hidden_service_name">ha estat impossible llegir el nom del servei ocult</string>
-  <string name="unable_to_start_tor">Ha estat impossible iniciar Tor:</string>
-  <string name="pref_use_sys_iptables_title">Utilitza les Iptables per defecte</string>
-  <string name="pref_use_sys_iptables_summary">utilitza el binari incorporat amb l\'Iptables enlloc del que porta l\'Orbot</string>
-  <string name="error_installing_binares">Els binaris de Tor no s\'han pogut instal·lar o actualitzar.</string>
-  <string name="pref_use_persistent_notifications">Manté la icona sempre a la barra d\'eines mentre l\'Orbot està connectat</string>
-  <string name="pref_use_persistent_notifications_title">Notificacions sempre activades</string>
-  <string name="notification_using_bridges">Ponts activats.</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Trieu la localització i la llengua per l\'Orbot</string>
-  <string name="wizard_locale_title">Tria la llengua</string>
-  <string name="wizard_locale_msg">Deixa-ho per defecte o canvia la llengua actual</string>
-  <string name="powered_by">funciona amb Tor</string>
-  <string name="btn_save_settings">Desa els paràmetres</string>
-  <string name="bandwidth_">Ample de banda:</string>
-  <string name="down">baixada</string>
-  <string name="up">pujada</string>
-  <string name="pref_disable_network_title">No hi ha autodesconnexió de xarxa</string>
-  <string name="pref_disable_network_summary">Posa el Tor en pausa mentre no hi ha connexió a internet</string>
-  <string name="newnym">Heu canviat a una nova identitat Tor.</string>
-  <string name="menu_use_chatsecure">Utilitza ChatSecure</string>
-  <string name="permission_manage_tor_label">Gestiona Tor</string>
-  <string name="permission_manage_tor_description">Activa aquesta app per controlar el servei Tor</string>
-  <string name="install_apps_">Voleu instal·lar les apps?</string>
-  <string name="your_tor_public_ips_">Les vostres IP públiques de Tor:</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="get_bridges_email">Correu-e</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Activa</string>
-  <string name="standard_browser">Navegador estàndard</string>
-</resources>
diff --git a/res/values-cs-rCZ/strings.xml b/res/values-cs-rCZ/strings.xml
deleted file mode 100644
index a77614e..0000000
--- a/res/values-cs-rCZ/strings.xml
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">spustit a vypnout Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot se spouští...</string>
-  <string name="status_activated">Připojen k síti Tor</string>
-  <string name="status_disabled">Orbot je deaktivován</string>
-  <string name="tor_process_starting">Startuji Tor klienta...</string>
-  <string name="tor_process_complete">hotovo.</string>
-  <string name="tor_process_waiting">čekám.</string>
-  <string name="not_anonymous_yet">VAROVÁNÍ: Vaše komunikace ještě není anonymní! Prosím nastavte vašim aplikacím HTTP proxy 127.0.0.1:8118 nebo SOCKS4A či SOCKS5 proxy 172.0.0.1:9050</string>
-  <string name="menu_home">Domů</string>
-  <string name="menu_browse">Prohlížet</string>
-  <string name="menu_settings">Nastavení</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Pomoc</string>
-  <string name="menu_start">Zapnout</string>
-  <string name="menu_stop">Vypnout</string>
-  <string name="menu_about">O aplikaci</string>
-  <string name="main_layout_download">Stáhnout</string>
-  <string name="main_layout_upload">Nahrát</string>
-  <string name="button_help">Nápověda</string>
-  <string name="button_close">Zavřít</string>
-  <string name="button_about">O aplikaci</string>
-  <string name="button_clear_log">Vyčistit log</string>
-  <string name="menu_verify">Ověřit</string>
-  <string name="menu_exit">Konec</string>
-  <string name="press_to_start">- podržte pro spuštění -</string>
-  <string name="pref_trans_proxy_group">Transparentní proxy (vyžaduje roota)</string>
-  <string name="pref_trans_proxy_title">Transparentní proxy</string>
-  <string name="pref_trans_proxy_summary">Automatické Torování aplikací</string>
-  <string name="pref_transparent_all_title">Torovat všechno</string>
-  <string name="pref_transparent_all_summary">Proxynovat všechny aplikace skrz Tor</string>
-  <string name="pref_transparent_port_fallback_title">Záložní port pro proxy</string>
-  <string name="pref_transparent_port_fallback_summary">VAROVÁNÍ: Obchází běžné porty (80, 443, etc). *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungují.</string>
-  <string name="pref_transparent_port_title">Seznam portů</string>
-  <string name="pref_transparent_port_summary">Seznam portů co proxynovat. *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungují</string>
-  <string name="pref_transparent_port_dialog">Zadejte porty pro proxynování</string>
-  <string name="pref_has_root">Vyžaduje root přístup</string>
-  <string name="pref_has_root_summary">Požádat o práva roota kvůli transparentnímu proxy</string>
-  <string name="status_install_success">Binárky toru byly úspěšně nainstalovány!</string>
-  <string name="status_install_fail">Nebylo možno nainstalovat binárky Toru. Prosím zkontrolujte log a upozorněte tor-assistants at torproject.org</string>
-  <string name="title_error">Chyba aplikace</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">O Orbotovi</string>
-  <string name="btn_next">Další</string>
-  <string name="btn_back">Zpět</string>
-  <string name="btn_finish">Dokončit</string>
-  <string name="btn_okay">Budiž</string>
-  <string name="btn_cancel">Zrušit</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Pár detailů o Orbot</string>
-  <string name="wizard_permissions_root">Práva udělena</string>
-  <string name="wizard_permissions_stock">Oprávnění Orbota</string>
-  <string name="wizard_premissions_msg_root">Výborně! Bylo detekováno, že root oprávnění bylo Orbotu uděleno. Budeme tuto sílu užívat moudře.</string>
-  <string name="wizard_permissions_msg_stock">I když to není nutné, Orbot může pracovat lépe, pokud má vaše zařízení root. Použijte tlačítko dole pro udělení supersíly Orbotovi. </string>
-  <string name="wizard_permissions_no_root">Pokud nemáte přístup roota, nebo nevíte, o co se jedná, ujistěte se, že používáte aplikace, které s Orbotem spolupracují.</string>
-  <string name="wizard_permissions_consent">Rozumín a přeji si pokračovat bez roota (superuživatelských oprávnění)</string>
-  <string name="wizard_permission_enable_root">Udělit Orbotovi root oprávnění</string>
-  <string name="wizard_configure">Nastavení Torování</string>
-  <string name="wizard_configure_msg">Orbot umožňuje směrovat datový provoz všech aplikací přes Tor NEBO zvolit aplikace individuálně.</string>
-  <string name="wizard_configure_all">Tor Proxy pro všechny aplikace</string>
-  <string name="wizard_configure_select_apps">Zvolit aplikace pro Tor individuálně</string>
-  <string name="wizard_tips_tricks">Aplikace povolené pro Orbota</string>
-  <string name="wizard_tips_msg">Aplikace níže byly vyvinuty tak, aby spolupracovaly s Orbotem. Klikněte na každé tlačítko pro instalaci, aplikace můžete najít i v Obchodu Play nebo na webu GuardianProject.info či F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Bezpečný instant messaging klient pro Android</string>
-  <string name="wizard_tips_proxy">Proxy Nastavení - Naučte se, jak nastavit aplikace, aby pracovaly s Orbotem</string>
-  <string name="wizard_tips_duckgo">Aplikace DuckDuckGo pro vyhledávací engine</string>
-  <string name="wizard_tips_twitter">Nastavit Twitter proxy na host \"localhost\" a port 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Nastavení Proxy</string>
-  <string name="wizard_final">Orbot je připraven!</string>
-  <string name="wizard_exit_at_first_screen_toast">Orbot musíte nejdříve nastavit, než ho začnete používat!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Tato volba otevře ve webovém prohlížeči stránku https://check.torproject.org pro kontrolu, jestli je Orbot správně nastaven a jste připojen k Tor.</string>
-  <string name="pref_hs_group">Skrytý hosting služby</string>
-  <string name="pref_general_group">Obecné</string>
-  <string name="pref_start_boot_title">Spustit Orbot při startu systému</string>
-  <string name="pref_start_boot_summary">Automaticky spustit Orbot a připojit se k Tor po startu zařízení</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Varování</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Oprávnění</string>
-  <string name="wizard_permissions_root_msg1">Volitelně můžete Orbotu udělit \'siperuýivatelský\' (root) přístup pto povolení rozšířených funkcí, například transparentní proxy.</string>
-  <string name="wizard_permissions_root_msg2">Pokud si to nepřejete, používejte prosím aplikace napsané tak, aby spolupracovaly s Orbotem</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-povolené aplikace</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Bezpečná chatovací aplikace s technologií Off-the-Record Encryption</string>
-  <string name="wizard_tips_play">Najděte všechny aplikace Guardian Projektu na Obchodu Play</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transparentní proxy</string>
-  <string name="wizard_transproxy_msg">Toto povolí aplikacím automaticky běžet přes Tor síť bez jakéhokoliv nastavování.</string>
-  <string name="wizard_transproxy_hint">(Povolte tuto volbu, pokud nemáte ponětí, o co se jedná)</string>
-  <string name="wizard_transproxy_none">Žádné</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Povolit Tor transparentní proxy pro zařízení připojená přes Wifi a USB tethering (vyžaduje restart)</string>
-  <string name="button_grant_superuser">Požadavek na Superuživatelský přístup</string>
-  <string name="pref_select_apps">Vybrat aplikace</string>
-  <string name="pref_select_apps_summary">Zvolte aplikace používající směrováni přes Tor</string>
-  <string name="pref_node_configuration">Konfigurace uzlu (nodu)</string>
-  <string name="pref_node_configuration_summary">Tato rozšířená nastavení mohou snížit vaši anonymitu</string>
-  <string name="pref_entrance_node">Vstupní nody</string>
-  <string name="pref_entrance_node_summary">Otisky (fingerprints), přezdívky serveru (nicks), státy a adresy pro první skok (hop)</string>
-  <string name="pref_entrance_node_dialog">Zadejte vstupní nody</string>
-  <string name="button_invert_selection">Převrátit výběr</string>
-  <string name="pref_proxy_title">Odchozí síťová proxy (volitelné)</string>
-  <string name="pref_proxy_type_title">Typ odchozí proxy</string>
-  <string name="pref_proxy_type_summary">Protokol pro proxy server: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Zadejte typ proxy</string>
-  <string name="pref_proxy_host_title">Hostitel odchozí proxy</string>
-  <string name="pref_proxy_host_summary">Jméno hostitele proxy serveru</string>
-  <string name="pref_proxy_host_dialog">Zadejte hostitele proxy</string>
-  <string name="pref_proxy_port_title">Port odchozí proxy</string>
-  <string name="pref_proxy_port_summary">Port proxy serveru</string>
-  <string name="pref_proxy_port_dialog">Zadejte proxy port</string>
-  <string name="pref_proxy_username_title">Uživatelské jméno odchozí proxy</string>
-  <string name="pref_proxy_username_summary">Proxy uživatelské jméno (volitelné)</string>
-  <string name="pref_proxy_username_dialog">Zadejte Proxy uživatelské jméno</string>
-  <string name="pref_proxy_password_title">Heslo odchozí proxy</string>
-  <string name="pref_proxy_password_summary">Proxy heslo (volitelné)</string>
-  <string name="pref_proxy_password_dialog">Zadejte Proxy heslo</string>
-  <string name="status">Stav</string>
-  <string name="setting_up_full_transparent_proxying_">Nastavuji transparentní proxy…</string>
-  <string name="setting_up_app_based_transparent_proxying_">Nastavení na aplikacích založené transparentní proxy...</string>
-  <string name="transparent_proxying_enabled">Transparentní proxy POVOLENA</string>
-  <string name="transproxy_enabled_for_tethering_">Transparentní proxy povolena pro Tethering!</string>
-  <string name="warning_error_starting_transparent_proxying_">VAROVÁNÍ: chyba při startu transparentní proxy!</string>
-  <string name="transproxy_rules_cleared">Pravidla TransProxy vymazána</string>
-  <string name="couldn_t_start_tor_process_">Nelze spustit Tor proces:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Nastavení na portu založené transparentní proxy...</string>
-  <string name="bridge_error">Chyba bridge</string>
-  <string name="bridge_requires_ip">Pro použití bridge musíte zadat minimálné jednu IP adresu bridge.</string>
-  <string name="send_email_for_bridges">Zašlete email pouze s řádkem \"get bridges\" v obsahu zprávy z vašeho gmail účtu na adresu bridges at torproject.org</string>
-  <string name="error">Chyba</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Vaše nastavení dostupných adres (ReachableAddresses) způsobilo chybu!</string>
-  <string name="your_relay_settings_caused_an_exception_">Vaše nastavení relace způsobilo výjimku!</string>
-  <string name="exit_nodes">Výstupní nody</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Otisky (fingerprints), přezdívky serveru (nicks), státy a adresy pro poslední skok (hop)</string>
-  <string name="enter_exit_nodes">Zadejte výstupní nody</string>
-  <string name="exclude_nodes">Vyloučené nody</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Otisky (fingerprints), přezdívky serveru (nicks), státy a adresy pro vyloučené nody</string>
-  <string name="enter_exclude_nodes">Zadejte nody k vyloučení</string>
-  <string name="strict_nodes">Striktní nody</string>
-  <string name="use_only_these_specified_nodes">Použít *pouze* tyto specifické nody</string>
-  <string name="bridges">Bridge</string>
-  <string name="use_bridges">Použít bridge</string>
-  <string name="bridges_obfuscated">Matoucí bridge (Obfuscated Bridges)</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Povolit alternativní vstupní nody do sítě Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Povolte, pokud jsou nastavené bridge matoucí bridge</string>
-  <string name="ip_address_and_port_of_bridges">IP adresy a porty bridgů</string>
-  <string name="enter_bridge_addresses">Zadejte adresy bridgů</string>
-  <string name="relays">Relé</string>
-  <string name="relaying">Používání relé</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Spuštění zařízení jako neodchozího relé</string>
-  <string name="relay_port">Port relé</string>
-  <string name="listening_port_for_your_tor_relay">Naslouchání Vašeho Tor relé</string>
-  <string name="enter_or_port">Zadejte OR port</string>
-  <string name="relay_nickname">Přezdívka relé</string>
-  <string name="the_nickname_for_your_tor_relay">Přezdívka Vašeho Tor relé</string>
-  <string name="enter_a_custom_relay_nickname">Zadejte klientskou přezdívku relé</string>
-  <string name="reachable_addresses">Dostupné adresy</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Běžet jako klient za firewallem s restriktivní politikou</string>
-  <string name="reachable_ports">Dostupné porty</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Porty dostupné za restriktivním firewallem</string>
-  <string name="enter_ports">Zadejte porty</string>
-  <string name="enable_hidden_services">Skrytý hosting služby</string>
-  <string name="run_servers_accessible_via_the_tor_network">umožnit serveru na zařízení být přístupné skrze síť Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">vložte porty localhostu pro skryté služby</string>
-  <string name="hidden_service_ports">Skryté porty služby</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">adresovatelné jméno pro vaši skrytou službu (generováno automaticky)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">umožnit ladicí informace na výstup (musí používat adb nebo aLogCat k prohlížení)</string>
-  <string name="project_home">Domovské(á) umístění projektu</string>
-  <string name="the_tor_license">Tor Licence</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Software třetích stran:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="hidden_service_request">Aplikace požaduje otevření skrytého portu serveru %S k síti Tor. Toto je bezpečně, pokud aplikaci důvěřujete.</string>
-  <string name="found_existing_tor_process">nalezev existující Tor proces…</string>
-  <string name="something_bad_happened">Stalo se něco špatného. Zkontrolujte log</string>
-  <string name="hidden_service_on">skrytá služba na:</string>
-  <string name="unable_to_read_hidden_service_name">nelze číst název skryté služby</string>
-  <string name="unable_to_start_tor">Nelze spustit Tor:</string>
-  <string name="unable_to_reset_tor">Restartujte vaše zařízení, nejsme schopni resetovat Tor!</string>
-  <string name="pref_use_sys_iptables_title">Použít defaultní Iptables</string>
-  <string name="pref_use_sys_iptables_summary">použít vestavěné iptables binárky místo těch dodávaných s Orbotem</string>
-  <string name="error_installing_binares">Nelze nainstalovat nebo aktualizovat Tor binárky.</string>
-  <string name="pref_use_persistent_notifications">Vždy zobrazit ikonu ve stavovém řádku, pokud je Orbot připojen.</string>
-  <string name="pref_use_persistent_notifications_title">Notifikace vždy zapnuté</string>
-  <string name="notification_using_bridges">Bridge povoleny!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Jazyk</string>
-  <string name="set_locale_summary">Zvolte jazyk pro Orbot</string>
-  <string name="wizard_locale_title">Zvolte jazyk</string>
-  <string name="wizard_locale_msg">Ponechat standartní, nebo přepnout stávající jazyk</string>
-  <string name="btn_save_settings">Uložit nastavení</string>
-  <string name="bandwidth_">Šířka pásma:</string>
-  <string name="down">stahování</string>
-  <string name="up">nahrávání</string>
-  <string name="pref_disable_network_title">Vypnout uspávání sítě</string>
-  <string name="pref_disable_network_summary">Uspat Tor když není k dispozici přístup k Internetu</string>
-  <string name="newnym">Vaše identita na Toru byla změněna!</string>
-  <string name="menu_use_chatsecure">Použít ChatSecure</string>
-  <string name="permission_manage_tor_label">Spravovat Tor</string>
-  <string name="permission_manage_tor_description">Umožnit této aplikaci ovládat službu Tor</string>
-  <string name="install_apps_">Nainstalovat aplikace?</string>
-  <string name="restart_orbot_to_use_this_bridge_">Pro projevení změn restartujte Orbot</string>
-  <string name="menu_qr">QR kódy</string>
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Aktivovat</string>
-  <string name="send_email">Pošli email</string>
-  <string name="standard_browser">Standartní prohlížeč</string>
-</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
deleted file mode 100644
index db4fc92..0000000
--- a/res/values-cs/strings.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">spustit a vypnout Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot se spouští…</string>
-  <string name="status_activated">Připojen k síti Tor</string>
-  <string name="status_disabled">\"Orbot je deaktivován</string>
-  <string name="status_shutting_down">Orbot se vypíná</string>
-  <string name="tor_process_starting">Startuji Tor klienta…</string>
-  <string name="tor_process_complete">hotovo.</string>
-  <string name="tor_process_waiting">čekám.</string>
-  <string name="not_anonymous_yet">VAROVÁNÍ: Vaše komunikace ještě není anonymní! Prosím nastavte vašim aplikacím HTTP proxy 127.0.0.1:8118 nebo SOCKS4A či SOCKS5 proxy 172.0.0.1:9050</string>
-  <string name="menu_home">Domů</string>
-  <string name="menu_browse">Prohlížet</string>
-  <string name="menu_settings">Nastavení</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Pomoc</string>
-  <string name="menu_apps">Aplikace</string>
-  <string name="menu_start">Zapnout</string>
-  <string name="menu_stop">Vypnout</string>
-  <string name="menu_about">O aplikaci</string>
-  <string name="button_help">Pomoc</string>
-  <string name="button_close">Zavřít</string>
-  <string name="button_about">O aplikaci</string>
-  <string name="button_clear_log">Vyčistit log</string>
-  <string name="menu_verify">Ověřit</string>
-  <string name="menu_exit">Konec</string>
-  <string name="press_to_start">- podržte pro spuštění -</string>
-  <string name="pref_trans_proxy_group">Transparentní proxy (vyžaduje roota)</string>
-  <string name="pref_trans_proxy_title">Transparentní proxy</string>
-  <string name="pref_trans_proxy_summary">Automatické Torování aplikací</string>
-  <string name="pref_transparent_all_title">Torovat všechno</string>
-  <string name="pref_transparent_all_summary">Proxynovat všechny aplikace skrz Tor</string>
-  <string name="pref_transparent_port_fallback_title">Záložní port pro proxy</string>
-  <string name="pref_transparent_port_fallback_summary">VAROVÁNÍ: Obchází časté porty (80, 443, etc). *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungují.</string>
-  <string name="pref_transparent_port_title">Seznam portů</string>
-  <string name="pref_transparent_port_summary">Seznam portů co proxynovat. *POUŽIJTE JEN* pokud módy \'All\' nebo \'App\' nefungují</string>
-  <string name="pref_transparent_port_dialog">Zadejte porty pro proxynování</string>
-  <string name="pref_has_root">Vyžaduje root přístup</string>
-  <string name="pref_has_root_summary">Požádat o práva roota kvůli transparentnímu proxy</string>
-  <string name="status_install_success">Binárky toru byly úspěšně nainstalovány!</string>
-  <string name="title_error">Chyba aplikace</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">O Orbotovi</string>
-  <string name="btn_next">Další</string>
-  <string name="btn_back">Zpět</string>
-  <string name="btn_finish">Dokončit</string>
-  <string name="btn_cancel">Zrušit</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_permissions_root">Práva udělena</string>
-  <string name="wizard_proxy_help_info">Nastavení Proxy</string>
-  <string name="wizard_final">Orbot je připraven!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">Hlavní</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Varování</string>
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transparentní proxy</string>
-  <string name="wizard_transproxy_none">Není</string>
-  <string name="status">Status</string>
-  <string name="error">Chyba</string>
-  <string name="default_bridges"></string>
-  <string name="btn_save_settings">Uloz nastaveni</string>
-  <string name="menu_vpn">Aplikace</string>
-</resources>
diff --git a/res/values-cy/strings.xml b/res/values-cy/strings.xml
deleted file mode 100644
index f0d9acd..0000000
--- a/res/values-cy/strings.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">cychwyn a stopio Tor</string>
-  <string name="tor_proxy_service_process">gwasanaethdirpwrytor</string>
-  <string name="status_starting_up">Mae Orbot yn cychwyn...</string>
-  <string name="status_activated">Wedi cysylltu â rhwydwaith Tor</string>
-  <string name="tor_process_starting">Yn cychwyn cleient Tor</string>
-  <string name="tor_process_complete">Wedi ei gwblhau.</string>
-  <string name="tor_process_waiting">yn aros.</string>
-  <string name="not_anonymous_yet">RHYBUDD: Nid yw eich traffig yn ddienw eto! Os gwelwch yn dda ffurfweddu eich ceisiadau at arfer HTTP proxy 127.0.0.1:8118 neu SOCKS4A neu ddirprwy SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Hafan</string>
-  <string name="menu_browse">Pori</string>
-  <string name="menu_settings">Gosodiadau</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Help</string>
-  <string name="menu_start">Cychwyn</string>
-  <string name="menu_stop">Stop</string>
-  <string name="menu_about">Amdanom ni</string>
-  <string name="main_layout_download">Llwytho i lawr</string>
-  <string name="main_layout_upload">Llwytho i fyny</string>
-  <string name="button_help">Help</string>
-  <string name="button_close">Cau</string>
-  <string name="button_about">Amdanom ni</string>
-  <string name="button_clear_log">Clirio log</string>
-  <string name="menu_verify">Gwirio</string>
-  <string name="menu_exit">Gadael</string>
-  <string name="press_to_start">- pwyswch yn hir i gychwyn -</string>
-  <string name="pref_trans_proxy_group">Dirprwyo tryloyw (angen Gwreiddyn)</string>
-  <string name="pref_trans_proxy_title">Dirprwyo tryloyw</string>
-  <string name="pref_trans_proxy_summary">\'Torifying\' o Apps yn awtomatig</string>
-  <string name="pref_transparent_all_title">Popeth Tor</string>
-  <string name="pref_transparent_all_summary">Traffig dirprwy i\'r holl apps drwy Tor</string>
-  <string name="pref_transparent_port_title">Rhestr Porthau</string>
-  <string name="pref_transparent_port_summary">Rhestr o borthau i\'w dirprwyo. *DEFNYDDIER YN UNIG* os nad yw modd \'Popeth\' neu \'App\' yn gweithio</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Am Orbot</string>
-  <string name="btn_next">Nesaf</string>
-  <string name="btn_back">Yn ôl</string>
-  <string name="btn_finish">Gorffen</string>
-  <string name="btn_okay">Iawn</string>
-  <string name="btn_cancel">Diddymu</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Rhai manylion am Orbot</string>
-  <string name="wizard_permissions_root">Caniatâd wedi\'i roi</string>
-  <string name="wizard_proxy_help_info">Gosodiadau Dirprwy</string>
-  <string name="wizard_final">Mae Orbot yn barod!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">Cyffredinol</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Rhybudd</string>
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Dirprwyo\'n dryloyw</string>
-  <string name="wizard_transproxy_none">Dim</string>
-  <string name="pref_select_apps">Dewiswch Apps</string>
-  <string name="pref_select_apps_summary">Dewiswch Apps i\'w llwybro drwy Tor</string>
-  <string name="pref_node_configuration">Ffurfweddiad nod</string>
-  <string name="pref_entrance_node">Nodau mynediad</string>
-  <string name="pref_entrance_node_dialog">I mewn i nodau mynediad</string>
-  <string name="pref_proxy_password_summary">Cyfrinair y Dirprwy (Dewisol)</string>
-  <string name="status">Statws</string>
-  <string name="error">Gwall</string>
-  <string name="exit_nodes">Nodau Gadael</string>
-  <string name="enter_exit_nodes">I mewn i Nodau Gadael</string>
-  <string name="exclude_nodes">Yn eithrio Nodau</string>
-  <string name="enter_exclude_nodes">I mewn i Nodau Eithrio</string>
-  <string name="the_tor_license">Trwydded Tor</string>
-  <string name="third_party_software">Meddalwedd 3ydd-parti</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Dewiswch locale ac iaith i Orbot</string>
-  <string name="wizard_locale_title">Dewiswch iaith</string>
-  <string name="btn_save_settings">Cadw\'r gosodiadau</string>
-</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
deleted file mode 100644
index 0ddf38a..0000000
--- a/res/values-da/strings.xml
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot er en gratis og åben proxy-applikation, der gør det muligt at anvende internettet mere sikkert fra andre programmer. Orbot bruger Tor til at kryptere internettrafikken, og skjuler den ved at sende den gennem serverere, lokaliseret i hele verden. Tor er gratis og åben software, der kan hjælpe dig mod netværksovervågning kaldet trafikanalyse, der kan true din personlige frihed, dit privatliv, handelsaktivitet og forhold.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">start og stop Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot starter op ...</string>
-  <string name="status_activated">Der er forbindelse til Tor-netværket</string>
-  <string name="status_disabled">Orbot er slået fra</string>
-  <string name="tor_process_starting">Starter Tor klienten...</string>
-  <string name="tor_process_complete">udført.</string>
-  <string name="tor_process_waiting">afventer.</string>
-  <string name="not_anonymous_yet">ADVARSEL: Din trafik er ikke endnu ikke anonym! Konfigurér venligst dine programmer, så de bruger HTTP proxy 127.0.0.1:8118 eller SOCKS4A eller SOCKS5-proxy 127.0.0.1:9050</string>
-  <string name="menu_home">Hjem</string>
-  <string name="menu_browse">Brows</string>
-  <string name="menu_settings">Indstillinger</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Hjælp</string>
-  <string name="menu_start">Start</string>
-  <string name="menu_stop">Stop</string>
-  <string name="menu_about">Om</string>
-  <string name="main_layout_download">Henter</string>
-  <string name="main_layout_upload">Sender</string>
-  <string name="button_help">Hjælp</string>
-  <string name="button_close">Luk</string>
-  <string name="button_about">Om</string>
-  <string name="button_clear_log">Ryd log</string>
-  <string name="menu_verify">Tjek</string>
-  <string name="menu_exit">Afslut</string>
-  <string name="press_to_start">- hold nede for start -</string>
-  <string name="pref_trans_proxy_group">Transparent proxy (kræver Root)</string>
-  <string name="pref_trans_proxy_title">Transparent proxy</string>
-  <string name="pref_trans_proxy_summary">Anvend automatisk Tor på programmer</string>
-  <string name="pref_transparent_all_title">Brug Tor til alt</string>
-  <string name="pref_transparent_all_summary">Proxy-trafik for alle programmer gennem Tor</string>
-  <string name="pref_transparent_port_fallback_title">Tilbagefaldsport for proxy</string>
-  <string name="pref_transparent_port_fallback_summary">ADVARSEL: Omgår almindelige porte (80, 443, osv). Bør *KUN* anvendes hvis \'All\' eller \'App\' tilstande ikke virker.</string>
-  <string name="pref_transparent_port_title">Portliste</string>
-  <string name="pref_transparent_port_summary">Liste af porte der skal filtreres gennem proxyen. Bør *KUN* anvendes hvis \'All\' eller \'App\' tilstande ikke virker.</string>
-  <string name="pref_transparent_port_dialog">Indtast porte der skal filtreres gennem proxyen.</string>
-  <string name="pref_has_root">Forespørg om Root-adgang</string>
-  <string name="pref_has_root_summary">Kræver root privilegier for gennemsigtig proxy.</string>
-  <string name="status_install_success">Tor\'s binære filer succesfuldt installeret!</string>
-  <string name="status_install_fail">Tor\'s binære filer kunne ikke installeres. Læs venligst loggen og underret tor-assistants at torproject.org</string>
-  <string name="title_error">Programfejl</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Om Orbot</string>
-  <string name="btn_next">Næste</string>
-  <string name="btn_back">Tilbage</string>
-  <string name="btn_finish">Afslut</string>
-  <string name="btn_okay">Okay</string>
-  <string name="btn_cancel">Fortryd</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Nogle Orbot detaljer</string>
-  <string name="wizard_permissions_root">Tilladelse givet</string>
-  <string name="wizard_permissions_stock">Orbot tilladelser</string>
-  <string name="wizard_premissions_msg_root">Fremragende! Vi kan se at du har givet root tilladelser til Orbot . Vi vil bruge denne magt med omtanke.</string>
-  <string name="wizard_permissions_msg_stock">Selvom det ikke er påkrævet, kan Orbot blive et mere nyttigt værktøj, hvis din enhed har root adgang. Benyt knappen herunder for at tildele Orbot superkræfter!</string>
-  <string name="wizard_permissions_no_root">Hvis du ikke har root adgang eller ikke aner hvad vi snakker om, skal du være sikker på at du benytter dig af apps som kan fungere med Orbot.</string>
-  <string name="wizard_permissions_consent">Jeg forstår og vil gerne fortsætte uden Superuser</string>
-  <string name="wizard_permission_enable_root">Tillad root for Orbot</string>
-  <string name="wizard_configure">Indstil Torifikation</string>
-  <string name="wizard_configure_msg">Orbot giver dig mulighed for at føre al app-trafik igennem Tor ELLER vælge individuelt imellem apps.</string>
-  <string name="wizard_configure_all">Kør alle programmers trafik gennem Tor proxyen</string>
-  <string name="wizard_configure_select_apps">Vælg individuelle apps for Tor</string>
-  <string name="wizard_tips_tricks">Orbot-aktiverede apps</string>
-  <string name="wizard_tips_msg">De nedenstående programmer er udviklet for at fungere med Orbot. Klik hver knap for at installere nu. Ellers kan de senere findes på Google play, på hjemmesiden GuardianProject.info eller via F-Droid.org.</string>
-  <string name="wizard_tips_proxy">Proxy indstillinger - Lær hvordan du konfigurerer apps til at fungere med Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo søgemaskine-programmet</string>
-  <string name="wizard_tips_twitter">Indstil Twitter proxyen til værten \"localhost\" og port 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proxy-indstillinger</string>
-  <string name="wizard_final">Orbot er klar!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Dette vil åbne din browser på https://check.torproject.org for at se om Orbot er korrekt konfigureret og at du er forbundet til Tor.</string>
-  <string name="pref_hs_group">Udbyd en skjult service</string>
-  <string name="pref_general_group">Generelt</string>
-  <string name="pref_start_boot_title">Start Orbot ved opstart</string>
-  <string name="pref_start_boot_summary">Start automatisk Orbot og forbind til Tor når din android enhed starter</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Advarsel</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Tilladelser</string>
-  <string name="wizard_permissions_root_msg1">Du kan eventuelt give Orbot \'Superuser\' adgang for at aktivere funktioner som f.eks. Transparent Proxying.</string>
-  <string name="wizard_permissions_root_msg2">Hvis du ikke vil dette, så vær sikker på at du bruger apps som fungerer med Orbot</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-aktiverede apps</string>
-  <string name="wizard_tips_play">Find alle Guardian Project programmer på Google Play</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transperant Proxying</string>
-  <string name="wizard_transproxy_msg">Dette tillader at dine apps automatisk kører gennem Tor netværket uden nogen konfiguration.</string>
-  <string name="wizard_transproxy_hint">(Check denne boks hvis du ikke aner hvad vi snakker om)</string>
-  <string name="wizard_transproxy_none">Ingen</string>
-  <string name="pref_transparent_tethering_title">Tor internet-hotspot</string>
-  <string name="pref_transparent_tethering_summary">Start Tor gennemsigtig proxy for Wifi og internetdeling over USB (kræver genstart)</string>
-  <string name="button_grant_superuser">Anmod om Superuser adgang</string>
-  <string name="pref_select_apps">Vælg apps</string>
-  <string name="pref_select_apps_summary">Vælg apps som føres gennem Tor</string>
-  <string name="pref_node_configuration">Konfiguration af Tor node</string>
-  <string name="pref_node_configuration_summary">Avancerede indstillinger, der kan reducere anonymiteten</string>
-  <string name="pref_entrance_node">Indgangspunkter til Tor netværket</string>
-  <string name="pref_entrance_node_summary">Fingeraftryk, servernavne, lande og adresser for første hop</string>
-  <string name="pref_entrance_node_dialog">Indtast indgangspunkter</string>
-  <string name="pref_proxy_title">Udgående netværksproxy (Valgfri)</string>
-  <string name="pref_proxy_type_title">Udgående proxy-type</string>
-  <string name="pref_proxy_type_summary">Protokol til proxy serveren: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Indtast proxy type</string>
-  <string name="pref_proxy_host_title">Udgående proxy-vært</string>
-  <string name="pref_proxy_host_summary">Værtsnavn for proxyserver</string>
-  <string name="pref_proxy_host_dialog">Indtast proxy vært</string>
-  <string name="pref_proxy_port_title">Udgående proxy-port</string>
-  <string name="pref_proxy_port_summary">Proxyserverens port</string>
-  <string name="pref_proxy_port_dialog">Indtast proxy port</string>
-  <string name="pref_proxy_username_title">Brugernavn for udgående proxy</string>
-  <string name="pref_proxy_username_summary">Proxy brugernavn (Valgfri)</string>
-  <string name="pref_proxy_username_dialog">Indtast proxy-brugernavnet</string>
-  <string name="pref_proxy_password_title">Kodeord for udgående proxy</string>
-  <string name="pref_proxy_password_summary">Adgangskode for udgående proxy (Valgfri)</string>
-  <string name="pref_proxy_password_dialog">Indtast proxy-kodeordet</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Opsætter total, gennemsigtig proxy...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Opsætter program-afhængig transparent proxy...</string>
-  <string name="transparent_proxying_enabled">Transparent proxying AKTIVERET</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy slået til for internetdeling!</string>
-  <string name="warning_error_starting_transparent_proxying_">ADVARSEL: fejl under start af den gennemsigtige proxy!</string>
-  <string name="transproxy_rules_cleared">Indstillinger for TransProxy er nulstillet</string>
-  <string name="couldn_t_start_tor_process_">Kunne ikke starte Tor processen:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Opsætter port-baseret gennemsigtig proxy...</string>
-  <string name="bridge_error">Fejl ved Bro</string>
-  <string name="bridge_requires_ip">For at kunne bruge bro-komponenten, skal du indaste mindst én IP-adresse på en bro.</string>
-  <string name="send_email_for_bridges">Send en e-mail til bridges at torproject.org med teksten \"get bridges\" alene i mailens tekstfelt fra en gmail-konto.</string>
-  <string name="error">Fejl</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Din ReachableAdresses indstilling forudsagede en fejl!</string>
-  <string name="your_relay_settings_caused_an_exception_">Dine relæindstillinger forårsagede en fejl!</string>
-  <string name="exit_nodes">Udgangspunkter</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingeraftryk, servernavne, lande og adresser for det sidste hop</string>
-  <string name="enter_exit_nodes">Indtast udgangspunkter</string>
-  <string name="exclude_nodes">Ekskluder punkter</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingeraftryk, servernavne, lande og adresser der skal ekskluderes</string>
-  <string name="enter_exclude_nodes">Indtast noder at ekskludere</string>
-  <string name="strict_nodes">Strikte punkter</string>
-  <string name="use_only_these_specified_nodes">Brug *kun* disse specificerede punkter</string>
-  <string name="bridges">Broer</string>
-  <string name="use_bridges">Brug broer</string>
-  <string name="bridges_obfuscated">Skjulte broer</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Slå alternative indgangspunkter til Tor netværket til</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Aktiver hvis de indstillede broer er skjulte broer</string>
-  <string name="ip_address_and_port_of_bridges">IP adresser og porte på broer</string>
-  <string name="enter_bridge_addresses">Indtast bro-adresser</string>
-  <string name="relays">Relæer</string>
-  <string name="relaying">Relæfunktion</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Lad denne enhed være et ikke-udgangs relæ</string>
-  <string name="relay_port">Relæets port</string>
-  <string name="listening_port_for_your_tor_relay">Port at dette Tor relæ lytter på</string>
-  <string name="enter_or_port">Indtast OR port</string>
-  <string name="relay_nickname">Relænavn</string>
-  <string name="the_nickname_for_your_tor_relay">Kaldenavnet for dit Tor-relæ</string>
-  <string name="enter_a_custom_relay_nickname">Indtast et valgfrit navn for relæet</string>
-  <string name="reachable_addresses">Opnåelige adresser</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Kør som en klient bag en firewall med restrektive regler</string>
-  <string name="reachable_ports">Porte hvor forbindelse kan dannes</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Porte bag en restriktiv firewall hvor en forbindelse kan oprettes</string>
-  <string name="enter_ports">Indtast porte</string>
-  <string name="enable_hidden_services">Udbyd en service</string>
-  <string name="run_servers_accessible_via_the_tor_network">tillad at en server på enheden er tilgængelig via Tor-netværket</string>
-  <string name="enter_localhost_ports_for_hidden_services">indtast lokale adresser for skjulte services</string>
-  <string name="hidden_service_ports">Skjulte service porte</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">den absolutte sti til din skjulte service (genereres automatisk)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">aktiver fejlfindings-log til output (der skal anvendes adb eller aLogCat for at se dette)</string>
-  <string name="project_home">Projekt hjemmeside(r):</string>
-  <string name="the_tor_license">Tor licensen</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Tredjeparts-software:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="hidden_service_request">Et program vil åbne den skjulte server-port %S til Tor netværket. Dette er sikkert hvis du stoler på programmet.</string>
-  <string name="found_existing_tor_process">fandt eksisterende Tor process...</string>
-  <string name="something_bad_happened">Noget slemt er sket. Check loggen</string>
-  <string name="hidden_service_on">skjult service på:</string>
-  <string name="unable_to_read_hidden_service_name">ikke i stand til at læse navnet på den skjulte service</string>
-  <string name="unable_to_start_tor">Kunne ikke starte Tor:</string>
-  <string name="unable_to_reset_tor">Genstart din enhed. Ude af stand til at nulstille tor!</string>
-  <string name="pref_use_sys_iptables_title">Anvend standardindstillinger for Iptables</string>
-  <string name="pref_use_sys_iptables_summary">anvend det indbyggede iptables-program i stedet for versionen der følger med Orbot</string>
-  <string name="error_installing_binares">Kunne ikke installere eller opgradere Tor programmerne.</string>
-  <string name="pref_use_persistent_notifications">Vis altid ikonet i statuslinien når Orbot er forbundet til netværket</string>
-  <string name="pref_use_persistent_notifications_title">Vis altid notifikationer</string>
-  <string name="notification_using_bridges">Broer er aktiverede!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Sprog</string>
-  <string name="set_locale_summary">Vælg sproginstillinger og sprog for Orbot</string>
-  <string name="wizard_locale_title">Vælg sprog</string>
-  <string name="wizard_locale_msg">Behold standardindstilling eller skift det nuværende sprog</string>
-  <string name="powered_by">drevet af Tor</string>
-  <string name="btn_save_settings">Gem Indstillinger</string>
-  <string name="no_internet_connection_tor">Ingen internetforbindelse; Tor er på standby...</string>
-  <string name="bandwidth_">Båndbredde:</string>
-</resources>
diff --git a/res/values-de-rAT/strings.xml b/res/values-de-rAT/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-de-rAT/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
deleted file mode 100644
index 4e667c7..0000000
--- a/res/values-de/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot ist eine kostenlose Proxy-Anwendung, mit deren Hilfe andere Anwendungen das Internet sicherer nutzen können. Orbot verwendet Tor, um Ihren Internetverkehr zu verschlüsseln und ihn dann zu verbergen, indem er über eine Reihe weltweit verteilter Computer geleitet wird. Tor ist ein freies Programm und ein offenes Netzwerk, das Ihnen hilft, sich gegen Angriffe auf die persönliche Freiheit und die Privatsphäre oder auf vertrauliche Geschäftsbeziehungen sowie gegen die Datenüberwachung aus Staatssicherheitsgründen zu wehren.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">Tor starten und beenden</string>
-  <string name="tor_proxy_service_process">Tor-Vermittlungsdienst</string>
-  <string name="status_starting_up">Orbot startet …</string>
-  <string name="status_activated">Verbunden mit dem Tor-Netzwerk</string>
-  <string name="status_disabled">Orbot ist deaktiviert</string>
-  <string name="status_shutting_down">TorService wird heruntergefahren</string>
-  <string name="tor_process_starting">Tor-Programm wird gestartet …</string>
-  <string name="tor_process_complete">abgeschlossen.</string>
-  <string name="tor_process_waiting">warten.</string>
-  <string name="not_anonymous_yet">WARNUNG: Ihr Datenverkehr ist noch nicht anonymisiert! Bitte stellen Sie Ihre Programme so ein, dass Sie entweder den HTTP-Proxy 127.0.0.1:8118 oder den SOCKS4A bzw. SOCKS5-Proxy 127.0.0.1:9050 verwenden.</string>
-  <string name="menu_home">Start</string>
-  <string name="menu_browse">Durchsuchen</string>
-  <string name="menu_settings">Einstellungen</string>
-  <string name="menu_log">Protokoll</string>
-  <string name="menu_info">Hilfe</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Start</string>
-  <string name="menu_stop">Stopp</string>
-  <string name="menu_about">Über</string>
-  <string name="menu_promo_apps">Weitere Apps …</string>
-  <string name="main_layout_download">Heruntergeladen</string>
-  <string name="main_layout_upload">Hochgeladen</string>
-  <string name="button_help">Hilfe</string>
-  <string name="button_close">Schließen</string>
-  <string name="button_about">Über</string>
-  <string name="button_clear_log">Protokoll löschen</string>
-  <string name="menu_verify">Überprüfen</string>
-  <string name="menu_exit">Beenden</string>
-  <string name="menu_scan">BrückenQR scannen</string>
-  <string name="menu_share_bridge">BrückenQR teilen</string>
-  <string name="press_to_start">- Zum Starten gedrückt halten -</string>
-  <string name="pref_trans_proxy_group">Transparente Vermittlung (benötigt Root-Rechte)</string>
-  <string name="pref_trans_proxy_title">Transparente Vermittlung</string>
-  <string name="pref_trans_proxy_summary">Anwendungen automatisch durch Tor leiten</string>
-  <string name="pref_transparent_all_title">Alles durch Tor leiten</string>
-  <string name="pref_transparent_all_summary">Verbindungen aller Anwendungen durch Tor leiten</string>
-  <string name="pref_transparent_port_fallback_title">Rückfallportvermittlung</string>
-  <string name="pref_transparent_port_fallback_summary">WARNUNG: Umgeht öffentliche Ports (80, 443, usw.). *NUR BENUTZEN*, wenn »All« oder »App«-Modus nicht funktioniert.</string>
-  <string name="pref_transparent_port_title">Portliste</string>
-  <string name="pref_transparent_port_summary">Liste von Anschlüssen zur Vermittlung. *NUR BENUTZEN* wenn »All« oder »App«-Modus nicht funktioniert</string>
-  <string name="pref_transparent_port_dialog">Ports zur Vermittlung eingeben</string>
-  <string name="pref_has_root">Anfrage auf Root-Zugriff</string>
-  <string name="pref_has_root_summary">Anfrage auf Root-Zugriff für transparente Vermittlung</string>
-  <string name="status_install_success">Die Tor-Programmdateien wurden erfolgreich installiert!</string>
-  <string name="status_install_fail">Die Tor-Programmdateien konnten nicht erfolgreich installiert werden. Bitte prüfen Sie das Protokoll und wenden Sie sich an tor-assistants at torproject.org.</string>
-  <string name="title_error">Anwendungsfehler</string>
-  <string name="wizard_title">Willkommen bei Orbot</string>
-  <string name="wizard_btn_tell_me_more">Über Orbot</string>
-  <string name="btn_next">Weiter</string>
-  <string name="btn_back">Zurück</string>
-  <string name="btn_finish">Fertigstellen</string>
-  <string name="btn_okay">OK</string>
-  <string name="btn_cancel">Abbrechen</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Nähere Informationen zu Orbot</string>
-  <string name="wizard_details_msg">Orbot ist eine quelloffene Anwendung, die Tor, LibEvent und Polipo enthält. Sie stellt einen lokalen HTTP-Proxy (Port: 8118) und einen SOCKS-Proxy (Port: 9050) in das Tor-Netzwerk bereit. Auf gerooteten Geräten kann Orbot auch sämtliche Internetverbindungen durch Tor leiten.</string>
-  <string name="wizard_permissions_root">Berechtigung erteilt</string>
-  <string name="wizard_permissions_stock">Orbot-Berechtigungen</string>
-  <string name="wizard_premissions_msg_root">Ausgezeichnet! Sie haben Orbot Root-Rechte eingeräumt. Orbot wird diese Berechtigung sinnvoll verwenden.</string>
-  <string name="wizard_permissions_msg_stock">Es ist nicht zwingend erforderlich, aber Orbot kann ein leistungsfähigeres Werkzeug werden, wenn Ihr Gerät gerootet ist. Drücken Sie unten auf den Schalter, um Orbot Superuser-Rechte zu gewähren.</string>
-  <string name="wizard_permissions_no_root">Falls Sie keinen Root-Zugriff haben oder nicht wissen, was das ist, achten Sie darauf, dass Sie Anwendungen verwenden, die Orbot nutzen können.</string>
-  <string name="wizard_permissions_consent">Ich habe verstanden und möchte ohne Systemverwalterzugriff weitermachen</string>
-  <string name="wizard_permission_enable_root">Orbot Root-Rechte einräumen</string>
-  <string name="wizard_configure">Torification konfigurieren</string>
-  <string name="wizard_configure_msg">Orbot lässt Ihnen die Wahl, den Datenverkehr aller Anwendungen durch Tor zu leiten ODER einzelne Anwendungen auszuwählen.</string>
-  <string name="wizard_configure_all">Den Verkehr aller Anwendungen durch Tor leiten</string>
-  <string name="wizard_configure_select_apps">Anwendungen einzeln für Tor auswählen</string>
-  <string name="wizard_tips_tricks">Orbot aktivierte Anwendungen</string>
-  <string name="wizard_tips_msg">Die unten aufgeführten Anwendungen wurden für die Zusammenarbeit mit Orbot entwickelt. Wählen Sie diese durch anklicken zum Installieren aus oder laden Sie diese später bei Google Play,  GuardianProject.info oder F-Droid.org herunter.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Ein sicheres Sofortnachrichtenprogramm für Android</string>
-  <string name="wizard_tips_proxy">Vermittlungseinstellungen - Lernen, wie Sie Anwendungen so konfigurieren, dass sie mit Orbot zusammenarbeiten.</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo-Suchmaschinen-App</string>
-  <string name="wizard_tips_twitter">Twitter-Proxy auf den Rechner »localhost« und Port 8118 einstellen</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Schreiben Sie eine Geschichte und überlassen Sie Tor das Sicherheitsmanagement!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Vermittlungseinstellungen</string>
-  <string name="wizard_proxy_help_msg">Wenn die verwendete Android-App die Nutzung eines HTTP- oder SOCKS-Proxys unterstützt, kann sie mit Orbot verknüpft werden und Tor nutzen.\n\n\nDie Einstellung für \'Host\' ist 127.0.0.1 oder \'localhost\'. Für HTTP wird der Port 8118 eingetragen. Für SOCKS der Port 9050. Sie sollten möglichst SOCKS4A oder SOCKS5 verwenden.\n\n\n\n Mehr Informationen zur Verwendung von Proxys unter Android finden Sie in den FAQ auf http://tinyurl.com/proxyandroid\n</string>
-  <string name="wizard_final">Orbot ist bereit!</string>
-  <string name="wizard_final_msg">Millionen Menschen auf der ganzen Welt nutzen Tor aus einer Vielzahl von Gründen..\n\nJournalisten und Blogger, Verteidiger für Menschenrechte, Polizeibeamte, Soldaten, Firmen, Bürger repressiver Regime und ganz normale Menschen … und jetzt können Sie das auch!</string>
-  <string name="wizard_exit_at_first_screen_toast">Bitte konfigurieren Sie Orbot, bevor Sie es verwenden können!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Sie haben sich erfolgreich mit dem Tor-Netzwerk verbunden - was aber NICHT bedeutet, dass Ihr Gerät sicher ist. Sie können den Knopf »Browser« verwenden, um Ihre Verbindung zu überprüfen. \n\nBesuchen Sie uns auf https://guardianproject.info/apps/orbot oder senden Sie uns eine E-Mail an help at guardianproject.info, um mehr zu erfahren.</string>
-  <string name="tor_check">Durch das Bestätigen mit »OK« wird die Seite https://check.torproject.org in Ihrem Webbrowser geöffnet, sodass Sie überprüfen können, ob Orbot richtig konfiguriert ist und Sie mit Tor verbunden sind.</string>
-  <string name="pref_hs_group">Versteckte Dienste</string>
-  <string name="pref_general_group">Allgemein</string>
-  <string name="pref_start_boot_title">Orbot beim Systemstart ausführen</string>
-  <string name="pref_start_boot_summary">Automatisches Starten von Orbot und Verbinden mit Tor beim Start des Android-Gerätes</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot bringt Tor zu Android!\n\nTor unterstützt Sie, sich gegen Zensur, Datenrückverfolgung und die Überwachung des Netzes zu wehren, die Ihre Privatsphäre, vertraulichen Informationen und persönlichen Beziehungen bedrohen.\n\nDieser Assistent hilft Ihnen dabei, Orbot und Tor einzurichten.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Warnung</string>
-  <string name="wizard_warning_msg">Orbot nur zu installieren, anonymisiert nicht automatisch den mobilen Netzwerkverkehr.\n\nSie müssen Orbot, das Gerät und die Apps konfigurieren, um Tor erfolgreich zu verwenden.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Zugriffsrechte</string>
-  <string name="wizard_permissions_root_msg1">Sie können Orbot wahlweise Systemverwalterzugriff geben, um erweiterte Funktionen zu aktivieren, wie z.B. transparente Vermittlung.</string>
-  <string name="wizard_permissions_root_msg2">Wenn Sie dies nicht möchten, stellen Sie bitte sicher, Anwendungen zu verwenden, die für die Zusammenarbeit mit Orbot geschrieben wurden.</string>
-  <string name="wizard_permissions_no_root_msg">Ihr Gerät scheint nicht gerootet zu sein oder stellt keinen Root oder \'Systemverwalterzugriff bereit.\n\nBitte nutzen Sie den \'Apps\' Modus auf dem Hauptbildschirm.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot aktivierte Anwendungen</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Sichere Unterhaltungsanwendung mit vertraulicher Verschlüsselung</string>
-  <string name="wizard_tips_orweb">Orfox: Datenschutz optimierter Browser der Tor verwendet</string>
-  <string name="wizard_tips_play">Alle Guardian Project-Anwendungen im Google Play Store finden</string>
-  <string name="wizard_tips_fdroid">Alle Guardian Project-Anwendungen bei F-Droid finden</string>
-  <string name="wizard_tips_fdroid_org">Alle Guardian Project-Anwendungen unter https://f-droid.org finden</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transparente Vermittlung</string>
-  <string name="wizard_transproxy_msg">Dies ermöglicht Ihren Anwendungen automatisch das Tor-Netzwerk zu verwenden, ohne dieses konfigurieren zu müssen.</string>
-  <string name="wizard_transproxy_hint">(Dieses Feld auswählen, wenn Sie nicht wissen wovon wir reden)</string>
-  <string name="wizard_transproxy_none">Nichts</string>
-  <string name="pref_transparent_tethering_title">Tor-Anbindung</string>
-  <string name="pref_transparent_tethering_summary">Transparente Tor-Vermittlung für WLAN und angebundene USB-Geräte aktivieren (benötigt einen Neustart)</string>
-  <string name="button_grant_superuser">Systemverwalterzugriff anfordern</string>
-  <string name="pref_select_apps">Anwendungen auswählen</string>
-  <string name="pref_select_apps_summary">Die Anwendungen auswählen, welche durch Tor geleitet werden sollen</string>
-  <string name="pref_node_configuration">Netzknotenkonfiguration</string>
-  <string name="pref_node_configuration_summary">Dies sind erweiterte Einstellungen, die Ihre Anonymität beeinträchtigen können</string>
-  <string name="pref_entrance_node">Eingangsnetzknoten</string>
-  <string name="pref_entrance_node_summary">Fingerabdrücke, Spitznamen, Länder und Adressen für den ersten Knotenpunkt</string>
-  <string name="pref_entrance_node_dialog">Eingangsnetzknoten eingeben</string>
-  <string name="pref_allow_background_starts_title">Hintergrundstatistiken erlauben</string>
-  <string name="pref_allow_background_starts_summary">Erlauben Sie jeder Anwendung, Orbot zu beauftragen, Tor und zugehörige Dienste zu starten</string>
-  <string name="button_proxy_all">Alles über Proxy</string>
-  <string name="button_proxy_none">Nichts über Proxy</string>
-  <string name="button_invert_selection">Auswahl umkehren</string>
-  <string name="pref_proxy_title">Ausgehender Netzwerk-Proxy (optional)</string>
-  <string name="pref_proxy_type_title">Ausgehender Vermittlungstyp</string>
-  <string name="pref_proxy_type_summary">Protokoll zur Verwendung des Proxy Servers: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Vermittlungstyp eingeben</string>
-  <string name="pref_proxy_host_title">Ausgehender Vermittlungsrechner</string>
-  <string name="pref_proxy_host_summary">Rechnername des Vermittlungsservers</string>
-  <string name="pref_proxy_host_dialog">Vermittlungsrechner eingeben</string>
-  <string name="pref_proxy_port_title">Ausgehender Proxy-Anschluss</string>
-  <string name="pref_proxy_port_summary">Anschluss des Vermittlungsservers</string>
-  <string name="pref_proxy_port_dialog">Vermittlungsanschluss eingeben</string>
-  <string name="pref_proxy_username_title">Ausgehender Proxy-Benutzername</string>
-  <string name="pref_proxy_username_summary">Proxy-Benutzername (optional)</string>
-  <string name="pref_proxy_username_dialog">Proxy-Benutzernamen eingeben</string>
-  <string name="pref_proxy_password_title">Ausgehendes Proxy-Passwort</string>
-  <string name="pref_proxy_password_summary">Proxy-Passwort (optional)</string>
-  <string name="pref_proxy_password_dialog">Proxy-Passwort eingeben</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Voll transparente Vermittlung wird eingestellt …</string>
-  <string name="setting_up_app_based_transparent_proxying_">Anwendungsbasierte transparente Vermittlung wird eingestellt …</string>
-  <string name="transparent_proxying_enabled">Transparente Vermittlung AKTIVIERT</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy für Anbindung aktiviert!</string>
-  <string name="warning_error_starting_transparent_proxying_">WARNUNG: Fehler beim Starten der transparenten Vermittlung!</string>
-  <string name="transproxy_rules_cleared">TransProxy-Regeln gelöscht</string>
-  <string name="couldn_t_start_tor_process_">Tor-Prozess konnte nicht gestartet werden:</string>
-  <string name="privoxy_is_running_on_port_">Polipo läuft auf Port: </string>
-  <string name="setting_up_port_based_transparent_proxying_">Anschlussbasierte transparente Vermittlung wird eingestellt …</string>
-  <string name="bridge_error">Brückenfehler</string>
-  <string name="bridge_requires_ip">Um die Brückenfunktion nutzen zu können, müssen Sie mindestens eine Brücken-IP-Adresse eingeben.</string>
-  <string name="send_email_for_bridges">Von Ihrem Gmail-Konto eine E-Mail an bridges at torproject.org mit dem Text »get bridges« im Nachrichtenfeld senden.</string>
-  <string name="error">Fehler</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Ihre eingestellten erreichbaren Adressen haben einen Ausnahmefehler verursacht!</string>
-  <string name="your_relay_settings_caused_an_exception_">Ihre Relaiseinstellungen haben einen Ausnahmefehler verursacht!</string>
-  <string name="exit_nodes">Ausgangsnetzknoten</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingerabdrücke, Spitznamen, Länder und Adressen für den letzten Knotenpunkt.</string>
-  <string name="enter_exit_nodes">Ausgangsnetzknoten eingeben</string>
-  <string name="exclude_nodes">Netzknoten ausschließen</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingerabdrücke, Spitznamen, Länder und Adressen, die ausgeschlossen werden sollen</string>
-  <string name="enter_exclude_nodes">Auszuschließende Netzknoten eingeben</string>
-  <string name="strict_nodes">Absolute Netzknoten</string>
-  <string name="use_only_these_specified_nodes">*Ausschließlich* diese angegebenen Netzknoten verwenden</string>
-  <string name="bridges">Brücken</string>
-  <string name="use_bridges">Brücken benutzen</string>
-  <string name="bridges_obfuscated">Verschleierte Brücken</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Alternative Eingangsnetzknoten in das Tor-Netzwerk aktivieren</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Aktivieren, falls Brücken verschleierte Brücken sind</string>
-  <string name="ip_address_and_port_of_bridges">IP-Adresse und Port der Brücken</string>
-  <string name="enter_bridge_addresses">Brückenadressen eingeben</string>
-  <string name="relays">Relais</string>
-  <string name="relaying">Weiterleitung</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Ihr Gerät als Nichtausgangsrelais aktivieren</string>
-  <string name="relay_port">Relaisanschluss</string>
-  <string name="listening_port_for_your_tor_relay">Anschluss, auf dem bei Ihrem Tor-Relais gehört werden soll</string>
-  <string name="enter_or_port">OR-Port eingeben</string>
-  <string name="relay_nickname">Relaisspitzname</string>
-  <string name="the_nickname_for_your_tor_relay">Der Spitzname für Ihr Tor-Relais</string>
-  <string name="enter_a_custom_relay_nickname">Einen selbsterstellten Relaisspitznamen eingeben</string>
-  <string name="reachable_addresses">Erreichbare Adressen</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Als Programm hinter einer Firewall mit restriktiven Regeln betreiben</string>
-  <string name="reachable_ports">Erreichbare Ports</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Die Anschlüsse sind hinter einer restriktiven Firewall erreichbar</string>
-  <string name="enter_ports">Ports eingeben</string>
-  <string name="enable_hidden_services">Versteckte Dienste</string>
-  <string name="run_servers_accessible_via_the_tor_network">Auf dem Gerät einen Server betreiben, auf den das Tor-Netzwerk zugreifen kann</string>
-  <string name="enter_localhost_ports_for_hidden_services">Lokale Ports für versteckte Dienste eingeben</string>
-  <string name="hidden_service_ports">Ports der versteckten Dienste</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Der adressierbare Name für Ihren versteckten Dienst (wird automatisch generiert)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Ausgabe des Fehlerdiagnoseprotokolls aktivieren (benötigt adb oder aLogCat zur Ansicht)</string>
-  <string name="project_home">Internetseite(n) des Projektes:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Die Tor-Lizenz</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Drittanbieteranwendungen:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Eine Anwendung möchte den versteckten Server-Anschluss %S öffnen. Das ist sicher, wenn Sie der Anwendung vertrauen.</string>
-  <string name="found_existing_tor_process">bestehender Tor-Prozess gefunden …</string>
-  <string name="something_bad_happened">Etwas ist schief gelaufen. Bitte Protokoll prüfen</string>
-  <string name="hidden_service_on">Versteckte Dienste auf:</string>
-  <string name="unable_to_read_hidden_service_name">Name des versteckten Dienstes kann nicht gelesen werden</string>
-  <string name="unable_to_start_tor">Tor kann nicht gestartet werden:</string>
-  <string name="unable_to_reset_tor">Starten Sie Ihr Gerät neu, Tor konnte nicht zurückgesetzt werden!</string>
-  <string name="pref_use_sys_iptables_title">Vorgegebene IPtables verwenden</string>
-  <string name="pref_use_sys_iptables_summary">Die vorhandene IPtables-Datei verwenden, anstatt der von Orbot mitgelieferten.</string>
-  <string name="error_installing_binares">Die Tor-Programmdateien konnten nicht installiert oder aktualisiert werden.</string>
-  <string name="pref_use_persistent_notifications">Wenn Orbot verbunden ist immer das Orbot-Symbol in der Statusleiste anzeigen</string>
-  <string name="pref_use_persistent_notifications_title">Aktivitätsanzeige</string>
-  <string name="pref_use_expanded_notifications">Erweiterte Benachrichtigung mit Tor-Austrittsland und IP anzeigen</string>
-  <string name="pref_use_expanded_notifications_title">Erweiterte Benachrichtigungen</string>
-  <string name="notification_using_bridges">Brücken aktiviert!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Sprache</string>
-  <string name="set_locale_summary">Gebietsschema und Sprache für Orbot auswählen</string>
-  <string name="wizard_locale_title">Sprache auswählen</string>
-  <string name="wizard_locale_msg">Voreinstellung beibehalten oder Sprache ändern</string>
-  <string name="powered_by">betrieben mit Tor</string>
-  <string name="btn_save_settings">Einstellungen speichern</string>
-  <string name="no_internet_connection_tor">Keine Internetverbindung; Tor ist in Bereitschaft …</string>
-  <string name="bandwidth_">Bandbreite:</string>
-  <string name="down">runter</string>
-  <string name="up">hoch</string>
-  <string name="pref_disable_network_title">Bereitschaft wenn kein Netz</string>
-  <string name="pref_disable_network_summary">Tor in Bereitschaft versetzen, wenn kein Internet verfügbar ist</string>
-  <string name="newnym">Sie haben zu einer neuen Tor-Identität gewechselt!</string>
-  <string name="menu_verify_browser">Browser</string>
-  <string name="menu_use_chatsecure">ChatSecure benutzen</string>
-  <string name="permission_manage_tor_label">Tor verwalten</string>
-  <string name="permission_manage_tor_description">Diese Anwendung aktivieren, um den Tor-Dienst zu kontrollieren</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Es sieht nicht so aus, dass Sie Orfox installiert haben. Wollen Sie dabei Hilfe oder sollen wir einfach den Browser öffnen?</string>
-  <string name="install_apps_">Anwendungen installieren?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Keine Netzwerkverbindung. Tor wird in Bereitschaft versetzt …</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Netzwerkverbindung ist vorhanden. Tor wird aktiviert …</string>
-  <string name="updating_settings_in_tor_service">Einstellungen im Tor-Dienst werden aktualisiert</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Port auf dem der SOCKS-Proxy bereitgestellt wird (Standard: 9050 oder 0 zum deaktivieren)</string>
-  <string name="pref_socks_dialog">SOCKS-Portkonfiguration</string>
-  <string name="pref_transport_title">Tor TransProxy-Port</string>
-  <string name="pref_transport_summary">Port auf dem der Transparente Proxy bereitgestellt wird (Standard: 9040 oder 0 zum deaktivieren)</string>
-  <string name="pref_transport_dialog">TransProxy-Portkonfiguration</string>
-  <string name="pref_dnsport_title">Tor DNS-Port</string>
-  <string name="pref_dnsport_summary">Port auf dem DNS bereitgestellt wird (Standard: 5400 oder 0 zum deaktivieren)</string>
-  <string name="pref_dnsport_dialog">DNS-Portkonfiguration</string>
-  <string name="pref_torrc_title">Benutzerdefinierte Torrc-Konfiguration</string>
-  <string name="pref_torrc_summary">NUR FÜR EXPERTEN: torrc-Konfigurationszeilen direkt eingeben</string>
-  <string name="pref_torrc_dialog">Benutzerdefinierte Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech-Anwendung zur Menschenrechtsdokumentierung</string>
-  <string name="your_tor_public_ips_">Ihre öffentlichen IPs für Tor:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Bitte deaktivieren Sie diese Anwendung unter Android->Einstellungen->Anwendungen, falls Sie Probleme mit Orbot haben:</string>
-  <string name="app_conflict">Anwendungskonflikt</string>
-  <string name="pref_transproxy_refresh_title">Automatische Transproxy-Aktualisierung</string>
-  <string name="pref_transproxy_refresh_summary">Transproxy-Regeln erneut anwenden, wenn sich der Netzwerkstatus ändert</string>
-  <string name="pref_transproxy_flush_title">Transproxy ENTFERNEN ERZWINGEN</string>
-  <string name="pref_transproxy_flush_summary">Hier Tippen, um JETZT alle Transparent-Proxy Netzwerkregeln zu löschen</string>
-  <string name="transparent_proxy_rules_flushed_">Transparente Proxy-Regeln geleert!</string>
-  <string name="you_do_not_have_root_access_enabled">Sie haben keinen aktivierten Root-Zugang</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Sie müssen Tor stoppen und wieder Starten, um die neuen Einstellungen zu übernehmen.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbit/s</string>
-  <string name="mbps">Mbit/s</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Brücken aktualisiert</string>
-  <string name="restart_orbot_to_use_this_bridge_">Bitte Orbot zum Aktivieren der Änderungen neustarten</string>
-  <string name="menu_qr">QR-Codes</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Wenn Ihr mobiles Netzwerk aktiv Tor sperrt, können Sie mit einer Brücke auf das Netzwerk zugreifen. Wählen Sie einen der oben genannten Brückentypen aus, um Brücken zu aktivieren.</string>
-  <string name="bridge_mode">Brückemodus</string>
-  <string name="get_bridges_email">E-Mail</string>
-  <string name="get_bridges_web">Netz</string>
-  <string name="activate">Aktivieren</string>
-  <string name="apps_mode">VPN-Modus der Anwendungen</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Mit Hilfe von VPN kann man alle Anwendungen über Tor umleiten.\n\n*WARNUNG* Das ist eine neue, experimentelle Funktion und sie startet in einigen fällen nicht automatisch oder stoppt einfach. Die Funktion sollte NICHT für das anonyme Surfen genutzt werden, sondern NUR um Firewalls und Filter zu umgehen.</string>
-  <string name="send_email">E-Mail senden</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Sie können eine Brücken-Adresse per E-Mail, im Web oder per Scan eines BrückenQR-Codes erhalten. Wählen Sie unten \'E-Mail\' oder \'Web\', um eine Brückenadresse anzufordern.\n\nSobald Sie eine Adresse haben, fügen Sie diese bei den Einstellungen für Brücken ein und starten Sie Orbot neu.</string>
-  <string name="install_orweb">Orfox installieren</string>
-  <string name="standard_browser">Standard-Browser</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">HINWEIS: Nur die Standard Tor-Brücken funktionieren mit Intel X86/Atom Geräten</string>
-  <string name="vpn_default_world">Welt</string>
-</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
deleted file mode 100644
index aa3bb55..0000000
--- a/res/values-el/strings.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">εκκίνηση και διακοπή Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Το Orbot ξεκινά</string>
-  <string name="status_activated">Συνδέθηκε στο δίκτυο Tor</string>
-  <string name="status_disabled">\"Το Orbot είναι Απενεργοποιημένο</string>
-  <string name="tor_process_starting">Εκκίνηση του πελάτη Tor...</string>
-  <string name="tor_process_complete">ολοκληρώθηκε...</string>
-  <string name="tor_process_waiting">αναμονή</string>
-  <string name="not_anonymous_yet">ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η κυκλοφορία σας δεν είναι ακόμη ανώνυμη! Ρυθμίστε τις εφαρμογές σας ώστε να χρησιμοποιούν ως πληρεξούσιο HTTP 127.0.0.1:8118 ή SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Αρχική</string>
-  <string name="menu_browse">Περιήγηση</string>
-  <string name="menu_settings">Ρυθμίσεις</string>
-  <string name="menu_log">Καταγραφή</string>
-  <string name="menu_info">Βοήθεια</string>
-  <string name="menu_start">Εκκίνηση</string>
-  <string name="menu_stop">Διακοπή</string>
-  <string name="menu_about">Σχετικά</string>
-  <string name="main_layout_download">Λήψη (ταχύτητα/σύνολο)</string>
-  <string name="main_layout_upload">Αποστολή (ταχύτητα/σύνολο)</string>
-  <string name="button_help">Βοήθεια</string>
-  <string name="button_close">Κλείσιμο</string>
-  <string name="button_about">Σχετικά</string>
-  <string name="button_clear_log">Διαγραφή Καταγραφής</string>
-  <string name="menu_verify">Έλεγχος</string>
-  <string name="menu_exit">Έξοδος</string>
-  <string name="press_to_start">-για να εκκινήσει κρατήστε το πατημένο-</string>
-  <string name="pref_trans_proxy_group">Διαφανής Πληρεξούσιος Διακομηστής (Απαιτεί διαχείριση root)</string>
-  <string name="pref_trans_proxy_title">Διαφανής Πληρεξούσιος Διακομηστής</string>
-  <string name="pref_trans_proxy_summary">Αυτόματη Προσαρμογή Εφαρμογών στο Tor</string>
-  <string name="pref_transparent_all_title">Ανωνυμοποίηση Όλων</string>
-  <string name="pref_transparent_all_summary">Να γίνεται η μεταβίβαση της κυκλοφορίας όλων των εφαρμογών μέσω του Tor</string>
-  <string name="pref_transparent_port_fallback_title">Θύρα αναδίπλωσης του πληρεξούσιου διακομιστή</string>
-  <string name="pref_transparent_port_fallback_summary">ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Παρακάμπτει τις κοινές θύρες (80, 443, κλπ). *ΝΑ ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΜΟΝΟΝ* όταν οι λειτουργίες \'All\' ή \'App\' δεν αποδίδουν.</string>
-  <string name="pref_transparent_port_title">Λίστα θυρών</string>
-  <string name="pref_transparent_port_summary">Λίστα θυρών πληρεξούσιου διακομιστή. *ΝΑ ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΜΟΝΟΝ* όταν οι λειτουργίες \'All\' ή \'App\' δεν αποδίδουν.</string>
-  <string name="pref_transparent_port_dialog">Εισάγετε θύρες πληρεξούσιου διακομιστή</string>
-  <string name="pref_has_root">Άιτημα πρόσβασης με δικαιώματα υπερχρήστη</string>
-  <string name="pref_has_root_summary">Άιτημα πρόσβασης με δικαιώματα υπερχρήστη για διαφανή μεταβίβαση δεδομένων μέσω πληρεξούσιου διακομιστή</string>
-  <string name="status_install_success">Τα δυαδικά αρχεία του Tor εγκαταστάθηκαν με επιτυχία!</string>
-  <string name="status_install_fail">Τα δυαδικά αρχεία του Tor δεν εγκαταστάθηκαν. Ελέγξτε τις καταγραφές και ειδοποιείστε στην διεύθυνση tor-assistants at torproject.org</string>
-  <string name="title_error">Σφάλμα εφαρμογής</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Σχετικά με το Orbot</string>
-  <string name="btn_next">Επόμενο</string>
-  <string name="btn_back">Πίσω</string>
-  <string name="btn_finish">Τέλος</string>
-  <string name="btn_okay">Okay</string>
-  <string name="btn_cancel">Άκυρο</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Μερικές λεπτομέρειες για το Orbot</string>
-  <string name="wizard_permissions_root">Η άδεια παραχωρήθηκε</string>
-  <string name="wizard_permissions_stock">Άδειες Orbot</string>
-  <string name="wizard_premissions_msg_root">Καλώς! Διαπιστώνουμε ότι έχετε ενεργοποιημένο τον υπερχρήστη για το Orbot. Θα χρησιμοποιήσουμε το προνόμιο αυτό με σύνεση.</string>
-  <string name="wizard_permissions_msg_stock"> Αν και δεν είναι απαραίτητο, το Orbot μπορεί να γίνει ισχυρότερο όταν η συσκευή σας έχει διαμορφωθεί για πρόσβαση υπερχρήστη. Πατήστε το πιο κάτω κουμπί για να δώσετε αυξημένα δικαιώματα στο Orbot! </string>
-  <string name="wizard_permissions_no_root">Αν δεν διαθέτετε πρόσβαση υπερχήστη ή δεν καταλαβαίνετε τι εννοούμε, απλώς χρησιμοποιείτε εφαρμογές που φτιάχτηκαν για να συνεργάζονται με το Orbot.</string>
-  <string name="wizard_permissions_consent">Καταλαβαίνω και θέλω να συνεχίσω ως Υπερχρήστης</string>
-  <string name="wizard_permission_enable_root">Απόδοση Διαχειρισης στο Orbot</string>
-  <string name="wizard_configure">Ρύθμιση Torification</string>
-  <string name="wizard_configure_msg">Το Orbot σας επιτρέπει να κατευθύνετε όλη την κυκλοφορία κάποιας εφαρμογής προς το Tor ή να επιλέξετε κάθε μια εφαρμογή ξεχωριστά.</string>
-  <string name="wizard_configure_all">Το Tor να γίνει ενδιάμεσος διακομιστής Proxy για όλες τις εφαρμογές</string>
-  <string name="wizard_configure_select_apps">Επιλογή μεμονωμένων εφαρμογών για το Tor</string>
-  <string name="wizard_tips_tricks">Εφαρμογές συμβατές για Orbont</string>
-  <string name="wizard_tips_msg">Οι παρακάτω εφαρμογές αναπτύχθηκαν ώστε να λειτουργούν με το Orbot. Πατήστε σε κάθε κουμπί για να εγκατασταθεί τώρα ή μπορείτε να τις βρείτε αργότερα στο Android Market</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Εφαρμογή ασφαλούς ανταλλαγής άμεσων μηνυμάτων για Android</string>
-  <string name="wizard_tips_proxy">Ρυθμίσεις proxy: Μάθετε πώς θα ρυθμίσετε τις εφαρμογές ώστε να λειτουργούν με το Orbot</string>
-  <string name="wizard_tips_duckgo">Εφαρμογή Μηχανής Αναζήτησης Duckduckgo</string>
-  <string name="wizard_tips_twitter">Το Twitter υποστηρίζει http proxy localhost:8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Ρυθμίσεις proxy</string>
-  <string name="wizard_final">Το Orbot είναι έτοιμο!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Θα ανοίξει ο περιηγητής δικτύου στην σελίδα https://check.torproject.org για να διαπιστώσετε αν το Orbot είναι σωστά ρυθμισμένο και ότι είστε συνδεδεμένος/η στο Tor.</string>
-  <string name="pref_hs_group">Φιλοξενία κρυφών υπηρεσιών</string>
-  <string name="pref_general_group">Γενικά</string>
-  <string name="pref_start_boot_title">Έναρξη του Orbot κατά την εκκίνηση</string>
-  <string name="pref_start_boot_summary">Αυτόματη έναρξη του Orbot και σύνδεση στο Tor όταν ξεκινά η Android συσκευή σας</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Προειδοποίηση</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Άδειες</string>
-  <string name="wizard_permissions_root_msg1">Αν θέλετε, μπορεί να δώσετε στο Orbot πρόσβαση \'Υπερχρήστη\' ώστε να ενεργοποιήσετε τα προχωρημένα χαρακτηριστικά, όπως το Transparent Proxying.</string>
-  <string name="wizard_permissions_root_msg2">Αν δεν θέλετε κάτι τέτοιο, βεβαιωθείτε ότι χρησιμοποιείτε εφαρμογές που συνεργάζονται με το Orbot</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Εφαρμογές συμβατές με Orbot</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Ασφαλές chat app με Off-the-Record κρυπτογράφηση</string>
-  <string name="wizard_tips_play">Βρες όλες τις εφαρμογές Guardian Project στο Google Play</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Διαφανής μεσολάβηση διακομιστή</string>
-  <string name="wizard_transproxy_msg">Το στοιχείο αυτό επιτρέπει στις εφαρμογές σας να λειτουργούν μέσω του δικτύου Tor χωρίς κάποια ρύθμιση.</string>
-  <string name="wizard_transproxy_hint">(Επιλέξτε αυτό το τετράγωνο αν δεν καταλαβαίνετε για τι πράγμα μιλάμε)</string>
-  <string name="wizard_transproxy_none">Καμία</string>
-  <string name="pref_transparent_tethering_title">Διασύνδεση Tor</string>
-  <string name="pref_transparent_tethering_summary">Ενεργοποίηση της Διαφανούς μεσολάβησης διακομιστή για συσκευές με WiFi και διασύνδεση USB (απαιτεί επανεκκίνηση)</string>
-  <string name="button_grant_superuser">Αίτημα Πρόσβασης Υπερχρήστη</string>
-  <string name="pref_select_apps">Επιλογή εφαρμογών</string>
-  <string name="pref_select_apps_summary">Επιλέξτε τις εφαρμογές που θα διέλθουν μέσω Tor</string>
-  <string name="pref_node_configuration">Ρύθμιση κόμβου</string>
-  <string name="pref_node_configuration_summary">Οι ρυθμίσεις αυτές είναι προχωρημένες και μπορούν να μειώσουν την ανωνυμία σας.</string>
-  <string name="pref_entrance_node">Κόμβοι εισόδου</string>
-  <string name="pref_entrance_node_summary">Αποτυπώματα, ψευδώνυμα, χώρες και διευθύνσεις για την πρώτη σύνδεση</string>
-  <string name="pref_entrance_node_dialog">Εισάγετε κόμβους εισαγωγής</string>
-  <string name="pref_proxy_title">Διακομιστής μεσολάβησης εξερχομένων δεδομένων</string>
-  <string name="pref_proxy_type_title">Τύπος του διακομιστή μεσολάβησης εξερχομένων δεδομένων</string>
-  <string name="pref_proxy_type_summary">Πρωτόκολλο του διακομιστή μεσολάβησης: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Εισάγετε τύπο διακομιστή μεσολάβησης</string>
-  <string name="pref_proxy_host_title">Διακομιστής μεσολάβησης εξερχόμενων δεδομένων</string>
-  <string name="pref_proxy_host_summary">Hostname Διακομιστή Μεσολάβησης</string>
-  <string name="pref_proxy_host_dialog">Εισάγετε τον υπολογιστή για τον διακομιστή μεσολάβησης</string>
-  <string name="pref_proxy_port_title">Θύρα εξερχομένων του διακομιστή μεσολάβησης</string>
-  <string name="pref_proxy_port_summary">Θύρα Διακομιστή Μεσολάβησης</string>
-  <string name="pref_proxy_port_dialog">Εισάγετε την θύρα του διακομιστή μεσολάβησης</string>
-  <string name="pref_proxy_username_title">Όνομα χρήστη για τον Διακομιστή Μεσολάβησης εξερχόμενων δεδομένων</string>
-  <string name="pref_proxy_username_summary">Όνομα χρήστη για το Διακομιστή Μεσολάβησης (Προαιρετικό)</string>
-  <string name="pref_proxy_username_dialog">Εισάγετε το Όνομα Χρήστη για το Διακομιστή Μεσολάβησης</string>
-  <string name="pref_proxy_password_title">Κωδικός για τον Διακομιστή Μεσολάβησης εξερχόμενων δεδομένων</string>
-  <string name="pref_proxy_password_summary">Κωδικός για τον Διακομιστή Μεσολάβησης (Προαιρετικό)</string>
-  <string name="pref_proxy_password_dialog">Εισάγετε τον Κωδικό για τον Διακομιστή Μεσολάβησης</string>
-  <string name="status">Κατάσταση</string>
-  <string name="setting_up_full_transparent_proxying_">Ρύθμιση </string>
-  <string name="setting_up_app_based_transparent_proxying_">Ρύθμιση της διαφανούς μεσολάβησης διακομιστή</string>
-  <string name="transparent_proxying_enabled">Η διαφανής μεσολάβηση διακομιστή ΕΝΕΡΓΟΠΟΙΗΘΗΚΕ</string>
-  <string name="transproxy_enabled_for_tethering_">Το TransProxy ενεργοποιήθηκε για την διασύνδεση - Tethering</string>
-  <string name="warning_error_starting_transparent_proxying_">ΠΡΟΕΙΔΟΠΟΙΗΣΗ: σφάλμα κατά την εκκίνηση της διαφανούς μεσολάβησης διακομιστή!</string>
-  <string name="transproxy_rules_cleared">Οι ρυθμίσεις του TransProxy απομακρύνθηκαν</string>
-  <string name="couldn_t_start_tor_process_">Αδυναμία εκκίνησης της διεργασίας Tor:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Ρύθμιση της διαφανούς μεσολάβησης διακομιστή κατά θύρα...</string>
-  <string name="bridge_error">Σφάλμα γέφυρας</string>
-  <string name="bridge_requires_ip">Για να χρησιμοποιήσετε το στοιχείο γέφυρας, πρέπει να εισάγετε την διεύθυνση ΙΡ τουλάχιστον μιας γέφυρας.</string>
-  <string name="send_email_for_bridges">Μέσω ενός λογαριασμού gmai στείλτε ένα μήνυμα στην διεύθυνση bridges at torproject.org με την φαση \"get bridges\" μόνη της στο σώμα το μηνύματος.</string>
-  <string name="error">Σφάλμα</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Οι ρυθμίσεις ReachableAddresses προκάλεσαν μια εξαίρεση!</string>
-  <string name="your_relay_settings_caused_an_exception_">Οι ρυθμίσεις αναμεταδότη σας προκάλεσαν μια εξαίρεση!</string>
-  <string name="exit_nodes">Κόμβοι εξόδου</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Αποτυπώματα, ψευδώνυμα, χώρες και διευθύνσεις της τελευταίας σύνδεσης</string>
-  <string name="enter_exit_nodes">Εισάγετε κόμβους εξόδου</string>
-  <string name="exclude_nodes">Εξαιρετέοι κόμβοι</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Αποτυπώματα, ψευδώνυμα, χώρες και διευθύνσεις προς εξαίρεση</string>
-  <string name="enter_exclude_nodes">Εισάγετε Εξαιρετέους κόμβους</string>
-  <string name="strict_nodes">Αποκλειστικοί κόμβοι</string>
-  <string name="use_only_these_specified_nodes">Χρήση *μόνον* αυτών των συγκεκριμένων κόμβων</string>
-  <string name="bridges">Γέφυρες</string>
-  <string name="use_bridges">Χρήση γεφυρών</string>
-  <string name="bridges_obfuscated">Κρυφές γέφυρες</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Ενεργοποίηση εναλλακτικών κόμβων εισόδου στο δίκτυο Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Ενεργοποιήστε το αν οι ρυθμισμένες γέφυρες είναι κρυφές</string>
-  <string name="ip_address_and_port_of_bridges">Διεύθυνση ΙΡ και θύρα των γεφυρών</string>
-  <string name="enter_bridge_addresses">Εισάγετε την διεύθυνση της γέφυρας</string>
-  <string name="relays">Αναμεταδότες</string>
-  <string name="relaying">Γίνεται αναμετάδοση</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Μετατρέψτε την συσκευή σας σε ένα αναμεταδότη μη-εξόδου</string>
-  <string name="relay_port">Θύρα αναμετάδοσης</string>
-  <string name="listening_port_for_your_tor_relay">Θύρα ακρόασης για τον αναμεταδότη σας</string>
-  <string name="enter_or_port">Εισάγετε την θύρα OR</string>
-  <string name="relay_nickname">Ψευδώνυμο του αναμεταδότη</string>
-  <string name="the_nickname_for_your_tor_relay">Το ψευδώνυμο του αναμεταδότη σας Tor</string>
-  <string name="enter_a_custom_relay_nickname">Εισάγετε ένα προτιμώμενο ψευδώνυμο αναμεταδότη</string>
-  <string name="reachable_addresses">Προσιτές διευθύνσεις</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Εκτέλεση ως πελάτη πίσω από τοίχος προστασίας με περιοριστικές πολιτικές</string>
-  <string name="reachable_ports">Προσιτές θύρες</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Προσιτές θύρες πίσω από περιοριστικό τοίχος προστασίας</string>
-  <string name="enter_ports">Εισάγετε θύρες</string>
-  <string name="enable_hidden_services">Φιλοξενία κρυφών υπηρεσιών</string>
-  <string name="run_servers_accessible_via_the_tor_network">να επιτρέπετε στον διακομιστή της συσκευής να είναι προσβάσιμος μέσω του δικτύου Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">εισάγετε τις θύρες κρυφών υπηρεσιών του localhost</string>
-  <string name="hidden_service_ports">Θύρες κρυφών υπηρεσιών</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">το όνομα προσπέλασης για τις κρυφές υπηρεσίες σας (παράγεται αυτόματα)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">ενεργοποίηση καταγραφών αποσφαλμάτωσης (για την προβολή τους απαιτείται χρήση adb ή aLogCat)</string>
-  <string name="project_home">Ιστοσελίδες του έργου:</string>
-  <string name="the_tor_license">Η Άδεια Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Λογισμικό τρίτων:</string>
-  <string name="hidden_service_request">Κάποια εφαρμογή προσπαθεί να ανοίξει την κρυφή θύρα διακομιστή %S στο δίκτυο Tor. Πρόκειται για ασφαλή ενέργεια, εφόσον γνωρίζετε την εφαρμογή.</string>
-  <string name="found_existing_tor_process">αναζήτηση διεργασιών Tor...</string>
-  <string name="something_bad_happened">Κάτι κακό συνέβη. Ελέγξτε τις καταγραφές</string>
-  <string name="hidden_service_on">ενεργοποιημένη κρυφή υπηρεσία:</string>
-  <string name="unable_to_read_hidden_service_name">αδυναμία ανάγνωσης του ονόματος της κρυφής υπηρεσίας</string>
-  <string name="unable_to_start_tor">Αδυναμία εκκίνησης του Tor:</string>
-  <string name="pref_use_sys_iptables_title">Χρήση αρχικού iptables</string>
-  <string name="pref_use_sys_iptables_summary">χρήση του ενσωματωμένου iptables αντί για εκείνων του πακέτου Orbot</string>
-  <string name="error_installing_binares">Τα αρχεία Tor δεν μπόρεσαν να εγκατασταθούν ή να αναβαθμιστούν.</string>
-  <string name="pref_use_persistent_notifications">Να διατηρείται πάντοτε το εικονίδιο στην γραμμή εργαλείων όταν το Orbot συνδέεται</string>
-  <string name="pref_use_persistent_notifications_title">Ειδοποιήσεις διαρκούς σύνδεσης</string>
-  <string name="notification_using_bridges">Οι γέφυρες ενεργοποιήθηκαν!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Επιλέξτε ρυθμίσεις τοπικότητας και γλώσσας για το Orbot</string>
-  <string name="wizard_locale_title">Επιλέξτε γλώσσα</string>
-  <string name="wizard_locale_msg">Παραμείνετε στην αρχική ή αλλάξτε την τρέχουσα γλώσσα</string>
-  <string name="btn_save_settings">Αποθήκευση ρυθμίσεων</string>
-  <string name="bandwidth_">Εύρος ζώνης:</string>
-  <string name="down">κατέβασμα</string>
-  <string name="up">ανέβασμα</string>
-  <string name="pref_disable_network_title">Χωρίς Αυτόματη Αναστολή Δικτύου</string>
-  <string name="pref_disable_network_summary">Θέσε το Tor σε λειτουργία sleep όταν δεν υπάρχει διαθέσιμη σύνδεση Ιnternet</string>
-  <string name="newnym">Έχετε αλλάξει επιτυχώς την ταυτότητα σας στο Tor! </string>
-  <string name="menu_use_chatsecure">Χρήση του ChatSecure</string>
-  <string name="permission_manage_tor_label">Διαχείριση Tor</string>
-  <string name="permission_manage_tor_description">Εξουσιοδοτήστε την εφαρμογή να ελέγχει την υπηρεσία του Tor</string>
-  <string name="install_apps_">Εγκατάσταση εφαρμογών?</string>
-</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
deleted file mode 100644
index 0151874..0000000
--- a/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="btn_next">Next</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-eo/strings.xml b/res/values-eo/strings.xml
deleted file mode 100644
index 1c8a380..0000000
--- a/res/values-eo/strings.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">ŝalti kaj malŝalti Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot ŝaltiĝas...</string>
-  <string name="status_activated">Konektita al Tor-reto</string>
-  <string name="status_disabled">Orbot estas malaktivigita</string>
-  <string name="tor_process_starting">Ŝaltiĝas Tor-kliento...</string>
-  <string name="tor_process_complete">kompleta.</string>
-  <string name="tor_process_waiting">atendas.</string>
-  <string name="not_anonymous_yet">ATENTIGO: Via trafiko ankoraŭ ne estas anonima! Bonvolu agordi viajn aplikaĵojn por uzi HTTP-prokurilon 127.0.0.1:8118 aŭ SOCKS4A- aŭ SOCKS5-prokurilo 127.0.0.1:9050</string>
-  <string name="menu_home">Hejma tasto</string>
-  <string name="menu_browse">Foliumi</string>
-  <string name="menu_settings">Agordoj</string>
-  <string name="menu_log">Protokolo</string>
-  <string name="menu_info">Helpo</string>
-  <string name="menu_start">Starti</string>
-  <string name="menu_stop">Halti</string>
-  <string name="menu_about">Pri</string>
-  <string name="main_layout_download">Elŝutado</string>
-  <string name="main_layout_upload">Alŝutado</string>
-  <string name="button_help">Helpo</string>
-  <string name="button_close">Fermi</string>
-  <string name="button_about">Pri</string>
-  <string name="button_clear_log">Forviŝi protokolon</string>
-  <string name="menu_verify">Kontroli</string>
-  <string name="menu_exit">Eliri</string>
-  <string name="press_to_start">- longe puŝi por ŝalti -</string>
-  <string name="pref_trans_proxy_summary">Aŭtomata Tor-igo de Aplikaĵoj</string>
-  <string name="pref_transparent_all_title">Tor-igu ĉion</string>
-  <string name="pref_transparent_port_title">Listo de Pordoj</string>
-  <string name="pref_has_root">Peti Administrajn Rajtojn</string>
-  <string name="status_install_success">Binara kodo de Tor estas sukcese instalita!</string>
-  <string name="status_install_fail">Binaraj dosieroj de Tor ne povis esti instalitaj. Kontrolu protokolon kaj sciigu nin per tor-assistants at torproject.org</string>
-  <string name="title_error">Eraro de Aplikaĵo</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Pri Orbot</string>
-  <string name="btn_next">Sekva</string>
-  <string name="btn_back">Malantaŭe</string>
-  <string name="btn_finish">Fini</string>
-  <string name="btn_cancel">Rezigni</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Kelkaj Detaloj pri Orbot</string>
-  <string name="wizard_permissions_root">Permeso estas Aluĝita</string>
-  <string name="wizard_permissions_stock">Permesoj de Orbot</string>
-  <string name="wizard_permissions_consent">Mi komprenas kaj volas daŭri sen administraj rajtoj</string>
-  <string name="wizard_configure">Agordi Tor-igon</string>
-  <string name="wizard_configure_select_apps">Elekti Individualajn Aplikaĵojn por Tor</string>
-  <string name="wizard_tips_tricks">Aplikaĵoj permesitaj por Orbot</string>
-  <string name="wizard_tips_otrchat">ChatSecutre - Sekura tujmesaĝilo por Android</string>
-  <string name="wizard_tips_proxy">Agordoj de prokurilo - Lernu kiel agordi aplikaĵojn por kunlabori kun Orbot</string>
-  <string name="wizard_tips_twitter">Agordi prokurilon por Twitter je adreso \"localhost\" kaj pordo 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Retperant‐agordoj</string>
-  <string name="wizard_final">Orbot estas preparita!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_hs_group">Gastigado de kaŝita servo</string>
-  <string name="pref_general_group">Ĝenerala</string>
-  <string name="pref_start_boot_title">Ŝalti Orbot dum praŝargado</string>
-  <string name="pref_start_boot_summary">Aŭtomate startigi Orbot kaj konekti al Tor dum praŝargado de via Androida ilo</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Averto</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Permesoj</string>
-  <string name="wizard_permissions_root_msg2">Se vi ne volas fari tion, bonvolu certiĝi ke eblas agordi aplikaĵojn por kunlabori kun Orbot</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Aplikaĵoj permesitaj por Orbot</string>
-  <string name="wizard_tips_play">Trovu ĉiujn aplikaĵojn de Guardian Project ĉe Google Play</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_hint">(Marku ĉi tiun butonon se vi ne scias pri kio ni parolas)</string>
-  <string name="wizard_transproxy_none">Neniom</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="button_grant_superuser">Peti Administrajn Rajtojn</string>
-  <string name="pref_select_apps">Elekti aplikaĵojn</string>
-  <string name="pref_node_configuration">Agordo de Nodoj</string>
-  <string name="pref_node_configuration_summary">Tie troviĝas progresintaj agordoj kiuj povas limigi vian anonimecon</string>
-  <string name="pref_entrance_node">Eniraj nodoj</string>
-  <string name="pref_entrance_node_summary">Fingrospuroj, kaŝnomoj, landoj kaj adresoj por la unua hopo</string>
-  <string name="pref_entrance_node_dialog">Entajpu enirajn nodojn</string>
-  <string name="pref_proxy_title">Elira prokurilo (Malnepra)</string>
-  <string name="pref_proxy_type_title">Tipo de elira prokurilo</string>
-  <string name="pref_proxy_type_summary">Protokolo uzata de la prokurilo: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Entajpu tipon de la prokurilo</string>
-  <string name="pref_proxy_host_title">Adreso de la elira prokurilo</string>
-  <string name="pref_proxy_host_summary">Adresnomo de la prokurilo</string>
-  <string name="pref_proxy_host_dialog">Entajpu adreson</string>
-  <string name="pref_proxy_port_title">Pordo de la elira prokurilo</string>
-  <string name="pref_proxy_port_summary">Pordo de la Prokurservilo</string>
-  <string name="pref_proxy_port_dialog">Entajpu la pordon</string>
-  <string name="pref_proxy_username_title">Uzantnomo de la elira prokurilo</string>
-  <string name="pref_proxy_username_summary">Uzantnomo de la prokurilo (Malnepra)</string>
-  <string name="pref_proxy_username_dialog">Entajpu uzantnomon</string>
-  <string name="pref_proxy_password_title">Pasvorto de la elira prokurilo</string>
-  <string name="pref_proxy_password_summary">Pasvorto de la prokurilo (Malnepra)</string>
-  <string name="pref_proxy_password_dialog">Entajpu pasvorton</string>
-  <string name="status">Stato</string>
-  <string name="couldn_t_start_tor_process_">Tor-procedo ne sukcesis stariĝi:</string>
-  <string name="bridge_error">Eraro de Ponto</string>
-  <string name="error">Eraro</string>
-  <string name="your_relay_settings_caused_an_exception_">Via agordo de relajso kaŭzis escepton!</string>
-  <string name="exit_nodes">Finnodoj</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingrospuroj, kaŝnomoj, landoj kaj adresoj por la lasta hopo</string>
-  <string name="enter_exit_nodes">Entajpu finnofojn</string>
-  <string name="use_only_these_specified_nodes">Uzi *nur* tiujn ĉi nodojn</string>
-  <string name="bridges">Pontoj</string>
-  <string name="use_bridges">Uzi Pontojn</string>
-  <string name="ip_address_and_port_of_bridges">IP-adresoj kaj pordoj de pontoj</string>
-  <string name="enter_or_port">Entajpu OR-pordon</string>
-  <string name="relay_nickname">Kaŝnomo de la relajso</string>
-  <string name="the_nickname_for_your_tor_relay">Kaŝnomo por via Tor-relajso</string>
-  <string name="enter_a_custom_relay_nickname">Entajpu propran kaŝnomon de la relajso</string>
-  <string name="reachable_addresses">Atingeblaj adresoj</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Startigi kiel kliento malantaŭ fajromuro kun restriktaj reguloj</string>
-  <string name="reachable_ports">Atingeblaj pordoj</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Pordoj, kiuj atingeblas tra la restrikta fajromuro</string>
-  <string name="enter_ports">Entajpu pordojn</string>
-  <string name="enable_hidden_services">Gastigado de Kaŝitaj Servoj</string>
-  <string name="run_servers_accessible_via_the_tor_network">permesi al servilo sur ĉi tiu aparato esti atingebla per Tor-reto</string>
-  <string name="enter_localhost_ports_for_hidden_services">entajpi localhost-pordojn de kaŝitaj servoj</string>
-  <string name="hidden_service_ports">Pordoj de Kaŝitaj Servoj</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">adreso de via kaŝita servo (aŭtomate generata)</string>
-  <string name="project_home">Retpaĝaro(j) de la Projekto:</string>
-  <string name="the_tor_license">The Tor License</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="found_existing_tor_process">trovi ekzistantan Tor-procedon...</string>
-  <string name="hidden_service_on">kaŝitaj servoj je:</string>
-  <string name="unable_to_read_hidden_service_name">ne eblas legi nomon de la kaŝita servo</string>
-  <string name="unable_to_start_tor">Ne eblas startigi Tor:</string>
-  <string name="pref_use_sys_iptables_title">Uzi defaŭltajn Iptables</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Elekti lokaĵaron kaj lingvon por Orbot</string>
-  <string name="wizard_locale_title">Elekti lingvon</string>
-  <string name="btn_save_settings">Konservi Agordojn</string>
-  <string name="bandwidth_">Kapacito:</string>
-  <string name="down">el</string>
-  <string name="up">al</string>
-  <string name="menu_use_chatsecure">Uzi ChatSecure</string>
-  <string name="install_apps_">Instali aplikaĵojn?</string>
-</resources>
diff --git a/res/values-es-rAR/strings.xml b/res/values-es-rAR/strings.xml
deleted file mode 100644
index d58340e..0000000
--- a/res/values-es-rAR/strings.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">reiniciar Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot está iniciándose...</string>
-  <string name="status_activated">Conectado a la red Tor</string>
-  <string name="status_disabled">\"Orbot está Desactivado</string>
-  <string name="tor_process_starting">Iniciando el cliente Tor...</string>
-  <string name="tor_process_complete">Completar</string>
-  <string name="tor_process_waiting">esperando...</string>
-  <string name="not_anonymous_yet">CIUDADO: Tu tráfico no es anónimo aún! Por favor configura tus aplicaciones para que usen el HTTP proxy 127.0.0.1:8118 o SOCKS4A o el proxy SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Inicio</string>
-  <string name="menu_browse">Navegar</string>
-  <string name="menu_settings">Configuración</string>
-  <string name="menu_log">Registro</string>
-  <string name="menu_info">Ayuda</string>
-  <string name="menu_start">Iniciar</string>
-  <string name="menu_stop">Detener</string>
-  <string name="menu_about">Acerca de</string>
-  <string name="main_layout_download">Descargar</string>
-  <string name="main_layout_upload">Subir</string>
-  <string name="button_help">Ayuda</string>
-  <string name="button_close">Cerrar</string>
-  <string name="button_about">Acerca de</string>
-  <string name="button_clear_log">Borrar Registros</string>
-  <string name="menu_verify">Chequear</string>
-  <string name="menu_exit">Salir</string>
-  <string name="pref_trans_proxy_group">Proxying Transparente (Requiere Root)</string>
-  <string name="pref_trans_proxy_title">Proxying Transparente</string>
-  <string name="pref_trans_proxy_summary">Torificación Automática de Aplicaciones</string>
-  <string name="pref_transparent_all_title">Torear Todo</string>
-  <string name="status_install_fail">Los archivos binarios Tor no pudieron ser instalado. Compruebe el registro y notificar a tor-assistants at torproject.org</string>
-  <string name="title_error">Error de la aplicación</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Acerca de Orbot</string>
-  <string name="btn_next">Siguiente</string>
-  <string name="btn_back">Atrás</string>
-  <string name="btn_finish">Finalizar</string>
-  <string name="btn_okay">Ok</string>
-  <string name="btn_cancel">Cancelar</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Algunos detalles de Orbot</string>
-  <string name="wizard_final">Orbot está listo!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">General</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Proxying Transparente</string>
-  <string name="pref_proxy_password_dialog">Ingrese contraseña Proxy</string>
-  <string name="enter_ports">Ingresar puertos</string>
-  <string name="the_tor_license">La Licencia de Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="unable_to_start_tor">No se puede iniciar Tor:</string>
-  <string name="default_bridges"></string>
-  <string name="wizard_locale_title">Elegir el lenguaje</string>
-  <string name="btn_save_settings">Guardar configuración</string>
-  <string name="bandwidth_">Ancho de banda:</string>
-  <string name="menu_use_chatsecure">Usar ChatSecure</string>
-  <string name="install_apps_">Instalar apps?</string>
-</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
deleted file mode 100644
index bfcbe14..0000000
--- a/res/values-es/strings.xml
+++ /dev/null
@@ -1,294 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot es una aplicación libre de proxy (interpuesto) que faculta a otras aplicaciones para usar Internet de forma más segura. Orbot utiliza Tor para cifrar su tráfico de Internet, y luego lo oculta rebotándolo a través de una serie de computadoras por todo el mundo. Tor es software libre y una red abierta que le ayuda a defenderse contra una forma de vigilancia de red conocida como análisis de tráfico que amenaza la libertad y la privacidad personales, las actividades y relaciones comerciales confidenciales, y la seguridad de estado.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">https://check.torproject.org/?lang=es</string>
-  <string name="secure_default_web_url">https://check.torproject.org/?lang=es</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">iniciar y detener Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot está iniciandose...</string>
-  <string name="status_activated">Conectado a la red Tor</string>
-  <string name="status_disabled">Orbot está desactivado</string>
-  <string name="status_shutting_down">TorService se está cerrando</string>
-  <string name="tor_process_starting">Iniciando cliente Tor...</string>
-  <string name="tor_process_complete">completado.</string>
-  <string name="tor_process_waiting">en espera.</string>
-  <string name="not_anonymous_yet">ADVERTENCIA: ¡Su tráfico no es anónimo aún! Configure sus aplicaciones para utilizar proxy HTTP 127.0.0.1:8118, o proxy SOCKS4A o SOCKS5 127.0.0.1:9050 (o podría habilitar la proxyficación transparente si su dispositivo está rooteado)</string>
-  <string name="menu_home">Principal</string>
-  <string name="menu_browse">Examinar</string>
-  <string name="menu_settings">Configuración</string>
-  <string name="menu_log">Registro (log)</string>
-  <string name="menu_info">Ayuda</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Iniciar</string>
-  <string name="menu_stop">Detener</string>
-  <string name="menu_about">Acerca de</string>
-  <string name="menu_promo_apps">Obtener aplicaciones...</string>
-  <string name="main_layout_download">Descarga</string>
-  <string name="main_layout_upload">Subida</string>
-  <string name="button_help">Ayuda</string>
-  <string name="button_close">Cerrar</string>
-  <string name="button_about">Acerca de</string>
-  <string name="button_clear_log">Limpiar registro (log)</string>
-  <string name="menu_verify">Verificar</string>
-  <string name="menu_exit">Salir</string>
-  <string name="menu_scan">Escanear QR de bridge</string>
-  <string name="menu_share_bridge">Compartir QR de bridge</string>
-  <string name="press_to_start">- mantega pulsado para iniciar -</string>
-  <string name="pref_trans_proxy_group">Proxyficación transparente (requiere root)</string>
-  <string name="pref_trans_proxy_title">Proxyficación transparente</string>
-  <string name="pref_trans_proxy_summary">Torificado automático de aplicaciones</string>
-  <string name="pref_transparent_all_title">Torificar todo</string>
-  <string name="pref_transparent_all_summary">Proxyfica vía Tor el tráfico de todas las aplicaciones sin configurarlas</string>
-  <string name="pref_transparent_port_fallback_title">Puertos a proxyficar para contingencias</string>
-  <string name="pref_transparent_port_fallback_summary">ADVERTENCIA: Evita puertos comunes (80, 443, etc). *USAR SÓLO* si los modos \'Todo\' o \'Aplicaciones\' no funcionan.</string>
-  <string name="pref_transparent_port_title">Lista de puertos</string>
-  <string name="pref_transparent_port_summary">Lista de puertos a proxyficar. *USAR SÓLO* si los modos \'Todo\' o \'Aplicaciones\' no funcionan</string>
-  <string name="pref_transparent_port_dialog">Introduzca los puertos a proxyficar</string>
-  <string name="pref_has_root">Solicitar permisos de root</string>
-  <string name="pref_has_root_summary">Solicita permisos de root para usar proxyficación transparente</string>
-  <string name="status_install_success">¡Los binarios de Tor se instalaron con éxito!</string>
-  <string name="status_install_fail">Los archivos binarios de Tor no pudieron ser instalados. Revise el registro (log) y notifique a tor-assistants at torproject.org</string>
-  <string name="title_error">Error de la aplicación</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Acerca de Orbot</string>
-  <string name="btn_next">Siguiente</string>
-  <string name="btn_back">Atrás</string>
-  <string name="btn_finish">Finalizar</string>
-  <string name="btn_okay">Aceptar</string>
-  <string name="btn_cancel">Cancelar</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Algunos detalles de Orbot</string>
-  <string name="wizard_details_msg">Orbot es una aplicación de código-abierto que contiene Tor, LibEvent y Polipo. Proporciona un proxy HTTP (8118) y un proxy SOCKS (9050) locales hacia la red Tor. Orbot también tiene la capacidad, en un dispositivo rooteado, de enviar todo el tráfico de Internet a través de Tor.</string>
-  <string name="wizard_permissions_root">Permiso concedido</string>
-  <string name="wizard_permissions_stock">Permisos de Orbot</string>
-  <string name="wizard_premissions_msg_root">¡Excelente! Hemos detectado que ha concedido a Orbot permisos de root. Utilizaremos estos poderes sabiamente.</string>
-  <string name="wizard_permissions_msg_stock"> Aunque no es un requisito, Orbot puede convertirse en una herramienta más potente si accede a su dispositivo con permisos de root. ¡Utilice el botón inferior para conceder superpoderes a Orbot!</string>
-  <string name="wizard_permissions_no_root">Si no tiene acceso como root o no tiene idea de qué estamos hablando, tan solo asegúrese de utilizar aplicaciones específicamente preparadas para trabajar con Orbot (o que permitan conexión por proxy HTTP o SOCKS).</string>
-  <string name="wizard_permissions_consent">Comprendo, y quiero continuar sin poderes administrativos</string>
-  <string name="wizard_permission_enable_root">Conceder permisos de root a Orbot</string>
-  <string name="wizard_configure">Configurar torificación</string>
-  <string name="wizard_configure_msg">Orbot le da la opción de dirigir el tráfico de todas las aplicaciones a través de Tor - o - de seleccionar sus aplicaciones a torificar individualmente.</string>
-  <string name="wizard_configure_all">Proxyficar todas la aplicaciones a través de Tor</string>
-  <string name="wizard_configure_select_apps">Seleccionar aplicaciones individuales para Tor</string>
-  <string name="wizard_tips_tricks">Aplicaciones habilitadas para Orbot</string>
-  <string name="wizard_tips_msg">Las siguientes aplicaciones fueron desarrolladas para trabajar con Orbot. Haga clic en cada botón para instalarlas ahora, o puede encontrarlas más tarde en Google Play, en la web guardianproject.info o vía f-droid.org </string>
-  <string name="wizard_tips_otrchat">ChatSecure - Cliente de mensajería instantánea segura para Android</string>
-  <string name="wizard_tips_proxy">Preferencias para proxy - aprenda cómo configurar aplicaciones para que trabajen con Orbot</string>
-  <string name="wizard_tips_duckgo">Aplicación del motor de búsqueda DuckDuckGo</string>
-  <string name="wizard_tips_twitter">Configure por proxy la aplicación de Twitter en localhost:8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - ¡Elabore una historia y déjesela a Tor por seguridad!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Preferencias para proxy</string>
-  <string name="wizard_proxy_help_msg">Si la aplicación Android que está utilizando puede soportar el uso de un proxy (interpuesto) HTTP o SOCKS, entonces puede configurarla para que conecte a Orbot y use Tor.\n\n\nLa configuración del servidor es 127.0.0.1 o \"localhost\". Para HTTP, la configuración del puerto es 8118. Para SOCKS, el proxy está en el 9050. Debe utilizar la configuración para SOCKS4A o SOCKS5 si es posible.\n\n\n\nPuede aprender más acerca de proxyficación en Android a través de las preguntas frecuentes (FAQ) en: http://tinyurl.com/proxyandroid\n </string>
-  <string name="wizard_final">¡Orbot está listo!</string>
-  <string name="wizard_final_msg">Millones de personas por todo el mundo usan Tor por una amplia variedad de razones.\n\nPeriodistas y blogueros, defensores de los derechos humanos, funcionarios judiciales, corporaciones, ciudadanos bajo regímenes represivos, y simples ciudadanos corrientes... ¡y ahora usted también está listo!</string>
-  <string name="wizard_exit_at_first_screen_toast">¡Por favor, configure Orbot antes para poder comenzar a usarlo!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Ha conectado con éxito a la red Tor - pero esto no significa que su dispositivo sea seguro. Puede usar el botón \'Navegador\' para probar su conexión. \n\nVisítenos en https://guardianproject.info/apps/orbot o envíe un correo electrónico a help at guardianproject.info para conocer más.</string>
-  <string name="tor_check">Esto abrirá https://check.torproject.org/?lang=es en su navegador predeterminado para comprobar que Orbot esté configurado y que esté conectado a Tor.</string>
-  <string name="pref_hs_group">Alojamiento de servicios ocultos (dentro de la red Tor)</string>
-  <string name="pref_general_group">General</string>
-  <string name="pref_start_boot_title">Iniciar Orbot en el arranque</string>
-  <string name="pref_start_boot_summary">Inicia Orbot y conecta a Tor automáticamente cuando arranca su dispositivo Android</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">¡Orbot trae Tor a Android!\n\nTor le ayuda a defenderse contra el filtrado de contenido, el análisis de tráfico y la vigilancia de la red, que amenazan la privacidad, la información confidencial y las relaciones personales.\n\nEste asistente le ayudará a configurar Orbot y Tor en su dispositivo.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Advertencia</string>
-  <string name="wizard_warning_msg">Simplemente instalando Orbot no anonimizará automáticamente su tráfico móvil/celular.\n\nPara usar Tor con éxito tiene que configurar adecuadamente Orbot, su dispositivo, y otras aplicaciones.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Permisos</string>
-  <string name="wizard_permissions_root_msg1">Opcionalmente puede conceder permisos de \'Superusuario\' a Orbot para habilitar las características avanzadas, como la proxyficación transparente.</string>
-  <string name="wizard_permissions_root_msg2">Si no desea hacer esto, asegúrese de utilizar aplicaciones específicamente preparadas para trabajar con Orbot (o configurables para ello)</string>
-  <string name="wizard_permissions_no_root_msg">Su dispositivo no parece estar rooteado o proporcionar root o acceso de \"Superusuario\".\n\nEn su lugar, por favor, pruebe con el modo \'Aplicaciones\' en la pantalla principal.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Aplicaciones habilitadas para Orbot</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Aplicación de chat segura con cifrado Off-The-Record (OTR)</string>
-  <string name="wizard_tips_orweb">Orfox: Navegador con privacidad mejorada que funciona a través de Tor</string>
-  <string name="wizard_tips_play">Descubre todas las aplicaciones de Guardian Project en Google Play</string>
-  <string name="wizard_tips_fdroid">Encontrará todas las aplicaciones del Guardian Project en F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Encontrará todas las aplicaciones del Guardian Project en https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Proxyficación transparente</string>
-  <string name="wizard_transproxy_msg">Permite que sus aplicaciones se ejecuten automáticamente a través de la red Tor sin realizar configuración alguna.</string>
-  <string name="wizard_transproxy_hint">(Marque esta casilla si no tiene idea de qué estamos hablando)</string>
-  <string name="wizard_transproxy_none">Ninguno</string>
-  <string name="pref_transparent_tethering_title">Tor tethering</string>
-  <string name="pref_transparent_tethering_summary">Habilita la proxyficación transparente de Tor para dispositivos tethered (dispositivos móviles \"amarrados\", pasarela a Internet para otros dispositivos conectados a ellos mediante Wifi, USB o Bluetooth) -- (requiere reinicio)</string>
-  <string name="button_grant_superuser">Solicitar permisos de superusuario</string>
-  <string name="pref_select_apps">Seleccionar aplicaciones</string>
-  <string name="pref_select_apps_summary">Escoja las aplicaciones a redirigir través de Tor</string>
-  <string name="pref_node_configuration">Configuración de nodos</string>
-  <string name="pref_node_configuration_summary">¡Estas son configuraciones avanzadas que pueden reducir su anonimato! Afectan a los circuitos (túneles) que se establezcan para su propio tráfico a través de Tor; si repite tráfico ajeno estas configuraciones no afectan a esos circuitos.</string>
-  <string name="pref_entrance_node">Nodos de entrada</string>
-  <string name="pref_entrance_node_summary">Reglas de identificación de repetidores de entrada a la red Tor, mediante huellas de validación de claves (fingerprints), alias (nicks), códigos de país y 
-direcciones (o rangos). No prevalecen sobre las configuraciones de exclusión de nodos, y las configuraciones de bridges.</string>
-  <string name="pref_entrance_node_dialog">Introduzca nodos de entrada</string>
-  <string name="pref_allow_background_starts_title">Permitir inicios en segundo plano</string>
-  <string name="pref_allow_background_starts_summary">Deja que cualquier aplicación le diga a Orbot que inicie Tor y servicios relacionados</string>
-  <string name="button_proxy_all">Proxyficar todo</string>
-  <string name="button_proxy_none">No proxyficar nada</string>
-  <string name="button_invert_selection">Invertir selección</string>
-  <string name="pref_proxy_title">Proxy de salida a la red (opcional)</string>
-  <string name="pref_proxy_type_title">Tipo de proxy saliente</string>
-  <string name="pref_proxy_type_summary">Protocolo a usar para el servidor proxy saliente: HTTP, HTTPS, Socks4, Socks5.</string>
-  <string name="pref_proxy_type_dialog">Introduzca tipo de proxy</string>
-  <string name="pref_proxy_host_title">Servidor proxy saliente</string>
-  <string name="pref_proxy_host_summary">Nombre del servidor proxy </string>
-  <string name="pref_proxy_host_dialog">Introduzca el servidor proxy</string>
-  <string name="pref_proxy_port_title">Puerto del proxy saliente </string>
-  <string name="pref_proxy_port_summary">Puerto del servidor proxy</string>
-  <string name="pref_proxy_port_dialog">Introduzca el puerto del proxy</string>
-  <string name="pref_proxy_username_title">Nombre de usuario en el proxy de salida</string>
-  <string name="pref_proxy_username_summary">Nombre de usuario en el proxy (opcional)</string>
-  <string name="pref_proxy_username_dialog">Introduzca nombre de usuario en el proxy</string>
-  <string name="pref_proxy_password_title">Contraseña en el proxy de salida</string>
-  <string name="pref_proxy_password_summary">Contraseña en el proxy (opcional)</string>
-  <string name="pref_proxy_password_dialog">Introduzca contraseña en el proxy</string>
-  <string name="status">Estado</string>
-  <string name="setting_up_full_transparent_proxying_">Estableciendo proxyficación transparente completa... </string>
-  <string name="setting_up_app_based_transparent_proxying_">Estableciendo proxyficación transparente por aplicaciones... </string>
-  <string name="transparent_proxying_enabled">Proxyficación transparente ACTIVADA</string>
-  <string name="transproxy_enabled_for_tethering_">¡TransProxy (proxyficación transparente) habilitado para tethering (pasarela)!</string>
-  <string name="warning_error_starting_transparent_proxying_">ADVERTENCIA: ¡Error al iniciar la proxyficación transparente!</string>
-  <string name="transproxy_rules_cleared">Reglas de TransProxy (proxyficación transparente) borradas</string>
-  <string name="couldn_t_start_tor_process_">No se pudo iniciar el proceso de Tor: </string>
-  <string name="privoxy_is_running_on_port_">Polipo se está ejecutando en el puerto:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Estableciendo proxyficación transparente por puertos... </string>
-  <string name="bridge_error">Error de bridge (repetidor puente)</string>
-  <string name="bridge_requires_ip">Para utilizar la función bridge (repetidor puente, acceso a Tor de publicitación restringida), debe introducir al menos una dirección IP de bridge.</string>
-  <string name="send_email_for_bridges">Envíe un correo a bridges at torproject.org incluyendo en el cuerpo del mensaje una línea sólo con \"get bridges\", desde una cuenta con dominio gmail.com, yahoo.com o yahoo.cn (que soportan DKIM)</string>
-  <string name="error">Error</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">¡Sus \'Reglas de direcciones accesibles\' han producido una excepción!</string>
-  <string name="your_relay_settings_caused_an_exception_">¡La configuración de su repetidor ha producido una excepción!</string>
-  <string name="exit_nodes">Nodos de salida</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Reglas de identificación de repetidores de salida de la red Tor, mediante huellas de validación de claves (fingerprints), alias (nicks), códigos de país y direcciones (o rangos)</string>
-  <string name="enter_exit_nodes">Introduzca repetidores de salida</string>
-  <string name="exclude_nodes">Excluír nodos</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Reglas de identificación de repetidores a evitar en la red Tor, mediante huellas de validación de claves (fingerprints), alias (nicks), códigos de país y direcciones (o rangos)</string>
-  <string name="enter_exclude_nodes">Introduzca repetidores a evitar</string>
-  <string name="strict_nodes">Hacer estricta la exclusión de nodos (incluso si falla la comunicación)</string>
-  <string name="use_only_these_specified_nodes">Usar *sólo* estos nodos especificados</string>
-  <string name="bridges">Bridges (repetidores puente) </string>
-  <string name="use_bridges">Usar bridges</string>
-  <string name="bridges_obfuscated">Bridges ofuscados (contra análisis DPI del tráfico) </string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Habilita nodos alternativos de entrada a la red Tor, de publicitación restringida. Prevalece sobre \'Nodos de entrada\'</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Habilítelo si los bridges (repetidores puente) de su lista de configuración están ofuscados (encapsulando el tráfico SSL para evitar ser detectados) </string>
-  <string name="ip_address_and_port_of_bridges">Direcciones IP y puertos de los bridges</string>
-  <string name="enter_bridge_addresses">Introduzca direcciones de bridge</string>
-  <string name="relays">Repetidores</string>
-  <string name="relaying">Repetición de tráfico</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Habilitar que su dispositivo no sea repetidor de salida (de la red Tor) </string>
-  <string name="relay_port">Puerto de repetidor</string>
-  <string name="listening_port_for_your_tor_relay">Puerto de escucha para su repetidor Tor</string>
-  <string name="enter_or_port">Introduzca puerto OR (Onion Routing, repositorio de repetidores)</string>
-  <string name="relay_nickname">Alias del repetidor</string>
-  <string name="the_nickname_for_your_tor_relay">El apodo que identificará a su repetidor en la red Tor</string>
-  <string name="enter_a_custom_relay_nickname">Introduzca un alias personalizado para su repetidor</string>
-  <string name="reachable_addresses">Reglas de direcciones accesibles ([accept(*)|reject] IP:port, etc.)</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Ejecutar Tor como sólo cliente detrás de un cortafuegos (firewall) con políticas restrictivas</string>
-  <string name="reachable_ports">Puertos accesibles</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Puertos accesibles detrás de un firewall restrictivo (80 y 443 por defecto)</string>
-  <string name="enter_ports">Introduzca puertos</string>
-  <string name="enable_hidden_services">Activar alojamiento de servicios ocultos (en la red Tor)</string>
-  <string name="run_servers_accessible_via_the_tor_network">Permite el acceso a servidores ocultos por dispositivo (IP oculta al usuario) accesibles a través de la red Tor (dominio .onion, sin DNS)</string>
-  <string name="enter_localhost_ports_for_hidden_services">Introduzca los puertos locales de sus servicios ocultos</string>
-  <string name="hidden_service_ports">Puertos de los servicios ocultos</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">El nombre direccionable (sin DNS, .onion generado automáticamente) para su servicio oculto</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Habilitar el registro de depuración (debug log) a la salida (debe utilizar adb o aLogCat para verlo)</string>
-  <string name="project_home">Página(s) principal(es) del proyecto:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Licencia de Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Software de terceras partes</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Una aplicación está intentando abrir el puerto %S de servicio oculto hacia la red Tor. Esto es seguro si su aplicación es de su confianza.</string>
-  <string name="found_existing_tor_process">Se encontró un proceso de Tor ya existente...</string>
-  <string name="something_bad_happened">Hubo algún tipo de problema. Compruebe el registro (log)</string>
-  <string name="hidden_service_on">Servicio oculto en:</string>
-  <string name="unable_to_read_hidden_service_name">No fue posible leer el nombre del servicio oculto</string>
-  <string name="unable_to_start_tor">No fue posible iniciar Tor: </string>
-  <string name="unable_to_reset_tor">¡Reinicie su dispositivo, no se pudo reiniciar Tor!</string>
-  <string name="pref_use_sys_iptables_title">Usar el Iptables por defecto</string>
-  <string name="pref_use_sys_iptables_summary">Usa el binario de Iptables del sistema en lugar del incluído en el paquete de Orbot</string>
-  <string name="error_installing_binares">No fue posible instalar o actualizar los binarios de Tor.</string>
-  <string name="pref_use_persistent_notifications">Mantener siempre el icono de Orbot en la barra de tareas cuando esté conectado</string>
-  <string name="pref_use_persistent_notifications_title">Notificaciones siempre activadas</string>
-  <string name="pref_use_expanded_notifications">Mostrar notificación expandida con el país de salida de Tor y la IP</string>
-  <string name="pref_use_expanded_notifications_title">Notificaciones expandidas</string>
-  <string name="notification_using_bridges">¡Bridges habilitados! </string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Idioma</string>
-  <string name="set_locale_summary">Elija la configuración regional y el idioma para Orbot</string>
-  <string name="wizard_locale_title">Escoja idioma</string>
-  <string name="wizard_locale_msg">Deje el predeterminado o cambie de idioma</string>
-  <string name="powered_by">impulsado por Tor</string>
-  <string name="btn_save_settings">Guardar configuración</string>
-  <string name="no_internet_connection_tor">Sin conexión a Internet; Tor está en suspensión...</string>
-  <string name="bandwidth_">Ancho de banda:</string>
-  <string name="down">bajada</string>
-  <string name="up">subida</string>
-  <string name="pref_disable_network_title">Sin suspensión-automática de la red</string>
-  <string name="pref_disable_network_summary">Ponga Tor en suspensión cuando no haya Internet disponible</string>
-  <string name="newnym">¡Ha cambiado a una nueva identidad de Tor!</string>
-  <string name="menu_verify_browser">Navegador</string>
-  <string name="menu_use_chatsecure">Usar ChatSecure</string>
-  <string name="permission_manage_tor_label">Administrar Tor</string>
-  <string name="permission_manage_tor_description">Habilita esta aplicación para controlar el servicio Tor</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">No parece que tenga Orfox instalado. ¿Quiere ayuda con eso, o simplemente debemos abrir el navegador?</string>
-  <string name="install_apps_">¿Instalar aplicaciones?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">No hay conectividad de red. Poniendo a Tor a dormir...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">La conectividad de red es buena. Despertando a Tor...</string>
-  <string name="updating_settings_in_tor_service">actualizando la configuración en el servicio Tor</string>
-  <string name="pref_socks_title">SOCKS de Tor</string>
-  <string name="pref_socks_summary">Puerto sobre el que Tor ofrece su proxy SOCKS (por defecto: 9050 o 0 para deshabilitarlo)</string>
-  <string name="pref_socks_dialog">Configuración del puerto SOCKS</string>
-  <string name="pref_transport_title">Puerto de TransProxy de Tor</string>
-  <string name="pref_transport_summary">Puerto sobre el que Tor ofrece su Proxy Transparente (por defecto: 9040 o 0 para deshabilitarlo)</string>
-  <string name="pref_transport_dialog">Configuración del puerto de TransProxy</string>
-  <string name="pref_dnsport_title">Puerto DNS de Tor</string>
-  <string name="pref_dnsport_summary">Puerto sobre el que Tor ofrece su DNS (por defecto: 5400 o 0 para deshabilitarlo)</string>
-  <string name="pref_dnsport_dialog">Configuración del puerto DNS</string>
-  <string name="pref_torrc_title">Configuración personalizada de torrc</string>
-  <string name="pref_torrc_summary">SÓLO EXPERTOS: Introduzca directamente las líneas de configuración en el fichero torrc</string>
-  <string name="pref_torrc_dialog">torrc personalizado</string>
-  <string name="wizard_tips_martus">Martus Móvil - Aplicación de documentación de derechos humanos de Benetech</string>
-  <string name="your_tor_public_ips_">Las IPs públicas de su Tor:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Por favor, deshabilite esta aplicación en Android->Configuración->Aplicaciones si está teniendo problemas con Orbot:</string>
-  <string name="app_conflict">Conflicto de la aplicación</string>
-  <string name="pref_transproxy_refresh_title">Auto-refresco de transproxy</string>
-  <string name="pref_transproxy_refresh_summary">Reaplica las reglas de transproxy cuando el estado de la red cambia</string>
-  <string name="pref_transproxy_flush_title">Transproxy FORZAR ELIMINACIÓN</string>
-  <string name="pref_transproxy_flush_summary">Pulse aquí para desechar AHORA todas las reglas de red de transproxy </string>
-  <string name="transparent_proxy_rules_flushed_">¡Reglas de proxy transparente desechadas!</string>
-  <string name="you_do_not_have_root_access_enabled">No tiene habilitado el acceso como ROOT</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Puede que tenga que detener e iniciar Orbot para que el cambio de configuración se habilite.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Bridges actualizados</string>
-  <string name="restart_orbot_to_use_this_bridge_">Por favor, reinicie Orbot para habilitar los cambios</string>
-  <string name="menu_qr">Códigos QR</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si su red móvil/celular bloquea activamente Tor, puede usar un Puente (bridge) para acceder a la red. SELECCIONE uno de los tipos de repetidor puente arriba para hablitar los puentes.</string>
-  <string name="bridge_mode">Modo bridge</string>
-  <string name="get_bridges_email">Correo electrónico</string>
-  <string name="get_bridges_web">Página web</string>
-  <string name="activate">Activar</string>
-  <string name="apps_mode">Aplicaciones en modo VPN</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Puede habilitar que todas las aplicaciones de su dispositivo transiten a través de la red Tor usando la función VPN de Android.\n\n*ADVERTENCIA* Esta es una característica experimental nueva, y en algunos casos puede que no se inicie automáticamente, o puede que se detenga. NO debe usarse para anonimato, SÓLO para atravesar cortafuegos (firewalls) y filtros.</string>
-  <string name="send_email">Enviar correo</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Puede obtener una dirección de bridge (repetidor puente) a través de correo electrónico, la web, o escaneando un código QR de bridge. Seleccione \'Correo\' o \'Web\' debajo para solicitar una dirección de bridge.\n\nUna vez tenga una dirección, copie y péguela en la opción \"Bridges\" de la configuración de Orbot, y reinicie.</string>
-  <string name="install_orweb">Instalar Orfox</string>
-  <string name="standard_browser">Navegador estándar</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOTA: Sólo los repetidores puente (bridges) estándar de Tor funcionan en dispositivos Intel X86/ATOM</string>
-  <string name="vpn_default_world">Mundo</string>
-</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
deleted file mode 100644
index e5a9ada..0000000
--- a/res/values-et/strings.xml
+++ /dev/null
@@ -1,210 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.orghttp://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">käivita ja peata Tor</string>
-  <string name="tor_proxy_service_process">torproxyteenus</string>
-  <string name="status_starting_up">Orbot käivitub...</string>
-  <string name="status_activated">Ühendatud Tor võrgustikku</string>
-  <string name="status_disabled">Orbot deaktiveeritud</string>
-  <string name="tor_process_starting">Tor kliendi käivitamine...</string>
-  <string name="tor_process_complete">valmis.</string>
-  <string name="tor_process_waiting">ootel.</string>
-  <string name="not_anonymous_yet">HOIATUS: Teie liiklus pole veel anonüümne! Palun seadistage oma rakendused nii et need kasutaksid HTTP proxy\'t 127.0.0.1:8118 või SOCKS4A või SOCKS5 proxy\'t 127.0.0.1:9050</string>
-  <string name="menu_home">Kodu</string>
-  <string name="menu_browse">Sirvi</string>
-  <string name="menu_settings">Seaded</string>
-  <string name="menu_log">Logi</string>
-  <string name="menu_info">Abi</string>
-  <string name="menu_start">Start</string>
-  <string name="menu_stop">Stopp</string>
-  <string name="menu_about">Lähemalt</string>
-  <string name="main_layout_download">Lae alla</string>
-  <string name="main_layout_upload">Lae üles</string>
-  <string name="button_help">Abi</string>
-  <string name="button_close">Sulge</string>
-  <string name="button_about">Lähemalt</string>
-  <string name="button_clear_log">Nulli logi</string>
-  <string name="menu_verify">Kontrolli</string>
-  <string name="menu_exit">Välja</string>
-  <string name="press_to_start">- pikk vajutus alustamiseks -</string>
-  <string name="pref_trans_proxy_group">Läbipaistev proxy (Nõuab Root õigusi)</string>
-  <string name="pref_trans_proxy_title">Läbipaistev proxy</string>
-  <string name="pref_trans_proxy_summary">Rakenduste automaatne Torifitseerimine</string>
-  <string name="pref_transparent_all_title">Kõik läbi Tor\'i</string>
-  <string name="pref_transparent_all_summary">Proxy kõikide reakenduste liiklus läbi Tor\'i</string>
-  <string name="pref_transparent_port_fallback_title">Pordiproxy reserv</string>
-  <string name="pref_transparent_port_fallback_summary">HOIATUS: Väldib tavaporte (80, 443, jne). *KASUTAGE AINULT SIIS* kui \'Kõik\' või \'Rakendused\' režiim ei tööta.</string>
-  <string name="pref_transparent_port_title">Portide loend</string>
-  <string name="pref_transparent_port_summary">Proxy portide loend. *KASUTAGE SINULT SIIS* kui \'Kõik\' või \'Rakendused\' režiim ei tööta</string>
-  <string name="pref_transparent_port_dialog">Sisestage pordid mida proxy\'da</string>
-  <string name="pref_has_root">Nõua root juurdepääsu</string>
-  <string name="pref_has_root_summary">Nõua läbipaistva proxy jaoks root juurdepääsu</string>
-  <string name="status_install_success">Tor binaarid edukalt paigaldatud!</string>
-  <string name="status_install_fail">Tor binaarfailide paigaldamine ebaõnnestus. Palun kontrollige logi ja teavitage tor-assistants at torproject.org</string>
-  <string name="title_error">Rakenduse Viga</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Lähemalt Orbot\'ist</string>
-  <string name="btn_next">Edasi</string>
-  <string name="btn_back">Tagasi</string>
-  <string name="btn_finish">Lõpeta</string>
-  <string name="btn_okay">Hea küll</string>
-  <string name="btn_cancel">Katkesta</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Mõned Orbot\'i detailid</string>
-  <string name="wizard_permissions_root">Luba Antud</string>
-  <string name="wizard_permissions_stock">Orbot õigused</string>
-  <string name="wizard_premissions_msg_root">Vinge! Leidsime et teie seadmes on Orbot\'ile lubatud root õigused. Lubame kasutada seda väge arukalt.</string>
-  <string name="wizard_permissions_msg_stock">Kuigi see pole vajalik, saab root juurdepääsuga seadmel kasutada Orbot\'i palju võimsama vahendina. Kasutage allpool olevat nuppu et lubada Orbot\'ile supervõimed!</string>
-  <string name="wizard_permissions_no_root">Kui teil pole root juurdepääsu või te ei tea millest jutt käib, siis kindlustage et kasutate ainult rakendusi mis on seadistatud Orbot\'iga koos töötama.</string>
-  <string name="wizard_permissions_consent">Saan aru ja jätkan ilma Superkasutajata</string>
-  <string name="wizard_permission_enable_root">Luba Orbotile Root õigused</string>
-  <string name="wizard_configure">Seadista Torifitseerimine</string>
-  <string name="wizard_configure_msg">Orbot võimaldab juhtida kõigi rakenduste liikluse läbi Tor\'i VÕI valida need rakendused individuaalselt.</string>
-  <string name="wizard_configure_all">Proxy kõik rakendused läbi Tor\'i</string>
-  <string name="wizard_configure_select_apps">Valige Tor\'i jaoks individuaalsed rakendused</string>
-  <string name="wizard_tips_tricks">Orbot-lubatud rakendused</string>
-  <string name="wizard_tips_msg">Alltoodud rakendused arendati Orbot\'iga koos töötama. Koheseks paigaldamiseks vajutage igat allolevat nuppu või paigaldage need hiljem Google Play portaalist, GuardianProject.info veebilehelt või F-Droid.org kaudu.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Turvaline kiirsõnumiklient Androidile</string>
-  <string name="wizard_tips_proxy">Proxy seaded - Õpi kuidas seadistada rakendusi töötama koos Orbot\'iga</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo otsingumootori rakendus</string>
-  <string name="wizard_tips_twitter">Seadistage Twitteri proxy server \"localhost\" ja port 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proxyseaded</string>
-  <string name="wizard_final">Orbot on valmis!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">See avab teie veebisivikus lehe https://check.torproject.org mille kaudu saate näha kas Orbot on ehk seadistatud ja olete ühenduses Tor\'iga.</string>
-  <string name="pref_hs_group">Peidetud Teenuste Majutus</string>
-  <string name="pref_general_group">Üldist</string>
-  <string name="pref_start_boot_title">Käivita Orbot seadme käivitumisel</string>
-  <string name="pref_start_boot_summary">Automaatne Orbot käivitumine ja Tor külge ühendumine seadme käivitumisel</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Hoiatus</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Load</string>
-  <string name="wizard_permissions_root_msg1">Võite Orbot\'ile lubada \'Superkasutaja\' juurdepääsu selleks et võimaldada rohkem võimalusi, nagu näiteks Läbipaistev Proxy.</string>
-  <string name="wizard_permissions_root_msg2">Kui te ei soovi seda teha, siis palun kindlustage et kasutate ainult rakendusi mis on seadistatud töötama koos Orbot\'iga</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot\'ile mõeldud rakendused</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Turvaline vestlusrakendus Off-the-Record krüptoga</string>
-  <string name="wizard_tips_play">Kõik Guardian Project rakendused on leitavad ka Google Play kaudu</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Läbipaistev Proxy</string>
-  <string name="wizard_transproxy_msg">Saate kõik rakendused suunata iseeneslikult Tor kaudu, lisaseadistusteta.</string>
-  <string name="wizard_transproxy_hint">(Klikkige sellele kastile kui teil pole õrna aimugi millest jutt käib)</string>
-  <string name="wizard_transproxy_none">Puudub</string>
-  <string name="pref_transparent_tethering_title">Tor lõastamine</string>
-  <string name="pref_transparent_tethering_summary">Luba Tor Läbipaistev Proxy WiFi ja USB lõastatud seadmetele (vajab uuestilaadimist)</string>
-  <string name="button_grant_superuser">Nõua Superkasutaja Juurdepääsu</string>
-  <string name="pref_select_apps">Vali Rakendused</string>
-  <string name="pref_select_apps_summary">Vali läbi Tor suunatavad rakendused</string>
-  <string name="pref_node_configuration">Sõlme seadistamine</string>
-  <string name="pref_node_configuration_summary">Need on seadistused edasijõudnutele ja võivad vähendada teie anonüümsust</string>
-  <string name="pref_entrance_node">Sisendsõlmed</string>
-  <string name="pref_entrance_node_summary">Sõrmejäljed, hüüdnimed, riigid ja aadressid esimese hüppe jaoks</string>
-  <string name="pref_entrance_node_dialog">Sisestage sisendsõlmed</string>
-  <string name="pref_proxy_title">Väljuva võrgu proxy (Valikuline)</string>
-  <string name="pref_proxy_type_title">Väljuva proxy tüüp</string>
-  <string name="pref_proxy_type_summary">Proxy serveri kasutamise protokoll: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Sisestage proxy tüüp</string>
-  <string name="pref_proxy_host_title">Väljuva proxy seade</string>
-  <string name="pref_proxy_host_summary">Proxyserveri seadmenimi</string>
-  <string name="pref_proxy_host_dialog">Sisestage proxy seade</string>
-  <string name="pref_proxy_port_title">Väljuva proxy port</string>
-  <string name="pref_proxy_port_summary">Proxyserveri port</string>
-  <string name="pref_proxy_port_dialog">Sisestage proxy port</string>
-  <string name="pref_proxy_username_title">Väljuva proxy kasutajanimi</string>
-  <string name="pref_proxy_username_summary">Proxy kasutajanimi (Valikuline)</string>
-  <string name="pref_proxy_username_dialog">Sisestage proxy kasutajanimi</string>
-  <string name="pref_proxy_password_title">Väljuva proxy salasõna</string>
-  <string name="pref_proxy_password_summary">Proxy salasõna (Valikuline)</string>
-  <string name="pref_proxy_password_dialog">Sisestage proxy salasõna</string>
-  <string name="status">Olek</string>
-  <string name="setting_up_full_transparent_proxying_">Täisläbipaistva proxy seadistamine...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Rakenduspõhise läbipaistva proxy seadistamine...</string>
-  <string name="transparent_proxying_enabled">Läbipaistev proxy LUBATUD</string>
-  <string name="transproxy_enabled_for_tethering_">LäbivProxy lõastamine lubatud!</string>
-  <string name="warning_error_starting_transparent_proxying_">Hoiatus: viga läbipaistva proxy käivitamisel!</string>
-  <string name="transproxy_rules_cleared">LäbivProxy seaded nullitud</string>
-  <string name="couldn_t_start_tor_process_">Tor protsessi käivitamine ebaõnnestus:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Pordipõhise läbipaistva proxy seadistamine...</string>
-  <string name="bridge_error">Silla viga</string>
-  <string name="bridge_requires_ip">Silla võimaluse kasutamiseks peate sisestama vähemalt ühe silla IP aadressi.</string>
-  <string name="send_email_for_bridges">Saatke e-kiri oma gmail kontolt aadressile bridges at torproject.org mis sisaldab ainult ühte rida \"get bridges\".</string>
-  <string name="error">Viga</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Teie ReachableAddresses seadistus põhjustas ekse!</string>
-  <string name="your_relay_settings_caused_an_exception_">Teie releeseadistus põhjustas ekse!</string>
-  <string name="exit_nodes">Väljundsõlmed</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Sõrmejäljed, hüüdnimed, riigid ja aadressid viimase hüppe jaoks</string>
-  <string name="enter_exit_nodes">Sisestage väljundsõlmed</string>
-  <string name="exclude_nodes">Välistatud sõlmed</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Sõrmejäljed, hüüdnimed, riigid ja aadressid mida välistada</string>
-  <string name="enter_exclude_nodes">Sisestage välistatavad sõlmed</string>
-  <string name="strict_nodes">Kindlad sõlmed</string>
-  <string name="use_only_these_specified_nodes">Kasuta *ainult* neid märgitud sõlmi</string>
-  <string name="bridges">Sillad</string>
-  <string name="use_bridges">Kasuta sildu</string>
-  <string name="bridges_obfuscated">Varjatud sillad</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Luba Tor võrgustiku alternatiivseid sisendsõlmi</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Luba siis kui seadistatud sillad on varjatud sillad</string>
-  <string name="ip_address_and_port_of_bridges">Sildade IP aadressid ja pordinumbrid</string>
-  <string name="enter_bridge_addresses">Sisestage silla aadressid</string>
-  <string name="relays">Edastajad</string>
-  <string name="relaying">Edastamine</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Luba oma seadmel hakata mitte-väljund edastajaks</string>
-  <string name="relay_port">Edastusport</string>
-  <string name="listening_port_for_your_tor_relay">Port mida teie Tor edastaja kuulab</string>
-  <string name="enter_or_port">Kas Enter VÕI port</string>
-  <string name="relay_nickname">Edastaja hüüdnimi</string>
-  <string name="the_nickname_for_your_tor_relay">Teie Tor edastaja hüüdnimi</string>
-  <string name="enter_a_custom_relay_nickname">Sisestage edastaja kohandatud hüüdnimi</string>
-  <string name="reachable_addresses">Juurdepääsetavad aadressid</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Käivita kui piirava poliitikaga tulemüüri taga asuvat klienti.</string>
-  <string name="reachable_ports">Juurdepääsetavad pordid</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Piirava poliitikaga tulemüüris avatud pordid</string>
-  <string name="enter_ports">Sisestage pordid</string>
-  <string name="enable_hidden_services">Varjatud teenuste majutamine</string>
-  <string name="run_servers_accessible_via_the_tor_network">luba üle Tor võrgustiku juurdepääs seadmes töötavale serverile</string>
-  <string name="enter_localhost_ports_for_hidden_services">sisestage varjatud teenuste localhost pordid</string>
-  <string name="hidden_service_ports">Varjatud teenuste pordid</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">teie varjatud teenuste adresseeritav nimi (luuakse automaatselt)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">lubage väljastatav silumislogi (vaatamiseks peab kasutama kas adb või aLogCat utiliite) </string>
-  <string name="project_home">Projekti kodu(d):</string>
-  <string name="the_tor_license">Tor litsents</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Kolmanda osapoole tarkvara:</string>
-  <string name="hidden_service_request">Üks rakendus soovib avada varjatud teenuse porti %S Tor võrgustikule. See on turvaline kui te usaldate seda rakendust.</string>
-  <string name="found_existing_tor_process">leidus töötav Tor protsess...</string>
-  <string name="something_bad_happened">Juhtus midagi halba. Kontrollige logi</string>
-  <string name="hidden_service_on">varjatud teenused:</string>
-  <string name="unable_to_read_hidden_service_name">ei õnnestu lugeda varjatud teenuse nime</string>
-  <string name="unable_to_start_tor">Tor käivitamine ebaõnnestus:</string>
-  <string name="pref_use_sys_iptables_title">Kasuta iptables vaikeseadeid</string>
-  <string name="pref_use_sys_iptables_summary">kasuta Orbot\'iga kaasneva iptables binaari asemel süsteemset binaari</string>
-  <string name="error_installing_binares">Tor binaaride paigaldamine või uuendamine ebaõnnestus.</string>
-  <string name="pref_use_persistent_notifications">Ühendatud Orbot korral näidata katkematult ikoonide tööriistariba</string>
-  <string name="pref_use_persistent_notifications_title">Pidevalt kuvatavad teated</string>
-  <string name="notification_using_bridges">Sillad lubatud!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Valige Orbot lokaat ja keel</string>
-  <string name="wizard_locale_title">Valige keel</string>
-  <string name="wizard_locale_msg">Jätkake vaikeväärtusega või vahetage kehtiv keel</string>
-  <string name="btn_save_settings">Salvesta seaded</string>
-  <string name="bandwidth_">Ribalaius:</string>
-  <string name="down">alla</string>
-  <string name="up">üles</string>
-  <string name="pref_disable_network_title">Pole võrgu auto-und</string>
-  <string name="pref_disable_network_summary">Pane Tor magama kui Internetiühendus puudub</string>
-  <string name="newnym">Lülitusite uuele Tor identiteedile!</string>
-  <string name="menu_use_chatsecure">Kasutage ChatSecure\'t</string>
-  <string name="permission_manage_tor_label">Hallake Tor\'i</string>
-  <string name="permission_manage_tor_description">Lubage sellel rakendusel hallata Tor teenust</string>
-  <string name="install_apps_">Paigaldada rakendusi?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Interneti ühendus puudub. Panen Tori magama...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Interneti ühendus hea. Äratan Tori üles...</string>
-</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
deleted file mode 100644
index d8a8567..0000000
--- a/res/values-eu/strings.xml
+++ /dev/null
@@ -1,218 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">Tor abiarazi eta gelditu</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot abiarazten ari da...</string>
-  <string name="status_activated">Tor sarera konektatuta</string>
-  <string name="status_disabled">\"Orbot desaktibatuta dago</string>
-  <string name="tor_process_starting">Tor bezeroa hasten...</string>
-  <string name="tor_process_complete">eginda.</string>
-  <string name="tor_process_waiting">itxaroten.</string>
-  <string name="not_anonymous_yet">ABISUA: Zure trafikoa ez da anonimoa oraindik! Mesedez konfigura itzazu zure aplikazioak 127.0.0.1:8118 HTTP proxya edo 127.0.0.1:9050 SOCKS4 edo SOCKS5 proxyak erabiltzeko</string>
-  <string name="menu_home">Etxea</string>
-  <string name="menu_browse">Arakatu</string>
-  <string name="menu_settings">Ezarpenak</string>
-  <string name="menu_log">Saioa hasi</string>
-  <string name="menu_info">Laguntza</string>
-  <string name="menu_start">Abiarazi</string>
-  <string name="menu_stop">Gelditu</string>
-  <string name="menu_about">Honi buruz</string>
-  <string name="main_layout_download">Deskargatu</string>
-  <string name="main_layout_upload">Igo</string>
-  <string name="button_help">Laguntza</string>
-  <string name="button_close">Itxi</string>
-  <string name="button_about">Honi buruz</string>
-  <string name="button_clear_log">Zerrenda Garbitu</string>
-  <string name="menu_verify">Egiaztatu</string>
-  <string name="menu_exit">Irten</string>
-  <string name="press_to_start">- sakatu luze hasteko -</string>
-  <string name="pref_trans_proxy_group">Proxyatze Gardena (Root behar du)</string>
-  <string name="pref_trans_proxy_title">Proxyatze Gardena</string>
-  <string name="pref_trans_proxy_summary">Aplikazioen Torifikatze Automatikoa</string>
-  <string name="pref_transparent_all_title">Tor-tu Dena</string>
-  <string name="pref_transparent_all_summary">Aplikazio guztien trafikoa Tor bidez proxyatu</string>
-  <string name="pref_transparent_port_fallback_title">Azken aukerako proxy portuak</string>
-  <string name="pref_transparent_port_fallback_summary">KONTUZ: Ohizko portuak sahiezten ditu (80, 443, etab.) *ERABILI BAKARRIK* \'Guztiak\' edo \'Aplikazio\' modua ez badabil.</string>
-  <string name="pref_transparent_port_title">Portu Zerrenda</string>
-  <string name="pref_transparent_port_summary">Proxyak baimenduko dituen portuak. *ERABILI BAKARRIK* \'Guztiak\' edo \'Aplikazio\' modua ez badabil</string>
-  <string name="pref_transparent_port_dialog">Sartu proxyatzeko portuak</string>
-  <string name="pref_has_root">Root sarrera eskatu</string>
-  <string name="pref_has_root_summary">Root sarrera eskatu proxyatze gardenarentzat</string>
-  <string name="status_install_success">Tor bitarrak zuzen instalatuta!</string>
-  <string name="status_install_fail">Tor fitxategi bitarrak ezin izan dira instalatu. Mesedez ikusi erregistroa eta jakinarazi tor-assistants at torproject.org</string>
-  <string name="title_error">Aplikazio Akatsa</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Orboti buruz</string>
-  <string name="btn_next">Hurrengoa</string>
-  <string name="btn_back">Atzera</string>
-  <string name="btn_finish">Amaitu</string>
-  <string name="btn_okay">Ados</string>
-  <string name="btn_cancel">Utzi</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Orbot xehetasun batzuk</string>
-  <string name="wizard_permissions_root">Baimena Emanda</string>
-  <string name="wizard_permissions_stock">Orbot Baimenak</string>
-  <string name="wizard_premissions_msg_root">Bikain! Orbotentzako root baimenak gaituta dituzula detektatu dugu.</string>
-  <string name="wizard_permissions_msg_stock">Beharrezkoa ez den arren, Orbot tresna ahaltsuagoa bihurtu daiteke zure gailuak root atzipena badu. Erabili beheko botoia Orboteri superbotereak emateko!</string>
-  <string name="wizard_permissions_no_root">Root atzipenik ez baduzu edo zertaz ari garen ez badakizu, ziurtatu zire appak Orbotekin lan egiteko konfiguratzen dituzula.</string>
-  <string name="wizard_permissions_consent">Ulertzen dut eta supererabiltzaile gabe jarraitu nahiko nuke</string>
-  <string name="wizard_permission_enable_root">Root Orboti eman</string>
-  <string name="wizard_configure">Torifikazioa Konfiguratu</string>
-  <string name="wizard_configure_msg">Orbotek zure aplikazio guztien EDO banan-banan hautatutako aplikazioen trafiko guztia Tor bidez bideratzeko aukera ematen dizu.</string>
-  <string name="wizard_configure_all">Aplikazio guztiak Tor bidez proxyatu</string>
-  <string name="wizard_configure_select_apps">Hautatu Banakako Aplikazioak Torentzat</string>
-  <string name="wizard_tips_tricks">Orbot-gaitutako Aplikazioak</string>
-  <string name="wizard_tips_msg">Azpiko appak Orbotekin lan egiteko garatuta daude. Sakatu botoi bakoitza orain instalatzeko, edo bilatu geroago Google Play-n, GuardianProject.info webgunean edo F-Droid.org erabiliz.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Andriodentzako berehalako mezulari bezero ziurra</string>
-  <string name="wizard_tips_proxy">Proxy Ezarpenak - Ikasi zure aplikazioak Orbotekin funtziona dezaten nola konfiguratu</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo Bilaketa Motorraren appa</string>
-  <string name="wizard_tips_twitter">Twittereko proxyaren ostalarian \"localhost\" jarri eta portuan 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proxy Ezarpenak</string>
-  <string name="wizard_final">Orbot prest dago!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Honek https://check.torproject.org web nabigatzailean irekiko du Orbot konfiguratuta eta Tor-era konektatuta zauden antzemateko.</string>
-  <string name="pref_hs_group">Ezkutuko Zerbitzuak</string>
-  <string name="pref_general_group">Orokorra</string>
-  <string name="pref_start_boot_title">Hasi Orbot Abiarazterakoan</string>
-  <string name="pref_start_boot_summary">Automatikoki Orbot hasi eta Tor konektatu zure Android gailua abiarazterakoan</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Abisua</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Baimenak</string>
-  <string name="wizard_permissions_root_msg1">Aukera moduan Orbot-i \'Supererabiltzaile\' atzipena eman ahal diozu ezaugarri aurreratuak erabiltzeko, Proxy gardena adibidez.</string>
-  <string name="wizard_permissions_root_msg2">Ez baduzu hau egin nahi ziurtatu Orbot-ekin lan egiten duten aplikazioak erabiltzen dituzula.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-Gaitutako Aplikazioak</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Txat aplikazio segurua Off-the-Record enkriptazioarekin.</string>
-  <string name="wizard_tips_play">Google Play-n Guardiak Proiektuko aplikazio guztiak bilatu</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Proxyatze Gardena</string>
-  <string name="wizard_transproxy_msg">Honek zure aplikazioak konfiguratu beharrik Tor saretik joatea ahalbidetzen du.</string>
-  <string name="wizard_transproxy_hint">(Gaituta utzi zertaz ari garez ulertzen ez baduzu)</string>
-  <string name="wizard_transproxy_none">Bat ere ez</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Gaitu proxy gardena Wifi eta USB bidez Tethering-atutako gailuentzat (berrabiaraztea beharrezkoa)</string>
-  <string name="button_grant_superuser">Supererabiltzaile sarrera eskatu</string>
-  <string name="pref_select_apps">Aplikazioak hautatu</string>
-  <string name="pref_select_apps_summary">Tor bidez bideratuko diren aplikazioak hautatu</string>
-  <string name="pref_node_configuration">Nodo Konfigurazioa</string>
-  <string name="pref_node_configuration_summary">Hauek zure anonimotasuna murriztu dezaketen ezarpen aurreratuak dira</string>
-  <string name="pref_entrance_node">Sarrera Nodoak</string>
-  <string name="pref_entrance_node_summary">Lehen jauzirako hatzmarka, ezizen, herrialde eta helbideak</string>
-  <string name="pref_entrance_node_dialog">Sartu Sarrera Nodoak</string>
-  <string name="pref_proxy_title">Irteera sareko proxya (Aukerazkoa)</string>
-  <string name="pref_proxy_type_title">Proxy mota</string>
-  <string name="pref_proxy_type_summary">Proxy zerbitzariarentzako erabiltzeko protokoloak: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Sartu Proxy Mota</string>
-  <string name="pref_proxy_host_title">Proxy Ostalaria</string>
-  <string name="pref_proxy_host_summary">Proxy zerbitzariaren helbidea</string>
-  <string name="pref_proxy_host_dialog">Sartu Proxy Ostalaria</string>
-  <string name="pref_proxy_port_title">Proxy Portua</string>
-  <string name="pref_proxy_port_summary">Proxy zerbitzariaren portua</string>
-  <string name="pref_proxy_port_dialog">Sartu Proxy portua</string>
-  <string name="pref_proxy_username_title">Irteerako proxyaren erabiltzaile izena</string>
-  <string name="pref_proxy_username_summary">Proxy erabiltzaile izena (Aukerazkoa)</string>
-  <string name="pref_proxy_username_dialog">Sartu proxy erabiltzailea</string>
-  <string name="pref_proxy_password_title">Irteerako proxyaren pasahitza</string>
-  <string name="pref_proxy_password_summary">Proxy pasahitza (Aukerazkoa)</string>
-  <string name="pref_proxy_password_dialog">Sartu proxy pasahitza</string>
-  <string name="status">Egoera</string>
-  <string name="setting_up_full_transparent_proxying_">Guztientzako proxy gardena martxan ezartzen...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Aplikazioetan oinarritutako proxy transparentea ezartzen...</string>
-  <string name="transparent_proxying_enabled">Proxyatze gardena GAITUTA</string>
-  <string name="transproxy_enabled_for_tethering_">Proxy gardena gaituta Tethering-ean!</string>
-  <string name="warning_error_starting_transparent_proxying_">ABISUA: akatsa proxyatze gardena hasterakoan!</string>
-  <string name="transproxy_rules_cleared">Proxy gardeneko erregelak garbituta</string>
-  <string name="couldn_t_start_tor_process_">Ezin izan da Tor prozesua hasi:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Portuetan oinarritutako proxy gardena ezartzen...</string>
-  <string name="bridge_error">Zubi Akatsa</string>
-  <string name="bridge_requires_ip">Zubi ezaiugarria erabiltzeko gutxienez zubi baten IP helbidea sartu behar duzu.</string>
-  <string name="send_email_for_bridges">Gmail kontutik bridges at torproject.org helbidera eposta bat bidali gorputzean \"get bridges\" lerroa duena.</string>
-  <string name="error">Akatsa</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Zure helbide atzigarriak salbuespena sortu du!</string>
-  <string name="your_relay_settings_caused_an_exception_">Zure errele ezarpenak salbuespena sortu dute!</string>
-  <string name="exit_nodes">Irteera Nodoak</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Hatzmarkak, ezizenak, herrialdeak eta helbideak azkeneko jauzirako</string>
-  <string name="enter_exit_nodes">Irteera Nodoak sartu</string>
-  <string name="exclude_nodes">Nodoak baztertu</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Baztertuko diren hatzmarkak, ezizenak, herrialdeak eta helbideak</string>
-  <string name="enter_exclude_nodes">Baztertzeko nodoak sartu</string>
-  <string name="strict_nodes">Nodo hertsiak</string>
-  <string name="use_only_these_specified_nodes">*Bakarrik* zehaztutako nodo hauek erabili</string>
-  <string name="bridges">Zubiak</string>
-  <string name="use_bridges">Zubiak erabili</string>
-  <string name="bridges_obfuscated">Nahasitako Zubiak</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Tor sarera sartzeko nodo alternatiboak gaitu</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Gaitu konfiguratutako zubiak nahasitako zubiak badira</string>
-  <string name="ip_address_and_port_of_bridges">IP helbidea eta zubien portua</string>
-  <string name="enter_bridge_addresses">Sartu Zubi Helbideak</string>
-  <string name="relays">Erreleak</string>
-  <string name="relaying">Erreleatzea</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Zure gailua ez-irteerako errelea izatea gaitu</string>
-  <string name="relay_port">Errele Portua</string>
-  <string name="listening_port_for_your_tor_relay">Zure Tor errelearentzako entzuteko portua</string>
-  <string name="enter_or_port">Sartu OR portua</string>
-  <string name="relay_nickname">Errele ezizena</string>
-  <string name="the_nickname_for_your_tor_relay">Zure Tor errelearen ezizena</string>
-  <string name="enter_a_custom_relay_nickname">Sartu gustoko errelearen ezizena</string>
-  <string name="reachable_addresses">Helbide atzigarriak</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Suheziaren atzean exekutatu politika murriztaileekin</string>
-  <string name="reachable_ports">Portu atzigarriak</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Suhezi murriztailetik atzigarri diren portuak</string>
-  <string name="enter_ports">Portuak sartu</string>
-  <string name="enable_hidden_services">Ezkutuko Zerbitzuak Gaitu</string>
-  <string name="run_servers_accessible_via_the_tor_network">gailuko zerbitzuak Tor saretik atzitzea gaitu</string>
-  <string name="enter_localhost_ports_for_hidden_services">sartu localhost portuak ezkutuko zerbitzuentzat</string>
-  <string name="hidden_service_ports">Ezkutuko Zerbitzu Portuak</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">zure eskutuko zerbitzuaren izen atzigarria (automatikoki sortuta)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">arazketarako logak gaitu (adb edo aLogCat erabili ikusteko)</string>
-  <string name="project_home">Proiektuaren etxea(k):</string>
-  <string name="the_tor_license">Tor Lizentzia</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">3.-Ataleko-Softwarea:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="hidden_service_request">Aplikazio batek ezkutuko zerbitzariko %S portua ireki nau du Tor sarera. Segurua da aplikazioaz fidatzen bazara.</string>
-  <string name="found_existing_tor_process">Aurreko Tor prozesua topatuta...</string>
-  <string name="something_bad_happened">Zerbait txarra gertatu da. Begiratu logetan</string>
-  <string name="hidden_service_on">ezkutuko zerbitzua hemen:</string>
-  <string name="unable_to_read_hidden_service_name">ezkutuko zerbitzuare izena ezin da irakurri</string>
-  <string name="unable_to_start_tor">Ezin izan da Tor hasi:</string>
-  <string name="pref_use_sys_iptables_title">Lehenetsitako Iptables erabili</string>
-  <string name="pref_use_sys_iptables_summary">Sistemako iptables programa erabili Orbot-ekin datorreraren ordez</string>
-  <string name="error_installing_binares">Tor programak ezin izan dira instalatu edo eguneratu.</string>
-  <string name="pref_use_persistent_notifications">Orbot konektatuta dagoenean ikonoa tresna barran mantendu beti</string>
-  <string name="pref_use_persistent_notifications_title">Jakinarazpenetan beti</string>
-  <string name="notification_using_bridges">Zubiak gaituta!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Aukeratu Orbotentzako lokala eta hizkuntza</string>
-  <string name="wizard_locale_title">Hizkuntza aukeratu</string>
-  <string name="wizard_locale_msg">Lehenetsia utzi edo uneko hizkuntzara aldatu</string>
-  <string name="powered_by">Tor-ek eskainita</string>
-  <string name="btn_save_settings">Ezarpenak gorde</string>
-  <string name="no_internet_connection_tor">Ez dago Interneterako konexiorik; Tor egonean dago...</string>
-  <string name="bandwidth_">Banda zabalera:</string>
-  <string name="down">behera</string>
-  <string name="up">gora</string>
-  <string name="pref_disable_network_title">Sareko lokartze automatikorik ez</string>
-  <string name="pref_disable_network_summary">Jarri Tor lotan internet atzigarri ez dagoenean</string>
-  <string name="newnym">ChatSecure - Andriodentzako berehalako mezulari bezero ziurra</string>
-  <string name="menu_use_chatsecure">ChatSecure erabili</string>
-  <string name="permission_manage_tor_label">Tor kudeatu</string>
-  <string name="permission_manage_tor_description">Gaitu app hau Tor zerbitzua kontrolatzeko</string>
-  <string name="install_apps_">App-ak instalatu?</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="menu_qr">QR Kodeak</string>
-  <string name="standard_browser">Nabigatzaile Estandarra</string>
-</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
deleted file mode 100644
index 746923b..0000000
--- a/res/values-fa/strings.xml
+++ /dev/null
@@ -1,292 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">ربات پیازی</string>
-  <string name="app_description">اربت یک برنامه پروکسی مجانی است که دیگر برنامه ها را به استفاده امن از اینترنت توانمند می کند . اربوت از تور برای رمزگذاری کردن ترافیک اینترنت شما استفاده می کند و بعد آن ها را از طریق کامپیوترهای متفاوت در نقاط مختلف جهان مخفی می کند. تور یک برنامه مجانی و شبکه باز است که شما از شما در مقابل تحت نظر بودن در شبکه٬‌  تهدید آزادی های شخصی٬ خصوصی٬ فعالیت های کاری و رابطه های شخصی بطور امن محافظت می کند. </string>
-  <string name="internal_web_url">https://guardianproject.info/apps/orbot/</string>
-  <string name="default_web_url">https://check.torproject.org/?lang=fa_IR</string>
-  <string name="secure_default_web_url">https://check.torproject.org/?lang=fa_IR</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">شروع و پایان تور</string>
-  <string name="tor_proxy_service_process">سرويس پروکسی تور</string>
-  <string name="status_starting_up">اربوت درحال آغاز است...</string>
-  <string name="status_activated">متصل به شبکه تور</string>
-  <string name="status_disabled">اربوت غیرفعال شده است.</string>
-  <string name="status_shutting_down">TorService خاموش است</string>
-  <string name="tor_process_starting">شروع کلاینت تور...</string>
-  <string name="tor_process_complete">تمام.</string>
-  <string name="tor_process_waiting">در حال انتظار.</string>
-  <string name="not_anonymous_yet">هشدار: فعالیت شما هنوز \"گمنام\" نیست! لطفن اپلیکیشن خود را تنظیم کنید تا از HTTP پروکسی 127.0.0.1:8118 و یا SOCKS4A و یا SOCKS5 پروکسی 127.0.01:9050 استفاده کند.</string>
-  <string name="menu_home">خانه</string>
-  <string name="menu_browse">مرور</string>
-  <string name="menu_settings">تنظیمات</string>
-  <string name="menu_log">ورود</string>
-  <string name="menu_info">کمک</string>
-  <string name="menu_apps">وی پی ان</string>
-  <string name="menu_start">آغاز</string>
-  <string name="menu_stop">ایست</string>
-  <string name="menu_about">درباره</string>
-  <string name="menu_promo_apps">دریافت برنامه ها ...</string>
-  <string name="main_layout_download">دانلود</string>
-  <string name="main_layout_upload">آپلود</string>
-  <string name="button_help">کمک</string>
-  <string name="button_close">بسته</string>
-  <string name="button_about">درباره</string>
-  <string name="button_clear_log">پاکسازی ورد</string>
-  <string name="menu_verify">بررسی</string>
-  <string name="menu_exit">خروج</string>
-  <string name="menu_scan">اسکن BridgeQR</string>
-  <string name="menu_share_bridge">اشتراک BridgeQR</string>
-  <string name="press_to_start">- نگهدارید برای شروع -</string>
-  <string name="pref_trans_proxy_group">پروکسیدن شفاف (نیاز به Root دارد)</string>
-  <string name="pref_trans_proxy_title">پروکسی شفاف</string>
-  <string name="pref_trans_proxy_summary">تور-نمایی اتوماتیک اپلیکیشن ها</string>
-  <string name="pref_transparent_all_title">تور همه چیز</string>
-  <string name="pref_transparent_all_summary">فعالیت همه اپلیکیشن ها را از طریق تور پروکسی کنید.</string>
-  <string name="pref_transparent_port_fallback_title">قطع پروکسی پورت</string>
-  <string name="pref_transparent_port_fallback_summary">هشدار: پورتهای رایج دور زدن (80, 444, غیره). *فقط در شرایطی استفاده کنید* که حالت های \'همه\' یا \'اپلیکیشن\' کار نمیکند.</string>
-  <string name="pref_transparent_port_title">فهرست پورت</string>
-  <string name="pref_transparent_port_summary">فهرست پرتها به پروکسی.*فقط در شرایطی استفاده کنید* که حالت های \'همه\' یا \'اپلیکیشن\' کار نمیکند.</string>
-  <string name="pref_transparent_port_dialog">پورت ها را  به پروکسی وارد کن</string>
-  <string name="pref_has_root">درخواست دسترسی root</string>
-  <string name="pref_has_root_summary"> درخواست دسترسی رون برای پروکسی کردن شفاف </string>
-  <string name="status_install_success">باینری های تور با موفقیت نصب شدند!</string>
-  <string name="status_install_fail">نصب فایل های دوتایی تور ممکن نبود. لطفن قطعه را وارسی کنید و به tor-assistance at torproject.org اطلاع دهید.</string>
-  <string name="title_error">خطای اپلیکیشین</string>
-  <string name="wizard_title">اوربوت</string>
-  <string name="wizard_btn_tell_me_more">درباره اوربوت</string>
-  <string name="btn_next">بعدی</string>
-  <string name="btn_back">بازگشت</string>
-  <string name="btn_finish">پایان</string>
-  <string name="btn_okay">قبول</string>
-  <string name="btn_cancel">لغو</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">برخی جزییات درباره اوربوت</string>
-  <string name="wizard_details_msg">اربت یک برنامه زبان باز است که شامل Tor, LibEvent and Polipo می شود و وظیفه آن ارائه  local HTTP proxy (8118) و SOCKS proxy (9050) به شبکه تور است. همچنین اربت این قابلیت را در دستگاه های ریشه دار دارد  که می تواند ترافیک اینترنت را از طریق تور ارسال کند. </string>
-  <string name="wizard_permissions_root">مجوز صادر گردید</string>
-  <string name="wizard_permissions_stock">مجوزهای اوربوت</string>
-  <string name="wizard_premissions_msg_root">بسیار عالی! اینطور که معلوم است شما دارای مجوز root برای فعال کردن ربات پیازی هستید. این امکان را بخوبی مورد استفاده قرار خواهیم داد.</string>
-  <string name="wizard_permissions_msg_stock">هرچند ضرورت ندارد اما اگر سیستم شما دارای دسترسی root باشد ربات پیازی با ظرفیت بسیار بیشتری عمل خواهد کرد. دکمه زیر را فشار دهید تا ربات پیازی دارای ظرفیت حداکثری بشود.</string>
-  <string name="wizard_permissions_no_root">اگر سیستم شما دارای دسترسی root نیست و یا اصلا چیزی از این عبارت متوجه نمی شوید، حتما سعی کنید از اپلکیشن هایی استفاده کنید که ویژه ربات پیازی تهیه شده اند.</string>
-  <string name="wizard_permissions_consent">متوجه هستم و ترجیح می دهم بدون root ادامه بدهم.</string>
-  <string name="wizard_permission_enable_root">واگذاری دسترسی root برای ربات پیازی</string>
-  <string name="wizard_configure">تنظیمات تبدیل به تور</string>
-  <string name="wizard_configure_msg">ربات پیازی به شما امکان می دهد که تمام اپلیکشین ها را از طریق توز  منتقل کنید و یا اپلیکیشن مورد نظر خود را شخصن انتخاب کنید.</string>
-  <string name="wizard_configure_all">تمام اپلیکیشن ها را از طریق تور منتقل کنید.</string>
-  <string name="wizard_configure_select_apps">اپلیکیشن های منفرد برای تور انتخاب کنید.</string>
-  <string name="wizard_tips_tricks">اپلیکیشن هایی که برای ربات پیازی تنظیم شده اند</string>
-  <string name="wizard_tips_msg">توصیه می کنیم داونلود و فعال کنید؛ اپلیکیشن هایی را استفاده کنید که مستقیم به اوربوت وصل می شوند. دکمه های زیر را فشار دهید تا نصب شود.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - برنامه امن ارسال پیغام فوری برای اندروئید</string>
-  <string name="wizard_tips_proxy">تنظیمات پروکسی - یادگیری تنظیم اپلیکیشن ها برای کار با اوربوت</string>
-  <string name="wizard_tips_duckgo">اپلیکیشن موتور جستجوی داک داک گو</string>
-  <string name="wizard_tips_twitter">توییتر از \"http proxy \"localhost:8118 پشتیبانی می کند</string>
-  <string name="wizard_tips_story_maker">StoryMaker - ساختن یک داستان و ترک آن به Tor برای امنیت!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">تنظیمات پروکسی</string>
-  <string name="wizard_proxy_help_msg">اگر برنامه آندرویدی که استفاده می کنید می تواند از استفاده HTTP یا  SOCKS proxy ساپورت کند٬ پس می توانید آن را برای اتصال به اوربوت استفاده از تور تنظیم کنید. .\n\n\n تنظیمات هاست 127.0.0.1  یا \"localhost\". برای HTTP تنظیم پورت  8118 است. برای  SOCKS ٬ پروکسی 9050. اگر امکانش وجود دارد از  SOCKS4A یا SOCKS5 استفاده کنید. \n \n\n\n  می توانید در مورد پروکسی در آندروید بیشتر بیاموزید در
- http://tinyurl.com/proxyandroid\n</string>
-  <string name="wizard_final">اوربوت آماده استفاده میباشد!</string>
-  <string name="wizard_final_msg">بسیاری از مردم در سرتاسر جهان از تور به دلایل متفاوت استفاده می کنند.\n\n خبرنگارها و بلاگرها٬ فعالان حقوق بشر٬ سربازان٬ ماموران اجرای قانون٬ شهروندان رژیم های سرکوبگر و مردم معمولی... و حالا تو </string>
-  <string name="wizard_exit_at_first_screen_toast">لطفا اوربوت را  پیکربندی کنید قبل از اینکه شما شروع به استفاده از آن کنید!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">با موفقیت به شبکه Tor متصل شده اید - اما این بدان معنا نیست دستگاه شما امن است. شما می توانید استفاده کنید از کلید \"مرورگر\" برای تست اتصال . \n\n درباره ما در https://guardianproject.info/apps/orbot و یا ارسال ایمیل به help at guardianproject.info برای کسب اطلاعات بیشتر.</string>
-  <string name="tor_check">با این قدم پیشفرض مرورگر وب شما به صفحه   https://check.torproject.org باز می شود تا شما مشاهده کنید آیا ربات پیازی تنظیم شده است و آیا شما به تور وصل شده اید یا نه.</string>
-  <string name="pref_hs_group">سرويس های مخفی هاست</string>
-  <string name="pref_general_group">کلی</string>
-  <string name="pref_start_boot_title">اوربوت را همزمان با بوت آغاز کن</string>
-  <string name="pref_start_boot_summary">وقتی اندروید بوت شد، بصورت خودکار ربات پیازی را اجرا و آن را به شبکه تور متصل کن</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">اربت٬ تور را برای آندروید می آورد تا از محتویات فیلتر شده٬ آنالیز ترافیک و کنترل شبکه که خطری برای حریم خصوصی است و اطلاعات شخصی و رابطه ها دفاع کند. \n\nT این جادوگر برای تنظیم اربت و تور در دستگاه شما کمک می کند. </string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">هشدار</string>
-  <string name="wizard_warning_msg">نصب کردن اربت به خودی خود ترافیک موبایل شما را ناشناس نخواهد کرد.\n\n باید حتما اربت را در دستگاه یا برنامه ای که از آن استفاده می کنید برای استفاده از تور تنظیم نمایید.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">دسترسی‌ها</string>
-  <string name="wizard_permissions_root_msg1">اگر بخواهید میتوانید به ربات پیازی اجازه دسترسی  سوپر یوزر بدهید تا ویژگیهای پیشرفته  مانند پروکسی شفاف را فعال کند </string>
-  <string name="wizard_permissions_root_msg2">اگر نمیخواهید این کار را انجام دهید ، لطفا مطمئن شوید که از اپلیکیشنهایی استفاده می کنید که با ربات پیازی کار می کنند</string>
-  <string name="wizard_permissions_no_root_msg">بنظر می رسد دستگاه شما ریشه ندارد یا ریشه ای ارائه کند یا دسترسی به کاربری مدیر داشته باشد. \n\n لطفا حالت Apps را در صفحه اصلی روشن نمایید. </string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">  اپلیکیشنهایی که ربات پیازی روی آنها فعال است</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: برنامه گفتگوی امن محرمانه با قابلیت رمزگزاری</string>
-  <string name="wizard_tips_play">تمامي برنامه های Guardian Project را در Google Play پيدا كنيد.</string>
-  <string name="wizard_tips_fdroid">یافتن همه برنامه های Guardian Project در F-Droid</string>
-  <string name="wizard_tips_fdroid_org">یافتن همه برنامه های Guardian Project در https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">پروکسی کردن شفاف</string>
-  <string name="wizard_transproxy_msg">این به برنامه ها به شما اجازه میدهد که بدون هیچ تنظیمی، بصورت خودکار از طریق شبکه تور اجرا شوند</string>
-  <string name="wizard_transproxy_hint">(اگر هیچ ایده‌ای ندارید که راجع به چه چیزی حرف میزنیم این گزینه را انتخاب کنید)</string>
-  <string name="wizard_transproxy_none">هیـچ</string>
-  <string name="pref_transparent_tethering_title"> تترینگ از طریق تور</string>
-  <string name="pref_transparent_tethering_summary">پروکسی شفاف از طریق تور را برای دستگاه هایی که با یو اس بی یا وای فای تتر شده اند مجاز کن. (به ری استارت نیاز دارند)</string>
-  <string name="button_grant_superuser">درخواست دسترسی برای سوپریوزر</string>
-  <string name="pref_select_apps">انتخاب برنامه ها</string>
-  <string name="pref_select_apps_summary"> انتخاب اپلیکیشن برای مسیریابی از طریق تور </string>
-  <string name="pref_node_configuration">تنظیمات گره</string>
-  <string name="pref_node_configuration_summary">اینها تنظیمات پیشرفته ای هستند که ممکن است گمنامی شما را کاهش دهند</string>
-  <string name="pref_entrance_node">گره های ورودی</string>
-  <string name="pref_entrance_node_summary">اثرانگشت ها، اسامی مستعار، کشورها و آدرسهای جهش اول</string>
-  <string name="pref_entrance_node_dialog">گره های ورودی را وارد کنید</string>
-  <string name="pref_allow_background_starts_title">اجازه دادن اجرا در پس زمینه</string>
-  <string name="button_proxy_all">همه پروکسی ها</string>
-  <string name="button_proxy_none">هیچ پروکسی</string>
-  <string name="button_invert_selection">انتخاب برعکس شود</string>
-  <string name="pref_proxy_title">پراکسی شبکه خروجی</string>
-  <string name="pref_proxy_type_title">نوع پروکسی</string>
-  <string name="pref_proxy_type_summary">پروتکل مورد استفاده برای پراکسی سرور: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">نوع پروکسی را وارد کنید</string>
-  <string name="pref_proxy_host_title"> پروکسی میزبان</string>
-  <string name="pref_proxy_host_summary">نام سرور پروکسی میزبان </string>
-  <string name="pref_proxy_host_dialog">نام پروکسی میزبان را وارد کنید</string>
-  <string name="pref_proxy_port_title">پورت پروکسی خروجی</string>
-  <string name="pref_proxy_port_summary">پورت سرور پروکسی</string>
-  <string name="pref_proxy_port_dialog">پورت پروکسی را وارد کنید</string>
-  <string name="pref_proxy_username_title">نام کاربری پراکسی خروجی</string>
-  <string name="pref_proxy_username_summary">نام کاربری پروکسی(اختیازی)</string>
-  <string name="pref_proxy_username_dialog">نام کاربری پروکسی را وارد نمایید</string>
-  <string name="pref_proxy_password_title">کلمه عبور پراکسی خروجی</string>
-  <string name="pref_proxy_password_summary">رمز عبور پروکسی(اختیاری)</string>
-  <string name="pref_proxy_password_dialog">رمز عبور پروکسی را وارد نمایید</string>
-  <string name="status">وضعیت</string>
-  <string name="setting_up_full_transparent_proxying_">نصب پروکسی کاملن شفاف...</string>
-  <string name="setting_up_app_based_transparent_proxying_">نصب پروکسی شفاف مبتنی بر برنامه...</string>
-  <string name="transparent_proxying_enabled">پروکسی شفاف فعال است</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy برای Tethering فعال شده است!</string>
-  <string name="warning_error_starting_transparent_proxying_">هشدار: خطا در هنگام راه اندازی پروکسی شفاف!</string>
-  <string name="transproxy_rules_cleared">قوانین TransProxy پاک شدند</string>
-  <string name="couldn_t_start_tor_process_"> تور نتواست اجرا شود:</string>
-  <string name="privoxy_is_running_on_port_">Polipo در حال اجرا است در پورت:</string>
-  <string name="setting_up_port_based_transparent_proxying_">نصب پروکسی شفاف مبتنی بر پورت...</string>
-  <string name="bridge_error">خطای Bridge </string>
-  <string name="bridge_requires_ip">برای استفاده از ویژگی Bridge، باید حداقل آدرس IP یک پل را وارد کنید.</string>
-  <string name="send_email_for_bridges">از یک حساب کاربری جیمیل، ایمیلی با متن \"get bridges\" به آدرس bridges at torproject.org بفرستید.</string>
-  <string name="error">خطا</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">تنظیمات شما برای آدرس قابل دسترسی باعث ایجاد خطا شده اند !</string>
-  <string name="your_relay_settings_caused_an_exception_">تنظیمات رله شما موجب خطا شده اند</string>
-  <string name="exit_nodes">گره های خروجی</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">اثر انگشتها ، اسامی مستعار ، کشورها و آدرسها برای آخرین جهش </string>
-  <string name="enter_exit_nodes"> گره های خروجی را وارد کنید</string>
-  <string name="exclude_nodes">این گره ها را استفاده نکن</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">اثر انگشتها، اسامی مستعار ، کشورها و آدرسهایی که نباید استفاده شوند</string>
-  <string name="enter_exclude_nodes"> گره هایی که نباید استفاده شوند</string>
-  <string name="strict_nodes">گره های محدود</string>
-  <string name="use_only_these_specified_nodes">فقط * از این گره های مشخص شده استفاده کنید* </string>
-  <string name="bridges">Bridges</string>
-  <string name="use_bridges">از پل Bridges کن</string>
-  <string name="bridges_obfuscated">پل های گیج کننده</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">گره ورودی متناوب به شبکه تور را فعال کنید</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">اگر Bridges تنظیم شده پلهای مربوط به پروکسی گیج کننده هستند این گزینه را فعال کنید</string>
-  <string name="ip_address_and_port_of_bridges">آدرس آی پی و پورتِ پل ها</string>
-  <string name="enter_bridge_addresses">آدرس Bridges را وارد کنید</string>
-  <string name="relays">بازپخش کننده ها</string>
-  <string name="relaying">درحال بازپخش</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">دستگاه خود را برای یک بازپخش کننده غیر-خروجی فعال کنید</string>
-  <string name="relay_port">پورت بازپخش کننده</string>
-  <string name="listening_port_for_your_tor_relay"> پورت شنونده برای باز پخش تور</string>
-  <string name="enter_or_port">پورت OR را وارد کنید</string>
-  <string name="relay_nickname">نام مستعار بازپخش کننده</string>
-  <string name="the_nickname_for_your_tor_relay">نام مستعار بازپخش کننده شما</string>
-  <string name="enter_a_custom_relay_nickname">یک نام مستعار دلخواه برای بازپخش کننده وارد کنید</string>
-  <string name="reachable_addresses">آدرس های قابل دسترس</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">بعنوان یک کاربر پشت دیواره آتش با سیاست های محدود کننده اجرا کنید</string>
-  <string name="reachable_ports">پورت‌های قابل دسترس</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">پورت‌های قابل دسترس پشت یک فایروال محدودکننده</string>
-  <string name="enter_ports">پورت‌ها را وارد کنید</string>
-  <string name="enable_hidden_services">سرویس‌های مخفی را فعال کن</string>
-  <string name="run_servers_accessible_via_the_tor_network">اجازه بده سرورهای روی دستگاه از طریق شبکه تور قابل دسترسی باشند</string>
-  <string name="enter_localhost_ports_for_hidden_services">پورت های لوکال هاست را برای سرویس مخفی وارد کنید</string>
-  <string name="hidden_service_ports">پورت‌های سرویس مخفی</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">نام نشانی پذیر برای سرویس مخفی شما (بصورت خودکار تولید شده است)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">ثبت گزارش اشکال زدایی را به خروجی فعال کن (برای نمایش باید از adb یا aLogCat استفاده کنید)</string>
-  <string name="project_home">صفحه (های) اصلی پروژه:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">گواهی تور</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">3rd-Party-Software:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">یک اپلیکیشن میخواهد پورت %S سرویس مخفی را به شبکه تور باز کند. اگر به این اپلیکیشن اعتماد دارید این بی خطر است.</string>
-  <string name="found_existing_tor_process">یک تور درحال اجرا پیدا شد...</string>
-  <string name="something_bad_happened">اتفاق بدی افتاد. وقایع ثبت شده را چک کنید</string>
-  <string name="hidden_service_on">سرویس مخفی روی:</string>
-  <string name="unable_to_read_hidden_service_name">ناتوان در خواندن نام سرویس مخفی</string>
-  <string name="unable_to_start_tor">ناتوان در راه اندازی تور:</string>
-  <string name="unable_to_reset_tor">راه اندازی مجدد دستگاه شما ، قادر نیست به تنظیم مجدد Tor !</string>
-  <string name="pref_use_sys_iptables_title">از Iptables پیش فرض استفاده کن</string>
-  <string name="pref_use_sys_iptables_summary">به جای چیزی که با ربات پیازی اومده، از باینری آی پی تیبلز داخلی استفاده کن</string>
-  <string name="error_installing_binares">فایلهای باینری تور قادر به نصب و یا ارتقا نبودند</string>
-  <string name="pref_use_persistent_notifications">وقتی ربات پیازی متصل است، همیشه آیکون مربوط را در نوار ابزار نگه دار.</string>
-  <string name="pref_use_persistent_notifications_title">آگاهسازی همیشه روشن</string>
-  <string name="pref_use_expanded_notifications">نمایش اطلاع رسانی گسترده با کشور خروجی Tor و IP</string>
-  <string name="pref_use_expanded_notifications_title">اطلاعیه گسترده</string>
-  <string name="notification_using_bridges">Bridges فعال شدند!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">زبان</string>
-  <string name="set_locale_summary">زبان محلی  ربات پیازی را انتخاب کنید</string>
-  <string name="wizard_locale_title">انتخاب زبان</string>
-  <string name="wizard_locale_msg">زبان کنونی را تعویض و یا به شکل پیشفرض رهایش کنید</string>
-  <string name="powered_by">طراحی شده توسط Tor</string>
-  <string name="btn_save_settings">ذخیره تنظیمات</string>
-  <string name="no_internet_connection_tor">ارتباط اینترنتی وجود ندارد; تور آماده کار است... </string>
-  <string name="bandwidth_">پهنای باند:</string>
-  <string name="down">پائین</string>
-  <string name="up">بالا</string>
-  <string name="pref_disable_network_title">خاموش کردن در صورت عدم وجود شبکه</string>
-  <string name="pref_disable_network_summary">در صورتی که شبکه وجود نداشته باشد خاموش شود</string>
-  <string name="newnym">شما به شناسه جدید تور منتقل شدید</string>
-  <string name="menu_verify_browser">مرورگر</string>
-  <string name="menu_use_chatsecure">استفاده از ChatSecure</string>
-  <string name="permission_manage_tor_label">مدیریت تور</string>
-  <string name="permission_manage_tor_description">این برنامه بتواند سرویس تور را مدیریت کند</string>
-  <string name="install_apps_">برنامه نصب شود؟</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">ارتباط شبکه ای وجود ندارد. تور به حالت خواب می رود</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">ارتباط شبکه ای خوب است. تور را بیدار نمایید...</string>
-  <string name="updating_settings_in_tor_service">به روز رسانی تنظیمات در سرویس Tor</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">پورتی که تور ارائه می دهد SOCKS proxy روی (پیش فرض: 9050 یا 0 برای غیرفعال کردن)</string>
-  <string name="pref_socks_dialog">پیکربندی پورت SOCKS</string>
-  <string name="pref_transport_title">Tor TransProxy Port</string>
-  <string name="pref_transport_summary">پورتی که تور ارائه می دهد Transparent Proxy روی (پیش فرض:  9040 یا  0 برای غیرفعال کردن)</string>
-  <string name="pref_transport_dialog">پیکربندی پورت Transproxy</string>
-  <string name="pref_dnsport_title">پورت Tor DNS</string>
-  <string name="pref_dnsport_summary">پورتی که Tor ارائه می دهد آن DNS روی (به طور پیش فرض: 5400 یا 0 برای غیر فعال کردن)</string>
-  <string name="pref_dnsport_dialog">پیکربندی پورت DNS</string>
-  <string name="pref_torrc_title">پیکربندی سفارشی Torrc</string>
-  <string name="pref_torrc_summary">فقط متخصصان:  enter direct torrc config lines</string>
-  <string name="pref_torrc_dialog">سفارشی Torrc</string>
-  <string name="wizard_tips_martus">موبایل مارتوس -  Benetech Human Rights Documentation App</string>
-  <string name="your_tor_public_ips_">IP های عمومی Tor شما:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">لطفا این برنامه را در آندروید از کار بیندازید  Android->Settings->Apps اگر مشکلی با اربت دارید:  </string>
-  <string name="app_conflict">تعارض برنامه</string>
-  <string name="pref_transproxy_refresh_title">خودکار تازه کردن Transproxy</string>
-  <string name="pref_transproxy_refresh_summary">درخواست مجدید برای قوانین Transproxy  وقتی وضعیت شبکه تغییر کرد</string>
-  <string name="pref_transproxy_flush_title">حذف اجباری Transproxy</string>
-  <string name="pref_transproxy_flush_summary">اینجا را فشار دهید برای برهم ریختن تمام قوانین  transproxy</string>
-  <string name="transparent_proxy_rules_flushed_">قوانین Transparent proxy  برهم ریخته شد! </string>
-  <string name="you_do_not_have_root_access_enabled">شما دسترسی روت را فعال نکردید. </string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_"> برای اعمال تنظیمات جدید باید اوربات را خاموش و روشن کنید.</string>
-  <string name="menu_vpn">وی پی ان</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Bridges به روز شدند</string>
-  <string name="restart_orbot_to_use_this_bridge_">برای فعال کردن تغییرات لطفا Orbot را راه اندازی مجدد کنید</string>
-  <string name="menu_qr">کدهای QR</string>
-  <string name="bridge_mode">حالت Bridges</string>
-  <string name="get_bridges_email">ایمیل</string>
-  <string name="get_bridges_web">وب</string>
-  <string name="activate">فعال</string>
-  <string name="apps_mode">حالت نرم افزار VPN</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">با استفاده از امکان وی پی ان اندروید٬ اوربات ترافیک تمام اپلیکیشن های موبایل شما را از طریق شبکه تور انتقال میدهد. 
-\n\n*هشدار* 
-امکان تونل تمام گوشی هنوز جدید و در حال آزمایش است. به همین دلیل امکان دارد که به صورت خودکار فعال نشود یا هنگام استفاده قطع شود. از این امکان برای ناشناس بودن در وب هرگز نباید استفاده کنید و باید فقط از آن برای عبور از فایروال ها و دور زدن فیلترینگ استفاده شود.</string>
-  <string name="send_email">ایمیل بفرست</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">می توانید آدرس  bridge  را از طریق ایمیل٬ وب یا با اسکن کردن  bridge QR code بدست آورید. ایمیل یا وب پایین را برای درخواست آدرس bridge انتخاب کنید.\n\n وقتی آدرس را دارید آن را کپی کنید و برگردانید در  اولویت های  Bridges در تنظیمات اربت و آن را دوباره راه اندازی کنید.</string>
-  <string name="install_orweb">نصب Orfox</string>
-  <string name="standard_browser">مرورگر استاندارد</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">نکته:  Tor bridges استاندارد فقط بر روی دستگاه های Intel X86/ATOM  کار می کند</string>
-  <string name="vpn_default_world">جهان</string>
-</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
deleted file mode 100644
index 5eb1777..0000000
--- a/res/values-fi/strings.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot on ilmainen välityspalvelinsovellus, joka tarjoaa muille sovelluksille mahdollisuuden käyttää internetiä turvallisemmin. Orbot käyttää Toria kryptaamaan verkkoliikenteesi ja sitten piilottaa sen kierrättämällä sitä usean tietokoneen kautta ympäri maailman. Tor on vapaa ohjelmisto ja avoin verkosto, jotka auttavat puolustautumaan vapautta ja yksityisyyttä uhkaavalta verkkovalvonnalta ja valtioiden verkonseurannalta sekä suojaamaan salaisia liiketoimintoja ja -yhteyksiä.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">käynnistä ja pysäytä Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot käynnistyy...</string>
-  <string name="status_activated">Yhdistetty Tor-verkkoon</string>
-  <string name="status_disabled">Orbot on poistettu käytöstä</string>
-  <string name="tor_process_starting">Käynnistetään Tor-ohjelmaa...</string>
-  <string name="tor_process_complete">valmis.</string>
-  <string name="tor_process_waiting">odottaa.</string>
-  <string name="not_anonymous_yet">VAROITUS: Verkkoliikenteesi ei ole vielä anonyymiä! Määritä ohjelmasi käyttämään HTTP-välityspalvelinta 127.0.0.1:8118 tai SOCKS4A- tai SOCKS5-välityspalvelinta 127.0.0.1:9050</string>
-  <string name="menu_home">Alkuun</string>
-  <string name="menu_browse">Selaa</string>
-  <string name="menu_settings">Asetukset</string>
-  <string name="menu_log">Loki</string>
-  <string name="menu_info">Ohje</string>
-  <string name="menu_start">Aloita</string>
-  <string name="menu_stop">Lopeta</string>
-  <string name="menu_about">Tietoa</string>
-  <string name="main_layout_download">Lataa</string>
-  <string name="main_layout_upload">Lähetä</string>
-  <string name="button_help">Apua</string>
-  <string name="button_close">Sulje</string>
-  <string name="button_about">Tietoa</string>
-  <string name="button_clear_log">Tyhjennä loki</string>
-  <string name="menu_verify">Tarkista</string>
-  <string name="menu_exit">Lopeta</string>
-  <string name="menu_scan">Skannaa sillan QR-koodi</string>
-  <string name="menu_share_bridge">Jaa sillan QR-koodi</string>
-  <string name="press_to_start">- paina pitkään käynnistääksesi -</string>
-  <string name="pref_trans_proxy_group">Läpinäkyvä välityspalvelimen käyttö (vaatii roottauksen)</string>
-  <string name="pref_trans_proxy_title">Läpinäkyvä välityspalvelimen käyttö</string>
-  <string name="pref_trans_proxy_summary">Ohjelmien automaattinen Torimointi</string>
-  <string name="pref_transparent_all_title">Torraa kaikki</string>
-  <string name="pref_transparent_all_summary">Välitä kaikki ohjelmien liikenne Torin läpi</string>
-  <string name="pref_transparent_port_fallback_title">Välityspalvelinportin varoasetus</string>
-  <string name="pref_transparent_port_fallback_summary">VAROITUS: Kiertää yleisiä portteja (80, 443, jne). *KÄYTÄ VAIN* jos \"Kaikki\" tai \"Sovellus\" -tila ei toimi.</string>
-  <string name="pref_transparent_port_title">Porttilista</string>
-  <string name="pref_transparent_port_summary">Välityspalvelimen kautta vietävien porttien lista. *KÄYTÄ VAIN* jos \"Kaikki\" tai \"Sovellus\" -tila ei toimi.</string>
-  <string name="pref_transparent_port_dialog">Kirjoita portit, jotka viedään välityspalvelimen kautta</string>
-  <string name="pref_has_root">Pyydä root-tason oikeuksia</string>
-  <string name="pref_has_root_summary">Pyydä root-tason oikeuksia läpinäkyvään tiedonvälitykseen</string>
-  <string name="status_install_success">Tor-binääritiedostojen asennus onnistui!</string>
-  <string name="status_install_fail">Tor-binääritiedostojen asennus epäonnistui. Tarkista loki ja ilmoita asiasta osoitteeseen tor-assistants at torproject.org</string>
-  <string name="title_error">Sovellusvirhe</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Tietoja Orbotista</string>
-  <string name="btn_next">Seuraava</string>
-  <string name="btn_back">Takaisin</string>
-  <string name="btn_finish">Lopeta</string>
-  <string name="btn_okay">Selvä</string>
-  <string name="btn_cancel">Peruuta</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Joitakin Orbotin yksityiskohtia</string>
-  <string name="wizard_details_msg">Orbot on avoimen lähdekoodin sovellus, joka sisältää Torin, LibEventin ja Polipon. Se tarjoaa paikallisen HTTP-välityspalvelimen (8118) ja SOCKS-välityspalvelimen (9050) Tor-verkkoon. Rootatulla laitteella Orbot kykenee myös reitittämään kaiken verkkoliikenteen Torin läpi.</string>
-  <string name="wizard_permissions_root">Lupa myönnetty</string>
-  <string name="wizard_permissions_stock">Orbot-oikeudet</string>
-  <string name="wizard_premissions_msg_root">Loistavaa! Olemme havainneet että olet antanut root-tason oikeudet Orbotille. Käytämme näiden oikeuksien suomia mahdollisuuksia harkiten.</string>
-  <string name="wizard_permissions_msg_stock">Vaikka root-tason oikeuksien antaminen Orbotille ei ole pakollista, tulee Orbotista tehokkaampi työkalu jos laitteellasi on root-tason oikeudet. Käytä alla olevaa painiketta antaaksesi Orbotille supervoimat!</string>
-  <string name="wizard_permissions_no_root">Jos sinulla ei ole root-tason oikeuksia tai et tiedä, mitä tarkoitamme, käytä vain Orbotille suunniteltuja ohjelmia.</string>
-  <string name="wizard_permissions_consent">Ymmärrän ja haluan jatkaa ilman Superuser-tason oikeuksia</string>
-  <string name="wizard_permission_enable_root">Anna root-tason oikeudet Orbotille</string>
-  <string name="wizard_configure">Konfiguroi Torimointi</string>
-  <string name="wizard_configure_msg">Orbot mahdollistaa kaiken sovellusliikenteen reitittämisen Tor-sovelluksen kautta TAI valita sovelluksesi yksilöllisesti.</string>
-  <string name="wizard_configure_all">Välitä kaikkien sovellusten tiedonsiirto Tor-verkon kautta</string>
-  <string name="wizard_configure_select_apps">Valitse Tor-verkkoa käyttävät sovellukset</string>
-  <string name="wizard_tips_tricks">Orbotia käyttävät sovellukset</string>
-  <string name="wizard_tips_msg">Alempana näkyvät sovellukset on suunniteltu toimimaan Orbotin kanssa. Paina jokaista nappia, jos haluat asentaa ne nyt. Voit myös löytää ne myöhemmin Googlen Play-kaupasta, GuardianProject.info:n nettisivulta tai F-Droid.org:in kautta.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Turvallinen pikaviestisovellus Androidille</string>
-  <string name="wizard_tips_proxy">Välityspalvelinasetukset - Opi konfiguroimaan sovellukset toimimaan Orbotin kanssa</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo-hakukonesovellus</string>
-  <string name="wizard_tips_twitter">Aseta Twitter-välityspalvelinisännäksi \"localhost\" ja portiksi 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Tee tarina ja jätä se torin turvallisuuteen!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Välityspalvelinasetukset</string>
-  <string name="wizard_proxy_help_msg">Jos käyttämäsi Android-sovellus tukee HTTP- tai SOCKS-välityspalvelimen käyttöä, voit määrittää sen yhdistämään Orbotiin ja käyttämään Toria.\n\n\n Isäntänimi on 127.0.0.1 tai \"localhost\". HTTP-portti on 8118. SOCKS-portti on 9050. SOCKS4A- tai SOCKS5-protokollia tulisi käyttää, mikäli mahdollista.\n \n\n\n Voit lukea lisää välityspalvelinten käytöstä Androidilla usein kysytyistä kysymyksistä osoitteessa: http://tinyurl.com/proxyandroid\n</string>
-  <string name="wizard_final">Orbot on valmis!</string>
-  <string name="wizard_final_msg">Miljoonat ihmiset ympäri maailman käyttävät Toria eri syistä.\n\nJornalistit ja bloggaajat, ihmisoikeuksien puolustajat, poliisit, sotilaat, yritykset, sorrettujen valtioiden kansalaiset, ja tavalliset kansalaiset... ja nyt sinäkin olet valmis siihen!</string>
-  <string name="wizard_exit_at_first_screen_toast">Määritä Orbot ennen kuin alat käyttää sitä!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Tämä avaa selaimesi osoitteeseen https://check.torproject.org nähdäkseen, onko Orbot varmaan konfiguroitu ja onko sinut yhdistetty Tor-sovellukseen.</string>
-  <string name="pref_hs_group">Piilopalvelun isännöinti</string>
-  <string name="pref_general_group">Yleiset</string>
-  <string name="pref_start_boot_title">Aloita Orbot käynnistettäessä</string>
-  <string name="pref_start_boot_summary">Käynnistä Orbot ja yhdistä Toriin automaattisesti, kun Anroid-laitteesi käynnistyy</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot tuo Torin Androidille!\n\nTor auttaa sinua suojautumaan sisältösuodattimilta sekä verkkoliikenteen seurannalta ja valvonnalta, jotka uhkaavat yksityisyyttä, salaista tietoa ja henkilökohtaisia suhteita.\n\nTämä velho auttaa sinua määrittämään Orbotin ja Torin laitteellasi.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Varoitus</string>
-  <string name="wizard_warning_msg">Pelkkä Orbotin asentaminen ei automaattisesti tee verkkoliikenteestäsi anonyymiä. Sinun täytyy määrittää Orbot kunnolla, jotta laitteesi ja muut sovellukset käyttävät Toria onnistuneesti.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Käyttöoikeudet</string>
-  <string name="wizard_permissions_root_msg1">Voit antaa Orbotille Superuser-oikeudet mahdollistaaksesi joitakin lisäominaisuuksia, kuten läpinäkyvän tiedonvälityksen.</string>
-  <string name="wizard_permissions_root_msg2">Jos et halua tehdä tätä, varmista, että käytät Orbotin kanssa toimivaksi suunniteltuja sovelluksia.</string>
-  <string name="wizard_permissions_no_root_msg">Laitteesi ei vaikuta olevan rootattu tai tarjoavan root- tai \'Superuser\'-oikeuksia.\n\nKokeile \'Sovellukset\'-tilaa päänäytöltä.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbotia käyttävät sovellukset</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Turvallinen chattailusovellus Off-the-Record -salauksella</string>
-  <string name="wizard_tips_play">Löydä kaikki Guardian-projektin sovellukset Googlen Play-kaupasta</string>
-  <string name="wizard_tips_fdroid">Löydä kaikki Guardian Projectin sovellukset F-Droidista</string>
-  <string name="wizard_tips_fdroid_org">Löydä kaikki Guardian Projectin sovellukset osoitteesta https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Läpinäkyvä tiedonvälitys</string>
-  <string name="wizard_transproxy_msg">Tämä sallii sovellustesi tietoliikenteen menemisen automaattisesti Torin läpi</string>
-  <string name="wizard_transproxy_hint">(Rastita tämä ruutu, jos et tiedä, mitä tarkoitamme)</string>
-  <string name="wizard_transproxy_none">Ei mikään</string>
-  <string name="pref_transparent_tethering_title">Tor-välityspalvelimena oleminen</string>
-  <string name="pref_transparent_tethering_summary">Salli Torin läpinäkyvä tiedonvälitys Wifille ja USB-välityspalvelimena oleville laitteille (vaatii uudelleenkäynnistyksen)</string>
-  <string name="button_grant_superuser">Pyydä Superuser-oikeuksia</string>
-  <string name="pref_select_apps">Valitse sovellukset</string>
-  <string name="pref_select_apps_summary">Valitse Torin läpi reititettävät sovellukset</string>
-  <string name="pref_node_configuration">Tor-solmukohdan konfigurointi</string>
-  <string name="pref_node_configuration_summary">Nämä ovat lisäasetuksia, jotka voivat vähentää anonyymiyttäsi</string>
-  <string name="pref_entrance_node">Tor-sisääntulosolmu</string>
-  <string name="pref_entrance_node_summary">Sormenjäljet, lovet, maat ja osoitteet ensimmäiseen hyppyyn</string>
-  <string name="pref_entrance_node_dialog">Kirjoita sisääntulosolmujen nimet</string>
-  <string name="button_proxy_all">Välitä kaikki</string>
-  <string name="button_proxy_none">Älä välitä mitään</string>
-  <string name="button_invert_selection">Käännä valinta</string>
-  <string name="pref_proxy_title">Lähtevän liikenteen välityspalvelin (valinnainen)</string>
-  <string name="pref_proxy_type_title">Lähtevän liikenteen välityspalvelimen tyyppi</string>
-  <string name="pref_proxy_type_summary">Välityspalvelimen protokolla: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Kirjoita välityspalvelintyyppi</string>
-  <string name="pref_proxy_host_title">Ulosmenovälityspalvelimen isäntä</string>
-  <string name="pref_proxy_host_summary">Välityspalvelimen verkko-osoite</string>
-  <string name="pref_proxy_host_dialog">Kirjoita välityspalvelimen isäntä</string>
-  <string name="pref_proxy_port_title">Ulosmenovälityspalvelimen portti</string>
-  <string name="pref_proxy_port_summary">Välityspalvelimen portti</string>
-  <string name="pref_proxy_port_dialog">Kirjoita välityspalvelimen portti</string>
-  <string name="pref_proxy_username_title">Ulosmenovälityspalvelimen käyttäjänimi</string>
-  <string name="pref_proxy_username_summary">Välityspalvelimen käyttäjätunnus (valinnainen)</string>
-  <string name="pref_proxy_username_dialog">Kirjoita välityspalvelimen käyttäjätunnus</string>
-  <string name="pref_proxy_password_title">Ulosmenovälityspalvelimen salasana</string>
-  <string name="pref_proxy_password_summary">Välityspalvelimen salasana (valinnainen)</string>
-  <string name="pref_proxy_password_dialog">Kirjoita välityspalvelimen salasana</string>
-  <string name="status">Tila</string>
-  <string name="setting_up_full_transparent_proxying_">Täyttä läpinäkyvää tiedonvälitystä otetaan käyttöön...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Sovelluspohjaista läpinäkyvää tiedonvälitystä otetaan käyttöön...</string>
-  <string name="transparent_proxying_enabled">Läpinäkyvä tiedonvälitys SALLITTU</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy on otettu käyttöön Tor-välityspalvelimimena olemista varten!</string>
-  <string name="warning_error_starting_transparent_proxying_">VAROITUS: virhe aloittaessa läpinäkyvää tiedonvälitystä!</string>
-  <string name="transproxy_rules_cleared">TransProxyn säännöt tyhjennetty</string>
-  <string name="couldn_t_start_tor_process_">Tor-prosessin käynnistäminen epäonnistui:</string>
-  <string name="privoxy_is_running_on_port_">Polipo on käynnissä portissa:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Porttipohjaista läpinäkyvää tiedonvälitystä otetaan käyttöön...</string>
-  <string name="bridge_error">Siltavirhe</string>
-  <string name="bridge_requires_ip">Jos haluat käyttää siltaominaisuutta, kirjoita vähintään yhden sillan IP-osoite.</string>
-  <string name="send_email_for_bridges">Lähetä sähköpostia osoitteeseen bridges at torproject.org gmail-osoitteesta siten, että viestin ainoa rivi on \"get bridges\".</string>
-  <string name="error">Virhe</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">ReachableAccess-asetuksesi aiheuttivat virheen!</string>
-  <string name="your_relay_settings_caused_an_exception_">Releasetuksesi aiheuttivat virheen!</string>
-  <string name="exit_nodes">Päätesolmut</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Sormenjäljet, lovet, maat ja osoitteet viimeiselle hypylle</string>
-  <string name="enter_exit_nodes">Kirjoita päätesolmut</string>
-  <string name="exclude_nodes">Vältä solmuja</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Vältettävät sormenjäljet, lovet, maat ja osoitteet</string>
-  <string name="enter_exclude_nodes">Kirjoita vältettävät solmut</string>
-  <string name="strict_nodes">Tarkat solmukohdat</string>
-  <string name="use_only_these_specified_nodes">Käytä *vain* näitä solmuja</string>
-  <string name="bridges">Sillat</string>
-  <string name="use_bridges">Käytä siltoja</string>
-  <string name="bridges_obfuscated">Hämärät sillat</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Salli vaihtoehtoiset sisääntulosolmut Tor-verkkoon</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Salli hämärien siltojen konfigurointi</string>
-  <string name="ip_address_and_port_of_bridges">Siltojen IP-osoitteet ja portit</string>
-  <string name="enter_bridge_addresses">Kirjoita siltaosoitteet</string>
-  <string name="relays">Releet</string>
-  <string name="relaying">Releytys</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Salli laitteen käyttö välireleenä</string>
-  <string name="relay_port">Releportti</string>
-  <string name="listening_port_for_your_tor_relay">Tor-releesi kuunteluportti</string>
-  <string name="enter_or_port">Kirjoita OR-portti</string>
-  <string name="relay_nickname">Releen kutsumanimi</string>
-  <string name="the_nickname_for_your_tor_relay">Kutsumanimi Tor-releellesi</string>
-  <string name="enter_a_custom_relay_nickname">Kirjoita mukautettu relenimi</string>
-  <string name="reachable_addresses">Saavutettavissa olevat osoitteet</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Aja asiakkaana rajoitetun palomuurin takaa</string>
-  <string name="reachable_ports">Saavutettavissa olevat portit</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Rajoitetun palomuurin takaa saavutettavat portit</string>
-  <string name="enter_ports">Kirjoita portit</string>
-  <string name="enable_hidden_services">Piilopalvelun isännöinti</string>
-  <string name="run_servers_accessible_via_the_tor_network">salli laitteensisäisen palvelimen käyttö osana Tor-verkkoa</string>
-  <string name="enter_localhost_ports_for_hidden_services">kirjoita sisäiset portit piilopalveluille</string>
-  <string name="hidden_service_ports">Piilopalveluiden portit</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">piilopalvelusi nimiosoite (luodaan automaattisesti)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">salli virheenjäljityslokin tulo tulostevirtaan (käytä adb:tä tai aLogCat:ia tarkastellaksesi)</string>
-  <string name="project_home">Projektin kotisivu(t):</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Tor-lisenssi</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">3:n osapuolen ohjelmisto:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="hidden_service_request">Sovellus haluaa avata piilopalveluportin %S Tor-verkkoon. Tämä on turvallista, jos luotat sovellukseen.</string>
-  <string name="found_existing_tor_process">löytyi olemassaoleva Tor-prosessi...</string>
-  <string name="something_bad_happened">Jotain pahaa tapahtui. Tarkista loki</string>
-  <string name="hidden_service_on">piilopalvelun sijainti:</string>
-  <string name="unable_to_read_hidden_service_name">piilopalvelunimen lukeminen epäonnistui</string>
-  <string name="unable_to_start_tor">Torin käynnistys epäonnistui:</string>
-  <string name="unable_to_reset_tor">Toria ei voitu nollata, käynnistä laitteesi uudelleen!</string>
-  <string name="pref_use_sys_iptables_title">Käytä Ip-oletustauluja</string>
-  <string name="pref_use_sys_iptables_summary">käytä sisäänrakennettua Ip-taulubinääriä Orbotin mukana tulleen sijasta</string>
-  <string name="error_installing_binares">Tor-binääritiedostojen asentaminen tai päivitys epäonnistui.</string>
-  <string name="pref_use_persistent_notifications">Pidä kuvake aina työkalupalkissa, kun Orbot on yhdistetty</string>
-  <string name="pref_use_persistent_notifications_title">Ilmoitukset aina käytössä</string>
-  <string name="pref_use_expanded_notifications">Näytä laajennettu ilmoitus (Torin ulostulon maa ja IP)</string>
-  <string name="pref_use_expanded_notifications_title">Laajennetut ilmoitukset</string>
-  <string name="notification_using_bridges">Sillat käytössä!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Kieli</string>
-  <string name="set_locale_summary">Valitse maa-asetus ja kieli Orbit-sovellukselle</string>
-  <string name="wizard_locale_title">Valitse kieli</string>
-  <string name="wizard_locale_msg">Jätä oletusarvoon tai vaihda nykyiseen kieleen</string>
-  <string name="powered_by">perustuu Toriin</string>
-  <string name="btn_save_settings">Tallenna asetukset</string>
-  <string name="no_internet_connection_tor">Ei internet-yhteyttä; Tor on valmiustilassa...</string>
-  <string name="bandwidth_">Kaistanleveys:</string>
-  <string name="down">alas</string>
-  <string name="up">ylös</string>
-  <string name="pref_disable_network_title">Ei verkon automaattilepotilaa</string>
-  <string name="pref_disable_network_summary">Laita Tor nukkumaan, kun internet-yhteyttä ei ole saatavilla</string>
-  <string name="newnym">Vaihdoit Tor-identiteettisi uuteen!</string>
-  <string name="menu_use_chatsecure">Käytä ChatSecurea</string>
-  <string name="permission_manage_tor_label">Hallinnoi Toria</string>
-  <string name="permission_manage_tor_description">Anna tämän sovelluksen ohjata Tor-palvelua</string>
-  <string name="install_apps_">Asennetaanko sovelluksia?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Ei verkkoyhteyttä. Tor siirtyy valmiustilaan...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Verkkoyhteys toimii. Herätetään Tor...</string>
-  <string name="updating_settings_in_tor_service">päivitetään Tor-palvelun asetuksia</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Portti, jossa Torin SOCKS-proxy on (oletus: 9050, 0 = poista käytöstä)</string>
-  <string name="pref_socks_dialog">SOCKS-portin valinta</string>
-  <string name="pref_transport_title">Tor TransProxyn portti</string>
-  <string name="pref_transport_summary">Portti, jossa Torin läpinäkyvä välityspalvelin on (oletus: 9040, 0 = poista käytöstä)</string>
-  <string name="pref_transport_dialog">TransProxy-portin valinta</string>
-  <string name="pref_dnsport_title">Tor DNS-portti</string>
-  <string name="pref_dnsport_summary">Portti, jossa Torin DNS on (oletus: 5400, 0 = poista käytöstä)</string>
-  <string name="pref_dnsport_dialog">DNS-portin valinta</string>
-  <string name="pref_torrc_title">Torrc:n mukautetut asetukset</string>
-  <string name="pref_torrc_summary">VAIN ASIANTUNTIJAT: syötä torrc:n määritysrivejä suoraan</string>
-  <string name="pref_torrc_dialog">Mukautettu torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetechin ihmisoikeuksien dokumentaatiosovellus</string>
-  <string name="your_tor_public_ips_">Julkiset Tor-IP:si:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Poista tämä sovellus käytöstä kohdassa Android->Asetukset->Sovellukset, jos Orbotin kanssa on ongelmia:</string>
-  <string name="app_conflict">Sovellusristiriita</string>
-  <string name="pref_transproxy_refresh_title">Transproxyn automaattinen päivitys</string>
-  <string name="pref_transproxy_refresh_summary">Uudista Transproxy-säännöt, kun verkon tila muuttuu</string>
-  <string name="pref_transproxy_flush_title">Transproxyn PAKOTETTU POISTO</string>
-  <string name="pref_transproxy_flush_summary">Kosketa tätä tyhjentääksesi transproxyn verkkosäännöt VÄLITTÖMÄSTI</string>
-  <string name="transparent_proxy_rules_flushed_">Läpinäkyvän välityspalvelimen säännöt tyhjennetty!</string>
-  <string name="you_do_not_have_root_access_enabled">Sinulla ei ole ROOT-oikeuksia käytössä</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Saatat joutua pysäyttämään ja käynnistämään Orbotin, jotta asetusten muutos tulee käyttöön</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">Mbps</string>
-  <string name="kb">kt</string>
-  <string name="mb">Mt</string>
-  <string name="bridges_updated">Sillat päivitetty</string>
-  <string name="restart_orbot_to_use_this_bridge_">Käynnistä Orbot uudelleen ottaaksesi muutokset käyttöön</string>
-  <string name="menu_qr">QR-koodit</string>
-  <string name="bridge_mode">Siltatila</string>
-  <string name="get_bridges_email">Sähköposti</string>
-  <string name="get_bridges_web">Verkkosivu</string>
-  <string name="activate">Ota käyttöön</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Voit siirtää kaikki sovellukset laitteellasi kulkemaan Tor-verkon kautta Androidin VPN-toiminnolla.\n\n*VAROITUS* Tämä on uusi, kokeellinen ominaisuus, joka ei välttämättä käynnisty automaattisesti tai voi pysähtyä. Sitä EI pitäisi käyttää anonymiyteen, AINOASTAAN palomuurien ja suodatinten ohittamiseen.</string>
-  <string name="send_email">Lähetä sähköpostia</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Voit saada sillan osoitteen sähköpostin kautta, verkkosivulta tai skannaamalla sillan QR-koodin. Valitse \'Sähköposti\' tai \'Verkkosivu\' alta pyytääksesi sillan osoitetta.\n\nKun sinulla on osoite, kopioi & liitä se \"Sillat\" -kohtaan Orbotin asetuksissa ja käynnistä uudelleen.</string>
-  <string name="standard_browser">Normaali selain</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">HUOMAA: Vain standardit Tor-sillat toimivat Intel X86/ATOM -laitteilla.</string>
-</resources>
diff --git a/res/values-fr-rFR/strings.xml b/res/values-fr-rFR/strings.xml
deleted file mode 100644
index 7685171..0000000
--- a/res/values-fr-rFR/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot est une appli libre de serveur mandataire permettant aux applis d\'utiliser Internet avec une sécurité accrue. Orbot utilise Tor pour chiffrer votre trafic Internet et le cache ensuite en le relayant au travers d\'ordinateurs de par le monde. Tor est un logiciel libre et un réseau ouvert qui vous aide à vous défendre contre une forme de surveillance réseau qui menace la liberté personnelle et la protection des données personnelles, les activités professionnelles confidentielles et les relations, et l\'analyse du trafic des gouvernements.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">démarrer et arrêter Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot démarre...</string>
-  <string name="status_activated">Connecté au réseau Tor</string>
-  <string name="status_disabled">Orbot est désactivé</string>
-  <string name="status_shutting_down">TorService est en cours d\'extinction</string>
-  <string name="tor_process_starting">Démarrage du client Tor...</string>
-  <string name="tor_process_complete">terminé.</string>
-  <string name="tor_process_waiting">attente.</string>
-  <string name="not_anonymous_yet">AVERTISSEMENT : votre trafic n\'est pas encore anonyme ! Veuillez configurer vos applications pour qu\'elles utilisent le serveur mandataire HTTP 127.0.0.1:8118 ou le serveur mandataire SOCKS4A ou SOCKS5 à 127.0.0.1:9050</string>
-  <string name="menu_home">Accueil</string>
-  <string name="menu_browse">Parcourir</string>
-  <string name="menu_settings">Paramètres</string>
-  <string name="menu_log">Journal</string>
-  <string name="menu_info">Aide</string>
-  <string name="menu_apps">RPV</string>
-  <string name="menu_start">Démarrer</string>
-  <string name="menu_stop">Arrêter</string>
-  <string name="menu_about">À propos</string>
-  <string name="menu_promo_apps">Obtenir des applis...</string>
-  <string name="main_layout_download">Télchargement</string>
-  <string name="main_layout_upload">Téléversement</string>
-  <string name="button_help">Aide</string>
-  <string name="button_close">Fermer</string>
-  <string name="button_about">À propos</string>
-  <string name="button_clear_log">Effacer le journal</string>
-  <string name="menu_verify">Vérifier</string>
-  <string name="menu_exit">Quitter</string>
-  <string name="menu_scan">Balayer un code QR de pont</string>
-  <string name="menu_share_bridge">Partager un code QR de pont</string>
-  <string name="press_to_start">- appuyer longuement pour démarrer -</string>
-  <string name="pref_trans_proxy_group">Relayage transparent (root exigé)</string>
-  <string name="pref_trans_proxy_title">Relayage transparent</string>
-  <string name="pref_trans_proxy_summary">Torifaction automatique des applis</string>
-  <string name="pref_transparent_all_title">Tout passer par Tor</string>
-  <string name="pref_transparent_all_summary">Relayer le trafic de toutes les applis par Tor</string>
-  <string name="pref_transparent_port_fallback_title">Repli pour le relais de port</string>
-  <string name="pref_transparent_port_fallback_summary">AVERTISSEMENT : contourne les ports habituels (80, 443, etc). *À N\'UTILISER QUE* si les modes « Tout » ou « Appli » ne fonctionnent pas.</string>
-  <string name="pref_transparent_port_title">Liste des ports</string>
-  <string name="pref_transparent_port_summary">Liste des ports à relayer. *À N\'UTILISER QUE* si les modes « Tout » ou « Appli » ne fonctionnent pas.</string>
-  <string name="pref_transparent_port_dialog">Saisir les ports à relayer</string>
-  <string name="pref_has_root">Demander l\'accès Root</string>
-  <string name="pref_has_root_summary">Demander l\'accès Root pour un relayage transparent</string>
-  <string name="status_install_success">L\'exécutable de Tor a été installé avec succès !</string>
-  <string name="status_install_fail">Le fichier exécutable de Tor n\'a pu pas être installé. Veuillez vérifier le journal et le signaler à tor-assistants at torproject.org</string>
-  <string name="title_error">Erreur d\'application</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">À propos d\'Orbot</string>
-  <string name="btn_next">Suivant</string>
-  <string name="btn_back">Précédent</string>
-  <string name="btn_finish">Fin</string>
-  <string name="btn_okay">OK</string>
-  <string name="btn_cancel">Annuler</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Quelques détails sur Orbot</string>
-  <string name="wizard_details_msg">Orbot est une application à code source ouvert incluant Tor, LibEvent et Polipo. Elle fournit un mandataire local HTTP (8118) et un mandataire SOCKS (9050) vers le réseau Tor. Orbot a aussi la capacité, sur un appareil rooté, d\'envoyer tout le trafic Internet par Tor.</string>
-  <string name="wizard_permissions_root">Permission accordée</string>
-  <string name="wizard_permissions_stock">Permissions d\'Orbot</string>
-  <string name="wizard_premissions_msg_root">Excellent ! Nous avons détecté les permissions root sont activées pour Orbot. Nous utiliserons ce pouvoir avec discernement.</string>
-  <string name="wizard_permissions_msg_stock">Bien que cela ne soit pas exigé, Orbot peut devenir un outil plus puissant si votre appareil à l\'accès root. Utilisez le bouton ci-dessous pour accorder à Orbot des superpouvoirs !</string>
-  <string name="wizard_permissions_no_root">Si vous n\'avez pas l\'accès root ou n\'avez aucune idée de quoi l\'on parle, assurez-vous d\'utiliser des applis conçues pour fonctionner avec Orbot.</string>
-  <string name="wizard_permissions_consent">Je comprends et je souhaite continuer sans superpouvoir</string>
-  <string name="wizard_permission_enable_root">Accorder les droits Root à Orbot</string>
-  <string name="wizard_configure">Configurer la torification</string>
-  <string name="wizard_configure_msg">Orbot vous donne l\'option de faire passer tout le trafic applicatif par Tor OU de choisir les applications individuellement.</string>
-  <string name="wizard_configure_all">Relayer toutes les applis par Tor</string>
-  <string name="wizard_configure_select_apps">Choisir des applis pour Tor</string>
-  <string name="wizard_tips_tricks">Applis concues pour Orbot</string>
-  <string name="wizard_tips_msg">Les applis ci-dessous ont été développées pour fonctionner avec Orbot. Cliquez sur chaque bouton pour les installer maintenant, ou trouvez plus tard dans Google Play Store, sur le site Web GuardianProject.info ou avec F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Client sécurisé de messagerie instantanée pour Android</string>
-  <string name="wizard_tips_proxy">Paramètres du relais - Apprendre à configurer des applis pour qu\'elles fonctionnent avec Orbot</string>
-  <string name="wizard_tips_duckgo">Appli du moteur de recherche DuckDuckgo</string>
-  <string name="wizard_tips_twitter">Configurer le mandataire Twitter sur l\'hôte « localhost:8118 » et le port 8118</string>
-  <string name="wizard_tips_story_maker">Faiseur d\'histoires -  Rédigez une histoire et laissez Tor s\'occuper de la sécurité !</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Paramètres du mandataire</string>
-  <string name="wizard_proxy_help_msg">Si l\'appli Android que vous utilisez peut prendre en charge un mandataire HTTP ou SOCKS, vous pouvez alors la configurer pour se connecter à Orbot et utiliser Tor.\n\n\n Le paramètre de l\'hôte est 127.0.0.1 or « localhost ». Pour HTTP, le paramètre de port est 8118. Pour SOCKS, le mandataire est 9050. Vous devriez utiliser SOCKS4A ou SOCKS5 si possible.\n \n\n\n Vous pouvez en apprendre davantage sur l\'utilisation d\'un serveur mandataire sur Android dans la FAQ sur : http://tinyurl.com/proxyandroid\n </string>
-  <string name="wizard_final">Orbot est prêt !</string>
-  <string name="wizard_final_msg">Des millions de personnes de par le monde utilisent Tor pour une grande variété de raisons.\n\nDes journalistes et des blogueurs, des défenseurs des droits humains, des officiers des forces de l\'ordre, des soldats, des sociétés, des citoyens de régimes répressifs, et de simples citoyens... et maintenant vous êtes aussi prêt à l\'utiliser !</string>
-  <string name="wizard_exit_at_first_screen_toast">Veuillez configurer Orbot avant de pouvoir commencer à l\'utiliser !</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Vous vous êtes connecté au réseau Tor avec succès - mais cela NE SIGNIFIE PAS que votre appareil est sécurisé. Vous pouvez utiliser le bouton « Navigateur » pour tester votre connexion. \n\n Visitez https://guardianproject.info/apps/orbot ou envoyez un courriel à help at guardianproject.info pour en savoir davantage.</string>
-  <string name="tor_check">Ceci ouvrira votre navigateur Web sur https://check.torproject.org afin de déterminer si Orbot est convenablement configuré et si vous êtes connecté à Tor.</string>
-  <string name="pref_hs_group">Hébergement de services cachés</string>
-  <string name="pref_general_group">Général</string>
-  <string name="pref_start_boot_title">Démarrer Orbot à l\'amorçage</string>
-  <string name="pref_start_boot_summary">Démarrer Orbot automatiquement et se connecter à Tor lors de l\'amorçage de votre appareil Android</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot, c\'est Tor sur Android !\n\nTor vous aide à vous défendre contre le filtrage du contenu, l\'analyse du trafic et la surveillance du réseau qui menacent la vie privée, les informations confidentielles et les relations interpersonnelles.\n\nCet assistant vous aidera à configurer Orbot et Tor sur votre appareil.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Avertissement</string>
-  <string name="wizard_warning_msg">La simple installation d\'Orbot n\'anonymisera pas automatiquement votre trafic mobile.\n\nVous devez configurer Orbot adéquatement, ainsi que votre appareil et les autres applis pour utiliser Tor avec succès.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Permissions</string>
-  <string name="wizard_permissions_root_msg1">Vous pouvez optionnellement accorder à Orbot un accès « superutilisateur » pour activer des options avancées, comme le relayage transparent.</string>
-  <string name="wizard_permissions_root_msg2">Si vous ne voulez pas le faire, veuillez vous assurer d\'utiliser des applis conçues pour fonctionner avec Orbot</string>
-  <string name="wizard_permissions_no_root_msg">Votre appareil ne semble pas être rooté ou ne pas fournir l\'accès root ou super-utilisateur.\n\nVeuillez plutôt essayer le mode « Applis » de l\'écran principal.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Applis conçues pour Orbot</string>
-  <string name="wizard_tips_gibberbot">Chatsecure : appli sécurisée de clavardage avec chiffrement confidentiel </string>
-  <string name="wizard_tips_orweb">Orfox : navigateur à confidentialité améliorée fonctionnant sur Tor</string>
-  <string name="wizard_tips_play">Trouver toutes les applis du Projet Guardian sur Google Play</string>
-  <string name="wizard_tips_fdroid">Trouver toutes les applis du Projet Guardian sur F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Trouver toutes les applis du Projet Guardian sur https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Relayage transparent</string>
-  <string name="wizard_transproxy_msg">Ceci permet à vos applis d\'utiliser automatiquement le réseau Tor sans aucune configuration.</string>
-  <string name="wizard_transproxy_hint">(Cochez cette case si vous n\'avez aucune idée de ce dont nous parlons)</string>
-  <string name="wizard_transproxy_none">Aucun</string>
-  <string name="pref_transparent_tethering_title">Fonction modem avec Tor</string>
-  <string name="pref_transparent_tethering_summary">Activer le relayage transparent pour les périphériques utilisant la fonction modem soit par Wi-Fi ou par USB (redémarrage nécessaire)</string>
-  <string name="button_grant_superuser">Demander l\'accès superutilisateur</string>
-  <string name="pref_select_apps">Choisir les applis</string>
-  <string name="pref_select_apps_summary">Choisir les applis à acheminer par Tor</string>
-  <string name="pref_node_configuration">Configuration de nœud </string>
-  <string name="pref_node_configuration_summary">Ces paramètres avancés peuvent réduire votre anonymat</string>
-  <string name="pref_entrance_node">Nœuds d\'entrée</string>
-  <string name="pref_entrance_node_summary">Empreintes, pseudos, pays et adresses pour le premier saut</string>
-  <string name="pref_entrance_node_dialog">Saisir les nœuds d\'entrée</string>
-  <string name="pref_allow_background_starts_title">Permet des lancements en arrière-plan</string>
-  <string name="pref_allow_background_starts_summary">Laissez n\'importe quelle appli dire à Orbot de démarrer Tor et les services connexes</string>
-  <string name="button_proxy_all">Tout relayer</string>
-  <string name="button_proxy_none">Ne rien relayer</string>
-  <string name="button_invert_selection">Inverser la sélection</string>
-  <string name="pref_proxy_title">Mandataire pour le réseau sortant (optionnel)</string>
-  <string name="pref_proxy_type_title">Type de mandataire sortant</string>
-  <string name="pref_proxy_type_summary">Protocole à utiliser pour le serveur mandataire : HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Saisir le type de mandataire</string>
-  <string name="pref_proxy_host_title">Hôte du mandataire sortant</string>
-  <string name="pref_proxy_host_summary">Nom d\'hôte du serveur mandataire</string>
-  <string name="pref_proxy_host_dialog">Saisir l\'hôte mandataire</string>
-  <string name="pref_proxy_port_title">Port du mandataire sortant</string>
-  <string name="pref_proxy_port_summary">Port du serveur mandataire</string>
-  <string name="pref_proxy_port_dialog">Saisir le port du mandataire</string>
-  <string name="pref_proxy_username_title">Nom d\'utilisateur du mandataire sortant</string>
-  <string name="pref_proxy_username_summary">Nom d\'utilisateur du mandataire (optionnel)</string>
-  <string name="pref_proxy_username_dialog">Saisir le nom d\'utilisateur du mandataire</string>
-  <string name="pref_proxy_password_title">Mot de passe du mandataire sortant</string>
-  <string name="pref_proxy_password_summary">Mot de passe du mandataire (optionnel)</string>
-  <string name="pref_proxy_password_dialog">Saisir le mot de passe du mandataire</string>
-  <string name="status">État</string>
-  <string name="setting_up_full_transparent_proxying_">Configuration le relayage entièrement transparent...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Configuration d\'un relayage transparent par appli...</string>
-  <string name="transparent_proxying_enabled">Relayage transparent ACTIVÉ</string>
-  <string name="transproxy_enabled_for_tethering_">Relais transparent activé pour pour la fonction modem !</string>
-  <string name="warning_error_starting_transparent_proxying_">AVERTISSEMENT : erreur lors du démarrage du relayage transparent !</string>
-  <string name="transproxy_rules_cleared">Règles du relais transparent effacées</string>
-  <string name="couldn_t_start_tor_process_">Impossible de démarrer le processus Tor : </string>
-  <string name="privoxy_is_running_on_port_">Polipo tourne sur le port : </string>
-  <string name="setting_up_port_based_transparent_proxying_">Configuration du relayage transparent par port...</string>
-  <string name="bridge_error">Erreur de pont</string>
-  <string name="bridge_requires_ip">Afin de pouvoir utiliser la fonction pont, vous devez au moins saisir l\'adresse IP d\'un pont.</string>
-  <string name="send_email_for_bridges">Envoyez un courriel à bridges at torproject.org avec la ligne « get bridges », seule, dans le corps du courriel à partir d\'un compte Gmail. </string>
-  <string name="error">Erreur</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Vos paramètres ReachableAddresses (adresses accessibles) ont causé une exception !</string>
-  <string name="your_relay_settings_caused_an_exception_">Vos paramètres de relais ont causé une exception !</string>
-  <string name="exit_nodes">Nœuds de sortie</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Empreintes, pseudos, pays et adresses pour le dernier saut</string>
-  <string name="enter_exit_nodes">Saisir les noeuds de sortie</string>
-  <string name="exclude_nodes">Nœuds à exclure</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Empreintes, pseudos, pays et adresses à exclure</string>
-  <string name="enter_exclude_nodes">Saisir les nœuds à exclure</string>
-  <string name="strict_nodes">Nœuds stricts</string>
-  <string name="use_only_these_specified_nodes">Utiliser *uniquement * ces nœuds spécifiés</string>
-  <string name="bridges">Ponts</string>
-  <string name="use_bridges">Utiliser des ponts</string>
-  <string name="bridges_obfuscated">Ponts obscurcis</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Activer des nœuds alternatifs d\'entrée vers le réseau Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Activer si les ponts configurés sont des ponts obscurcis</string>
-  <string name="ip_address_and_port_of_bridges">Adresse IP et port des ponts</string>
-  <string name="enter_bridge_addresses">Saisir les adresses des ponts</string>
-  <string name="relays">Relais</string>
-  <string name="relaying">Relayage</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Configurez votre appareil pour être un relais de non-sortie</string>
-  <string name="relay_port">Port du relais</string>
-  <string name="listening_port_for_your_tor_relay">Port d\'écoute pour votre relais Tor</string>
-  <string name="enter_or_port">Saisir le port OR</string>
-  <string name="relay_nickname">Pseudo du relais</string>
-  <string name="the_nickname_for_your_tor_relay">Le pseudo de votre relais Tor</string>
-  <string name="enter_a_custom_relay_nickname">Saisir un pseudo personnalisé pour le relais</string>
-  <string name="reachable_addresses">Adresses accessibles</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Exécuter en tant que client derrière un pare-feu avec des politiques restrictives</string>
-  <string name="reachable_ports">Ports accessibles</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Ports accessibles derrière un pare-feu restrictif</string>
-  <string name="enter_ports">Saisir les ports</string>
-  <string name="enable_hidden_services">Hébergement de services cachés</string>
-  <string name="run_servers_accessible_via_the_tor_network">permettre aux serveurs sur l\'appareil d\'être accessibles par le réseau Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">saisir les ports de l\'hôte local pour les services cachés</string>
-  <string name="hidden_service_ports">Ports des services cachés</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">le nom adressable pour votre service caché (généré automatiquement)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">activer le journal de débogage vers la sortie (vous devez utiliser adb ou aLogCat pour le visualiser)</string>
-  <string name="project_home">Page(s) d\'accueil du projet :</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">La licence de Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Logiciels tiers :</string>
-  <string name="tor_version">Tor : https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21 : http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9 : https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21 : http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q : http://www.openssl.org</string>
-  <string name="hidden_service_request">Une appli veut ouvrir le port %S du serveur caché au réseau Tor. ceci est sécuritaire si vous faites confiance à l\'appli.</string>
-  <string name="found_existing_tor_process">un processus existant de Tor a été trouvé...</string>
-  <string name="something_bad_happened">Quelque chose n\'a pas été. Vérifiez le journal</string>
-  <string name="hidden_service_on">service caché sur :</string>
-  <string name="unable_to_read_hidden_service_name">impossible de lire le nom du service caché</string>
-  <string name="unable_to_start_tor">Impossible de démarrer Tor :</string>
-  <string name="unable_to_reset_tor">Redémarrez votre appareil, impossible de réinitialiser Tor !</string>
-  <string name="pref_use_sys_iptables_title">Utiliser les Iptables par défaut</string>
-  <string name="pref_use_sys_iptables_summary">Utiliser le binaire iptables intégré à la place du binaire intégré avec Orbot</string>
-  <string name="error_installing_binares">Les fichiers binaires de Tor n\'ont pas pu être installés ou mis à niveau.</string>
-  <string name="pref_use_persistent_notifications">Toujours conserver l\'icône dans la barre des tâches quand Orbot est connecté.</string>
-  <string name="pref_use_persistent_notifications_title">Toujours activer les notifications</string>
-  <string name="pref_use_expanded_notifications">Montrer des notifications étendues avec le pays de sortie de Tor et l\'IP</string>
-  <string name="pref_use_expanded_notifications_title">Notifications étendues</string>
-  <string name="notification_using_bridges">Les ponts sont activés !</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Langue</string>
-  <string name="set_locale_summary">Choisir les paramètres régionaux pour Orbot</string>
-  <string name="wizard_locale_title">Choisir la langue</string>
-  <string name="wizard_locale_msg">Laisser à la valeur par défaut ou changer la langue actuelle</string>
-  <string name="powered_by">propulsé par Tor</string>
-  <string name="btn_save_settings">Enregistrer les paramètres</string>
-  <string name="no_internet_connection_tor">Pas de connexion Internet ; Tor est en attente...</string>
-  <string name="bandwidth_">Bande passante :</string>
-  <string name="down">aval</string>
-  <string name="up">amont</string>
-  <string name="pref_disable_network_title">Pas de mise en veille automatique du réseau</string>
-  <string name="pref_disable_network_summary">Mettre Tor en veille quand aucune connexion Internet n\'est disponible</string>
-  <string name="newnym">Vous avez basculé vers une nouvelle identité Tor !</string>
-  <string name="menu_verify_browser">Navigateur</string>
-  <string name="menu_use_chatsecure">Utiliser ChatSecure</string>
-  <string name="permission_manage_tor_label">Gérer Tor</string>
-  <string name="permission_manage_tor_description">Autoriser cette appli à contrôler le service Tor</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Il semble qu\'Orfox n\'est pas installé. Voulez-vous de l\'aide à ce sujet ou devrions-nous juste ouvrir le navigateur ?</string>
-  <string name="install_apps_">Installer les applis ?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Pas de connectivité réseau. Mise au repos de Tor...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">La connectivité réseau est bonne. Réveil de Tor...</string>
-  <string name="updating_settings_in_tor_service">mise à jour des paramètres dans le service Tor</string>
-  <string name="pref_socks_title">SOCKS Tor</string>
-  <string name="pref_socks_summary">Port sur lequel Tor offre son mandataire SOCKS (par défaut : 9050 ou 0 pour le désactiver)</string>
-  <string name="pref_socks_dialog">Configuration du part SOCKS</string>
-  <string name="pref_transport_title">Port Transproxy de Tor</string>
-  <string name="pref_transport_summary">Port sur lequel Tor offre son mandataire transparent (par défaut : 9040 ou 0 pour le désactiver)</string>
-  <string name="pref_transport_dialog">Configuration du port TransProxy</string>
-  <string name="pref_dnsport_title">Port DNS de Tor</string>
-  <string name="pref_dnsport_summary">Port sur lequel Tor offre son DNS (par défaut : 5400 ou 0 pour le désactiver)</string>
-  <string name="pref_dnsport_dialog">Configuration du port DNS</string>
-  <string name="pref_torrc_title">Configuration personnalisée de Torrc</string>
-  <string name="pref_torrc_summary">EXPERTS SEULEMENT : saisissez les lignes de configuration de torrc direct</string>
-  <string name="pref_torrc_dialog">Personnaliser Torrc </string>
-  <string name="wizard_tips_martus">Martus mobile - Appli de documentation pour les droits humains de  Benetech</string>
-  <string name="your_tor_public_ips_">Vos IP publiques Tor :</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Veuillez désactiver cette appli dans Android->Paramètres->Applications si vous éprouvez des problèmes avec Orbot :</string>
-  <string name="app_conflict">Conflit d\'applis</string>
-  <string name="pref_transproxy_refresh_title">Rafraîchissement automatique de Transproxy</string>
-  <string name="pref_transproxy_refresh_summary">Appliquer de nouveau les règles de Transproxy lors des changements d\'état du réseau</string>
-  <string name="pref_transproxy_flush_title">Transproxy ENLEVER DE FORCE</string>
-  <string name="pref_transproxy_flush_summary">Toquer ici pour vider toutes les règles réseau de transproxy MAINTENANT</string>
-  <string name="transparent_proxy_rules_flushed_">Les règles du mandataire transparent ont été vidées !</string>
-  <string name="you_do_not_have_root_access_enabled">L\'accès ROOT n\'est pas activé</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Vous pourriez avoir à arrêter et démarrer Orbot pour que les changements de paramètres soient activés.</string>
-  <string name="menu_vpn">RPV</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">Ko</string>
-  <string name="mb">Mo</string>
-  <string name="bridges_updated">Ponts mis à jour</string>
-  <string name="restart_orbot_to_use_this_bridge_">Veuillez redémarrer Orbot pour activer les changements</string>
-  <string name="menu_qr">Codes QR</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si votre réseau mobile bloque Tor activement, vous pouvez utiliser un pont pour accéder au réseau.\n\nCHOISIR un des types de ponts ci-dessus pour activer les ponts.</string>
-  <string name="bridge_mode">Mode pont</string>
-  <string name="get_bridges_email">Courriel</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Activer</string>
-  <string name="apps_mode">Mode RPV des applis</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Vous pouvez activer le relais de toutes les applis par le réseau Tor en utilisant la fonction de RPV d\'Android.\n\n*AVERTISSEMENT* Cette fonction est nouvelle et expérimentale et pourrait parfois ne pas démarrer automatiquement, et même s\'arrêter. Elle ne devrait PAS être utilisée pour l\'anonymat, et être SEULEMENT utilisée pour passer les pare-feu et les filtres.</string>
-  <string name="send_email">Envoyer un courriel</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Vous pouvez obtenir une adresse de pont par courriel, par le Web ou en balayant le code QR d\'un pont. Choisissez *Courriel* ou *Web* ci-dessous pour demander une adresse de pont.\n\nUne fois que vous avez une adresse, copiez & collez-la dans le champ « Ponts » des paramètres d\'Orbot et redémarrez.</string>
-  <string name="install_orweb">Installer Orfox</string>
-  <string name="standard_browser">Navigateur standard</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">Note : seuls les ponts Tor standards fonctionnent sur les appareils Intel X86/ATOM</string>
-  <string name="vpn_default_world">Monde</string>
-</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
deleted file mode 100644
index 3f54635..0000000
--- a/res/values-fr/strings.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot est une application proxy gratuite qui améliore l\'utilisation plus sécurisée des applications. Orbot utilise Tor pour crypter votre trafic internet et le cacher en passant par une série d\'ordinateur partout dans le monde. Tor est un logiciel gratuit et un réseau ouvert qui vous aide à vous défendre contre les surveillances de réseau qui font peur à la liberté personnelle et la vie privée, les activités confidentielles des entreprises et des relations, et l\'état de la sécurité connu sous le nom d\'analyse de trafic.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">Démarrer et arrêter Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Démarrage de Orbot...</string>
-  <string name="status_activated">Connecté au réseau Tor</string>
-  <string name="status_disabled">Orbot est désactivé</string>
-  <string name="status_shutting_down">Le service Tor est en cours de fermeture</string>
-  <string name="tor_process_starting">Démarrage du client Tor...</string>
-  <string name="tor_process_complete">terminé.</string>
-  <string name="tor_process_waiting">en attente.</string>
-  <string name="not_anonymous_yet">ATTENTION : Votre trafic n\'est pas encore anonyme ! Veuillez configurer votre application pour utiliser le proxy HTTP 127.0.0.1:8118 ou le proxy SOCKS4A ou SOCKS5A 172.0.0.1:9050</string>
-  <string name="menu_home">Accueil</string>
-  <string name="menu_browse">Naviguer</string>
-  <string name="menu_settings">Paramètres</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Aide</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Démarrer</string>
-  <string name="menu_stop">Arrêter</string>
-  <string name="menu_about">A propos</string>
-  <string name="menu_promo_apps">Obtenir des applications</string>
-  <string name="main_layout_download">Télécharger</string>
-  <string name="main_layout_upload">Envoyer</string>
-  <string name="button_help">Aide</string>
-  <string name="button_close">Fermer</string>
-  <string name="button_about">A propos</string>
-  <string name="button_clear_log">Effacer la log</string>
-  <string name="menu_verify">Vérifier</string>
-  <string name="menu_exit">Quitter</string>
-  <string name="menu_scan">Analyser BridgeQR</string>
-  <string name="menu_share_bridge">Partager BridgeQR</string>
-  <string name="press_to_start">- appui long pour commencer -</string>
-  <string name="pref_trans_proxy_group">Passage du trafic Internet de manière transparente (Requiert le Root)</string>
-  <string name="pref_trans_proxy_title">Passage du trafic Internet de manière transparente</string>
-  <string name="wizard_title">Orbot</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Passage du trafic Internet de manière transparente</string>
-  <string name="default_bridges"></string>
-  <string name="menu_vpn">VPN</string>
-</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
deleted file mode 100644
index 9c7d1ad..0000000
--- a/res/values-gl/strings.xml
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot é unha aplicación de proxy libre que permite a outras aplicacións usar a internet dun xeito máis seguro. Orbot usa Tor para encriptar o teu tráfico de internet ocultando e rebotándoo a través dunha serie de ordenadores ao redor do mundo. Tor é software libre e unha rede aberta que axuda a defenderte contra unha forma de vixiancia na rede que ameaza a liberdade e privacidade persoal, actividades confidenciáis de negocios e relacións, e estado de seguridade coñecido como análise de tráfico.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">iniciar e deter Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot está a se iniciar...</string>
-  <string name="status_activated">Conectado á rede Tor</string>
-  <string name="status_disabled">Orbot está desactivado</string>
-  <string name="tor_process_starting">Iniciando cliente Tor...</string>
-  <string name="tor_process_complete">completado.</string>
-  <string name="tor_process_waiting">á espera.</string>
-  <string name="not_anonymous_yet">AVISO: o teu tráfico aínda non é anónimo! Por favor, configura os teus aplicativos para uxar o proxy HTTP 127.0.0.1:8118 ou SOCKS4A ou o proxy SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Inicio</string>
-  <string name="menu_browse">Examinar</string>
-  <string name="menu_settings">Axustes</string>
-  <string name="menu_log">Rexistro (log)</string>
-  <string name="menu_info">Axuda</string>
-  <string name="menu_start">Iniciar</string>
-  <string name="menu_stop">Deter</string>
-  <string name="menu_about">Sobre</string>
-  <string name="main_layout_download">Descargar</string>
-  <string name="main_layout_upload">Cargar</string>
-  <string name="button_help">Axuda</string>
-  <string name="button_close">Pechar</string>
-  <string name="button_about">Sobre</string>
-  <string name="button_clear_log">Limpar rexistro</string>
-  <string name="menu_verify">Comprobar</string>
-  <string name="menu_exit">Saír </string>
-  <string name="press_to_start">- toque longo para comezar-</string>
-  <string name="pref_trans_proxy_group">Proxyficación transparente (cómpre ser root)</string>
-  <string name="pref_trans_proxy_title">Proxyficación transparente</string>
-  <string name="pref_trans_proxy_summary">Torificación Automática dos Aplicativos</string>
-  <string name="pref_transparent_all_title">Tor para todo</string>
-  <string name="pref_transparent_all_summary">Pasar todo o tráfico dos aplicativos por Tor</string>
-  <string name="pref_transparent_port_fallback_title">Porto de Reserva do Proxy</string>
-  <string name="pref_transparent_port_fallback_summary">ATENCIÓN: Evita os portos comúns (80, 443, etc). * USAR SÓ* se os modos  \'Todo\' ou \'Aplicación\' non funcionan.</string>
-  <string name="pref_transparent_port_title">Lista de Portos</string>
-  <string name="pref_transparent_port_summary">Lista de portos a pasar. *USAR SÓ* se os modos \'Todo\' ou \'Aplicación\' non funcionan</string>
-  <string name="pref_transparent_port_dialog">Introduza os portos a pasar</string>
-  <string name="pref_has_root">Requerir Acceso de Superusuario</string>
-  <string name="pref_has_root_summary">Requerir acceso de root para proxy transparente</string>
-  <string name="status_install_success">Se instalaron con éxito os binarios de Tor!</string>
-  <string name="status_install_fail">Non se puideron instalar os ficheiros binarios de Tor. Por favor, comprobe o rexistro e notifíqueo a tor-assistants at torproject.org</string>
-  <string name="title_error">Erro de Aplicativo</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Acerca de Orbot</string>
-  <string name="btn_next">Seguinte</string>
-  <string name="btn_back">Atrás</string>
-  <string name="btn_finish">Rematar</string>
-  <string name="btn_okay">Aceptar</string>
-  <string name="btn_cancel">Cancelar</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Algúns detalles sobre Orbot</string>
-  <string name="wizard_permissions_root">Permiso Concedido</string>
-  <string name="wizard_permissions_stock">Permisos de Orbot</string>
-  <string name="wizard_premissions_msg_root">Excelente! Detectamos que ten permisos de root habilitados para Orbot. Empregaremos este poder sabiamente.</string>
-  <string name="wizard_permissions_msg_stock">Aínda que non é necesario, Orbot pode ser unha ferramenta máis poderosa se o seu dispositivo ten acceso de root. Use o botón de abaixo para dar superpoderes a Orbot!</string>
-  <string name="wizard_permissions_no_root">Se non ten acceso de root ou non tén nin idea de  qué lle estamos a falar, asegúrese de usar aplicativos que funcionen con Orbot.</string>
-  <string name="wizard_permissions_consent">Entendo e gostaríame continuar sen Superusuario</string>
-  <string name="wizard_permission_enable_root">Conceder Root a Orbot</string>
-  <string name="wizard_configure">Configurar Torificación</string>
-  <string name="wizard_configure_msg">Orbot dá-lle a opción de enrutar todo o tráfico dos aplicativos a través de Tor OU elexir ditos aplicativos individualmente.</string>
-  <string name="wizard_configure_all">Enviar Todos os Aplicativos Por Tor</string>
-  <string name="wizard_configure_select_apps">Elixir Aplicativos Individuais por Tor</string>
-  <string name="wizard_tips_tricks">Aplicativos habilitados para Tor</string>
-  <string name="wizard_tips_msg">Os aplicativos de abaixo foron programados para funcionar con Orbot. Prema en cada botón para instalar agora, ou os pode atopar despóis en Google Play, no sitio web GuardianProject.info ou en F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Cliente de mensaxería instantánea segura para Android</string>
-  <string name="wizard_tips_proxy">Axustes do Proxy - Aprenda cómo configurar aplicativos para que funcionen con Orbot</string>
-  <string name="wizard_tips_duckgo">Aplicativo do Motor de Búsquedas DuckDuckGo</string>
-  <string name="wizard_tips_twitter">Axustar o host para proxy de Twitter a \"localhost\" e porto 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Axustes do proxy</string>
-  <string name="wizard_final">Orbot está listo!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Isto abrirá no seu navegador https://check.torproject.org para ver se Obrbot está configurado probablemente e se está conectado a Tor.</string>
-  <string name="pref_hs_group">Aloxamento Oculto de Servizo</string>
-  <string name="pref_general_group">Xeral</string>
-  <string name="pref_start_boot_title">Inciar Orbot no Arranque</string>
-  <string name="pref_start_boot_summary">Iniciar Orbot automáticamente cando o seu dispositivo Android arranque</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Aviso</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Permisos</string>
-  <string name="wizard_permissions_root_msg1">Opcionalmente pode darlle a Orbot acceso de \'Superusuario\' para habilitar características avanzadas, como o Proxy Transparente.</string>
-  <string name="wizard_permissions_root_msg2">Se non quere facer isto, por favor asegúrese de usar aplicativos feitos para traballar con Orbot</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Aplicativos Habilitados para Orbot</string>
-  <string name="wizard_tips_gibberbot">CahtSecure: Aplicativo de chat seguro con Off-the-Record Encryption (OTR)</string>
-  <string name="wizard_tips_play">Atope todos os aplicativos de Guardian Project apps en Google Play</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Proxy Transparente</string>
-  <string name="wizard_transproxy_msg">Isto permite que os seus aplicativos funcionen a través de rede Tor sen ningunha configuración.</string>
-  <string name="wizard_transproxy_hint">(Marque esta caixa se non ten nin idea do que lle estamos a falar)</string>
-  <string name="wizard_transproxy_none">Ningunha</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Habilitar Proxy Transparente Tor para dispositivos enlazados por Wifi ou USB (require reiniciar)</string>
-  <string name="button_grant_superuser">Pedir Acceso de Superusuario</string>
-  <string name="pref_select_apps">Seleccionar Aplicativos</string>
-  <string name="pref_select_apps_summary">Elixir Aplicativos a Enrutar a Través de Tor</string>
-  <string name="pref_node_configuration">Configuración de Nodo</string>
-  <string name="pref_node_configuration_summary">Estes son axuste avanzados que poden reducir o seu anonimato</string>
-  <string name="pref_entrance_node">Nodos de Entrada</string>
-  <string name="pref_entrance_node_summary">Huellas, alias, países e direccións para o primeiro salto</string>
-  <string name="pref_entrance_node_dialog">Introduzca Nodos de Entrada</string>
-  <string name="pref_proxy_title">Proxy para a Rede de Saída (Opcional)</string>
-  <string name="pref_proxy_type_title">Tipo de Proxy de Saída</string>
-  <string name="pref_proxy_type_summary">Protocolo a usar para o servidor proxy: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Introduzca Tipo de Proxy</string>
-  <string name="pref_proxy_host_title">Host de Proxy de Saída</string>
-  <string name="pref_proxy_host_summary">Nome do Host Proxy Servidor</string>
-  <string name="pref_proxy_host_dialog">Introduzca o Host Proxy</string>
-  <string name="pref_proxy_port_title">Porto do Proxy de Saída</string>
-  <string name="pref_proxy_port_summary">Porto do Servidor Proxy</string>
-  <string name="pref_proxy_port_dialog">Introduzca o porto do Proxy</string>
-  <string name="pref_proxy_username_title">Nome de usuario do Proxy de Saída</string>
-  <string name="pref_proxy_username_summary">Nome de Usuario do Proxy (Opcional)</string>
-  <string name="pref_proxy_username_dialog">Introduza o Nome de Usuario do Proxy</string>
-  <string name="pref_proxy_password_title">Contrasinal do Proxy de Saída</string>
-  <string name="pref_proxy_password_summary">Contrasinal do Proxy (Opcional)</string>
-  <string name="pref_proxy_password_dialog">Introduza Contrasinal do Proxy</string>
-  <string name="status">Estado</string>
-  <string name="setting_up_full_transparent_proxying_">Preparando proxy transparente completo...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Preparando proxy transparente baseado en aplicativo...</string>
-  <string name="transparent_proxying_enabled">Proxy Transparente HABILITADO</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy habilitado para Enlazamento!</string>
-  <string name="warning_error_starting_transparent_proxying_">ATENCIÓN: erro arrancando o proxy transparente!</string>
-  <string name="transproxy_rules_cleared">Regras TransProxy limpadas</string>
-  <string name="couldn_t_start_tor_process_">No se pudio inciar o proceso Tor:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Preparando proxy transparente baseado en porto...</string>
-  <string name="bridge_error">Erro de Ponte</string>
-  <string name="bridge_requires_ip">Para usar a característica de ponte, debe introducir cando menos unha dirección IP de ponte.</string>
-  <string name="send_email_for_bridges">Envíe un email a bridges at torproject.org só coa liña \"get bridges\" no corpo do correo dende unha conta de gmail.</string>
-  <string name="error">Erro</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">O seu axuste de ReachableAddresses causou unha excepción!</string>
-  <string name="your_relay_settings_caused_an_exception_">Os seus axustes de relay causou unha excepción!</string>
-  <string name="exit_nodes">Nodos de Saída</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Huellas, alias, países e direccións para o último salto</string>
-  <string name="enter_exit_nodes">Introduza Nodos de Saída</string>
-  <string name="exclude_nodes">Excluir Nodos</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Huellas, alias, países e direccións a excluír</string>
-  <string name="enter_exclude_nodes">Introduza Nodos Excluídos</string>
-  <string name="strict_nodes">Nodos Estritos</string>
-  <string name="use_only_these_specified_nodes">Usar *só* este nodos específicos</string>
-  <string name="bridges">Pontes</string>
-  <string name="use_bridges">Usar Pontes</string>
-  <string name="bridges_obfuscated">Pontes Ofuscadas</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Habilitar nodos alternativos de entrada á rede Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Habilitar se oas pontes configuradas son pontes ofuscadas</string>
-  <string name="ip_address_and_port_of_bridges">Dirección IP e porto das pontes</string>
-  <string name="enter_bridge_addresses">Introduza Direccións das Pontes</string>
-  <string name="relays">Reenvíos</string>
-  <string name="relaying">Reenvío</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Habilite o seu dispositivo para ser un reenvío non de saída</string>
-  <string name="relay_port">Porto de Reenvío</string>
-  <string name="listening_port_for_your_tor_relay">Porto de Escoita do seu reenvío Tor</string>
-  <string name="enter_or_port">Introduza o porto OR</string>
-  <string name="relay_nickname">Alias de Reenvío</string>
-  <string name="the_nickname_for_your_tor_relay">Seu alias para reenvío de Tor</string>
-  <string name="enter_a_custom_relay_nickname">Introduza un alias personalizado de reenvío</string>
-  <string name="reachable_addresses">Direccións Alcanzábeis</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Executar como un cliente detrás dun firewall con políticas restritivas</string>
-  <string name="reachable_ports">Portos Alcanzábeis</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Portos alcanzábeis detrás dun firewall restritivo</string>
-  <string name="enter_ports">Inserir portos</string>
-  <string name="enable_hidden_services">Aloxamento de Servizo Oculto</string>
-  <string name="run_servers_accessible_via_the_tor_network">permitir ao servidor no dispositivo estar accesible na rede Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">introduza os portos localis para servizos ocultos</string>
-  <string name="hidden_service_ports">Portos de Servicios Ocultos</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">nome para referirse ao seu servizo oculto (xenerado automáticamente)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">habilitar rexistro de depuración na saída (debe usar adb ou aLogCat para ver)</string>
-  <string name="project_home">Páxina(s) de Inicio do Proxecto:</string>
-  <string name="the_tor_license">A Licencia de Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Software de Terceiros:</string>
-  <string name="hidden_service_request">Un aplicativo quere abrir o porto do servidor oculto %S na rede Tor. Isto é seguro se confía no aplicativo.</string>
-  <string name="found_existing_tor_process">atopado proceso Tor existente...</string>
-  <string name="something_bad_happened">Algo malo pasou. Comprobe o rexistro</string>
-  <string name="hidden_service_on">servizo oculto en:</string>
-  <string name="unable_to_read_hidden_service_name">imposible ler nome de servizo oculto</string>
-  <string name="unable_to_start_tor">Incapaz de arrancar Tor</string>
-  <string name="pref_use_sys_iptables_title">Usar iptables por Defecto</string>
-  <string name="pref_use_sys_iptables_summary">usar o binario de iptables instalado en lugar do empaquetado con Orbot</string>
-  <string name="error_installing_binares">Non se puideron instalar ou actualizar os binarios de Tor</string>
-  <string name="pref_use_persistent_notifications">Mostrar sempre a icona na barra de ferramentas cando Orbot estea conectado</string>
-  <string name="pref_use_persistent_notifications_title">Notificacións Sempre Acesas</string>
-  <string name="notification_using_bridges">Pontes habilitadas!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Elixir locale e idioma para Orbot</string>
-  <string name="wizard_locale_title">Escoller idioma</string>
-  <string name="wizard_locale_msg">Deixar por defecto ou cambiar ao idioma actual</string>
-  <string name="btn_save_settings">Gardar os axustes</string>
-  <string name="bandwidth_">Ancho de Banda:</string>
-  <string name="down">caído</string>
-  <string name="up">levantado</string>
-  <string name="pref_disable_network_title">Auto-Parado Sen Rede</string>
-  <string name="pref_disable_network_summary">Parar Tor cando non hai conexión a internet</string>
-  <string name="newnym">Cambiou a unha nova identidade Tor!</string>
-  <string name="menu_use_chatsecure">Usar ChatSecure</string>
-  <string name="permission_manage_tor_label">Xestionar Tor</string>
-  <string name="permission_manage_tor_description">Hablitar este aplicativo para controlar o servicio Tor</string>
-  <string name="install_apps_">Instalar aplicativos?</string>
-</resources>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
deleted file mode 100644
index bb77230..0000000
--- a/res/values-gu-rIN/strings.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="btn_cancel">રદ કરો</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">પ્રોક્સી ગોઠવણીઓ</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
deleted file mode 100644
index 573c5ef..0000000
--- a/res/values-gu/strings.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_info">મદદ</string>
-  <string name="button_help">મદદ</string>
-  <string name="button_close">બંધ કરો</string>
-  <string name="btn_cancel">રદ્ કરો</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">પ્રોક્સી ગોઠવણીઓ</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-he b/res/values-he
deleted file mode 120000
index 6fe8b49..0000000
--- a/res/values-he
+++ /dev/null
@@ -1 +0,0 @@
-values-iw
\ No newline at end of file
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
deleted file mode 100644
index f540ca1..0000000
--- a/res/values-hi/strings.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">औरबौट एक मुफ्त अैप</string>
-  <string name="menu_browse">ब्राउज़</string>
-  <string name="menu_settings">सेटिंग्स</string>
-  <string name="menu_info">मदद</string>
-  <string name="button_help">मदद</string>
-  <string name="button_close">बंद  करें </string>
-  <string name="wizard_title">Orbot</string>
-  <string name="btn_back">वापस</string>
-  <string name="btn_cancel">रद्द करें </string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">प्रोक्सी सेटींग</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">समन्य </string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_none">कोई नहीं</string>
-  <string name="status">स्थिति</string>
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-hr-rHR/strings.xml b/res/values-hr-rHR/strings.xml
deleted file mode 100644
index b636d33..0000000
--- a/res/values-hr-rHR/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_home">Polazno</string>
-  <string name="menu_browse">Pretraži</string>
-  <string name="menu_settings">Postavke</string>
-  <string name="menu_info">Pomoć</string>
-  <string name="menu_about">O</string>
-  <string name="button_help">Pomoć</string>
-  <string name="button_close">Zatvori</string>
-  <string name="button_about">O</string>
-  <string name="menu_exit">Izlaz</string>
-  <string name="btn_back">Povratak</string>
-  <string name="btn_cancel">Odustani</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">Postavke Proxya</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">Općenito</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Upozorenje</string>
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_none">Nepoznato</string>
-  <string name="status">Status</string>
-  <string name="error">Greška</string>
-  <string name="default_bridges"></string>
-  <string name="btn_save_settings">Spremi postavke</string>
-</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
deleted file mode 100644
index 74832a8..0000000
--- a/res/values-hr/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot je besplatna proxy aplikacija koja omogućuje ostalim aplikacijama da koriste internet sigurnije. Orbot koristi Tor za enkripciju Vašeg Internet prometa, a zatim ga skriva šaljući ga kroz seriju računala diljem svijeta. Tor je besplatan software i otvorena mreža koja pomaže u borbi protiv nadzora mreže koji ugrožava osobne slobode i privatnost, povjerljive poslovne aktivnosti i odnose, te pomaže u borbi protiv analize prometa.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">pokreni i zaustavi Tor</string>
-  <string name="tor_proxy_service_process">torproxyusluga</string>
-  <string name="status_starting_up">Orbot se pokreće...</string>
-  <string name="status_activated">Spojen na Tor mrežu</string>
-  <string name="status_disabled">Orbot je deaktiviran</string>
-  <string name="status_shutting_down">TorService se gasi</string>
-  <string name="tor_process_starting">Pokrećem Tor klijent...</string>
-  <string name="tor_process_complete">gotovo.</string>
-  <string name="tor_process_waiting">čekam.</string>
-  <string name="not_anonymous_yet">UPOZORENJE: Vaš promet još nije anoniman! Molimo konfigurirajte Vaše aplikacije da koriste HTTP proxy 127.0.0.1:8118 ili SOCKS4A ili SOCKS5 proxy 127.0.0.1:9050</string>
-  <string name="menu_home">Polazno</string>
-  <string name="menu_browse">Pretraži</string>
-  <string name="menu_settings">Postavke</string>
-  <string name="menu_log">Dnevnik</string>
-  <string name="menu_info">Pomoć</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Početak</string>
-  <string name="menu_stop">Zaustavi</string>
-  <string name="menu_about">O</string>
-  <string name="menu_promo_apps">Dohvati aplikacije...</string>
-  <string name="main_layout_download">Preuzimanje</string>
-  <string name="main_layout_upload">Slanje</string>
-  <string name="button_help">Pomoć</string>
-  <string name="button_close">Zatvori</string>
-  <string name="button_about">O</string>
-  <string name="button_clear_log">Očisti Dnevnik</string>
-  <string name="menu_verify">Provjeri</string>
-  <string name="menu_exit">Izlaz</string>
-  <string name="menu_scan">Skeniraj BridgeQR</string>
-  <string name="menu_share_bridge">Podijeli BridgeQR</string>
-  <string name="press_to_start">- dugi klik za početak -</string>
-  <string name="pref_trans_proxy_group">Transparentni Proxy (Zahtijeva Root)</string>
-  <string name="pref_trans_proxy_title">Transparentni Proxy</string>
-  <string name="pref_trans_proxy_summary">Automatska Torifikacija Aplikacija</string>
-  <string name="pref_transparent_all_title">Tor Sve</string>
-  <string name="pref_transparent_all_summary">Proxy promet svih aplikacija kroz Tor</string>
-  <string name="pref_transparent_port_fallback_title">Port Proxy Rezerva</string>
-  <string name="pref_transparent_port_fallback_summary">UPOZORENJE: Zaobilazi uobičajene portove (80, 443, itd.) *KORISTITE SAMO* ako \'Sve\' ili \'Aplikacije\' mod ne radi.</string>
-  <string name="pref_transparent_port_title">Popis portova</string>
-  <string name="pref_transparent_port_summary">Popis portova za proxy. *KORISTITE SAMO* ako \'Sve\' ili \'Aplikacije\' mod ne radi</string>
-  <string name="pref_transparent_port_dialog">Unesite port za proxy</string>
-  <string name="pref_has_root">Zatraži Root Pristup</string>
-  <string name="pref_has_root_summary">Zatraži root pristup za transparentni proxy</string>
-  <string name="status_install_success">Tor izvršne datoteke uspješno instalirane!</string>
-  <string name="status_install_fail">Tor izvršne datoteke nije bilo moguće instalirati. Molimo provjerite dnevnik i obavijestite tor-assistans at torproject.org</string>
-  <string name="title_error">Greška u Aplikaciji</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">O Orbot-u</string>
-  <string name="btn_next">Sljedeće</string>
-  <string name="btn_back">Natrag</string>
-  <string name="btn_finish">Završi</string>
-  <string name="btn_okay">U redu</string>
-  <string name="btn_cancel">Odustani</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Detalji o Orbot-u</string>
-  <string name="wizard_details_msg">Orbot je otvorena aplikacija koja sadrži Tor, LibEvent i Polipo. Pruža lokalni HTTP proxy (8118) i SOCKS proxy (9050) u Tor mrežu. Orbot ima mogućnost, na root-anom uređaju, slati sav promet kroz Tor.</string>
-  <string name="wizard_permissions_root">Dopuštenje Odobreno</string>
-  <string name="wizard_permissions_stock">Orbot Dopuštenja</string>
-  <string name="wizard_premissions_msg_root">Odlično! Uočili smo da imate root dopuštenja omogućena za Orbot. Koristit ćemo ovu moć mudro.</string>
-  <string name="wizard_permissions_msg_stock">Iako nije neophodan, Orbot može postati moćan alat ako vaš uređaj ima root pristup. Koristite gumb niže da bi odobrili Orbot-u supermoći!</string>
-  <string name="wizard_permissions_no_root">Ako nemate root pristup ili nemate pojma o čemu pričamo, osigurajte da koristite aplikacije koje rade s Orbot-om.</string>
-  <string name="wizard_permissions_consent">Razumijem i želim nastaviti bez Superuser-a</string>
-  <string name="wizard_permission_enable_root">Odobri Root za Orbot</string>
-  <string name="wizard_configure">Konfiguriraj Torifikaciju</string>
-  <string name="wizard_configure_msg">Orbot Vam daje opciju da usmjerite sav aplikacijski promet kroz Tor ILI odaberete aplikacije individualno.</string>
-  <string name="wizard_configure_all">Proxy Sve Aplikacije Kroz Tor</string>
-  <string name="wizard_configure_select_apps">Odaberi Individualne Aplikacije za Tor</string>
-  <string name="wizard_tips_tricks">Orbot-omogućene Aplikacije</string>
-  <string name="wizard_tips_msg">Aplikacije dolje su napravljene da rade sa Orbot-om. Kliknite svaki gumb da instalirate odmah ili ih kasnije možete naći na Google Play-u, na GuardianProject.info web stranici ili preko F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Sigurni klijent instant poruka za Adnroid</string>
-  <string name="wizard_tips_proxy">Proxy Postavke - Naučite kako konfigurirati aplikacije za rad s Orbot-om</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo aplikacija za pretraživanje</string>
-  <string name="wizard_tips_twitter">Namjesti Twitter proxy na host \"localhost\" i port 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - napravite priču i prepustite sigurnost Tor-u!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Postavke Proxy-a</string>
-  <string name="wizard_proxy_help_msg">Ako Android aplikacija koju koristite podržava korištenje HTTP ili SOCKS proxy-a, možete ju konfigurirati da se spaja na Orbot i koristi Tor.\n\n\n Postavke su 127.0.0.1 ili \"localhost\". Za HTTP postavke porta su 8118. Za SOCKS, proxy je 9050. Trebali bi koristiti SOCKS4A ili SOCKS5 ako je moguće.\n\n\n Možete naučiti više o proxy-ranju na Androidu putem često postavljenih pitanja: http://tinyurl.com/proxyandroid</string>
-  <string name="wizard_final">Orbot je spreman!</string>
-  <string name="wizard_final_msg">Milijuni ljudi diljem svijeta koriste Tor iz raznih razloga.\n\nNovinari i blogeri, pravobranitelji, policijski službenici, vojnici, korporacije, građani represivnih režima i uobičajeni građani... a od sad i Vi!</string>
-  <string name="wizard_exit_at_first_screen_toast">Molimo konfigurirajte Orbot prije nego ga počnete koristiti!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Uspješno ste spojeni na Tor mrežu - ali ovo NE znači da je Vaš uređaj siguran. Možete koristiti gumb \'Preglednik\' kako bi testirali svoju vezu. \n\nPosjetite nas na https://guardianproject.info/apps/orbot ili nam pošaljite email na help at guardianproject.info kako bi naučili više.</string>
-  <string name="tor_check">Ovo će otvoriti Vaš web preglednik na https://check.torproject.org kako bi vidjeli je li Orbot konfiguriran i jeste li povezani na Tor.</string>
-  <string name="pref_hs_group">Hosting Skrivenih Usluga</string>
-  <string name="pref_general_group">Općenito</string>
-  <string name="pref_start_boot_title">Pokreni Orbot pri pokretanju</string>
-  <string name="pref_start_boot_summary">Automatski pokreni Orbot i poveži Tor kad se Android uređaj pokrene</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot donosi Tor na Android!\n\nTor pomaže u borbi protiv filtriranja prometa, analize prometa i nadzora mreže koji ugrožava privatnost, povjerljive informacije i osobne veze.\n\nOvaj čarobnjak će Vam pomoći u konfiguraciji Orbot-a i Tor-a na Vašem uređaju.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Upozorenje</string>
-  <string name="wizard_warning_msg">Samo instaliranje Orbot-a neće automatski anonimizirati Vaš mobilni promet.\n\nMorate ispravno konfigurirati Orbot, svoj uređaj i ostale aplikacije da uspješno koriste Tor.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Dopuštenja</string>
-  <string name="wizard_permissions_root_msg1">Opcionalno, možete odobriti Orbot-u \'Superuser\' pristup da bi omogućili napredne značajke, kao što je Transparentni Proxy.</string>
-  <string name="wizard_permissions_root_msg2">Ako ne želite ovo, budite sigurni da koristite aplikacije koje su napravljene da rade s Orbotom</string>
-  <string name="wizard_permissions_no_root_msg">Čini se da Vaš uređaj nije root-an.\n\nMolimo probajte \'Aplikacije\' način rada na glavnom ekranu.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-Omogućene Aplikacije</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Sigurna aplikacija za čavrljanje s Povjerljivom Enkripcijom</string>
-  <string name="wizard_tips_orweb">Orfox: Preglednik s pojačanom privatnosti koji radi kroz Tor</string>
-  <string name="wizard_tips_play">Pronađi sve Guardian Projekt aplikacije na Google Play</string>
-  <string name="wizard_tips_fdroid">Pronađi sve Guardian Project aplikacije na F-Droid-u</string>
-  <string name="wizard_tips_fdroid_org">Pronađi sve Guardian Project aplikacije na https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transparentni Proxy</string>
-  <string name="wizard_transproxy_msg">Ovo omogućava Vašim aplikacijama da automatski rade kroz Tor mrežu bez ikakve konfiguracije.</string>
-  <string name="wizard_transproxy_hint">(Stavite kvačicu ako nemate pojma o čemu pričamo)</string>
-  <string name="wizard_transproxy_none">Ništa</string>
-  <string name="pref_transparent_tethering_title">Tor Privezanje</string>
-  <string name="pref_transparent_tethering_summary">Omogući Tor Transparentni Proxy za Wifi i USB privezane uređaje (zahtijeva ponovno pokretanje)</string>
-  <string name="button_grant_superuser">Zatraži Pristup Superuser-u</string>
-  <string name="pref_select_apps">Odaberi Aplikacije</string>
-  <string name="pref_select_apps_summary">Odaberi Aplikacije koje će se usmjeriti kroz Tor</string>
-  <string name="pref_node_configuration">Konfiguracija Čvora</string>
-  <string name="pref_node_configuration_summary">Ovo su napredne postavke koje mogu smanjiti Vašu anonimnost</string>
-  <string name="pref_entrance_node">Ulazni Čvorovi</string>
-  <string name="pref_entrance_node_summary">Otisci prstiju, nadimci, države i adrese za prvi skok</string>
-  <string name="pref_entrance_node_dialog">Unesi Ulazne Čvorove</string>
-  <string name="pref_allow_background_starts_title">Dozvoli pokretanja u pozadini</string>
-  <string name="pref_allow_background_starts_summary">Dopusti bilo kojoj aplikaciji da kaže Orbot-u da pokrene Tor i povezane usluge</string>
-  <string name="button_proxy_all">Proxy-raj sve</string>
-  <string name="button_proxy_none">Ne proxy-raj ništa</string>
-  <string name="button_invert_selection">Izokreni odabrano</string>
-  <string name="pref_proxy_title">Izlazni Mrežni Proxy (Opcionalno)</string>
-  <string name="pref_proxy_type_title">Vrsta Izlaznog Proxy-a</string>
-  <string name="pref_proxy_type_summary">Protokol koji se koristi za proxy server: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Unesi Tip Proxyj-a</string>
-  <string name="pref_proxy_host_title">Domaćin Izlaznog Proxy-a</string>
-  <string name="pref_proxy_host_summary">Ime domaćina Proxy Poslužitelja</string>
-  <string name="pref_proxy_host_dialog">Unesi Domaćina Proxy-a</string>
-  <string name="pref_proxy_port_title">Port Izlaznog Proxy-a</string>
-  <string name="pref_proxy_port_summary">Port Proxy Poslužitelja</string>
-  <string name="pref_proxy_port_dialog">Unesite port za proxy.</string>
-  <string name="pref_proxy_username_title">Proxy izlazno korisničko ime</string>
-  <string name="pref_proxy_username_summary">Proxy korisničko ime (Opcionalno)</string>
-  <string name="pref_proxy_username_dialog">Unesite Proxy korisničko ime</string>
-  <string name="pref_proxy_password_title">Proxy izlazna lozinka</string>
-  <string name="pref_proxy_password_summary">Proxy lozinka (Opcionalno)</string>
-  <string name="pref_proxy_password_dialog">Unesite Proxy lozinku</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Postavljam potpuno transparentan proxy...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Postavljam transparentan proxy zasnovan na aplikaciji...</string>
-  <string name="transparent_proxying_enabled">Transparentni Proxy OMOGUĆENO</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy omogućen za Privezivanje!</string>
-  <string name="warning_error_starting_transparent_proxying_">UPOZORENJE: greška pri pokretanju transparentnog proxy-a!</string>
-  <string name="transproxy_rules_cleared">TransProxy pravila očišćena</string>
-  <string name="couldn_t_start_tor_process_">Nije moguće započeti Tor proces:</string>
-  <string name="privoxy_is_running_on_port_">Polipo je pokrenut na portu:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Postavljam transparentan proxy zasnovan na portu...</string>
-  <string name="bridge_error">Greška Mosta</string>
-  <string name="bridge_requires_ip">Da bi koristili mostove, morate unijeti bar jednu IP adresu mosta.</string>
-  <string name="send_email_for_bridges">Pošaljite email koristeći gmail račun na bridges at torproject.org samo s tekstom \"get bridges\" u sadržaju.</string>
-  <string name="error">Greška</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Vaše ReachableAddresses postavke su uzrokovale iznimku!</string>
-  <string name="your_relay_settings_caused_an_exception_">Vaše postavke releja su uzrokovale iznimku!</string>
-  <string name="exit_nodes">Izlazni Čvorovi</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Otisci prstiju, nadimci, države i adrese za zadnji skok</string>
-  <string name="enter_exit_nodes">Unesi Izlazne Čvorove</string>
-  <string name="exclude_nodes">Nemoj Uključiti Čvorove</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Otisci prstiju, nadimci, države i adrese koje ne treba uključiti</string>
-  <string name="enter_exclude_nodes">Unesi Čvorove koje treba isključiti</string>
-  <string name="strict_nodes">Striktni Čvorovi</string>
-  <string name="use_only_these_specified_nodes">Koristi *samo* ove navedene čvorove</string>
-  <string name="bridges">Mostovi</string>
-  <string name="use_bridges">Koristi Mostove</string>
-  <string name="bridges_obfuscated">Skriveni Mostovi</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Omogući naizmjenične ulazne čvorove u Tor Mrežu</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Omogućite ako su postavljeni mostovi skriveni mostovi</string>
-  <string name="ip_address_and_port_of_bridges">IP adresa i port mostova</string>
-  <string name="enter_bridge_addresses">Unesi Adrese Mostova</string>
-  <string name="relays">Releji</string>
-  <string name="relaying">Prenošenje</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Omogućite svom uređaju da bude ne-izlazni relej</string>
-  <string name="relay_port">Relej Port</string>
-  <string name="listening_port_for_your_tor_relay">Port za slušanje Vašeg Tor releja</string>
-  <string name="enter_or_port">Unesi OR port</string>
-  <string name="relay_nickname">Nadimak releja</string>
-  <string name="the_nickname_for_your_tor_relay">Nadimak za Vaš Tor relej</string>
-  <string name="enter_a_custom_relay_nickname">Unesi prilagođeni nadimak releja</string>
-  <string name="reachable_addresses">Dostupne Adrese</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Pokreni kao klijent iza firewall-a sa restriktivnim pravilima</string>
-  <string name="reachable_ports">Dostupni portovi</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Portovi dostupni iza restriktivnog firewall-a</string>
-  <string name="enter_ports">Unesi portove</string>
-  <string name="enable_hidden_services">Hosting Skrivenih Usluga</string>
-  <string name="run_servers_accessible_via_the_tor_network">dopusti poslužitelju na uređaju da bude dostupan preko Tor mreže</string>
-  <string name="enter_localhost_ports_for_hidden_services">unesi localhost portove za skrivene usluge</string>
-  <string name="hidden_service_ports">Portovi za skrivene usluge</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">adresirano ime za vašu skrivenu uslugu (generirano automatski)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">omogući izlaznost dnevnika o otkrivanju greške (mora koristiti adb ili aLogCat za pregled)</string>
-  <string name="project_home">Dom(ovi) Projekta:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Tor licenca</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Software treće strane:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Aplikacija želi otvoriti port %S skrivenog poslužitelja Tor mreži. Ovo je sigurno ako vjerujete aplikaciji.</string>
-  <string name="found_existing_tor_process">pronađeni postojeći Tor procesi...</string>
-  <string name="something_bad_happened">Nešto loše se dogodilo. Provjerite dnevnik</string>
-  <string name="hidden_service_on">skrivena usluga na:</string>
-  <string name="unable_to_read_hidden_service_name">nije moguće pročitati ime skrivene usluge</string>
-  <string name="unable_to_start_tor">Nije moguće pokrenuti Tor:</string>
-  <string name="unable_to_reset_tor">Ponovno pokrenit svoj uređaj, nije moguće ponovno pkrenuti Tor!</string>
-  <string name="pref_use_sys_iptables_title">Koristi Zadane Iptablice</string>
-  <string name="pref_use_sys_iptables_summary">koristi ugrađene iptablice umjesto onih zapakiranih s Orbot-om</string>
-  <string name="error_installing_binares">Nije bilo moguće instalirati ili nadograditi Tor datoteke .</string>
-  <string name="pref_use_persistent_notifications">Uvjek drži ikonu na alatnoj traci kad je Orbot spojen</string>
-  <string name="pref_use_persistent_notifications_title">Obavijesti o stalnoj pokrenutosti</string>
-  <string name="pref_use_expanded_notifications">Prikaži proširene obavijesti s Tor izlaznom državom i IP-em</string>
-  <string name="pref_use_expanded_notifications_title">Proširene obavijesti</string>
-  <string name="notification_using_bridges">Mostovi omogućeni!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Jezik</string>
-  <string name="set_locale_summary">Odaberi lokaciju i jezik za Orbot</string>
-  <string name="wizard_locale_title">Odaberi Jezik</string>
-  <string name="wizard_locale_msg">Ostavi zadano ili promjeni na trenutni jezik</string>
-  <string name="powered_by">pogoni Tor</string>
-  <string name="btn_save_settings">Spremi postavke</string>
-  <string name="no_internet_connection_tor">Nema internet veze; Tor je u stanju pripravnosti...</string>
-  <string name="bandwidth_">Bandwidth:</string>
-  <string name="down">dolje</string>
-  <string name="up">gore</string>
-  <string name="pref_disable_network_title">Nema mrežnog auto-spavanja</string>
-  <string name="pref_disable_network_summary">Stavi Tor na spavanje kad internet nije dostupan</string>
-  <string name="newnym">Prebacili ste se na nov Tor identitet!</string>
-  <string name="menu_verify_browser">Preglednik</string>
-  <string name="menu_use_chatsecure">Koristi ChatSecure</string>
-  <string name="permission_manage_tor_label">Upravljaj Tor-om</string>
-  <string name="permission_manage_tor_description">Omogući ovoj palikaciji da upravlja Tor-om</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Čini se da nemate Orfox instaliran. Želite li pomoć s tim ili da samo otvorimo preglednik?</string>
-  <string name="install_apps_">Instaliraj aplikacije?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Nema mrežne povezivosti. Stavljam Tor na spavanje...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Mrežan povezanost je dobra. Budim Tor...</string>
-  <string name="updating_settings_in_tor_service">ažuriram postavke u Tor usluzi</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Port na kojem Tor pruža svoj SOCKS proxy (zadano: 9050, 0 za onemogućavanje)</string>
-  <string name="pref_socks_dialog">Konfiguracija SOCKS porta </string>
-  <string name="pref_transport_title">Tor TransProxy Port</string>
-  <string name="pref_transport_summary">Port na kojem Tor pruža Transparentni Proxy (zadano: 9040, 0 za onemogućivanje)</string>
-  <string name="pref_transport_dialog">Konfiguracija TransProxy porta</string>
-  <string name="pref_dnsport_title">Tor DNS Port</string>
-  <string name="pref_dnsport_summary">Port na kojem Tor pruža DNS (zadano 5400, 0 za onemogućivanje)</string>
-  <string name="pref_dnsport_dialog">Postavljanje DNS porta</string>
-  <string name="pref_torrc_title">Torrc prilagođena konfiguracija</string>
-  <string name="pref_torrc_summary">SAMO ZA STRUČNJAKE: unesite direktno torrc konfiguracijske linije</string>
-  <string name="pref_torrc_dialog">Prilagođeni Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech aplikacija za dokumentaciju ljudskih prava</string>
-  <string name="your_tor_public_ips_">Vaši javni Tor IP-evi:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Onemogućite ovu palikaciju u Android->Postavke->Aplikacije ako imate problema s Orbot-om:</string>
-  <string name="app_conflict">Konflikt aplikacija</string>
-  <string name="pref_transproxy_refresh_title">Automatsko osvježavanje Transproxy-a</string>
-  <string name="pref_transproxy_refresh_summary">Ponovno primjeni Transproxy pravila kad se promjeni mrežno stanje</string>
-  <string name="pref_transproxy_flush_title">Transproxy PRISILNO UKLANJANJE</string>
-  <string name="pref_transproxy_flush_summary">Dotaknite ovdje da bi očistili sva transproxy mrežna pravila ODMAH</string>
-  <string name="transparent_proxy_rules_flushed_">Pravila transparentnog proxy-a očišćena!</string>
-  <string name="you_do_not_have_root_access_enabled">Nema omogućen root pristup</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Možda će te morati zaustaviti i pokrenuti Orbot da bi se omogućile promjenjene postavke.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Mostova ažurirano</string>
-  <string name="restart_orbot_to_use_this_bridge_">Ponovno pokrenite Orbot da bi omogućili promjene</string>
-  <string name="menu_qr">QR kodovi</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ako Vaš mreža aktivno blokira Tor, možete koristiti Most kako bi pristupili mreži. ODABERITE jedan od gorenavedenih tipova mosta kako bi ih omogućili.</string>
-  <string name="bridge_mode">Način rada Most</string>
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Aktiviraj</string>
-  <string name="apps_mode">VPN način rada aplikacija</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Možete omogućiti svim aplikacijama na svom uređaju da se pokreću kroz Tor koristeći VPN značajku Android-a.\n\n*UPOZORENJE* Ovo je nova, eksperimentalna značajka i u nekim slučajevima se možda neće automatski pokrenuti, ili će se zaustaviti. NE bi ju trebalo koristiti za anonimnost, nego SAMO za prolaženje kroz vatrozide i filtere.</string>
-  <string name="send_email">Pošalji email</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Možete dobiti adrese mostova kroz email, web ili skeniranjem QR koda. Odaberite \'Email\' ili \'Web\' niže da zatražite adresu mosta.\n\nJednom kad imate adresu, kopirajte i zalijepite ju u \"Mostovi\" postavku Orbot-a i ponovno ga pokrenite.</string>
-  <string name="install_orweb">Instaliraj Orfox</string>
-  <string name="standard_browser">Standardni preglendik</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NAPOMENA: samo standardni Tor mostovi rade na Intel X86/ATOM uređajima</string>
-  <string name="vpn_default_world">Svijet</string>
-</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
deleted file mode 100644
index 03dcc37..0000000
--- a/res/values-hu/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Az Orbot egy ingyenes proxy alkalmazás, ami képessé tesz alkalmazásokat, hogy biztonságosabban használhassák az internetet. Az Orbot Tor-t használ, hogy titkosítsa az internetforgalmadat és elrejtse azáltal, hogy pattogtatja számítógépek sorozatain keresztül a világ körül. A Tor ingyenes szoftver és nyitott hálózat, ami segít megvédeni a hálózati felügyelettől, ami fenyegeti a személyi szabadságot és magánéletet, a bizalmas céges tevékenységeket és kapcsolatokat, és állambiztonság címén a forgalomelemzéstől.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">a Tor indítása, leállítása</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Az Orbot indul...</string>
-  <string name="status_activated">Csatlakozva a Tor hálózathoz</string>
-  <string name="status_disabled">Az Orbot deaktiválva</string>
-  <string name="status_shutting_down">A TorService leáll</string>
-  <string name="tor_process_starting">A Tor kliens indítása...</string>
-  <string name="tor_process_complete">kész.</string>
-  <string name="tor_process_waiting">várakozik.</string>
-  <string name="not_anonymous_yet">FIGYELEM: A forgalmad még nem névtelen! Állítsd be az alkalmazásaidat, hogy HTTP proxyt használjanak a 127.0.0.1:8118 címen vagy SOCKS4A vagy SOCKS5 proxyt a 127.0.0.1:9050 címen</string>
-  <string name="menu_home">Kezdőlap</string>
-  <string name="menu_browse">Böngészés</string>
-  <string name="menu_settings">Beállítások</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Súgó</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Indítás</string>
-  <string name="menu_stop">Leállítás</string>
-  <string name="menu_about">Névjegy</string>
-  <string name="menu_promo_apps">Alkalmazások beszerzése...</string>
-  <string name="main_layout_download">Letöltés</string>
-  <string name="main_layout_upload">Feltöltés</string>
-  <string name="button_help">Súgó</string>
-  <string name="button_close">Bezár</string>
-  <string name="button_about">Névjegy</string>
-  <string name="button_clear_log">Log törlése</string>
-  <string name="menu_verify">Ellenőrzés</string>
-  <string name="menu_exit">Kilépés</string>
-  <string name="menu_scan">BridgeQR szkennelése</string>
-  <string name="menu_share_bridge">BridgeQR megosztása</string>
-  <string name="press_to_start">- hosszú nyomás az indításhoz -</string>
-  <string name="pref_trans_proxy_group">Transzparens Proxyzás (Root szükséges)</string>
-  <string name="pref_trans_proxy_title">Transzparens Proxyzás</string>
-  <string name="pref_trans_proxy_summary">Alkalmazások automatikus Tor-izálása</string>
-  <string name="pref_transparent_all_title">Minden Tor-olása</string>
-  <string name="pref_transparent_all_summary">Minden forgalom átproxyzása a Tor-on</string>
-  <string name="pref_transparent_port_fallback_title">Port Proxy visszacsatolás</string>
-  <string name="pref_transparent_port_fallback_summary">FIGYELEM: Kikerüli a szokásos portokat (80, 443, stb). *CSAK AKKOR HASZNÁLD* ha a \'Minden\' vagy \'Alkalmazás\' mód nem működik.</string>
-  <string name="pref_transparent_port_title">Port Lista</string>
-  <string name="pref_transparent_port_summary">A proxyzandó portok listája. *CSAK AKKOR HASZNÁLD* ha a \'Minden\' vagy \'Alkalmazás\' mód nem működik.</string>
-  <string name="pref_transparent_port_dialog">Add meg a proxyzandó portokat</string>
-  <string name="pref_has_root">Root hozzáférés szükséges</string>
-  <string name="pref_has_root_summary">Root hozzáférés szükséges a transzparens proxyzáshoz</string>
-  <string name="status_install_success">A Tor binárisok sikeresen telepítve lettek!</string>
-  <string name="status_install_fail">A Tor bináris állományok telepítése sikertelen. Ellenőrizd a naplót és értesítsd a tor-assistants at torproject.org -ot</string>
-  <string name="title_error">Alkalmazás hiba</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Az Orbot-ról</string>
-  <string name="btn_next">Tovább</string>
-  <string name="btn_back">Vissza</string>
-  <string name="btn_finish">Befejezés</string>
-  <string name="btn_okay">OK</string>
-  <string name="btn_cancel">Mégsem</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Néhány Orbot adat</string>
-  <string name="wizard_details_msg">Az Orbot egy nyílt-forráskódú alkalmazás, ami tartalmazza a Tor-t, LibEvent-et és Polipo-t. Szolgáltat egy helyi HTTP proxyt (8118) és egy SOCKS proxyt (9050) a Tor hálózatba. Az Orbot-nak megvan az a képessége is, hogy rootolt eszközön minden internetes forgalmat a Tor-on keresztül küldjön.</string>
-  <string name="wizard_permissions_root">Jogosultság megadva</string>
-  <string name="wizard_permissions_stock">Orbot jogosultságok</string>
-  <string name="wizard_premissions_msg_root">Kitűnő! Úgy észleltük, hogy root jogot engedélyeztél az Orbot számára. Ezt az erőt bölcsen fogjuk használni.</string>
-  <string name="wizard_permissions_msg_stock"> Habár nem szükséges, az Orbot sokkal hatékonyabb eszköz lehet, ha a készüléknek van root hozzáférése. Használd az alábbi gombot, hogy szuper-erőt adj az Orbot-nak! </string>
-  <string name="wizard_permissions_no_root">Ha nincs root hozzáférésed, vagy fogalmad sincs, hogy miről beszélünk, csak győződjél meg arról, hogy olyan alkalmazásokat használsz, amelyek együttműködnek az Orbot-tal.</string>
-  <string name="wizard_permissions_consent">Értettem és Superuser nélkül folytatnám tovább</string>
-  <string name="wizard_permission_enable_root">Root jog megadása az Orbot-nak</string>
-  <string name="wizard_configure">Tor-izálás konfigurálása</string>
-  <string name="wizard_configure_msg">Az Orbot lehetővé teszi, hogy az összes alkalmazás forgalmát a Tor-on keresztül küldje VAGY hogy egyénileg kiválaszthasd az alkalmazásaidat.</string>
-  <string name="wizard_configure_all">Minden alkalmazás keresztülproxyzása a Tor-on</string>
-  <string name="wizard_configure_select_apps">Alkalmazások kiválasztása a Tor-hoz</string>
-  <string name="wizard_tips_tricks">Orbot-engedélyezett alkalmazások</string>
-  <string name="wizard_tips_msg">Az alábbi alkalmazások az Orbot-tal való együttműködésre lettek fejlesztve. Kattints minden gombra az azonnali telepítéshez, vagy később megtalálod őket a Google Play-en, a GuardianProject.info weboldalon vagy az F-Droid.org-n.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Biztonságos azonnali üzenetküldő kliens Androidra</string>
-  <string name="wizard_tips_proxy">Proxy beállítások - Tanuld meg, hogyan állíthatod be az alkalmazásaidat, hogy együttműködjenek az Orbot-tal</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo keresőmotor alkalmazás</string>
-  <string name="wizard_tips_twitter"> Állítsd be a Twitter proxyt a hosztnál \"localhost\"-ra és a port-nál 8118-ra</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Készíts egy történetet és hagyd a Tor-ra a biztonságért!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proxy beállítások</string>
-  <string name="wizard_proxy_help_msg">Ha az Android alkalmazás, amit használsz támogatja a HTTP vagy SOCKS proxy használatát, akkor konfigurálhatod, hogy csatlakozzon az Orbot-hoz és Tor-t használjon.\n\n\n A hoszt beállítások 127.0.0.1 vagy \"localhost\". HTTP-nek a port beállítása 8118. A SOCKS-nak a proxyja 9050. SOCKS4A -t vagy SOCKS5 -t kéne használnod, ha lehetséges.\n \n\n\n Többet tudhatsz meg a proxyzásról Androidon a GYIK-en keresztül itt: http://tinyurl.com/proxyandroid</string>
-  <string name="wizard_final">Az Orbot kész!</string>
-  <string name="wizard_final_msg">Emberek milliói használják a világ körül a Tor-t többféle különböző okból.\n\nÚjságírók és bloggerek, emberi jogok védelmezői, rendőrök, katonák, cégek, elnyomó rezsimek polgárai, és csak átlagos polgárok... és most már te is készen állsz!</string>
-  <string name="wizard_exit_at_first_screen_toast">Kérlek konfiguráld az Orbot-ot, mielőtt elkezded használni!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Sikeresen csatlakoztál a Tor hálózathoz - de ez NEM jelenti azt, hogy a készüléked biztonságos. Használhatod a \'Böngésző\' gombot a kapcsolatod teszteléséhez. \n\nLátogass meg minket a https://guardianproject.info/apps/orbot -on vagy küldj egy emailt a help at guardianproject.info -ra, hogy többet megtudj.</string>
-  <string name="tor_check">Ez megnyitja a webböngésződben a https://check.torproject.org -t ahhoz, hogy lásd, az Orbot valószínűleg konfigurált és csatlakozva vagy a Tor-hoz.</string>
-  <string name="pref_hs_group">Rejtett szolgáltatás kiszolgálás</string>
-  <string name="pref_general_group">Általános</string>
-  <string name="pref_start_boot_title">Az Orbot indítása rendszerindításkor</string>
-  <string name="pref_start_boot_summary">Automatikusan elindítja az Orbot-ot és csatlakozik a hálózathoz, amikor az Android eszköz betölt</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Az Orbot elhozza a Tor-t Androidra!\n\nA Tor segít megvédeni téged a tartalomszűréstől, forgalomelemzéstől és hálózati felügyelettől ami fenyegeti a magánéletet, bizalmas információt és személyes kapcsolatokat.\n\nEz a varázsló segít konfigurálni az Orbot-ot és Tor-t az eszközödön.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Figyelem</string>
-  <string name="wizard_warning_msg">Az Orbot egyszerű telepítésével nem fogja automatikusan névtelenné tenni a mobilforgalmadat.\n\nMegfelelően kell konfigurálnod az Orbot-ot, az eszközödet és egyéb alkalmazásokat ahhoz, hogy sikeresen használják a Tor-t.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Jogosultságok</string>
-  <string name="wizard_permissions_root_msg1">Opcionálisan adhatsz az Orbot részére \'Superuser\' hozzáférést, hogy engedélyezz olyan speciális szolgáltatásokat, mint például a Transzparens Proxyzás.</string>
-  <string name="wizard_permissions_root_msg2">Ha nem akarod ezt tenni, kérlek bizonyosodj meg róla, hogy olyan alkalmazásokat használsz, amelyek együttműködnek az Orbot-tal</string>
-  <string name="wizard_permissions_no_root_msg">Az eszközöd nem tűnik rootoltnak vagy nem ad root vagy \'Superuser\' hozzáférést.\n\nKérlek próbáld az \'Appok\' módot a főképernyőn ehelyett.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-engedélyezett Alkalmazások</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Biztonságos üzenetküldő alkalmazás OTR titkosítással</string>
-  <string name="wizard_tips_orweb">Orfox: Fokozott adatvédelmi böngésző, ami Tor-on keresztül működik</string>
-  <string name="wizard_tips_play">Az összes Guardian Project alkalmazás keresése a Google Play-en</string>
-  <string name="wizard_tips_fdroid">Az összes Guardian Project alkalmazást megtalálod az F-Droid -on</string>
-  <string name="wizard_tips_fdroid_org">Az összes Guardian Project alkalmazást megtalálod a https://f-droid.org -on</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Átlátszó Proxyzás</string>
-  <string name="wizard_transproxy_msg">Ez lehetővé teszi az alkalmazások számára a Tor-on keresztül kommunikálást, bármilyen konfiguráció nélkül.</string>
-  <string name="wizard_transproxy_hint">(Jelöld be ezt négyzetet, ha fogalmad sincs arról, hogy miről beszélünk)</string>
-  <string name="wizard_transproxy_none">Nincs</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">A Tor Transzparens Proxyzásának engedélyezése a Wifi és az USB Tetherelt eszközök felé (újraindítást igényel)</string>
-  <string name="button_grant_superuser">Superuser hozzáférés kérése</string>
-  <string name="pref_select_apps">Alkalmazások kiválasztása</string>
-  <string name="pref_select_apps_summary">Válassz alkalmazásokat, amik keresztül haladjanak a Tor-on</string>
-  <string name="pref_node_configuration">Csomópont konfiguráció</string>
-  <string name="pref_node_configuration_summary">Ezek haladó beállítások, amelyek csökkenthetik a névtelenséged.</string>
-  <string name="pref_entrance_node">Belépő csomópontok</string>
-  <string name="pref_entrance_node_summary">Ujjlenyomatok, becenevek, országok és címek az első ugráshoz</string>
-  <string name="pref_entrance_node_dialog">Belépő csomópontok megadása</string>
-  <string name="pref_allow_background_starts_title">Háttérbeli indulások engedélyezése</string>
-  <string name="pref_allow_background_starts_summary">Bármely alkalmazás közölheti az Orbot-tal, hogy indítsa a Tor-t és a kapcsolódó szolgáltatásokat</string>
-  <string name="button_proxy_all">Mindent proxyz</string>
-  <string name="button_proxy_none">Semmit nem proxyz</string>
-  <string name="button_invert_selection">Kijelölés megfordítása</string>
-  <string name="pref_proxy_title">Kimenő hálózati proxy (választható)</string>
-  <string name="pref_proxy_type_title">Proxy típus</string>
-  <string name="pref_proxy_type_summary">A Proxy szerver által használandó protokoll: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Add meg a proxy típusát</string>
-  <string name="pref_proxy_host_title">Kimenő proxy hoszt</string>
-  <string name="pref_proxy_host_summary">Proxy szerver állomásneve</string>
-  <string name="pref_proxy_host_dialog">Add meg a proxy hosztot</string>
-  <string name="pref_proxy_port_title">Proxy port</string>
-  <string name="pref_proxy_port_summary">Proxy szerver port</string>
-  <string name="pref_proxy_port_dialog">Add meg a proxy portját</string>
-  <string name="pref_proxy_username_title">Kimenő proxy felhasználónév</string>
-  <string name="pref_proxy_username_summary">Proxy felhasználónév (választható)</string>
-  <string name="pref_proxy_username_dialog">Add meg a proxy felhasználónevet</string>
-  <string name="pref_proxy_password_title">Kimenő proxy jelszó</string>
-  <string name="pref_proxy_password_summary">Proxy jelszó (választható)</string>
-  <string name="pref_proxy_password_dialog">Add meg a proxy jelszót</string>
-  <string name="status">Állapot</string>
-  <string name="setting_up_full_transparent_proxying_">A teljes körű transzparens proxyzás beállítása...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Alkalmazásalapú transzparens proxyzás beállítása...</string>
-  <string name="transparent_proxying_enabled">Transzparens proxyzás ENGEDÉLYEZVE</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy engedélyezve tetheringre!</string>
-  <string name="warning_error_starting_transparent_proxying_">FIGYELMEZTETÉS: hiba a transzparens proxyzás indításakor!</string>
-  <string name="transproxy_rules_cleared">TransProxy szabályok törölve</string>
-  <string name="couldn_t_start_tor_process_">Nem indítható el a Tor folyamat:</string>
-  <string name="privoxy_is_running_on_port_">A Polipo ezen a porton fut:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Port alapú transzparens proxyzás beállítása...</string>
-  <string name="bridge_error">Híd hiba</string>
-  <string name="bridge_requires_ip">A híd szolgáltatás használatához legalább egy híd IP címét meg kell adnod.</string>
-  <string name="send_email_for_bridges">Küldj egy emailt a bridges at torproject.org -ra a \"get bridges\" sorral a levél törzsében egy gmail fiókból.</string>
-  <string name="error">Hiba</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Az elérhető címeid beállításai kivételt okoztak!</string>
-  <string name="your_relay_settings_caused_an_exception_">Az átjátszód beállításai kivételt okoztak!</string>
-  <string name="exit_nodes">Kilépési csomópontok</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Ujjlenyomatok, becenevek, országok és címek az utolsó ugráshoz</string>
-  <string name="enter_exit_nodes">Kilépési csomópontok megadása</string>
-  <string name="exclude_nodes">Csomópontok kizárása</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Kizárandó ujjlenyomatok, becenevek, országok és címek</string>
-  <string name="enter_exclude_nodes">Add meg a kizárandó csomópontokat</string>
-  <string name="strict_nodes">Szigorú csomópontok</string>
-  <string name="use_only_these_specified_nodes">*Csak* ezeknek a megadott csomópontoknak a használata</string>
-  <string name="bridges">Hidak</string>
-  <string name="use_bridges">Hidak használata</string>
-  <string name="bridges_obfuscated">Fedőhidak</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Alternatív belépési pontok engedélyezése a Tor hálózatba</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Bekapcsolva, ha a konfigurált hidak fedőhidak</string>
-  <string name="ip_address_and_port_of_bridges">A hidak IP címe és portja</string>
-  <string name="enter_bridge_addresses">Add meg a híd címeit</string>
-  <string name="relays">Átjátszók</string>
-  <string name="relaying">Átjátszás</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Engedélyezd az eszközödnek, hogy nem-átjátszó elosztó legyen</string>
-  <string name="relay_port">Átjátszó port</string>
-  <string name="listening_port_for_your_tor_relay">Hallgató port a Tor átjátszódnak</string>
-  <string name="enter_or_port">Enter VAGY port</string>
-  <string name="relay_nickname">Átjátszó becenév</string>
-  <string name="the_nickname_for_your_tor_relay">A Tor átjátszód beceneve</string>
-  <string name="enter_a_custom_relay_nickname">Adj meg egy egyedi átjátszó becenevet</string>
-  <string name="reachable_addresses">Elérhető címek</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Futtatás kliensként egy tűzfal mögül, korlátozó rendelkezésekkel</string>
-  <string name="reachable_ports">Elérhető portok</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">A tűzfal mögött elérhető portok</string>
-  <string name="enter_ports">Add meg a portokat</string>
-  <string name="enable_hidden_services">Rejtett szolgáltatás kiszolgálás</string>
-  <string name="run_servers_accessible_via_the_tor_network">a készülék szerver elérhetőségének engedélyezése a Tor hálózaton keresztül</string>
-  <string name="enter_localhost_ports_for_hidden_services">add meg a localhost portokat a rejtett szolgáltatásokhoz</string>
-  <string name="hidden_service_ports">Rejtett szolgáltatás portok</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">a címezhető neve a rejtett szolgáltatásaidnak (automatikusan generált)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">a hibakeresési napló engedélyezése a kimenetre (adb -t vagy aLogCat -t kell használni a megtekintéshez)</string>
-  <string name="project_home">Projekt honlap(ok):</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">A Tor Licenc</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">3. fél szoftver:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Egy alkalmazás a %S rejtett szerver portot akarja megnyitni a Tor hálózathoz. Ez biztonságos, ha megbízol az alkalmazásban.</string>
-  <string name="found_existing_tor_process">létező Tor folyamat találva...</string>
-  <string name="something_bad_happened">Valami rossz történt. Nézd meg a naplót.</string>
-  <string name="hidden_service_on">rejtett szolgáltatás itt:</string>
-  <string name="unable_to_read_hidden_service_name">nem olvasható a rejtett szolgáltatás neve</string>
-  <string name="unable_to_start_tor">A Tor indítása sikertelen:</string>
-  <string name="unable_to_reset_tor">Indítsd újra a készüléked, nem lehet helyreállítani a Tor-t!</string>
-  <string name="pref_use_sys_iptables_title">Alapértelmezett Iptables használata</string>
-  <string name="pref_use_sys_iptables_summary">a beépített iptables bináris használata az Orbot-tal egybecsomagolt helyett</string>
-  <string name="error_installing_binares">A Tor binárisok nem telepíthetőek, vagy frissíthetőek.</string>
-  <string name="pref_use_persistent_notifications">Mindig tartsa az ikont az eszköztáron, ha az Orbot csatlakoztatva van.</string>
-  <string name="pref_use_persistent_notifications_title">Mindig-bekapcsolt értesítések</string>
-  <string name="pref_use_expanded_notifications">Mutassa a bővített értesítést a Tor kilépő országgal és IP-vel</string>
-  <string name="pref_use_expanded_notifications_title">Bővített értesítések</string>
-  <string name="notification_using_bridges">Hidak engedélyezve!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Nyelv</string>
-  <string name="set_locale_summary">Válaszd ki a helyszínt és nyelvet az Orbot-nak</string>
-  <string name="wizard_locale_title">Válassz nyelvet</string>
-  <string name="wizard_locale_msg">Hagyd alapértelmezetten vagy válts az aktuális nyelvre</string>
-  <string name="powered_by">powered by Tor</string>
-  <string name="btn_save_settings">Beállítások mentése</string>
-  <string name="no_internet_connection_tor">Nincs internetkapcsolat; Tor készenlétben...</string>
-  <string name="bandwidth_">Sávszélesség:</string>
-  <string name="down">le</string>
-  <string name="up">fel</string>
-  <string name="pref_disable_network_title">Nincs hálózati auto-alvás</string>
-  <string name="pref_disable_network_summary">A Tor alvó módba helyezése, ha internet nem elérhető</string>
-  <string name="newnym">Új Tor identitásra váltottál!</string>
-  <string name="menu_verify_browser">Böngésző</string>
-  <string name="menu_use_chatsecure">ChatSecure használata</string>
-  <string name="permission_manage_tor_label">Tor kezelése</string>
-  <string name="permission_manage_tor_description">Engedélyezi ennek az alkalmazásnak, hogy a Tor szolgáltatást vezérelje</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Úgy tűnik, hogy neked nincs Orfox telepítve. Kérsz segítséget benne, vagy csak nyissuk meg böngészőt?</string>
-  <string name="install_apps_">Alkalmazások telepítése?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Nincs hálózati kapcsolat. Tor alvó állapotba helyezése...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">A hálózati kapcsolat jó. Tor felébresztése...</string>
-  <string name="updating_settings_in_tor_service">a Tor szolgáltatás beállításainak frissítése</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Port amelyen a Tor a SOCKS proxyt biztosítja (alapértelmezett: 9050 vagy 0 a tiltáshoz)</string>
-  <string name="pref_socks_dialog">SOCKS port konfiguráció</string>
-  <string name="pref_transport_title">Tor TransProxy port</string>
-  <string name="pref_transport_summary">Port, amelyen a Tor a transzparens proxyt ajánl (alapértelmezett: 9040 vagy 0 a tiltáshoz)</string>
-  <string name="pref_transport_dialog">TransProxy port konfiguráció</string>
-  <string name="pref_dnsport_title">Tor DNS port</string>
-  <string name="pref_dnsport_summary">Port, amelyen a Tor a saját DNS-t ajánlja (alapértelmezett: 5400 vagy 0 a letiltáshoz)</string>
-  <string name="pref_dnsport_dialog">DNS port konfiguráció</string>
-  <string name="pref_torrc_title">Torrc egyedi konfiguráció</string>
-  <string name="pref_torrc_summary">CSAK SZAKÉRTŐKNEK: torrc konfigurációs sorok közvetlen beírása</string>
-  <string name="pref_torrc_dialog">Egyedi Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech emberi jogok dokumentációja alkalmazás</string>
-  <string name="your_tor_public_ips_">A Tor-od publikus IP-jei:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Kérlek tiltsd le ezt az alkalmazást az Android->Beállítások->Alkalmazások-ban, ha az Orbot-tal problémáid vannak: </string>
-  <string name="app_conflict">Alkalmazás ütközés</string>
-  <string name="pref_transproxy_refresh_title">Transproxy auto-frissítés</string>
-  <string name="pref_transproxy_refresh_summary">A Transproxy szabályok újraalkalmazása, ha a hálózati állapot változik</string>
-  <string name="pref_transproxy_flush_title">Transproxy KÉNYSZERÍTETT ELTÁVOLÍTÁSA</string>
-  <string name="pref_transproxy_flush_summary">Érintsd meg itt, az összes transproxy hálózati szabály AZONNALI kiürítéséhez</string>
-  <string name="transparent_proxy_rules_flushed_">Transzparens proxy szabályok kiürítve!</string>
-  <string name="you_do_not_have_root_access_enabled">Nincs ROOT hozzáférésed engedélyezve</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Szükséged lehet az Orbot megállítására és indítására, hogy a beállítások megváltoztatása engedélyezve legyen.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Hidak frissítve</string>
-  <string name="restart_orbot_to_use_this_bridge_">Kérlek indítsd újra az Orbot-ot a változások engedélyezéséhez</string>
-  <string name="menu_qr">QR kódok</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ha a mobilhálózatod aktívan blokkolja a Tor-t, használhatsz Hidat, hogy hozzáférj a hálózathoz. VÁLASSZ egyet a fenti híd típusokból, hogy engedélyezd a hidakat.</string>
-  <string name="bridge_mode">Híd mód</string>
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Aktiválás</string>
-  <string name="apps_mode">Alkalmazások VPN mód</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Engedélyezhetsz minden alkalmazást, hogy Tor hálózaton keresztül fussanak az Android VPN funkcióját használva.\n\n*FIGYELMEZTETÉS* Ez egy új, kísérleti funkció és néhány esetben nem indulhat automatikusan, vagy leállhat. NEM kéne névtelenségre használni, CSAK a tűzfalakon és szűrőkön való átjutáshoz.</string>
-  <string name="send_email">Email küldése</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Kaphatsz egy híd-címet emailen, weben keresztül vagy a híd QR kódjának beszkennelésével. Válaszd az \'Email\'-t vagy a \'Web\'-et alább a híd-cím kéréséhez.\n\nAmikor már van egy címed, másold & illeszd be \"Hidak\" preferenciákba az Orbot beállításaiban és indítsd újra.</string>
-  <string name="install_orweb">Orweb telepítése</string>
-  <string name="standard_browser">Standard böngésző</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">MEGJEGYZÉS: Csak standard Tor hidak működnek az Intel X86/ATOM eszközökön</string>
-  <string name="vpn_default_world">Világ</string>
-</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-ia/strings.xml b/res/values-ia/strings.xml
deleted file mode 100644
index fa92290..0000000
--- a/res/values-ia/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_home">Initio</string>
-  <string name="menu_browse">Navigar</string>
-  <string name="menu_settings">Configurationes</string>
-  <string name="menu_info">Adjuta</string>
-  <string name="menu_about">Circa</string>
-  <string name="button_help">Adjuta</string>
-  <string name="button_close">Clauder</string>
-  <string name="button_about">Circa</string>
-  <string name="menu_exit">Sortir</string>
-  <string name="btn_back">Retro</string>
-  <string name="btn_cancel">Cancellar</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">Configurationes de proxy:</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">General</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Advertimento</string>
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_none">Nulle</string>
-  <string name="status">Stato</string>
-  <string name="error">Error</string>
-  <string name="default_bridges"></string>
-  <string name="btn_save_settings">Salveguardar configurationes</string>
-</resources>
diff --git a/res/values-id b/res/values-id
deleted file mode 120000
index 3e5fb5a..0000000
--- a/res/values-id
+++ /dev/null
@@ -1 +0,0 @@
-values-in-rID
\ No newline at end of file
diff --git a/res/values-in-rID/strings.xml b/res/values-in-rID/strings.xml
deleted file mode 100644
index 0daf8c8..0000000
--- a/res/values-in-rID/strings.xml
+++ /dev/null
@@ -1,284 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot adalah aplikasi proxy gratis yang membuat aplikasi-aplikasi lainnya dapat terkoneksi dengan internet secara aman. Orbot menggunakan Tor untuk mengenkripsi hubungan internet anda dan menyalurkannya melewati berbagai komputer di seluruh dunia. Tor adalah software gratis dan suatu network terbuka, yang membantu anda menghindari pengawasan network yang mengancam kebebasan pribadi dan privasi, aktivitas bisnis rahasia dan relasi, serta keamanan negara yang dikenal dengan analisa traffic.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">mulai dan akhiri Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot sedang dimulai...</string>
-  <string name="status_activated">Tersambung ke Jaringan Tor</string>
-  <string name="status_disabled">Orbot telah dibatalkan</string>
-  <string name="status_shutting_down">TorService dimatikan</string>
-  <string name="tor_process_starting">Memulai klien Tor...</string>
-  <string name="tor_process_complete">selesai.</string>
-  <string name="tor_process_waiting">menunggu.</string>
-  <string name="not_anonymous_yet">PERINGATAN: Trafik anda belum anonim! Silahkan konfigurasikan aplikasi anda untuk dapat menggunakan proxy HTTP 127.0.0.1:8118 atau SOCKS4A atau proxy SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Beranda</string>
-  <string name="menu_browse">Jelajah</string>
-  <string name="menu_settings">Pengaturan</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Bantuan</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Mulai</string>
-  <string name="menu_stop">Berhenti</string>
-  <string name="menu_about">Tentang</string>
-  <string name="menu_promo_apps">Dapatkan aplikasi...</string>
-  <string name="main_layout_download">Unduh</string>
-  <string name="main_layout_upload">Unggah</string>
-  <string name="button_help">Bantuan</string>
-  <string name="button_close">Tutup</string>
-  <string name="button_about">Tentang</string>
-  <string name="button_clear_log">Hapus Log</string>
-  <string name="menu_verify">Periksa</string>
-  <string name="menu_exit">Keluar</string>
-  <string name="menu_scan">Pindai BridgeQR</string>
-  <string name="menu_share_bridge">Bagikan BridgeQR</string>
-  <string name="press_to_start">- sentuh dan tahan untuk memulai -</string>
-  <string name="pref_trans_proxy_group">Proxy Transparan (Dibutuhkan Root)</string>
-  <string name="pref_trans_proxy_title">Proxy Transparan</string>
-  <string name="pref_trans_proxy_summary">Otomatis Torfying Aplikasi</string>
-  <string name="pref_transparent_all_title">Tor Semuanya</string>
-  <string name="pref_transparent_all_summary">Trafik proxy untuk semua aplikasi melalui Tor</string>
-  <string name="pref_transparent_port_fallback_title">Alternatif Port Proxy</string>
-  <string name="pref_transparent_port_fallback_summary">PERINGATAN: Temukan port umum (80, 443, dll). *Gunakan Hanya* jika \'Semua\' atau \'Aplikasi\' mode tidak bekerja.</string>
-  <string name="pref_transparent_port_title">Daftar Port</string>
-  <string name="pref_transparent_port_summary">Daftar port untuk proxy. *GUNAKAN HANYA* jika modus \'Semua\' atau \'Apl\' tidak bekerja</string>
-  <string name="pref_transparent_port_dialog">Masukkan port untuk proxy</string>
-  <string name="pref_has_root">Minta Akses Root</string>
-  <string name="pref_has_root_summary">Meminta akses root untuk proxy transparan</string>
-  <string name="status_install_success">Binary Tor berhasil dipasang!</string>
-  <string name="status_install_fail">File binary Tor tidak dapat dipasang. Silahkan periksa log dan beritahukan ke tor-assistants at torprojects.org</string>
-  <string name="title_error">Kesalahan Pada Aplikasi</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Tentang Orbot</string>
-  <string name="btn_next">Berikutnya</string>
-  <string name="btn_back">Kembali</string>
-  <string name="btn_finish">Selesai</string>
-  <string name="btn_okay">Oke</string>
-  <string name="btn_cancel">Batal</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Beberapa Rincian Orbot</string>
-  <string name="wizard_details_msg">Orbot adalah aplikasi open-source yang mengandung Tor, LibEvent dan Polipo. Tor menyediakan HTTP proxy (8118) dan SOCKS proxy (9050) lokal menuju jaringan Tor. Orbot juga dapat, pada perangkat yang di-root, untuk mengirimkan semua lalu-lintas data internet melalui Tor.</string>
-  <string name="wizard_permissions_root">Izin Diberikan</string>
-  <string name="wizard_permissions_stock">Perizinan Orbot</string>
-  <string name="wizard_premissions_msg_root">Baik sekali! Kami telah mendeteksi bahwa anda telah mengaktifkan perizinan root untuk Orbot. Kami akan menggunakan kekuatan ini secara bijak.</string>
-  <string name="wizard_permissions_msg_stock">Sementara itu tidak diperlukan, Orbot dapat menjadi tool yang lebih kuat jika perangkat anda memiliki akses root. Gunakan tombol dibawah untuk memberikan kekuatan super kepada Orbot!</string>
-  <string name="wizard_permissions_no_root">Jika anda tidak memiliki akses root atau tidak tahu tentang apa yang kita bicarakan, pastikan untuk menggunakan aplikasi yang dibuat untuk bekerja dengan Orbot.</string>
-  <string name="wizard_permissions_consent">Saya mengerti dan ingin melanjutkan tanpa Superuser</string>
-  <string name="wizard_permission_enable_root">Berikan Akses Root untuk Orbot</string>
-  <string name="wizard_configure">Konfigurasi Torifikasi</string>
-  <string name="wizard_configure_msg">Orbot memberikan pilihan kepada anda untuk mengerahkan semua trafik aplikasi melalui Tor ATAU untuk memilih aplikasi anda secara individu.</string>
-  <string name="wizard_configure_all">Proxy Semua Aplikasi Melalui Tor</string>
-  <string name="wizard_configure_select_apps">Pilih Individu Aplikasi untuk Tor</string>
-  <string name="wizard_tips_tricks">Orbot- Aplikasi teraktifkan</string>
-  <string name="wizard_tips_msg">Aplikasi dibawah ini dikembangkan untuk bekerja dengan Orbot. Klik pada setiap tombol untuk memasangnya sekarang, atau anda dapat menemukan mereka di lain waktu pada Google Play, website GuardianProject.info atau melalui F-Droid.org</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Client instant messaging aman untuk Android</string>
-  <string name="wizard_tips_proxy">Pengaturan Proxy - Pelajari bagaimana mengkonfigurasikan aplikasi untuk bekerja dengan Orbot</string>
-  <string name="wizard_tips_duckgo">Aplikasi Mesin Pencari DuckDuckGo</string>
-  <string name="wizard_tips_twitter">Setel proxy Twitter ke host \"localhost\" dan port 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Tulis cerita dan biarkan Tor yang mengurus keamanannya!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Pengaturan Proxy</string>
-  <string name="wizard_proxy_help_msg">Jika aplikasi Android yang anda gunakan mendukung penggunaan proxy HTTP atau SOCKS, maka anda dapat mengaturnya untuk terhubung ke Orbot dan menggunakan Tor. Setting host-nya 127.0.0.1 atau \"localhost\". Untuk HTTP, setting port-nya adalah 8118. Untuk SOCKS, proxy-nya adalah 9050. Anda disarankan menggunakan SOCKS4A atau SOCKS5 jika memungkinkan. Anda dapat mempelajari lebih lanjut mengenai pemakaian proxy pada Android melalui FAQ di: http://tinyurl.com/proxyandroid</string>
-  <string name="wizard_final">Orbot sudah siap!</string>
-  <string name="wizard_final_msg">Jutaan orang di seluruh dunia menggunakan Tor untuk berbagai tujuan. Jurnalis dan blogger, pembela hak asasi manusia, penegak hukum, prajurit, perusahaan, warga negara di rezim yang represif, dan warga biasa... dan kini anda sudah siap juga!</string>
-  <string name="wizard_exit_at_first_screen_toast">Konfigurasi Orbot terlebih dahulu sebelum anda menggunakannya!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Hal ini akan membuka peramban web anda ke https://check.torproject.org agar dapat melihat jika Orbot kemungkinan sudah dikonfigurasikan dan anda telah terhubung dengan Tor.</string>
-  <string name="pref_hs_group">Jasa Penyimpanan Rahasia</string>
-  <string name="pref_general_group">Umum</string>
-  <string name="pref_start_boot_title">Mulai Orbot saat Boot</string>
-  <string name="pref_start_boot_summary">Secara otomatis memulai Orbot dan menghubungkan dengan Tor ketika perangkat Android anda boot</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot membawa Tor ke Android! Tor membantu anda melawan penyaringan konten, analisis trafik dan pengawasan jaringan yang mengancam privasi, informasi rahasia dan hubungan pribadi. Wizard ini akan membantu anda mengkonfigurasikan Orbot dan Tor pada perangkat anda.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Peringatan</string>
-  <string name="wizard_warning_msg">Pemasangan Orbot tidak otomatis membuat trafik mobile anda anonim. Anda harus melakukan konfigurasi Orbot, perangkat anda dan aplikasi lainnya untuk dapat menggunakan Tor dengan baik.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Perizinan</string>
-  <string name="wizard_permissions_root_msg1">Anda dapat secara opsional memberikan Orbot akses \'Superuser\' untuk mengaktifkan fitur lanjutan, seperti Transparan Proxying.</string>
-  <string name="wizard_permissions_root_msg2">Jika anda tidak ingin melakukan ini, mohon pastikan bahwa anda menggunakan aplikasi yang dibuat untuk dapat bekerja dengan Orbot.</string>
-  <string name="wizard_permissions_no_root_msg">Perangkat anda belum di-root atau tidak punya akses \'Superuser\'. Silakan coba mode \'Aplikasi\' di tampilan utama.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-Aplikasi Teraktifkan</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Aplikasi obrolan aman dengan Enkripsi Off-the-Record</string>
-  <string name="wizard_tips_play">Temukan semua aplikasi Guardian Project di Google Play</string>
-  <string name="wizard_tips_fdroid">Temukan semua aplikasi Guardian Project di F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Temukan semua aplikasi Guardian Project di https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transparan Proxying</string>
-  <string name="wizard_transproxy_msg">Hal ini akan memungkinkan aplikasi anda untuk secara otomatis berjalan melalui jaringan Tor tanpa konfigurasi apapun.</string>
-  <string name="wizard_transproxy_hint">(Tandai box ini jika anda tidak tahu apa yang kita bicarakan)</string>
-  <string name="wizard_transproxy_none">Tidak ada</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Mengaktifkan Transparan Proxying Tor untuk Wifi dan Perangkat Tether USB (diperlukan restart)</string>
-  <string name="button_grant_superuser">Meminta Akses Superuser</string>
-  <string name="pref_select_apps">Pilih Aplikasi</string>
-  <string name="pref_select_apps_summary">Pilih Aplikasi untuk Mengerahkan Melalui Tor</string>
-  <string name="pref_node_configuration">Konfigurasi Simpul</string>
-  <string name="pref_node_configuration_summary">Itu adalah pengaturan lanjutan yang dapat mengurangi anonimitas anda</string>
-  <string name="pref_entrance_node">Simpul Masuk</string>
-  <string name="pref_entrance_node_summary">Sidik jari, alias, negara dan alamat untuk loncatan pertama</string>
-  <string name="pref_entrance_node_dialog">Masukkan Simpul Masuk</string>
-  <string name="pref_allow_background_starts_title">Ijinkan Latar Belakang Berjalan</string>
-  <string name="button_proxy_all">Proxy Semuanya</string>
-  <string name="button_proxy_none">Tanpa Proxy</string>
-  <string name="button_invert_selection">Balik Pilihan</string>
-  <string name="pref_proxy_title">Outbound Proxy Jaringan (Opsional)</string>
-  <string name="pref_proxy_type_title">Outbound Jenis Proxy</string>
-  <string name="pref_proxy_type_summary">Protokol yang digunakan untuk server proxy: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Masukkan Jenis Proxy</string>
-  <string name="pref_proxy_host_title">Outbound Host Proxy</string>
-  <string name="pref_proxy_host_summary">Nama host Server Proxy</string>
-  <string name="pref_proxy_host_dialog">Masukkan Host Proxy</string>
-  <string name="pref_proxy_port_title">Outbound Port Proxy</string>
-  <string name="pref_proxy_port_summary">Port Server Proxy</string>
-  <string name="pref_proxy_port_dialog">Masukkan port Proxy</string>
-  <string name="pref_proxy_username_title">Outbound Nama Pengguna Proxy</string>
-  <string name="pref_proxy_username_summary">Nama Pengguna Proxy (Opsional)</string>
-  <string name="pref_proxy_username_dialog">Masukkan Nama Pengguna Proxy</string>
-  <string name="pref_proxy_password_title">Outbound Sandi Proxy</string>
-  <string name="pref_proxy_password_summary">Sandi Proxy (Opsional)</string>
-  <string name="pref_proxy_password_dialog">Masukkan Sandi Proxy</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Menyetel transparan proxying penuh...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Menyetel apl-berbasis proxying transparan...</string>
-  <string name="transparent_proxying_enabled">Proxying transparan DIAKTIFKAN</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy diaktifkan untuk Tethering!</string>
-  <string name="warning_error_starting_transparent_proxying_">PERINGATAN: kesalahan dalam memulai proxying transparan!</string>
-  <string name="transproxy_rules_cleared">Aturan TransProxy dibersihkan</string>
-  <string name="couldn_t_start_tor_process_">Tidak dapat memulai proses Tor:</string>
-  <string name="privoxy_is_running_on_port_">Polipo aktif di port:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Menyetel proxying transparan berbasis-port...</string>
-  <string name="bridge_error">Kesalahan pada Bridge</string>
-  <string name="bridge_requires_ip">Agar dapat menggunakan fitur bridge, anda perlu memasukkan minimal satu alamat IP bridge.</string>
-  <string name="send_email_for_bridges">Kirimkan email ke bridges at torproject.org dengan baris \"get bridges\" dengan sendirinya dalam tubuh surat dari akun gmail.</string>
-  <string name="error">Kesalahan</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Pengaturan ReachableAddresses anda menyebabkan kesalahan!</string>
-  <string name="your_relay_settings_caused_an_exception_">Pengaturan relay anda menyebabkan kesalahan!</string>
-  <string name="exit_nodes">Node Keluar</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">fingerprints, nama, negara dan alamat untuk hop terakhir</string>
-  <string name="enter_exit_nodes">Memasuki Node Keluar</string>
-  <string name="exclude_nodes">Node pengecualian</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Pengecualian fingerprints,nama, negara dan alamat</string>
-  <string name="enter_exclude_nodes">Memasuki Node Pengecualian</string>
-  <string name="strict_nodes">Node Terlarang</string>
-  <string name="use_only_these_specified_nodes">Pakai *hanya* spesifik node</string>
-  <string name="bridges">Bridges</string>
-  <string name="use_bridges">Pakai Bridges</string>
-  <string name="bridges_obfuscated">Bridges Terobfuskasi</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Nyalakan alternatif node masuk ke dalam Tor Network</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Nyalakan jika pengaturan bridges adalah bridges terobfuskasi</string>
-  <string name="ip_address_and_port_of_bridges">Alamat IP dan port bridges</string>
-  <string name="enter_bridge_addresses">Memasuki Alamat Bridge</string>
-  <string name="relays">Relays</string>
-  <string name="relaying">Sedang me-Relay</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Nyalakan perangkat anda menjadi non-exit relay</string>
-  <string name="relay_port">Port Relay</string>
-  <string name="listening_port_for_your_tor_relay">Port mendengarkan untuk TOR relay anda</string>
-  <string name="enter_or_port">Memasuki OR port</string>
-  <string name="relay_nickname">Nama Relay</string>
-  <string name="the_nickname_for_your_tor_relay">sebuah nama untuk Tor Relay anda</string>
-  <string name="enter_a_custom_relay_nickname">Masukkan nama relay</string>
-  <string name="reachable_addresses">Addresses Terjangkau</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Jalankan sebagai client dibalik firewall dengan ketentuan ketat</string>
-  <string name="reachable_ports">Ports terjangkau</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Port terjangkau dibalik firewall ketat</string>
-  <string name="enter_ports">Memasuki ports</string>
-  <string name="enable_hidden_services">Layanan Penyimpanan Rahasia</string>
-  <string name="run_servers_accessible_via_the_tor_network">Membolehkan perangkat-nyala untuk diakses lewat Tor Network</string>
-  <string name="enter_localhost_ports_for_hidden_services">memasuki localhost port untuk layanan rahasia</string>
-  <string name="hidden_service_ports">Ports Layanan Rahasia</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">nama teralamatkan untuk layanan rahasia anda (otomatis dibuat)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">nyalakan debug log untuk output (harus menggunakan adb atau aLogCat untuk menampilkan)</string>
-  <string name="project_home">Beranda Projek:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android https://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Lisensi Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Perangkat Lunak Pihak Ke-3:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="hidden_service_request">Sebuah aplikasi ingin membuka port %S server tersembunyi ke jaringan Tor. Hal ini aman jika anda mempercayai aplikasi tersebut.</string>
-  <string name="found_existing_tor_process">menemukan proses Tor yang ada...</string>
-  <string name="something_bad_happened">Sesuatu yang buruk terjadi. Periksa log</string>
-  <string name="hidden_service_on">layanan tersembunyi pada:</string>
-  <string name="unable_to_read_hidden_service_name">tidak dapat membaca nama layanan tersembunyi</string>
-  <string name="unable_to_start_tor">Tidak dapat memulai Tor:</string>
-  <string name="unable_to_reset_tor">Boot ulang perangkat anda, gagal me-reset Tor!</string>
-  <string name="pref_use_sys_iptables_title">Gunakan Iptables Default</string>
-  <string name="pref_use_sys_iptables_summary">menggunakan binary iptables built-in daripada yang disertakan dengan Orbot</string>
-  <string name="error_installing_binares">Binary Tor tidak dapat dipasang atau ditingkatkan</string>
-  <string name="pref_use_persistent_notifications">Selalu pelihara icon dalam toolbar ketika Orbot terhubung</string>
-  <string name="pref_use_persistent_notifications_title">Pemberitahuan Selalu-Hidup</string>
-  <string name="pref_use_expanded_notifications">Tampilkan notifikasi melebar dengan negara dan IP keluar Tor</string>
-  <string name="pref_use_expanded_notifications_title">Notifikasi Melebar</string>
-  <string name="notification_using_bridges">Bridge diaktifkan!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Bahasa</string>
-  <string name="set_locale_summary">Pilih lokal dan bahasa untuk Orbot</string>
-  <string name="wizard_locale_title">Pilih Bahasa</string>
-  <string name="wizard_locale_msg">Biarkan default atau berlaih ke bahasa saat ini</string>
-  <string name="powered_by">diperkuat dengan Tor</string>
-  <string name="btn_save_settings">Simpan Pengaturan</string>
-  <string name="no_internet_connection_tor">Tidak ada koneksi internet; Tor sedang standby...</string>
-  <string name="bandwidth_">Bandwidth:</string>
-  <string name="down">unduh</string>
-  <string name="up">unggah</string>
-  <string name="pref_disable_network_title">Auto-Tidur Tidak Ada Jaringan</string>
-  <string name="pref_disable_network_summary">Menempatkan Tor untuk tidur ketika tidak ada internet yang tersedia</string>
-  <string name="newnym">Anda telah beralih ke identitas Tor baru!</string>
-  <string name="menu_verify_browser">Peramban</string>
-  <string name="menu_use_chatsecure">Gunakan ChatSecure</string>
-  <string name="permission_manage_tor_label">Kelola Tor</string>
-  <string name="permission_manage_tor_description">Aktifkan aplikasi ini untuk mengontrol layanan Tor</string>
-  <string name="install_apps_">Pasang aplikasi?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Tidak ada jaringan terhubung. Menidurkan Tor...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Jaringan terhubung baik. Memanggil Tor...</string>
-  <string name="updating_settings_in_tor_service">memperbarui setting pada layanan Tor</string>
-  <string name="pref_socks_title">SOCKS Tor</string>
-  <string name="pref_socks_summary">Port tempat proxy SOCKS Tor aktif (standar: 9050 atau 0 untuk mematikan)</string>
-  <string name="pref_socks_dialog">Konfigurasi Port SOCKS</string>
-  <string name="pref_transport_title">Port TransProxy Tor</string>
-  <string name="pref_transport_summary">Port tempat Proxy Transparan Tor aktif (standar: 9040 atau 0 untuk mematikan)</string>
-  <string name="pref_transport_dialog">Konfigurasi Port TransProxy</string>
-  <string name="pref_dnsport_title">Port DNS Tor</string>
-  <string name="pref_dnsport_summary">Port tempat DNS Tor aktif (standar: 5400 atau 0 untuk mematikan)</string>
-  <string name="pref_dnsport_dialog">Konfigurasi Port DNS</string>
-  <string name="pref_torrc_title">Konfigurasi Torrc</string>
-  <string name="pref_torrc_summary">HANYA UNTUK AHLI: masukkan baris konfigurasi direct Torrc</string>
-  <string name="pref_torrc_dialog">Torrc Custom</string>
-  <string name="wizard_tips_martus">Mobile Martus - Aplikasi Dokumentasi Hak Asasi Manusia milik Benetech</string>
-  <string name="your_tor_public_ips_">IP Publik Tor Anda:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Mohon nonaktifkan aplikasi ini di Android Settings Apps jika Orbot anda bermasalah</string>
-  <string name="app_conflict">Konflik Aplikasi</string>
-  <string name="pref_transproxy_refresh_title">Auto-Refresh Transproxy</string>
-  <string name="pref_transproxy_refresh_summary">Pasang ulang rule Transproxy saat status jaringan berubah</string>
-  <string name="pref_transproxy_flush_title">BUANG PAKSA Transproxy</string>
-  <string name="pref_transproxy_flush_summary">Ketuk disini untuk mengosongkan semua rule jaringan Transproxy SEKARANG</string>
-  <string name="transparent_proxy_rules_flushed_">Rule proxy transparan telah kosong!</string>
-  <string name="you_do_not_have_root_access_enabled">Anda tidak punya akses ROOT</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Anda mungkin harus stop lalu start kembali Orbot agar perubahan setting menjadi aktif.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Bridge Telah Diperbarui</string>
-  <string name="restart_orbot_to_use_this_bridge_">Silakan start ulang Orbot untuk mengaktifkan perubahan</string>
-  <string name="menu_qr">Kode QR</string>
-  <string name="bridge_mode">Mode Bridge</string>
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Laman</string>
-  <string name="activate">Aktivasi</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Anda dapat membuat semua aplikasi di perangkat anda bekerja melalui jaringan Tor menggunakan fitur VPN dari Android. *AWAS* Fitur ini masih baru, percobaan dan pada beberapa kasus tidak start otomatis, atau bahkan berhenti. Tidak untuk anonimitas, dan HANYA untuk melewati firewall dan penyaringan.</string>
-  <string name="send_email">Kirim Email</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Anda bisa mendapatkan alamat bridge melalui email, halaman web atau dengan memindai kode QR bridge tersebut. Pilih \'Email\' atau \'Laman\' di bawah untuk meminta alamat bridge. Setelah anda mendapatkannya, salin lalu tempel di pilihan \"Bridges\" pada setting Orbot lalu start ulang.</string>
-  <string name="standard_browser">Peramban Standar</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">CATATAN: Hanya bridge Tor yang standar yang bekerja di perangkat Intel X86/ATOM</string>
-</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
deleted file mode 100644
index f2cf3c6..0000000
--- a/res/values-in/strings.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">mulai dan akhiri Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot sedang dimulai…</string>
-  <string name="status_activated">Tersambung ke Jaringan Tor</string>
-  <string name="status_disabled">Orbot telah dibatalkan</string>
-  <string name="status_shutting_down">Orbot sedang dimatikan</string>
-  <string name="not_anonymous_yet">PERINGATAN: </string>
-  <string name="menu_home">Home</string>
-  <string name="menu_browse">Jelajahi</string>
-  <string name="menu_settings">Pengaturan</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Bantuan</string>
-  <string name="menu_about">Mengenai</string>
-  <string name="button_help">Bantuan</string>
-  <string name="button_close">Dekat</string>
-  <string name="button_about">Mengenai</string>
-  <string name="button_clear_log">Hapus Log</string>
-  <string name="menu_verify">Periksa</string>
-  <string name="menu_exit">Keluar</string>
-  <string name="pref_transparent_all_title">Tor Semuanya</string>
-  <string name="pref_transparent_port_title">Daftar Port</string>
-  <string name="pref_has_root">Minta Akses Dasar</string>
-  <string name="btn_back">Kembali</string>
-  <string name="btn_cancel">Batal</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">Pengaturan Proxy</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">Umum</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Peringatan</string>
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_none">Tidak ada</string>
-  <string name="status">Status</string>
-  <string name="error">Kesalahan</string>
-  <string name="default_bridges"></string>
-  <string name="btn_save_settings">Simpan Pengaturan</string>
-</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
deleted file mode 100644
index f169370..0000000
--- a/res/values-is/strings.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot er ókeypis proxy smáforrit sem gerir öðrum smáforritum kleift að nota veraldarvefinn á öruggari hátt. Orbot notar Tor til að dulkóða umferð þína á netinu og felur hana svo með að hoppa í gegnum fjölda tölva um allan heim. Tor er ókeypis hugbúnaður og opið net sem aðstoðar þig við að verjast gegn eftirliti á netinu sem vinnur gegn frelsi einkalífsins og friðhelgi, trúnaðar viðskiptamálum og samböndum, og ríkisöryggi þekkt sem umferðargreining.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">ræsa og stöðva Tor</string>
-  <string name="tor_proxy_service_process">torproxyþjónusta</string>
-  <string name="status_starting_up">Orbot er að ræsa...</string>
-  <string name="status_activated">Tengdur við Tor netið</string>
-  <string name="status_disabled">Orbot er slökkt</string>
-  <string name="tor_process_starting">Kveiki á Tor notanda...</string>
-  <string name="tor_process_complete">lokið.</string>
-  <string name="tor_process_waiting">bíða.</string>
-  <string name="not_anonymous_yet">AÐVÖRUN: Netumferðin þín er ekki nafnlaus enn! Vinsamlegast stilltu hugbúnaðinn þinn til að nota HTTP proxy 127.0.0.1:8118 eða SOCK4A eða SOCK5 proxy 127.0.0.1:9050</string>
-  <string name="menu_home">Heim</string>
-  <string name="menu_browse">Vafra</string>
-  <string name="menu_settings">Stillingar</string>
-  <string name="menu_log">Skráning</string>
-  <string name="menu_info">Hjálp</string>
-  <string name="menu_start">Byrja</string>
-  <string name="menu_stop">Stöðva</string>
-  <string name="menu_about">Um</string>
-  <string name="main_layout_download">Niðurhal</string>
-  <string name="main_layout_upload">Upphal</string>
-  <string name="button_help">Hjálp</string>
-  <string name="button_close">Loka</string>
-  <string name="button_about">Um</string>
-  <string name="button_clear_log">Hreinsa Skráningu</string>
-  <string name="menu_verify">Athuga</string>
-  <string name="menu_exit">Hætta</string>
-  <string name="menu_scan">Skanna BridgeQR</string>
-  <string name="menu_share_bridge">Deila BridgeQR</string>
-  <string name="press_to_start">- ýttu lengi til að byrja -</string>
-  <string name="pref_trans_proxy_group">Gegnsætt Proxy (Þarfnast Rótaraðgangs)</string>
-  <string name="pref_trans_proxy_title">Gegnsætt Proxy</string>
-  <string name="pref_trans_proxy_summary">Sjálfkrafa Tor-gera smáforrit</string>
-  <string name="pref_transparent_all_title">Tor Allt</string>
-  <string name="pref_transparent_all_summary">Beina umferð fyrir öll smáforrit í gegnum Tor</string>
-  <string name="pref_transparent_port_fallback_title">Port Beinir til vara</string>
-  <string name="pref_transparent_port_fallback_summary">AÐVÖRUN: Fer framhjá algengum portum (80, 443, etc). *NOTA AÐEINS* ef \'Allt\' eða \'Smáforrit\' stilling virkar ekki.</string>
-  <string name="pref_transparent_port_title">Porta Listi</string>
-  <string name="pref_transparent_port_summary">Listi yfir port til að proxya. *NOTA AÐEINS* ef \'Allt\' eða \'Smáforrit\' stilling virkar ekki</string>
-  <string name="pref_transparent_port_dialog">Settu inn port til að proxya</string>
-  <string name="pref_has_root">Biðja um Rótaraðgang</string>
-  <string name="pref_has_root_summary">Þarfnast rótaraðgangs fyrir gegnsæja proxýun</string>
-  <string name="status_install_success">Uppsetning Tor skráa tókst!</string>
-  <string name="status_install_fail">Tor binary skrár gátu ekki verið settar upp. Vinsamlegast athugaðu Skráninguna og láttu vita til tor-assistants at torproject.org</string>
-  <string name="title_error">Villa í Forriti</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Um Orbot</string>
-  <string name="btn_next">Næsta</string>
-  <string name="btn_back">Til baka</string>
-  <string name="btn_finish">Enda</string>
-  <string name="btn_okay">Ókei</string>
-  <string name="btn_cancel">Hætta við</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Fáein Orbot Smáatriði</string>
-  <string name="wizard_details_msg">Orbot er open-source forrit sem inniheldur Tor, LibEvent og Polipo. Það veitir staðbundinn HTTP proxy (8118) og SOCKS proxy (9050) inná Tor netið. Orbot hefur líka eiginleika, á tæki með rótaraðgang, til að senda alla vefumferð í gegnum Tor.</string>
-  <string name="wizard_permissions_root">Aðgangur Heimilaður</string>
-  <string name="wizard_permissions_stock">Orbot Leyfisveiting</string>
-  <string name="wizard_premissions_msg_root">Frábært! Við höfum skynjað að þú hefur rótaraðgang heimilaðan fyrir Orbot. Við munum nota þetta vald skynsamlega.</string>
-  <string name="wizard_permissions_msg_stock">Þrátt fyrir að vera ekki nauðsynlegt, getur Orbot orðið öflugra verkfæri ef tækið þitt hefur rótaraðgang. Notaðu hnappinn fyrir neðan til að veita Orbot ofurkrafta!</string>
-  <string name="wizard_permissions_no_root">Ef þú hefur ekki rótaraðgang eða hefur enga hugmynd um hvað við erum að tala, vertu viss um að nota smáforrit sem gerð eru til að vinna með Orbot.</string>
-  <string name="wizard_permissions_consent">Ég skil og vil halda áfram án réttinda Ofurnotanda</string>
-  <string name="wizard_permission_enable_root">Veita rótaraðgang fyrir Orbot</string>
-  <string name="wizard_configure">Stilla Torinleika</string>
-  <string name="wizard_configure_msg">Orbot gefur þér möguleikann á að beina allri umferð smáforrita í gegnum Tor EÐA að velja smáforrit hvert fyrir sig.</string>
-  <string name="wizard_configure_all">Beina umferð fyrir öll smáforrit í gegnum Tor</string>
-  <string name="wizard_configure_select_apps">Velja Einstök Smáforrit fyrir Tor</string>
-  <string name="wizard_tips_tricks">Orbot-virk Smáforrit</string>
-  <string name="wizard_tips_msg">Smáforritin fyrir neðan voru þróuð til að virka með Orbot. Klikkaðu hvern takka til að setja upp núna, eða þú getur fundið þá seinna á Google Play, á heimasíðu GuardianProject.info eða í gegnum F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Öruggur spjall þjónn fyrir Android</string>
-  <string name="wizard_tips_proxy">Proxy Stillingar - Lærðu hvernig á að stilla smáforrit til að virka með Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo Leitarvél smáforrit</string>
-  <string name="wizard_tips_twitter">Setja Twitter proxy hýsir til \"localhost\" and port 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Búða til sögu og skildu það eftir fyrir tor vegna öryggis!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proxy Stillingar</string>
-  <string name="wizard_proxy_help_msg">Ef að Android smáforritið sem þú notar, styður notkun af HTTP eða SOCKS proxy, getur þú stillt það til að tengjast Orbot og nota Tor.\n\n\nStillingar þjóns er 127.0.0.1 eða \"localhost\". Fyrir HTTP, port stillingin er 8118. Fyrir SOCKS, proxyinn er 9050. Þú ættir að nota SOCKS4A eða SOCKS5 ef mögulegt. Þú getur lært meira um proxýun á Android með FAQ á: http://tinyurl.com/proxyandroid</string>
-  <string name="wizard_final">Orbot er tilbúinn!</string>
-  <string name="wizard_final_msg">Milljónir manneskja um allan heim nota Tor útaf mörgum mismunandi ástæðum.\n\nBlaðamenn og bloggarar, mannréttindasinnar, lögreglufólk, hermenn, stórfyrirtæki, þegnar bælandi ríkisstjórna og bara venjulegir borgarar... og núna þú ert líka tilbúinn!</string>
-  <string name="wizard_exit_at_first_screen_toast">Vinsamlegast stilltu Orbot áður en þú getur byrjað að nota það!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Þetta mun opna vef vafrann þinn að https://check.torproject.org til að sjá hvort Orbot sé rétt tengdur og að þú sért tengdur Tor.</string>
-  <string name="pref_hs_group">Falin Þjónusta Hýsing</string>
-  <string name="pref_general_group">Almennt</string>
-  <string name="pref_start_boot_title">Virkja Orbot við Ræsingu</string>
-  <string name="pref_start_boot_summary">Sjálfkrafa virkja Orbot og tengja Tor þegar Android tækið þitt ræsist</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot kemur með Tor til Android!\n\nTor hjálpar þér að verjast gegn síun innihalds, umferðargreiningu og net eftirliti sem er hættulegt friðhelgi einkalífsins, trúnaðarupplýsingum og persónulegum samböndum.\n\nÞessi leiðbeinandi hjálpar þér að stilla Orbot og Tor á tækinu þínu.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Aðvörun</string>
-  <string name="wizard_warning_msg">Aðeins með að setja Orbot upp mun ekki sjálfkrafa gera netumferð þína nafnlausa.\n\nÞú verður að stilla Orbot rétt, tækið þitt og önnur smáforrit til að nota Tor rétt.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Leyfisveitingar</string>
-  <string name="wizard_permissions_root_msg1">Þú getur valfrjálst veitt Orbot \'Ofurnotanda\' aðgang til að virkja stillingar fyrir lengra komna, eins og Gegnsæ Proxýun.</string>
-  <string name="wizard_permissions_root_msg2">Ef þú vilt ekki gera þetta, vinsamlegast vertu viss um að nota smáforrit sem gerð eru til að vinna með Orbot</string>
-  <string name="wizard_permissions_no_root_msg">Tækið þitt virðist ekki vera með rótaraðgang eða veita \'Ofurnotanda\' réttindi.\n\nVinsamlegast prófaðu \'Smáforrit\' viðmótið á aðalskjánum í staðinn.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-Virk Smáforrit</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Öruggt spjall smáforrit með Utanvegar Dulkóðun</string>
-  <string name="wizard_tips_play">Finndu öll Guardian Verkefnis smáforrit á Google Play</string>
-  <string name="wizard_tips_fdroid">Finndu öll smáforrit úr Guardian Verkefninu á F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Finndu öll smáforrit úr Guardian Verkefninu á https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Gegnsæ Proxýun</string>
-  <string name="wizard_transproxy_msg">Þetta leyfir smáforritunum þínum sjálfkrafa að keyra í gengum Tor netið án nokkurra stillinga.</string>
-  <string name="wizard_transproxy_hint">(Hakaðu í þenna reit ef þú hefur enga hugmynd um hvað við erum að tala)</string>
-  <string name="wizard_transproxy_none">Engin</string>
-  <string name="pref_transparent_tethering_title">Tor Netaðgangspunktur</string>
-  <string name="pref_transparent_tethering_summary">Leyfa Tor Gegnsæja Proxýun fyrir WiFi og USB Tæki með Netaðgengi (þarfnast endurræsingar)</string>
-  <string name="button_grant_superuser">Biðja um Ofurnotandaréttindi</string>
-  <string name="pref_select_apps">Velja Smáforrit</string>
-  <string name="pref_select_apps_summary">Velja Smáforrit til að Beina í gegnum Tor</string>
-  <string name="pref_node_configuration">Punkta Stilling</string>
-  <string name="pref_node_configuration_summary">Þetta eru flóknari stillingar sem geta minnkað nafnleysið þitt</string>
-  <string name="pref_entrance_node">Inngangs Punktur</string>
-  <string name="pref_entrance_node_summary">Fingraför, uppnefni, lönd og heimilisföng fyrir fyrsta hoppið</string>
-  <string name="pref_entrance_node_dialog">Sláðu Inn Inngangspunkt</string>
-  <string name="button_proxy_all">Proxy Allt</string>
-  <string name="button_proxy_none">Proxy Ekkert</string>
-  <string name="button_invert_selection">Öfugt Val</string>
-  <string name="pref_proxy_title">Útistandandi Net Proxy (Valfrjálst)</string>
-  <string name="pref_proxy_type_title">Útistandandi Proxy Gerð</string>
-  <string name="pref_proxy_type_summary">Protocol til að nota fyrir proxy þjón: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Sláðu Inn Gerð Proxýs</string>
-  <string name="pref_proxy_host_title">Útistandandi Proxy Hýsir</string>
-  <string name="pref_proxy_host_summary">Proxy Netþjóns nafn</string>
-  <string name="pref_proxy_host_dialog">Sláðu Inn Proxy Þjón</string>
-  <string name="pref_proxy_port_title">Útistandandi Proxy Port</string>
-  <string name="pref_proxy_port_summary">Proxy Netþjóns port</string>
-  <string name="pref_proxy_port_dialog">Sláðu Inn Proxy port</string>
-  <string name="pref_proxy_username_title">Útistandandi Proxy Notendanafn</string>
-  <string name="pref_proxy_username_summary">Proxy Notendanafn (Valfrjálst)</string>
-  <string name="pref_proxy_username_dialog">Sláðu Inn Proxy Notendanafn</string>
-  <string name="pref_proxy_password_title">Útistandandi Proxy Lykilorð</string>
-  <string name="pref_proxy_password_summary">Proxy Lykilorð (Valfrjálst)</string>
-  <string name="pref_proxy_password_dialog">Sláðu Inn Proxy Lykilorð</string>
-  <string name="status">Staða</string>
-  <string name="setting_up_full_transparent_proxying_">Set upp full-gegnsæjan proxy...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Set upp smáforrita-byggðan gegnsæjan proxy... </string>
-  <string name="transparent_proxying_enabled">Gegnsæ proxýun KVEIKT</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy kveikt fyrir Netaðgangspunkt!</string>
-  <string name="warning_error_starting_transparent_proxying_">AÐVÖRUN: villa við að kveikja á gegnsærri proxýun</string>
-  <string name="transproxy_rules_cleared">TransProxy reglur hreinsaðar</string>
-  <string name="couldn_t_start_tor_process_">Gat ekki kveikt á Tor þráð:</string>
-  <string name="privoxy_is_running_on_port_">Polipo keyrir á porti:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Set upp port-byggða gegnsæja proxýun...</string>
-  <string name="bridge_error">Brúar Villa</string>
-  <string name="bridge_requires_ip">Til að nota brúar viðbótina, verðuru að slá inn að minnsta kosti eina IP addressu fyrir brú.</string>
-  <string name="send_email_for_bridges">Sendu tölvupóst til bridges at torproject.org með setningunni \"get bridges\" eitt og sér í innihaldi skeytisins frá gmail aðgangi.</string>
-  <string name="error">Villa</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Þitt ReachableAddressur stillingar ollu undanþágu!</string>
-  <string name="your_relay_settings_caused_an_exception_">Endurvarp stillingar þínar ollu undanþágu!</string>
-  <string name="exit_nodes">Útgangspunktar</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingraför, uppnefni, lönd og heimilisföng fyrir síðasta hoppið</string>
-  <string name="enter_exit_nodes">Sláðu Inn Útgangspunkta</string>
-  <string name="exclude_nodes">Útiloka Punkta</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingraför, uppnefni, lönd og heimilisföng til að útiloka</string>
-  <string name="enter_exclude_nodes">Sláðu Inn Útiloka Punkta</string>
-  <string name="strict_nodes">Strangir Punktar</string>
-  <string name="use_only_these_specified_nodes">Nota *aðeins* þessa tilgreindu punkta</string>
-  <string name="bridges">Brýr</string>
-  <string name="use_bridges">Nota Brýr</string>
-  <string name="bridges_obfuscated">Villandi Brýr</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Kveikja hliðstæðan inngangspunkt inná Tor Netið</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Leyfa ef stilltar brýr eru villandi brýr</string>
-  <string name="ip_address_and_port_of_bridges">IP addressa og brúarport</string>
-  <string name="enter_bridge_addresses">Sláðu Inn Brúar Addressur</string>
-  <string name="relays">Endurvarpar</string>
-  <string name="relaying">Endurvörpun</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Leyfa tækinu þínu að vera útgangslaus endurvarpi</string>
-  <string name="relay_port">Endurvörpunar Port</string>
-  <string name="listening_port_for_your_tor_relay">Hlustunar port fyrir Tor endurvarpann þinn</string>
-  <string name="enter_or_port">Sláðu Inn OR port</string>
-  <string name="relay_nickname">Endurvörpunar viðurnefni</string>
-  <string name="the_nickname_for_your_tor_relay">Viðurnefni fyrir Tor endurvarpið þitt</string>
-  <string name="enter_a_custom_relay_nickname">Sláðu Inn sérhannað endurvarp viðurnefni</string>
-  <string name="reachable_addresses">Nálgunarhæf Heimilisföng</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Keyra sem notandi bakvið eldvegg með hamlandi skilyrðum</string>
-  <string name="reachable_ports">Nálgunarhæf port</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Port nálgunarhæf bakvið hamlandi eldvegg</string>
-  <string name="enter_ports">Sláðu Inn port</string>
-  <string name="enable_hidden_services">Falin Þjónusta Hýsing</string>
-  <string name="run_servers_accessible_via_the_tor_network">leyfa á-tæki netþjón til að vera aðgengilegur í gegnum Tor netið</string>
-  <string name="enter_localhost_ports_for_hidden_services">sláðu inn localhost port fyrir faldar þjónustur</string>
-  <string name="hidden_service_ports">Falin Þjónustu Port</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">nafnið fyrir falda þjónustu þína (búið til sjálfkrafa)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">leyfa villuskráningu á verða búin til (verður að nota adb eða aLogCat til að skoða)</string>
-  <string name="project_home">Heimili Verkefni(sins):</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Tor Leyfið</string>
-  <string name="https_torproject_org">https:torproject.org</string>
-  <string name="third_party_software">Hugbúnaður frá 3ja aðila:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="hidden_service_request">Smáforrit vill opna falið port þjóns %S að Tor netinu. Þetta er öruggt ef þú treystir smáforritinu.</string>
-  <string name="found_existing_tor_process">fann annan Tor þráð...</string>
-  <string name="something_bad_happened">Eitthvað slæmt gerðist. Athugaðu skráninguna</string>
-  <string name="hidden_service_on">falin þjónusta á:</string>
-  <string name="unable_to_read_hidden_service_name">get ekki lesið nafn földu þjónustunnar</string>
-  <string name="unable_to_start_tor">Get ekki kveikt á Tor:</string>
-  <string name="unable_to_reset_tor">Endurræstu tækið þitt, ekki hægt að núllstilla Tor!</string>
-  <string name="pref_use_sys_iptables_title">Nota Upprunalegar IPtöflur</string>
-  <string name="pref_use_sys_iptables_summary">nota innbyggðar iptöflur binary í staðinn fyrir þær sem fylgja með Orbot</string>
-  <string name="error_installing_binares">Tor binary-in gátu ekki verið uppsettar eða uppfærðar.</string>
-  <string name="pref_use_persistent_notifications">Alltaf hafa smámynd í glugganum þegar Orbot er tengudr</string>
-  <string name="pref_use_persistent_notifications_title">Alltaf-Á Upplýsingar</string>
-  <string name="pref_use_expanded_notifications">Sýndu útvíkkaðar upplýsingar varðandi Tor útgangsland og IP tölu</string>
-  <string name="pref_use_expanded_notifications_title">Útvíkkaðar Upplýsingar</string>
-  <string name="notification_using_bridges">Brýr kveiktar!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Tungumál</string>
-  <string name="set_locale_summary">Veldu staðsetningu og tungumál fyrir Orbot</string>
-  <string name="wizard_locale_title">Veldu Tungumál</string>
-  <string name="wizard_locale_msg">Leyfa upprunalega eða skipta núverandi tungumáli</string>
-  <string name="powered_by">gert kleift af Tor</string>
-  <string name="btn_save_settings">Geyma Stillingar</string>
-  <string name="no_internet_connection_tor">Engin tenging við netið; Tor er í biðstöðu...</string>
-  <string name="bandwidth_">Bandvídd:</string>
-  <string name="down">niðri</string>
-  <string name="up">uppi</string>
-  <string name="pref_disable_network_title">Enginn Netkerfis Sjálfvirkur-Svefn</string>
-  <string name="pref_disable_network_summary">Svæfðu Tor þegar engin internet tenging er til staðar</string>
-  <string name="newnym">Þú ert komin með nýtt Tor auðkenni!</string>
-  <string name="menu_use_chatsecure">Nota ChatSecure</string>
-  <string name="permission_manage_tor_label">Stilla Tor</string>
-  <string name="permission_manage_tor_description">Leyfa þessu smáforriti að stjórna Tor þjónustunni</string>
-  <string name="install_apps_">Setja upp smáforrit?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Engin tenging við netið. Tor verður svæfður...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Tenging við netið er góð. Tor verður vakinn...</string>
-  <string name="updating_settings_in_tor_service">uppfæri stillingar í Tor þjónustu</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Port sem Tor býður SOCKS proxy á (upprunalegt: 9050 eða 0 til að slökkva)</string>
-  <string name="pref_socks_dialog">SOCK Port Stilling</string>
-  <string name="pref_transport_title">Tor GegnsærProxy Port</string>
-  <string name="pref_transport_summary">Port sem Tor býður Gegnsæjum Proxy á (upprunalegt: 9040 eða 0 til að slökkva)</string>
-  <string name="pref_transport_dialog">GegnsærProxy Port Stilling</string>
-  <string name="pref_dnsport_title">Tor DNS Port</string>
-  <string name="pref_dnsport_summary">Port sem Tor býður DNS á (upprunalegt: 5400 eða 0 til að slökkva)</string>
-  <string name="pref_dnsport_dialog">DNS Port Stilling</string>
-  <string name="pref_torrc_title">Torrc Mótanleg Stilling</string>
-  <string name="pref_torrc_summary">AÐEINS SÉRFRÆÐINGAR: sláðu inn beinar torrc stillingar línur</string>
-  <string name="pref_torrc_dialog">Mótanlegt Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech Mannréttinda Skjölunar Smáforrit</string>
-  <string name="your_tor_public_ips_">Tor Almennings IP tölurnar Þínar </string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Vinsamlegast slökktu á þessu smáforriti í Android->Settings->Apps ef þú ert í vandræðum með Orbot: </string>
-  <string name="app_conflict">Smáforrita Árekstur</string>
-  <string name="pref_transproxy_refresh_title">Gegnsærproxy Sjálfkrafa Endurnýjun</string>
-  <string name="pref_transproxy_refresh_summary">Endursetja Gegnsærproxy reglurnar þegar ástand netsins breytist</string>
-  <string name="pref_transproxy_flush_title">Gegnsærproxy ÞVINGUÐ FJARLÆGING</string>
-  <string name="pref_transproxy_flush_summary">Ýttu hér til að henda öllum gegnsærproxy net reglunum NÚNA</string>
-  <string name="transparent_proxy_rules_flushed_">Gegnsær proxy reglum hent!</string>
-  <string name="you_do_not_have_root_access_enabled">Þú ert ekki með RÓTAR aðgang kveikt</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Þú gætir þurft að stöðva og byrja Orbot til að stillinga breytingar taka gildi.</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Brýr Uppfærðar</string>
-  <string name="restart_orbot_to_use_this_bridge_">Vinsamlegast endurræstu Orbot til að breytingarnar taki gildi</string>
-  <string name="menu_qr">QR Kóðar</string>
-  <string name="bridge_mode">Brúar Viðmót</string>
-  <string name="get_bridges_email">Tölvupóstur</string>
-  <string name="get_bridges_web">Vefur</string>
-  <string name="activate">Virkja</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Þú getur leyft öllum smáforritum á tækinu þínu að fara í gegnum Tor netið með að nota VPN möguleikann í Android.\n\n*AÐVÖRUN* Þetta er ný, tilraunar möguleiki og í sumum tilfellum mun ekki byrja sjálfkrafa, eða geta stöðvast. Það ætti EKKI að notast fyrir nafnleysi, og AÐEINS notað til að komast í gegnum eldveggi og síur.</string>
-  <string name="send_email">Senda Tölvupóst</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Þú getur fengið brúar heimilisfang í gegnum tölvupóst, vefinn eða með að skanna brúar QR kóða. Veldu \'Tölvupóstur\' eða \'Vefur\' fyrir neðan til að óska eftir brúar heimilisfangi.\n\nÞegar þú hefur heimilisfang, afritaðu & límdu það inn í \'Brýr\' stillingu í stillingar og endurræsun í Orbot.</string>
-  <string name="standard_browser">Staðlaður Vafri</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">ATHUGAÐU: Aðeins staðlaðar Tor brýr virka á Intel X86/ATOM devices</string>
-</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
deleted file mode 100644
index 40f8ddc..0000000
--- a/res/values-it/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot è un\'applicazione proxy che permette alle altre applicazioni di accedere a internet in maniera più sicura. Orbot usa Tor per cifrare il  traffico internet e lo nasconde poi facendolo rimbalzare attraverso una serie di computer attorno al mondo. Tor è un software libero e una rete aperta che aiuta a difendersi da una forma di sorveglianza della rete conosciuta come analisi del traffico. Quest\'ultima minaccia libertà e privacy personale, attività commerciali riservate, rapporti interpersonali, e persino la sicurezza di stato.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">avvia e ferma Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot è in esecuzione...</string>
-  <string name="status_activated">Connesso alla rete Tor</string>
-  <string name="status_disabled">\"Orbot è disattivato</string>
-  <string name="status_shutting_down">TorService si sta spegnendo</string>
-  <string name="tor_process_starting">Avvio client Tor...</string>
-  <string name="tor_process_complete">completa.</string>
-  <string name="tor_process_waiting">attesa.</string>
-  <string name="not_anonymous_yet">ATTENZIONE: Il traffico non è ancora anonimo! Configura le applicazioni per utilizzare il proxy HTTP 127.0.0.1:8118,  SOCKS4A o proxy SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Home</string>
-  <string name="menu_browse">Sfoglia</string>
-  <string name="menu_settings">Impostazioni</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Aiuto</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Avvio</string>
-  <string name="menu_stop">Ferma</string>
-  <string name="menu_about">About</string>
-  <string name="menu_promo_apps">Installa apps...</string>
-  <string name="main_layout_download">Download (velocità/totale)</string>
-  <string name="main_layout_upload">Upload (velocità/totale)</string>
-  <string name="button_help">Aiuto</string>
-  <string name="button_close">Chiudi</string>
-  <string name="button_about">About</string>
-  <string name="button_clear_log">Cancella log</string>
-  <string name="menu_verify">Controlla</string>
-  <string name="menu_exit">Esci</string>
-  <string name="menu_scan">Scansiona BridgeQR</string>
-  <string name="menu_share_bridge">Condividi BridgeQR</string>
-  <string name="press_to_start">- tieni premuto per avviare -</string>
-  <string name="pref_trans_proxy_group">Proxying trasparente (Richiede root)</string>
-  <string name="pref_trans_proxy_title">Proxying trasparente</string>
-  <string name="pref_trans_proxy_summary">Torifying automatico delle app</string>
-  <string name="pref_transparent_all_title">Tor ovunque</string>
-  <string name="pref_transparent_all_summary">Traffico proxy di tutte le app attraverso Tor</string>
-  <string name="pref_transparent_port_fallback_title">Fallback porte proxy</string>
-  <string name="pref_transparent_port_fallback_summary">ATTENZIONE: Aggira le porte comuni (80, 443, ecc). *USARE SOLO* se le modalità \'All\' o \'App\' non funzionano.</string>
-  <string name="pref_transparent_port_title">Elenco porte</string>
-  <string name="pref_transparent_port_summary">Lista di porte per cui fare proxy. *USARE SOLO* se le modalità \'All\' o \'App\' non funzionano.</string>
-  <string name="pref_transparent_port_dialog">Inserisci porte da proxare</string>
-  <string name="pref_has_root">Richiesto accesso root</string>
-  <string name="pref_has_root_summary">Richiede il root per il proxying trasparente</string>
-  <string name="status_install_success">I binari di Tor sono stati installati con successo!</string>
-  <string name="status_install_fail">I file binari di Tor non possono essere installati. Controlla i log e notifica l\'accaduto su tor-assistants at torproject.org</string>
-  <string name="title_error">Errore applicazione</string>
-  <string name="wizard_title">Benvenuti in Orbot</string>
-  <string name="wizard_btn_tell_me_more">About Orbot</string>
-  <string name="btn_next">Avanti</string>
-  <string name="btn_back">Indietro</string>
-  <string name="btn_finish">Fine</string>
-  <string name="btn_okay">Ok</string>
-  <string name="btn_cancel">Annulla</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Alcuni dettagli su Orbot</string>
-  <string name="wizard_details_msg">Orbot è un\'app open-source contenente Tor, LibEvent e Polipo. Fornisce un proxy HTTP locale (8118) e un proxy SOCKS (9050) nella rete Tor. Orbot, solo sui dispositivi con permessi di ROOT, offre anche la possibilità di veicolare tutto il traffico attraverso Tor.</string>
-  <string name="wizard_permissions_root">Permesso concesso</string>
-  <string name="wizard_permissions_stock">Permessi Orbot</string>
-  <string name="wizard_premissions_msg_root">Eccellente! Abbiamo rilevato la presenza dei permessi di root attivati per Orbot. Useremo questi poteri con saggezza.</string>
-  <string name="wizard_permissions_msg_stock">Anche se non è richiesto, Orbot può diventare uno strumento ancora più potente se il dispositivo ha accesso come root. Utilizza il pulsante qui sotto per concedere i superpoteri a Orbot!</string>
-  <string name="wizard_permissions_no_root">Se non hai i permessi root o non hai idea di cosa siano, assicurati solamente di utilizzare applicazioni fatte per lavorare con Orbot.</string>
-  <string name="wizard_permissions_consent">Ho capito e desidero continuare senza il root</string>
-  <string name="wizard_permission_enable_root">Concedi permessi root a Orbot</string>
-  <string name="wizard_configure">Configura Torification</string>
-  <string name="wizard_configure_msg">Orbot dà la possibilità di instradare tutto il traffico delle applicazioni tramite Tor o scegliere le applicazioni singolarmente.</string>
-  <string name="wizard_configure_all">Usa Tor come proxy per tutte le applicazioni.</string>
-  <string name="wizard_configure_select_apps">Seleziona singole App per Tor</string>
-  <string name="wizard_tips_tricks">App abilitate per Orbot</string>
-  <string name="wizard_tips_msg">Ti invitiamo a scaricare & usare app che possono connettersi direttamente a Orbot. Fai click sui pulsanti qui sotto per installare.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Client sicuro di messaggistica istantanea, per Android</string>
-  <string name="wizard_tips_proxy">Impostazioni proxy - Ulteriori informazioni su come configurare le app per funzionare con Orbot</string>
-  <string name="wizard_tips_duckgo">App del motore di ricerca Duckduckgo</string>
-  <string name="wizard_tips_twitter">Twitter supporta il proxy http \"localhost:8118\"</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Crea una storia e lascia a Tor la sicurezza!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Impostazioni proxy</string>
-  <string name="wizard_proxy_help_msg">Se l\'app Android che stai usando supporta l\'uso di Proxy HTTP o SOCKS, allora puoi configurarle per connettersi a Orbot e usare Tor.\n\n\n L\'impostazione host è 127.0.0.1 o \"localhost\". Per l\'HTTP, il valore della porta è 8118. Per SOCKS, il proxy è 9050. Dovresti utilizzare SOCKS4A o SOCKS5 se possibile.\n \n\n\n PPuoi imparare altro sul proxying in Android tramite le FAQ: http://tinyurl.com/proxyandroid</string>
-  <string name="wizard_final">Orbot è pronto!</string>
-  <string name="wizard_final_msg">Milioni di persione in giro per il mondo usano Tor per un\'ampia varietà di ragioni.\n\nGiornalisti e blogger, difensori dei diritti umani, ufficiali delle forze dell\'ordine, soldati, aziende, cittadini di paesi repressivi, e anche cittadini qualunque... e ora sei pronto a farlo anche tu!</string>
-  <string name="wizard_exit_at_first_screen_toast">Perfavore configura Orbot prima di iniziare ad usarlo!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Ti sei collegato correttamente alla rete Tor - ma questo NON significa che il tuo dispositivo è sicuro. È possibile utilizzare l\'opzione \'Browser\' dal menù per testare il browser. \n\nVisita il nostro sito web https://guardianproject.info/apps/orbot o invia una mail a help at guardianproject.info per saperne di più.</string>
-  <string name="tor_check">Si aprirà il browser web predefinito per https://check.torproject.org per controllare se Orbot probabilmente è configurato e si è connessi a Tor.</string>
-  <string name="pref_hs_group">Servizi nascosti</string>
-  <string name="pref_general_group">Generale</string>
-  <string name="pref_start_boot_title">Avvia Orbot al boot</string>
-  <string name="pref_start_boot_summary">Avvia automaticamente Orbot e connetti Tor quando il dispositivo Android viene avviato</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot porta Tor su Android!\n\nTor ti aiuta a difenderti da filtraggio di contenuti, analisi del traffico e sorveglianza della rete che minacciano la privacy, informazioni personali e relazioni personali.\n\nQuesta procedura guidata ti aiuterà a configurare Orbot e Tor sul tuo dispositivo.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Attenzione</string>
-  <string name="wizard_warning_msg">La semplice installazione di Orbot non renderà anonimo il tuo traffico di rete mobile.\n\nDevi configurare correttamente Orbot, il tuo dispositivo e le altre applicazioni per usare Tor efficacemente.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Permessi</string>
-  <string name="wizard_permissions_root_msg1">Opzionalmente, è possibile concedere ad Orbot l\'accesso da superutente per abilitare funzionalità avanzate come il proxying trasparente.</string>
-  <string name="wizard_permissions_root_msg2">Se non si vuole intraprendere questa scelta, ci si assicuri di utilizzare applicazioni fatte per funzionare con Orbot</string>
-  <string name="wizard_permissions_no_root_msg">Il vostro dispositivo non sembra essere rooted o fornire accesso da \'Superutente\'.\n\nPerfavore prova invece la modalità \'App\' nella schermata principale.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-App abilitate</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: App chat sicura con Cifratura Off-the-Record</string>
-  <string name="wizard_tips_orweb">Orfox: Browser progettato per la privacy che funziona attraverso Tor</string>
-  <string name="wizard_tips_play">Cerca tutte le app del Guardian Project su Google Play</string>
-  <string name="wizard_tips_fdroid">Trova tutte le app Guardian Projec su F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Trova tutte le app Guardian Project su https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Proxying trasparente</string>
-  <string name="wizard_transproxy_msg">Questo permette alle tue applicazioni di passare automaticamente attraverso la rete Tor senza necessità di ulteriore configurazione.</string>
-  <string name="wizard_transproxy_hint">(Seleziona questa casella se non hai idea di quello di cui stiamo parlando)</string>
-  <string name="wizard_transproxy_none">Nessuno</string>
-  <string name="pref_transparent_tethering_title">Tethering Tor</string>
-  <string name="pref_transparent_tethering_summary">Abilita il proxying trasparente di Tor per i dispositivi connessi in tethering via WiFi e USB (necessita di riavvio)</string>
-  <string name="button_grant_superuser">Richiede accesso superuser</string>
-  <string name="pref_select_apps">Seleziona app</string>
-  <string name="pref_select_apps_summary">Scegli le applicazioni da utilizzare attraverso Tor</string>
-  <string name="pref_node_configuration">Configurazione nodo</string>
-  <string name="pref_node_configuration_summary">Questi sono parametri di configurazione avanzati che possono ridurre il vostro anonimato</string>
-  <string name="pref_entrance_node">Nodi di entrata</string>
-  <string name="pref_entrance_node_summary">Identificativi, nicknames, paesi ed indirizzi del primo hop</string>
-  <string name="pref_entrance_node_dialog">Inserisci nodi di entrata</string>
-  <string name="pref_allow_background_starts_title">Permetti Avvii in Background</string>
-  <string name="pref_allow_background_starts_summary">Permetti a qualsiasi app di comunicare ad Orbot di avviare Tor e servizi relativi</string>
-  <string name="button_proxy_all">Proxa tutto</string>
-  <string name="button_proxy_none">Non proxare niente</string>
-  <string name="button_invert_selection">Inverti selezione</string>
-  <string name="pref_proxy_title">Proxy di Rete in Uscita (Facoltativo)</string>
-  <string name="pref_proxy_type_title">Tipo proxy</string>
-  <string name="pref_proxy_type_summary">Protocolli da utilizzare per i server proxy: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Inserisci tipo proxy</string>
-  <string name="pref_proxy_host_title">Host proxy</string>
-  <string name="pref_proxy_host_summary">Hostname server proxy</string>
-  <string name="pref_proxy_host_dialog">Inserire l\'host del proxy</string>
-  <string name="pref_proxy_port_title">Porta proxy</string>
-  <string name="pref_proxy_port_summary">Porta del server proxy</string>
-  <string name="pref_proxy_port_dialog">Inserire la porta del proxy</string>
-  <string name="pref_proxy_username_title">Nome Utente del Proxy in Uscita</string>
-  <string name="pref_proxy_username_summary">Nome Utente del Proxy (Facoltativo)</string>
-  <string name="pref_proxy_username_dialog">Inserisci Nome Utente del Proxy</string>
-  <string name="pref_proxy_password_title">Password del Proxy in Uscita</string>
-  <string name="pref_proxy_password_summary">Password del Proxy (Facoltativo)</string>
-  <string name="pref_proxy_password_dialog">Inserisci Password Proxy</string>
-  <string name="status">Stato</string>
-  <string name="setting_up_full_transparent_proxying_">Configurazione del proxying completamente trasparente...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Configurazione del proxying trasparente basato su applicazione...</string>
-  <string name="transparent_proxying_enabled">Proxying trasparente ABILITATO</string>
-  <string name="transproxy_enabled_for_tethering_">Proxying trasparente abilitato per il tethering</string>
-  <string name="warning_error_starting_transparent_proxying_">AVVERTIMENTO: errore nell\'avvio del TransProxy!</string>
-  <string name="transproxy_rules_cleared">Regole del TransProxy cancellate</string>
-  <string name="couldn_t_start_tor_process_">Impossibile avviare il processo Tor:</string>
-  <string name="privoxy_is_running_on_port_">Polipo è in esecuzione sulla porta:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Configurazione del proxying trasparente basato su porta...</string>
-  <string name="bridge_error">Errore bridge</string>
-  <string name="bridge_requires_ip">Al fine di utilizzare la funzionalità bridge, è necessario inserire almeno l\'indirizzo IP di un bridge.</string>
-  <string name="send_email_for_bridges">Si consiglia di inviare una email a bridges at torproject.org con la linea \"get bridges\" da sola nel corpo del messaggio da un account gmail.</string>
-  <string name="error">Errore</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">La tua configurazione dell\'indirizzo raggiungibile ha causato un\'eccezione!</string>
-  <string name="your_relay_settings_caused_an_exception_">La configurazione del tuo relay ha causato un\'eccezione!</string>
-  <string name="exit_nodes">Nodi di uscita</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Identificatori, nicknames, paesi ed indirizzi per l\'ultimo hop</string>
-  <string name="enter_exit_nodes">Inserire i nodi d\'uscita</string>
-  <string name="exclude_nodes">Escludere i nodi</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Identificatori, nicknames, paesi ed indirizzi da escludere</string>
-  <string name="enter_exclude_nodes">Inserire i nodi da escludere</string>
-  <string name="strict_nodes">Nodi specifici</string>
-  <string name="use_only_these_specified_nodes">Utilizza *solo* i nodi specificati</string>
-  <string name="bridges">Ponti</string>
-  <string name="use_bridges">Utilizza i bridge</string>
-  <string name="bridges_obfuscated">Bridge mascherati</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Abilita nodi alternati in entrata nella rete Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Attiva se i Bridge configurati sono mascherati</string>
-  <string name="ip_address_and_port_of_bridges">Indirizzo IP e porta dei bridge</string>
-  <string name="enter_bridge_addresses">Inserire gli indirizzi dei bridge</string>
-  <string name="relays">Relays</string>
-  <string name="relaying">Relaying</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Abilita il tuo dispositivo per essere un relay non di uscita</string>
-  <string name="relay_port">Porta del relay</string>
-  <string name="listening_port_for_your_tor_relay">Porta in ascolto per il proprio Tor relay</string>
-  <string name="enter_or_port">Inserire la porta OR</string>
-  <string name="relay_nickname">Nickname del relay</string>
-  <string name="the_nickname_for_your_tor_relay">Il nickname per il proprio relay Tor</string>
-  <string name="enter_a_custom_relay_nickname">Inserire un nickname personalizzato per il relay</string>
-  <string name="reachable_addresses">Indirizzo raggiungibile</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Esegui come un client dietro un firewall con politiche restrittive</string>
-  <string name="reachable_ports">Porte raggiungibili</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Porte raggiungibili dietro un firewall restrittivo</string>
-  <string name="enter_ports">Inserisci porte</string>
-  <string name="enable_hidden_services">Abilita servizi nascosti</string>
-  <string name="run_servers_accessible_via_the_tor_network">esegui server accessibili attraverso la rete Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">inserire la porta per l\'host locale per i servizi nascosti</string>
-  <string name="hidden_service_ports">Porta per i servizi nascosti</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">il nome di indirizzamento per i propri servizi nascosti (generato automaticamente)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">abilita i log di debug in output (richiede l\'uso di adb o aLogCat per esser visualizzato)</string>
-  <string name="project_home">Home progetto:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Licenza Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Software di terze parti:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Un applicazione ha richiesto di aprire la porta per servizi nascosti %S alla rete Tor. Questo è sicuro se ci si fida dell\'applicazione.</string>
-  <string name="found_existing_tor_process">trovato un processo Tor esistente...</string>
-  <string name="something_bad_happened">E\' accaduto un evento indesiderato. Controllare i log.</string>
-  <string name="hidden_service_on">servizio nascosto attivo:</string>
-  <string name="unable_to_read_hidden_service_name">Impossibile leggere il nome del servizio nascosto.</string>
-  <string name="unable_to_start_tor">Impossibile avviare Tor:</string>
-  <string name="unable_to_reset_tor">Riavvia il tuo dispositivo, impossibile resettare Tor!</string>
-  <string name="pref_use_sys_iptables_title">Utilizza Iptables di default</string>
-  <string name="pref_use_sys_iptables_summary">utilizza il binario di iptables installato invece di quello fornito con Orbot</string>
-  <string name="error_installing_binares">Non è stato possibile installare o aggiornare i binari di Tor.</string>
-  <string name="pref_use_persistent_notifications">Mantieni sempre l\'icona nella barra degli strumenti quando Orbot è connesso.</string>
-  <string name="pref_use_persistent_notifications_title">Notifiche sempre attive</string>
-  <string name="pref_use_expanded_notifications">Visualizza notifica espansa con nazione e ip dell\'nodo d\'uscita Tor</string>
-  <string name="pref_use_expanded_notifications_title">Espandi notifiche</string>
-  <string name="notification_using_bridges">Bridge attivati!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Lingua</string>
-  <string name="set_locale_summary">Scegli le impostazioni internazionali e la lingua di Orbot</string>
-  <string name="wizard_locale_title">Scegli Lingua</string>
-  <string name="wizard_locale_msg">Lasciare la predefinita o cambiare la lingua corrente</string>
-  <string name="powered_by">powered by Tor</string>
-  <string name="btn_save_settings">Salva impostazioni</string>
-  <string name="no_internet_connection_tor">Nessuna connessione ad internet; Tor è in standby...</string>
-  <string name="bandwidth_">Larghezza di Banda:</string>
-  <string name="down">giù</string>
-  <string name="up">su</string>
-  <string name="pref_disable_network_title">impedire spegnimento automatico della rete</string>
-  <string name="pref_disable_network_summary">Stand-by di Tor quando non c\'è un collegamento a internet disponibile</string>
-  <string name="newnym">Sei passato a una nuova identità Tor!</string>
-  <string name="menu_verify_browser">Browser</string>
-  <string name="menu_use_chatsecure">Usa ChatSecure</string>
-  <string name="permission_manage_tor_label">Gestisci Tor</string>
-  <string name="permission_manage_tor_description">Abilita questa app per controllare il servizio Tor</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Non sembra che tu abbia Orfox installato. Necessiti di aiuto, o apro semplicemente il browser?</string>
-  <string name="install_apps_">Installare applicazioni?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Nessuna connettività di rete. Mettendo Tor a riposo...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Connettività di rete buona. Svegliando Tor...</string>
-  <string name="updating_settings_in_tor_service">aggiornamento impostazioni nel servizio Tor</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Porta sulla quale Tor offre il proxy SOCKS (default: 9050 o 0 per disabilitare)</string>
-  <string name="pref_socks_dialog">Configurazione Porta SOCKS</string>
-  <string name="pref_transport_title">Porta TransProxy Tor</string>
-  <string name="pref_transport_summary">Porta sulla quale Tor offre il Proxy Trasparente (default: 9040 o 0 per disabilitare)</string>
-  <string name="pref_transport_dialog">Configurazione Porta TransProxy</string>
-  <string name="pref_dnsport_title">Porte Tor DNS</string>
-  <string name="pref_dnsport_summary">Porta sulla quale Tor offre i DNS (default: 5400 o 0 per disabilitare)</string>
-  <string name="pref_dnsport_dialog">Configurazione porte DNS</string>
-  <string name="pref_torrc_title">Configurazioni personalizzate di Torrc</string>
-  <string name="pref_torrc_summary">SOLO ESPERTI: inserisci direttamente configurazioni torrc</string>
-  <string name="pref_torrc_dialog">Torrc personalizzate</string>
-  <string name="wizard_tips_martus">Mobile Martus - App per la Documentazione dei Diritti Umani Benetech</string>
-  <string name="your_tor_public_ips_">Il tuo Tor IP pubblico è:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Perfavore disabilita quest\'app in Android->Impostazioni->Apps se stai avendo problemi con Orbot: </string>
-  <string name="app_conflict">Conflitto app</string>
-  <string name="pref_transproxy_refresh_title">Auto-Refresh TransProxy</string>
-  <string name="pref_transproxy_refresh_summary">Ri-applica regole Transproxy quando cambia lo stato della rete</string>
-  <string name="pref_transproxy_flush_title">FORZA RIMOZIONE Transproxy</string>
-  <string name="pref_transproxy_flush_summary">Clicca qui per eliminare tutte le regole di rete Transproxy IMMEDIATAMENTE</string>
-  <string name="transparent_proxy_rules_flushed_">Regole Proxy Trasparente eliminate!</string>
-  <string name="you_do_not_have_root_access_enabled">Non ci sono i permessi di ROOT abilitati</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Potrebbe essere necessario riavviare Orbot per applicare i cambiamenti delle impostazioni.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Bridge attivati</string>
-  <string name="restart_orbot_to_use_this_bridge_">Per favore riavvia Orbot per rendere effettive le modifiche</string>
-  <string name="menu_qr">Codici QR</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Se la tua rete cellulare blocca attivamente Tor puoi utilizzare un Bridge per accedere alla rete. Seleziona uno dei tipi di bridge da sopra per attivare i bridge</string>
-  <string name="bridge_mode">Modalità Bridge</string>
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Attiva</string>
-  <string name="apps_mode">Modalità VPN per le applicazioni</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Puoi configurare tutte le app del tuo dispositivo per connettersi attraverso la rete Tor usando la modalità VPN di Android.\n\n*ATTENZIONE* Questa è una funzione nuova e sperimentale, in alcuni potrebbe non avviarsi in automatico o fermarsi. NON dovrebbe essere usata per l\'anonimato ma solo per bypassare filtri e firewall.</string>
-  <string name="send_email">Invia email</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Tu poi ricevere un indirizzo bridge via email, web o scansionando un codice QR. Seleziona \'Email\' o \'Web\' per richiedere un indirizzo bridge.\n\nUna volta che hai un indirizzo, copialo & incollalo nell\'opzione \"Bridges\" delle impostazioni di Orbot e riavvialo.</string>
-  <string name="install_orweb">Installa Orfox</string>
-  <string name="standard_browser">Browser standard</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOTA: Solo i Tor Bridges standard funzionano sui dispositivi Intel x86/Atom</string>
-  <string name="vpn_default_world">Mondo</string>
-</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
deleted file mode 100644
index e894ce3..0000000
--- a/res/values-iw/strings.xml
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot הינה אפליקציית פרוקסי חינמית המאפשרת לאפליקציות אחרות להשתמש באינטרנט בבטחה. Orbot נעזרת ב-Tor כדי להצפין את תעבורת האינטרנט שלך ולהסוותה באמצעותה ניתובה דרך מספר מחשבים ברחבי העולם. Tor היא תוכנה חופשית ורשת פתוחה המסייעת לך להתגונן מפני סוגים מסוימים של אמצעי ניטור ומעקב אחר רשת האינטרנט המאיימים על הפרטיות, החירות האישית, פעילויות עסקיות ומערכות יחסים חשאיות.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">התחל ועצור את Tor</string>
-  <string name="tor_proxy_service_process">שירות פרוקסי Tor</string>
-  <string name="status_starting_up">Orbot מתחיל…</string>
-  <string name="status_activated">מחובר לרשת Tor</string>
-  <string name="status_disabled">Orbot כבוי</string>
-  <string name="tor_process_starting">מתחיל לקוח Tor...</string>
-  <string name="tor_process_complete">הושלם.</string>
-  <string name="tor_process_waiting">מחכה.</string>
-  <string name="not_anonymous_yet">אזהרה: התעבורה שלך אינה אנונימית עדיין! בבקשה הגדר את האפליקציות שלך כך שיתאפשר שימוש בפרוקסי HTTP (קרי 127.0.0.1:8118) או SOCKS4A או SOCKS5 (קרי 127.0.0.1:9050)</string>
-  <string name="menu_home">בית</string>
-  <string name="menu_browse">דפדף</string>
-  <string name="menu_settings">הגדרות</string>
-  <string name="menu_log">רישום</string>
-  <string name="menu_info">עזרה</string>
-  <string name="menu_start">התחל</string>
-  <string name="menu_stop">עצור</string>
-  <string name="menu_about">אודות</string>
-  <string name="main_layout_download">הורדה</string>
-  <string name="main_layout_upload">העלאה</string>
-  <string name="button_help">עזרה</string>
-  <string name="button_close">סגור</string>
-  <string name="button_about">אודות</string>
-  <string name="button_clear_log">נקה רישום</string>
-  <string name="menu_verify">בדוק</string>
-  <string name="menu_exit">יציאה</string>
-  <string name="menu_scan">סרוק BridgeQR</string>
-  <string name="menu_share_bridge">שתף BridgeQR</string>
-  <string name="press_to_start">-נגיעה ארוכה להתחלה-</string>
-  <string name="pref_trans_proxy_group">פרוקסי שקוף (שורש נדרש)</string>
-  <string name="pref_trans_proxy_title">פרוקסי שקוף</string>
-  <string name="pref_trans_proxy_summary">עבודה אוטומטית עם אפליקציות דרך Tor</string>
-  <string name="pref_transparent_all_title">הכל דרך Tor</string>
-  <string name="pref_transparent_all_summary">תעבור דרך פרוקסי  עבור כל האפליקציות דרך Tor</string>
-  <string name="pref_transparent_port_fallback_title">מפלט פורט פרוקסי</string>
-  <string name="pref_transparent_port_fallback_summary">אזהרה: עקוף פורטים נפוצים (80,443 וכו\'). *השתמש רק* אם האופנים \'All\' או \'App\'  לא עובדים.</string>
-  <string name="pref_transparent_port_title">רשימת פורטים</string>
-  <string name="pref_transparent_port_summary">רשימת פורטים לפרוקסי. *השתמש רק* אם האופנים \'All\' או \'App\'  לא עובדים.</string>
-  <string name="pref_transparent_port_dialog">הזן פורטים לפרוקסי</string>
-  <string name="pref_has_root">דרושה גישת שורש</string>
-  <string name="pref_has_root_summary">בקש גישה עליונה עבור שימוש בפרוקסי שקוף</string>
-  <string name="status_install_success">קבצים ברי הרצה של Tor הותקנו בהצלחה!</string>
-  <string name="status_install_fail">הקבצים ברי ההרצה של Tor לא ניתנו להתקנה. בבקשה בדוק את הלוג והודע ל 
-tor-assistants at torproject.org</string>
-  <string name="title_error">שגיאת אפליקציה</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">אודות Orbot</string>
-  <string name="btn_next">הבא</string>
-  <string name="btn_back">הקודם</string>
-  <string name="btn_finish">סיים</string>
-  <string name="btn_okay">אישור</string>
-  <string name="btn_cancel">ביטול</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">פרטים מסוימים של Orbot </string>
-  <string name="wizard_details_msg">Orbot היא אפליקציית קוד פתוח הכוללת את Tor, LibEvent ו-Polipo. היא מתחבר לרשת Tor באמצעות שרת פרוקסי HTTP מקומי (8118) ושרת פרוקסי SOCKS (פורט 9050). Orbot יכולה בנוסף עם הרשאות רוט לנתב את כל תעבורת האינטרנט של המכשיר דרך Tor כברירת מחדל.</string>
-  <string name="wizard_permissions_root">ניתנה הרשאה</string>
-  <string name="wizard_permissions_stock">הרשאות Orbot</string>
-  <string name="wizard_premissions_msg_root">מצוין! גילינו כי יש לך הרשאות שורש מאופשרות בשביל Orbot. אנחנו נשתמש בכוח הזה בחוכמה.</string>
-  <string name="wizard_permissions_msg_stock">בזמן שזה לא נדרש, Orbot יכולה להפוך להיות כלי חזק יותר אם למכשיר שלך יש גישה עליונה. תשתמש בכפתור למטה כדי לקבל כוחות על של Orbot !</string>
-  <string name="wizard_permissions_no_root">אם אין לך גישה עליונה או אין לך מושג על מה אנחנו מדברים, רק תוודא שתשתמש באפליקציות שנועדו לעבוד עם Orbot.</string>
-  <string name="wizard_permissions_consent">הבנתי ואני מעדיף להמשיך בלי Superuser</string>
-  <string name="wizard_permission_enable_root">אפשר גישת שורש עבור Orbot</string>
-  <string name="wizard_configure">הגדר עבודה באמצעות Tor</string>
-  <string name="wizard_configure_msg">Orbot נותנת לך אפשרות לכוון את כל תעבורת האפליקציות דרך Tor או לבחור את האפליקציות שלך בנפרד.</string>
-  <string name="wizard_configure_all">השתמש בפרוקסי בכל האפליקציות דרך Tor</string>
-  <string name="wizard_configure_select_apps">בחר אפליקציות מסוימות עבור Tor</string>
-  <string name="wizard_tips_tricks">Orbot מתאפשר על ידי אפליקציות</string>
-  <string name="wizard_tips_msg">האפליקציות מתחת פותחו לעבודה עם Orbot. לחץ על כל כפתור להתקנה מיידית, או שאתה יכול למצוא אותם אחר כך ב Google Play, באתר GuardianProject.info או
-דרך  F-Droid.org</string>
-  <string name="wizard_tips_otrchat">ChatSecure - תוכנת מסרים מידיים מאובטחת לאנדרואיד</string>
-  <string name="wizard_tips_proxy">הגדרות פרוקסי - למד איך להגדיר אפליקציות לעבוד עם Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo אפליקציית מנוע חיפוש</string>
-  <string name="wizard_tips_twitter">קבע פרוקסי Twitter למארח \"localhost\" ולפורט 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - מערך שיעורים לעיתונאים על שימוש ב-Tor להגנה על עבודתם.</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">הגדרות פרוקסי</string>
-  <string name="wizard_proxy_help_msg">אם אפליקצת האנדרואיד שאתה משתמש תומכת בפרוקסי מבוסס HTTP או SOCKS, תוכל להגדיר אותה לעבוד עם Orbot תחת Tor. \n\n\n ההגדרות הן: שם השרת הוא 127.0.0.1 או \"localhost\". עבור HTTP, הפורט הוא 8118. עבור SOCKS, הפורט הוא 9050. עליך להשתמש בSOCKS4A או SOCKS5 אם אפשר.\n \n\n\n תוכל ללמוד עוד אודות פרוקסי באנדרואיד תחת עמוד השאלות הנפוצות שלנו בכתובת: http://tinyurl.com/proxyandroid </string>
-  <string name="wizard_final">Orbot מוכן!</string>
-  <string name="wizard_final_msg">מיליוני אנשים ברחבי העולם משתמשים בTor מסיבות רבות.\n\n עיתונאים ובלוגרים, פעילי זכויות אדם, שוטרים, חיילים, תאגידים, אזרחי במשטרים מדוגאים וגם אזרחים פשוטים... ועכשיו גם אתה!</string>
-  <string name="wizard_exit_at_first_screen_toast">אנא הגדר את Orbot לפני שתוכל להתחיל להשתמש בה!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">דבר זה יוביל את דפדפן הרשת שלך למוד https://check.torproject.org כדי לראות אם Orbot הוגדרה כראוי וכן כי אתה מחובר לרשת Tor.</string>
-  <string name="pref_hs_group">איחסון שירותים נסתרים</string>
-  <string name="pref_general_group">כללי</string>
-  <string name="pref_start_boot_title">התחל את Orbot בהדלקת המכשיר</string>
-  <string name="pref_start_boot_summary">התחל את Orbot והתחבר לרשת Tor אוטומטית כאשר המכשיר נדלק</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">אזהרה</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">הרשאות</string>
-  <string name="wizard_permissions_root_msg1">אתה יכול להעניק לאפליקציה Orbot גישת \'Superuser\' כדי לאפשר מאפיינים מתקדמים כמו למשל, פרוקסי שקוף.</string>
-  <string name="wizard_permissions_root_msg2">אם אתה לא רוצה לעשות את זה, אנא הקפד להשתמש באפליקציות שיועדו לעבוד עם Orbot</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-יישומים מופעלים</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: אפליקציית מסרים עם הצפנת Off-the-Record</string>
-  <string name="wizard_tips_play">מצא את כל אפליציות Guardian Project אצל Google Play</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">פרוקסי שקוף</string>
-  <string name="wizard_transproxy_msg">זה מאפשר לאפליקציות שלך לרוץ באופן אוטומטי דרך רשת Tor ללא כל תצורה.</string>
-  <string name="wizard_transproxy_hint">(סמן תיבה זו אם אין לך מושג על מה אנחנו מדברים)</string>
-  <string name="wizard_transproxy_none">כלום</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">מאפשר עבודה עם פרוקסי שקוף עבור רשת אלחוטית ומכשירי  USB Tethered (דורש אתחול מחדש)</string>
-  <string name="button_grant_superuser">דרוש אישור Superuser</string>
-  <string name="pref_select_apps">בחר אפלקציות</string>
-  <string name="pref_select_apps_summary">בחר אפלקציות</string>
-  <string name="pref_node_configuration">הגדרות Node</string>
-  <string name="pref_node_configuration_summary">קיימות הגדרות מתקדמות שיכולות להפחית את האנונימיות שלך</string>
-  <string name="pref_entrance_node">Entrance Nodes</string>
-  <string name="pref_entrance_node_summary">טביעות אצבע, כינויים, ארצות וכתובות עבור המעבר הראשון</string>
-  <string name="pref_entrance_node_dialog">הכנס Entrance Nodes</string>
-  <string name="button_proxy_all">העבר הכל דרך פרוקסי</string>
-  <string name="button_proxy_none">אל תשתמש בפרוקסי</string>
-  <string name="button_invert_selection">הפוך בחירה</string>
-  <string name="pref_proxy_type_title">Outbound Proxy Type</string>
-  <string name="pref_proxy_type_summary">פרוטוקול שימוש בשרת פרוקסי:  HTTP, HTTPS, Socks4,Socks5</string>
-  <string name="pref_proxy_type_dialog">סוג הפרוקסי</string>
-  <string name="pref_proxy_host_title">מארח של Outbound Proxy</string>
-  <string name="pref_proxy_host_summary">שם מארח שרת פרוקסי</string>
-  <string name="pref_proxy_host_dialog">הכנס מארח פרוקסי</string>
-  <string name="pref_proxy_port_title">פורט של Outbound Proxy</string>
-  <string name="pref_proxy_port_summary">פורט שרת פרוקסי</string>
-  <string name="pref_proxy_port_dialog">הכנס פורט של פרוקסי</string>
-  <string name="pref_proxy_username_title">שם משתמש של Outbound Proxy</string>
-  <string name="pref_proxy_username_summary">שם משתמש פרוקסי (רשות)</string>
-  <string name="pref_proxy_username_dialog">הזן שם משתמש פרוקסי</string>
-  <string name="pref_proxy_password_title">סיסמא של Outbound Proxy</string>
-  <string name="pref_proxy_password_summary">סיסמת פרוקסי (רשות)</string>
-  <string name="pref_proxy_password_dialog">הזן סיסמת פרוקסי</string>
-  <string name="status">סטטוס</string>
-  <string name="setting_up_full_transparent_proxying_">הכנה של הפרוקסי השקוף...</string>
-  <string name="setting_up_app_based_transparent_proxying_">הכנה של הפרוקסי השקוף מבוסס אפליקציות...</string>
-  <string name="transparent_proxying_enabled">פרוקסי שקוף מאופשר</string>
-  <string name="transproxy_enabled_for_tethering_">פרוקסי שקוף מאופשר ל Tathering!</string>
-  <string name="warning_error_starting_transparent_proxying_">אזהרה: שגיאה התחילה את הפרוקסי השקוף!</string>
-  <string name="transproxy_rules_cleared">כללי TransProxy טוהרו</string>
-  <string name="couldn_t_start_tor_process_">אין אפשרות להתחיל תהליך Tor:</string>
-  <string name="privoxy_is_running_on_port_">Polipo רץ על פורט:</string>
-  <string name="setting_up_port_based_transparent_proxying_">הכנה של הפרוקסי השקוף מבוסס פורט...</string>
-  <string name="bridge_error">שגיאת גשר</string>
-  <string name="error">שגיאה</string>
-  <string name="exit_nodes">צמתי יציאה</string>
-  <string name="enter_exit_nodes">הזן צמתי יציאה</string>
-  <string name="exclude_nodes">צמתים מוצאים</string>
-  <string name="enter_exclude_nodes">הזן צמתים מוצאים</string>
-  <string name="strict_nodes">צמתים קפדנים</string>
-  <string name="use_only_these_specified_nodes">השתמש *רק* בצמתים מצוינים אלו</string>
-  <string name="bridges">גשרים</string>
-  <string name="use_bridges">השתמש בגשרים</string>
-  <string name="bridges_obfuscated">גשרים מעורפלים</string>
-  <string name="ip_address_and_port_of_bridges">כתובת ה-IP ויציאה של הגשרים</string>
-  <string name="enter_bridge_addresses">הכנס כתובות גשר</string>
-  <string name="relays">ממסרים</string>
-  <string name="relaying">ממסור</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">אפשר למכשיר שלך להיות תחנת ממסר שאיננה יציאה</string>
-  <string name="relay_port">פורט הממסר</string>
-  <string name="listening_port_for_your_tor_relay">פורט מאזין עבור Tor relay</string>
-  <string name="enter_or_port"> הכנס יציאת OR</string>
-  <string name="relay_nickname">כינוי הממסר</string>
-  <string name="the_nickname_for_your_tor_relay">הכינוי לממסר Tor שלך</string>
-  <string name="enter_a_custom_relay_nickname">הזן כינוי עבור ממסר</string>
-  <string name="reachable_addresses">כתובות בהישג יד</string>
-  <string name="reachable_ports">פורטים בהישג יד</string>
-  <string name="enter_ports">הזן פורטים</string>
-  <string name="enable_hidden_services">אחסון שירותים נסתרים</string>
-  <string name="enter_localhost_ports_for_hidden_services">הזן פורטים של localhost עבור שירותים נסתרים</string>
-  <string name="hidden_service_ports">פורט השירותים הנסתרים</string>
-  <string name="project_home">אתרי הפרויקט:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">הרשיון של Tor</string>
-  <string name="https_torproject_org">https://torproject.org/</string>
-  <string name="third_party_software">תוכנה-צד-ג׳: </string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="found_existing_tor_process">נמצא תהליך Tor קיים…</string>
-  <string name="something_bad_happened">משהו רע התרחש. בדוק את היומן</string>
-  <string name="hidden_service_on">שירות נסתר ב:</string>
-  <string name="unable_to_read_hidden_service_name">לא מסוגל לקרוא שם שירות נסתר</string>
-  <string name="unable_to_start_tor">לא מסוגל להתחיל את Tor:</string>
-  <string name="unable_to_reset_tor">אתחל את המכשיר שלך, אין אפשרות להפעיל מחדש את Tor!</string>
-  <string name="pref_use_sys_iptables_title">השתמש בברירות המחדל של iptables</string>
-  <string name="pref_use_persistent_notifications">לשמור תמיד את האיקון בסרגל כלים כשאורבוט מחובר</string>
-  <string name="notification_using_bridges">גשרים מאופשרים!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">שפה</string>
-  <string name="set_locale_summary">בחר את המקומיות והשפה של Orbot</string>
-  <string name="wizard_locale_title">בחר שפה</string>
-  <string name="wizard_locale_msg">השאר ברירת מחדל או החלף לשפה הנוכחית</string>
-  <string name="powered_by">מופעל באמצעות Tor</string>
-  <string name="btn_save_settings">שמירת הגדרות</string>
-  <string name="no_internet_connection_tor">אין חיבור לאינטרנט; תור ממתין...</string>
-  <string name="bandwidth_">רוחב פס:</string>
-  <string name="down">מטה</string>
-  <string name="up">מעלה</string>
-  <string name="pref_disable_network_summary">כבה את Tor כאשר אין חיבור לאינטרנט</string>
-  <string name="newnym">החלפת אל זהות Tor חדשה!</string>
-  <string name="menu_use_chatsecure">הפעל את ChatSecure</string>
-  <string name="permission_manage_tor_label">נהל Tor</string>
-  <string name="permission_manage_tor_description">אפשר את אפליקציה זו כדי לשלוט בשירות Tor</string>
-  <string name="install_apps_">להתקין אפליקציה?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">אין חיבור לרשת. מכבה את Tor....</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">החיבור עובד טוב. מעיר את Tor...</string>
-  <string name="updating_settings_in_tor_service">מעדכן הגדרות Tor במכשיר</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_dialog">הגדרות SOCKS Port </string>
-  <string name="pref_transport_title">Tor TransProxy Port</string>
-  <string name="pref_transport_dialog">הגדרת הפורט של TransProxy</string>
-  <string name="pref_dnsport_title">Tor DNS Port</string>
-  <string name="your_tor_public_ips_">הIPs החיצוניים שלך עם Tor:</string>
-  <string name="you_do_not_have_root_access_enabled">אין לך גישת רוט מאופשרת</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">תצטרך לכבות ולהפעיל את Orbot על מנת להחיל את השינוי בהגדרות.</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="menu_qr">קוד QR</string>
-  <string name="get_bridges_email">דוא\"ל</string>
-  <string name="get_bridges_web">אתר</string>
-  <string name="activate">הפעל</string>
-  <string name="send_email">שלח דוא\"ל</string>
-  <string name="standard_browser">דפדפן רגיל</string>
-</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
deleted file mode 100644
index c666f49..0000000
--- a/res/values-ja/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbotは他のアプリがインターネットをより安全に使うことを可能にするフリーのプロキシアプリです。Orbotでは、Torを用いてあなたの端末のトラフィックを暗号化し、世界中のコンピューターを中継することで、そのトラフィックを隠します。Torはフリーのソフトウェアとオープンなネットワークであり、ユーザーの自由とプライバシーを脅かす監視活動や、機密のビジネス活動、国家によるトラフィック分析から身を守ることを助けてくれます。</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">Torを起動・停止する</string>
-  <string name="tor_proxy_service_process">Torプロクシサービス</string>
-  <string name="status_starting_up">Orbotが開始されています...</string>
-  <string name="status_activated">Torネットワークに接続しています</string>
-  <string name="status_disabled">\"Orbotが解除されました</string>
-  <string name="status_shutting_down">TorServiceが終了しています</string>
-  <string name="tor_process_starting">Torクライエントを開始しています...</string>
-  <string name="tor_process_complete">完了</string>
-  <string name="tor_process_waiting">お待ちください</string>
-  <string name="not_anonymous_yet">警告:この通信はまだ匿名化されていません! HTTP proxy 127.0.0.1:8118 か、 SOCKS4A または SOCKS5 proxy 127.0.0.1:9050 を利用するようにアプリケーション側で設定してください</string>
-  <string name="menu_home">ホーム</string>
-  <string name="menu_browse">閲覧</string>
-  <string name="menu_settings">設定</string>
-  <string name="menu_log">履歴</string>
-  <string name="menu_info">ヘルプ</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">スタート</string>
-  <string name="menu_stop">停止</string>
-  <string name="menu_about">情報</string>
-  <string name="menu_promo_apps">アプリを入手…</string>
-  <string name="main_layout_download">ダウンロード</string>
-  <string name="main_layout_upload">アップロード</string>
-  <string name="button_help">ヘルプ</string>
-  <string name="button_close">閉じる</string>
-  <string name="button_about">について</string>
-  <string name="button_clear_log">ログを削除する</string>
-  <string name="menu_verify">確認</string>
-  <string name="menu_exit">終了</string>
-  <string name="menu_scan">ブリッジQRをスキャン</string>
-  <string name="menu_share_bridge">ブリッジQRを共有</string>
-  <string name="press_to_start">- 長押しして起動 -</string>
-  <string name="pref_trans_proxy_group">透過プロキシ (要root)</string>
-  <string name="pref_trans_proxy_title">透過プロキシ</string>
-  <string name="pref_trans_proxy_summary">アプリの自動Tor化中</string>
-  <string name="pref_transparent_all_title">全てをTor化</string>
-  <string name="pref_transparent_all_summary">全てのアプリをTor経由で使う</string>
-  <string name="pref_transparent_port_fallback_title">Port Proxy Fallback</string>
-  <string name="pref_transparent_port_fallback_summary">警告:通常のポート(80,443等)を迂回。「全て」か「指定アプリ」モードが動作しない場合にのみ使用してください。</string>
-  <string name="pref_transparent_port_title">ポート一覧</string>
-  <string name="pref_transparent_port_summary">プロキシを通すポート *警告* 「全て」か「指定アプリ」が動作しない場合にのみ使用してください。</string>
-  <string name="pref_transparent_port_dialog">プロキシのポート番号を入力</string>
-  <string name="pref_has_root">ルートアクセスの許可を要求します</string>
-  <string name="pref_has_root_summary">透過プロキシのためにroot権限が必要です</string>
-  <string name="status_install_success">Torバイナリインストールが成功しました</string>
-  <string name="status_install_fail">Torバイナリファイルがインストールできませんでした。ログを調べて、通知をtor-assistants at torproject.orgに送信してください。</string>
-  <string name="title_error">アプリケーションエラー</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Orbotについて</string>
-  <string name="btn_next">次</string>
-  <string name="btn_back">戻る</string>
-  <string name="btn_finish">終了</string>
-  <string name="btn_okay">OK</string>
-  <string name="btn_cancel">キャンセル</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Orbot詳細</string>
-  <string name="wizard_details_msg">Orbot はTor、LibEvent、Privoxyを含むオープンソース アプリケーションです。ローカルのHTTPプロキシ (8118) とSOCKSプロキシ (9050) を提供してTor接続します。root化された端末では、Orbotは全てのインターネット通信をTorを通して送信することもできます。</string>
-  <string name="wizard_permissions_root">権限を取得完了</string>
-  <string name="wizard_permissions_stock">Orbotの権限</string>
-  <string name="wizard_premissions_msg_root">Orbotがroot権限を取得したことを確認しました。全ての機能が利用できます。</string>
-  <string name="wizard_permissions_msg_stock">Orbotはroot化された端末では全ての機能を活用できます。下のボタンを押してOrbotに管理者権限を与えてください。</string>
-  <string name="wizard_permissions_no_root">root化していなかったり、そもそもroot化が何のことだかわからない方は、Orbot上で動作確認が取れているアプリだけを使用してください。</string>
-  <string name="wizard_permissions_consent">Superuserを利用せずに続行</string>
-  <string name="wizard_permission_enable_root">Orbotにroot権限を与える</string>
-  <string name="wizard_configure">Torをソフトウェアに使用する設定</string>
-  <string name="wizard_configure_msg">Orbotでは全てのアプリにTorプロキシを通すか、Torアプリを使う個々のアプリを指定できます。</string>
-  <string name="wizard_configure_all">全てのアプリにTorプロキシを通す</string>
-  <string name="wizard_configure_select_apps">指定したアプリだけにTorプロキシを通す</string>
-  <string name="wizard_tips_tricks">Orbotが有効化されたアプリ</string>
-  <string name="wizard_tips_msg">以下のアプリはOrbot用に作られています。それぞれのボタンを押すと今すぐインストールできます。Google Playからも同じものが探せます。</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Android 用のセキュアなインスタントメッセージクライアント</string>
-  <string name="wizard_tips_proxy">Proxy Settings - Orbotでアプリを動かすための手順書</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo 検索エンジンアプリ</string>
-  <string name="wizard_tips_twitter">Twitter proxyを「localhost」と8118番ポートに合わせる</string>
-  <string name="wizard_tips_story_maker">StoryMaker - ストーリーを作成して、セキュリティのためTorで残します!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">プロキシ設定</string>
-  <string name="wizard_proxy_help_msg">AndroidアプリがHTTPかSOCKSプロキシを利用できる場合、Orbotを使ってTor接続をすることが可能です。\n\n\n ホスト設定は127.0.0.1またはlocalhostです。HTTPでは使用ポートは8118です。SOCKSでは9050です。可能であればSOCKS4AかSOCKS5の利用を推奨します。\n \n\n\n Android上のプロキシについて学びたい場合は http://tinyurl.com/proxyandroid のFAQを参照してください。</string>
-  <string name="wizard_final">Orbotの準備が完了しました</string>
-  <string name="wizard_final_msg">世界中で数百万人が様々な理由でTorを利用しています。\n\nジャーナリストやブロガー、人権団体、法的機関、軍隊、企業、独裁国家の市民、普通の市民も… そしてあなたも同じように利用することができます!</string>
-  <string name="wizard_exit_at_first_screen_toast">使用を開始する前にOrbotを設定してください!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Torネットワークに正常に接続しました - しかしお使いの端末が安全だとは限りません。「ブラウザ」ボタンを使用して接続のテストができます。 \n\nさらに詳細はhttps://guardianproject.info/apps/orbot を参照するか、help at guardianproject.info にメールを送信してください。</string>
-  <string name="tor_check">ブラウザを開いてhttps://check.torproject.org にTor接続し、Orbotの設定が成功したかを試します。</string>
-  <string name="pref_hs_group">Hidden Services</string>
-  <string name="pref_general_group">一般</string>
-  <string name="pref_start_boot_title">起動時にOrbotを実行する</string>
-  <string name="pref_start_boot_summary">Android端末の起動時にOrbotを自動実行</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">AndroidでもOrbotでTorが使えます!\n\nTorは、コンテンツフィルタリング、トラフィック分析、そしてプライバシー、機密情報や個人的な関係を脅かすネットワーク監視から守ることができます。\n\nこのウィザードはお使いの端末でOrbotとTorの設定ができます。</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">注意</string>
-  <string name="wizard_warning_msg">Orbotをインストールしただけでは通信は匿名化されません。\n\nOrbot、Android端末、アプリの全てを正しく設定しないとTorは使えません。</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">許可</string>
-  <string name="wizard_permissions_root_msg1">オプションとしてOrbotにスーパーユーザー権限を与えることで透過プロキシなどの追加機能が使えます。</string>
-  <string name="wizard_permissions_root_msg2">これを実行しない場合、Orbot用に作られたアプリだけを使ってください。</string>
-  <string name="wizard_permissions_no_root_msg">お使いの端末はroot化されていないか、rootまたは「Superuser」にアクセスできないようです。 \n\n代わりに、メイン画面の「アプリ」モードを試してください。 </string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbotが有効化されたアプリ</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: 非記録式暗号によるセキュアなチャットアプリ</string>
-  <string name="wizard_tips_orweb">Orfox: Torを介して動作するプライバシーを強化したブラウザ</string>
-  <string name="wizard_tips_play">Google Playで全てのGuardian Projectのアプリを見つける</string>
-  <string name="wizard_tips_fdroid">F-Droidで全てのGuardian Projectのアプリを見つける</string>
-  <string name="wizard_tips_fdroid_org">https://f-droid.org で全てのGuardian Projectのアプリを見つける</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">透過プロキシ</string>
-  <string name="wizard_transproxy_msg">これはあなたのアプリを自動的にTor経由で通信させます。</string>
-  <string name="wizard_transproxy_hint">(何を言っているのかわからないときはここをチェックしてください)</string>
-  <string name="wizard_transproxy_none">無し</string>
-  <string name="pref_transparent_tethering_title">Torテザリング</string>
-  <string name="pref_transparent_tethering_summary">Tor透過プロクシをWifiかUSBテザリングされたデバイスに対して有効化(再起動が必要)</string>
-  <string name="button_grant_superuser">管理許可アクセスを要求します</string>
-  <string name="pref_select_apps">アプリケーションを選択します</string>
-  <string name="pref_select_apps_summary">Torを経由させるアプリを選択</string>
-  <string name="pref_node_configuration">ノード設定</string>
-  <string name="pref_node_configuration_summary">ご注意、先進設定が匿名レベルを縮小します</string>
-  <string name="pref_entrance_node">入り口ノード</string>
-  <string name="pref_entrance_node_summary">最初のホップのためのデジタル指紋、ニックネーム、国とIPアドレス</string>
-  <string name="pref_entrance_node_dialog">入り口ノードを入力</string>
-  <string name="pref_allow_background_starts_title">バックグラウンドの開始を許可</string>
-  <string name="pref_allow_background_starts_summary">OrbotがTorと関連サービスを開始するように、任意のアプリに伝えます</string>
-  <string name="button_proxy_all">すべてプロキシ</string>
-  <string name="button_proxy_none">プロキシなし</string>
-  <string name="button_invert_selection">選択の反転</string>
-  <string name="pref_proxy_title">外方向ネットワークプロキシ (オプション)</string>
-  <string name="pref_proxy_type_title">外方向プロキシの種類</string>
-  <string name="pref_proxy_type_summary">HTTP,HTTPS,Socks4,Socks5で使用するプロトコル</string>
-  <string name="pref_proxy_type_dialog">プロキシの種類を入力してください</string>
-  <string name="pref_proxy_host_title">外方向プロキシのホスト</string>
-  <string name="pref_proxy_host_summary">プロキシサーバのホスト名</string>
-  <string name="pref_proxy_host_dialog">プロクシ ホストを入力</string>
-  <string name="pref_proxy_port_title">外方向プロキシのポート</string>
-  <string name="pref_proxy_port_summary">プロキシサーバのポート</string>
-  <string name="pref_proxy_port_dialog">プロキシのポートを入力してください</string>
-  <string name="pref_proxy_username_title">外方向プロキシのポート</string>
-  <string name="pref_proxy_username_summary">プロキシユーザー名 (オプション)</string>
-  <string name="pref_proxy_username_dialog">プロキシのユーザー名を入力してください</string>
-  <string name="pref_proxy_password_title">外方向プロキシのパスワード</string>
-  <string name="pref_proxy_password_summary">プロキシのパスワード (オプション)</string>
-  <string name="pref_proxy_password_dialog">プロキシのパスワードを入力してください</string>
-  <string name="status">状態</string>
-  <string name="setting_up_full_transparent_proxying_">完全な透過プロキシをセットアップ中...</string>
-  <string name="setting_up_app_based_transparent_proxying_">アプリベースの透過プロキシをセットアップ中...</string>
-  <string name="transparent_proxying_enabled">透過プロキシ 有効</string>
-  <string name="transproxy_enabled_for_tethering_">テザリングでの透過プロキシ有効</string>
-  <string name="warning_error_starting_transparent_proxying_">警告: 透過プロキシの開始時にエラー発生</string>
-  <string name="transproxy_rules_cleared">透過プロキシ ルール 消去完了</string>
-  <string name="couldn_t_start_tor_process_">Torプロセスの起動に失敗:</string>
-  <string name="privoxy_is_running_on_port_">Polipoを実行中のポート: </string>
-  <string name="setting_up_port_based_transparent_proxying_">ポートベースの透過プロキシをセットアップ中...</string>
-  <string name="bridge_error">ブリッジ エラー</string>
-  <string name="bridge_requires_ip">ブリッジ機能を利用するには、最低一つのブリッジIPアドレスの入力が必要です。</string>
-  <string name="send_email_for_bridges">gmailを使って、本文に「get bridges」と書いたメールをbridges at torproject.orgに送信してください。</string>
-  <string name="error">エラー</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">あなたのReachableAddresses設定により例外が発生しました!</string>
-  <string name="your_relay_settings_caused_an_exception_">あなたのリレー設定により例外が発生しました!</string>
-  <string name="exit_nodes">出口ノード</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">最後のホップのためのデジタル指紋、ニックネーム、国とIPアドレス</string>
-  <string name="enter_exit_nodes">出口ノードを入力</string>
-  <string name="exclude_nodes">除外ノード</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">除外するデジタル指紋、ニックネーム、国とIPアドレス</string>
-  <string name="enter_exclude_nodes">除外ノードを入力</string>
-  <string name="strict_nodes">Strictノード</string>
-  <string name="use_only_these_specified_nodes">ここに指定したノードのみを使用</string>
-  <string name="bridges">ブリッジ</string>
-  <string name="use_bridges">ブリッジを使う</string>
-  <string name="bridges_obfuscated">Obfus化されたブリッジ</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">代替入り口ノードを有効化</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">設定したブリッジがObfus化されたブリッジであれば有効</string>
-  <string name="ip_address_and_port_of_bridges">ブリッジのIPアドレスとポート</string>
-  <string name="enter_bridge_addresses">ブリッジのアドレスを入力</string>
-  <string name="relays">リレー</string>
-  <string name="relaying">リレー中</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">この端末を非出口リレーにする</string>
-  <string name="relay_port">リレー ポート</string>
-  <string name="listening_port_for_your_tor_relay">このTorリレーのリスニングポート</string>
-  <string name="enter_or_port">ORポートを入力</string>
-  <string name="relay_nickname">リレーのニックネーム</string>
-  <string name="the_nickname_for_your_tor_relay">このTorリレーのニックネーム</string>
-  <string name="enter_a_custom_relay_nickname">リレーのカスタムニックネームを入力</string>
-  <string name="reachable_addresses">到達可能アドレス</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">制限設定のファイアウォールを通してクライアントとして実行</string>
-  <string name="reachable_ports">到達可能ポート</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">制限設定のファイアウォールを通して到達可能なポート</string>
-  <string name="enter_ports">ポートを入力</string>
-  <string name="enable_hidden_services">Hidden Serviceのホスティング</string>
-  <string name="run_servers_accessible_via_the_tor_network">デバイス上のサーバーをTor経由でアクセス可能にする</string>
-  <string name="enter_localhost_ports_for_hidden_services">Hidden Service用のlocalhostのポートを入力</string>
-  <string name="hidden_service_ports">Hidden Serviceのポート</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">あなたのHidden Serviceのアドレス(自動生成されます)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">デバッグログの出力を有効化(閲覧にはadbかaLogCatが必要)</string>
-  <string name="project_home">プロジェクトのホーム:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Tor ライセンス文書</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">第三者製のソフトウェア</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">アプリがhidden serverの port %S をTorネットワークに開放しようとしています。信頼できるアプリであればこれは安全です。</string>
-  <string name="found_existing_tor_process">Torプロセスを発見</string>
-  <string name="something_bad_happened">何かが起こりました。ログを確認してください。</string>
-  <string name="hidden_service_on">hidden service 有効:</string>
-  <string name="unable_to_read_hidden_service_name">hidden serviceの名前読込不能</string>
-  <string name="unable_to_start_tor">Torを実行できませんでした</string>
-  <string name="unable_to_reset_tor">Torをリセットできません。お使いのデバイスを再起動してください!</string>
-  <string name="pref_use_sys_iptables_title">デフォルトのlptablesを使う</string>
-  <string name="pref_use_sys_iptables_summary">Orbotバンドル版ではなく内蔵のiptablesを使う</string>
-  <string name="error_installing_binares">Torバイナリのインストールまたはアップグレードは不可能でした。</string>
-  <string name="pref_use_persistent_notifications">Orbotが接続中はアイコンを常にツールバーに表示</string>
-  <string name="pref_use_persistent_notifications_title">通知を常に有効化</string>
-  <string name="pref_use_expanded_notifications">拡張通知で、Torの出口の国とIPを表示します</string>
-  <string name="pref_use_expanded_notifications_title">拡張通知</string>
-  <string name="notification_using_bridges">ブリッジが有効です!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">言語</string>
-  <string name="set_locale_summary">Orbotの地域と言語を選択</string>
-  <string name="wizard_locale_title">言語を選択</string>
-  <string name="wizard_locale_msg">今の言語を変更するか、そのままにする</string>
-  <string name="powered_by">powered by Tor</string>
-  <string name="btn_save_settings">設定を保存</string>
-  <string name="no_internet_connection_tor">インターネット接続なし。Torは待機中です...</string>
-  <string name="bandwidth_">帯域幅:</string>
-  <string name="down">ダウン</string>
-  <string name="up">アップ</string>
-  <string name="pref_disable_network_title">ネットワークなし時オートスリープ</string>
-  <string name="pref_disable_network_summary">ネット接続がない時 Tor をスリープさせる</string>
-  <string name="newnym">新たな Tor の身元に切り替えました。</string>
-  <string name="menu_verify_browser">ブラウザ</string>
-  <string name="menu_use_chatsecure">ChatSecure を使用</string>
-  <string name="permission_manage_tor_label">Tor を管理</string>
-  <string name="permission_manage_tor_description">このアプリが Tor サービスをコントールできるようにする</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Orfox をインストールしていないようです。それについて助けが必要ですか、あるいはただブラウザを開くべきですか?</string>
-  <string name="install_apps_">アプリをインストールしますか?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">ネットワーク接続がありません。Torはスリープします…</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">ネットワーク接続は良好です。Torを有効にします…</string>
-  <string name="updating_settings_in_tor_service">Torサービスの設定を更新中</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">TorがSOCKSプロキシを提供するポート (デフォルト: 9050、0にすると無効)</string>
-  <string name="pref_socks_dialog">SOCKS ポート設定</string>
-  <string name="pref_transport_title">Tor透過プロキシポート</string>
-  <string name="pref_transport_summary">Torが透過プロキシを提供するポート (デフォルト: 9040、0にすると無効)</string>
-  <string name="pref_transport_dialog">透過プロキシポート設定</string>
-  <string name="pref_dnsport_title">Tor DNS ポート</string>
-  <string name="pref_dnsport_summary">TorがDNSを提供するポート (デフォルト: 5400、0にすると無効)</string>
-  <string name="pref_dnsport_dialog">DNS ポート設定</string>
-  <string name="pref_torrc_title">Torrc カスタム設定</string>
-  <string name="pref_torrc_summary">上級者家のみ: 直接torrc設定行を入力します</string>
-  <string name="pref_torrc_dialog">Torrcをカスタム</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech 人権文書アプリ</string>
-  <string name="your_tor_public_ips_">あなたのTor公開IP:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Orbotで問題が発生する場合は、Android->設定->アプリ で、このアプリを無効にしてください: </string>
-  <string name="app_conflict">アプリの競合</string>
-  <string name="pref_transproxy_refresh_title">透過プロキシ自動リフレッシュ</string>
-  <string name="pref_transproxy_refresh_summary">ネットワークの状態が変化したとき、透過プロキシのルールを再適用します</string>
-  <string name="pref_transproxy_flush_title">透過プロキシ強制削除</string>
-  <string name="pref_transproxy_flush_summary">ここをタップすると、今すぐすべての透過プロキシ ネットワークルールをフラッシュします</string>
-  <string name="transparent_proxy_rules_flushed_">透過プロキシのルールをフラッシュしました!</string>
-  <string name="you_do_not_have_root_access_enabled">ROOT アクセスが有効ではありません</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">変更した設定を有効にするために、Orbotを停止して開始する必要があるかもしれません。</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">ブリッジを更新しました</string>
-  <string name="restart_orbot_to_use_this_bridge_">変更を有効にするにはOrbotを再起動してください</string>
-  <string name="menu_qr">QRコード</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">モバイルネットワークが積極的にTorをブロックする場合、ブリッジを使用してネットワークにアクセスすることができます。\n\nブリッジを有効にするため、上のいずれかのブリッジタイプを選択してください。</string>
-  <string name="bridge_mode">ブリッジ モード</string>
-  <string name="get_bridges_email">メール</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">アクティブ化</string>
-  <string name="apps_mode">アプリ VPN モード</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">AndroidのVPN機能を使用して、デバイス上のすべてのアプリをTorネットワークを介するようにすることができます\n\n個*警告* これは新しい、実験的な機能であり、いくつかのケースで自動的に起動しないこと、または停止することがあります。これは匿名のために使用しないでください。ファイアウォールやフィルターを通すためにのみ使用してください。</string>
-  <string name="send_email">メール送信</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">あなたは、メール、ウェブを介して、またはブリッジQRコードをスキャンしてブリッジアドレスを取得することができます。ブリッジアドレスを要求するため、下の「メール」または「ウェブ」を選択してください。\n\nアドレスを入手したら、それをOrbot設定の「ブリッジ」設定にコピー& 貼り付けして、Orbotを再起動します。</string>
-  <string name="install_orweb">Orfoxをインストール</string>
-  <string name="standard_browser">標準ブラウザ</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">注: 標準のTorブリッジは、Intel X86/ATOM デバイス上でのみ動作します</string>
-  <string name="vpn_default_world">ワールド</string>
-</resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-kn-rIN/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-kn/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
deleted file mode 100644
index f5361d0..0000000
--- a/res/values-ko/strings.xml
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">Tor 시작 및 중지</string>
-  <string name="tor_proxy_service_process">Tor 프록시 서비스</string>
-  <string name="status_starting_up">Orbot 시작 중…</string>
-  <string name="status_activated">Tor 네트워크에 연결됨</string>
-  <string name="status_disabled">Orbot이 비활성화되어 있습니다</string>
-  <string name="tor_process_starting">Tor 클라이언트 시작 중…</string>
-  <string name="tor_process_complete">완료.</string>
-  <string name="tor_process_waiting">대기 중.</string>
-  <string name="not_anonymous_yet">경고: 귀하의 트래픽은 아직 익명이 아닙니다! HTTP 프록시 127.0.0.1:8118 또는 SOCKS4A 또는 SOCKS5 프록시 127.0.0.1:9050을 사용하여 응용 프로그램을 구성하십시오</string>
-  <string name="menu_home">홈</string>
-  <string name="menu_browse">탐색</string>
-  <string name="menu_settings">설정</string>
-  <string name="menu_log">로그</string>
-  <string name="menu_info">도움말</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">시작</string>
-  <string name="menu_stop">중지</string>
-  <string name="menu_about">정보</string>
-  <string name="main_layout_download">다운로드</string>
-  <string name="main_layout_upload">업로드</string>
-  <string name="button_help">도움말</string>
-  <string name="button_close">닫기</string>
-  <string name="button_about">정보</string>
-  <string name="button_clear_log">로그 지우기</string>
-  <string name="menu_verify">확인</string>
-  <string name="menu_exit">종료</string>
-  <string name="menu_scan">브릿지 QR코드 스캔하기</string>
-  <string name="menu_share_bridge">브릿지 QR코드 공유하기</string>
-  <string name="press_to_start">- 길게 눌러서 시작하기 -</string>
-  <string name="pref_trans_proxy_group">투명한 프록시 (루팅 필요)</string>
-  <string name="pref_trans_proxy_title">투명한 프록시</string>
-  <string name="pref_trans_proxy_summary">앱의 자동적인 토르화</string>
-  <string name="pref_transparent_all_title">모두 토르화</string>
-  <string name="pref_transparent_all_summary">토르를 통한 모든 응용 프로그램에 대한 프록시 트래픽</string>
-  <string name="pref_transparent_port_fallback_title">대체 프록시 포트</string>
-  <string name="pref_transparent_port_fallback_summary">경고 : 흔한 포트(80,443 등)만 순환. 전체 모드나 앱 모드가 작동하지 않을 경우에만 사용할 것.</string>
-  <string name="pref_transparent_port_title">포트 목록</string>
-  <string name="pref_transparent_port_summary">프록시 처리할 포트 목록. 만약 전체 모드나 앱 모드가 작동하지 않을 경우에만 사용할 것.</string>
-  <string name="pref_transparent_port_dialog">프록시 포트 입력</string>
-  <string name="pref_has_root">루트 권한에 대한 접근 필요</string>
-  <string name="pref_has_root_summary">명백한 프록시를 위해 루트 권한 요구</string>
-  <string name="status_install_success">Tor 바이너리가 성공적으로 설치되었습니다!</string>
-  <string name="status_install_fail">토르 바이너리 파일을 설치할 수 없습니다. 로그를 확인해 주시고 tor-assistants at torproject.org 에 알려 주십시오.</string>
-  <string name="title_error">애플리케이션 오류</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Orbot 정보</string>
-  <string name="btn_next">다음</string>
-  <string name="btn_back">뒤로</string>
-  <string name="btn_finish">마침</string>
-  <string name="btn_okay">확인</string>
-  <string name="btn_cancel">취소</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Orbot에 대한 몇몇 상세사항</string>
-  <string name="wizard_details_msg">Orbot은 Tor와, LibEvent, Polipo를 탑재한 오픈소스 어플리케이션입니다. 다이 앱은 Tor 네트워크로 연결되는 HTTP 프록시 (8118)와 SOCKS 프록시 (9050) 을 제공합니다. Orbot은 또한, 루팅된 폰의 경우, 모든 트래픽을 Tor를 통할 수 있도록 합니다.</string>
-  <string name="wizard_permissions_root">사용 권한 부여</string>
-  <string name="wizard_permissions_stock">Orbot 사용 권한</string>
-  <string name="wizard_premissions_msg_root">완벽합니다! Orbot을 위해 루트 권한이 활성화된것을 감지했습니다. 우리는 이 힘을 현명하게 사용할 것입니다.</string>
-  <string name="wizard_permissions_msg_stock">이것은 필수가 아닌 반면, 귀하의 장치가 루트 권한을 가지고 있다면 Orbot은 더 강력한 도구가 될 수 있습니다. Orbot에게 수퍼유저 권한을 부여하려면 아래 버튼을 누르십시오.</string>
-  <string name="wizard_permissions_no_root">루트 권한을 가지고 있지 않거나 무엇을 말하는 것인지 모르겠다면, Orbot과 동작하는 애플리케이션만을 사용하십시오.</string>
-  <string name="wizard_permissions_consent">내용을 이해하였으며, 수퍼유저 권한 없이 계속 진행합니다.</string>
-  <string name="wizard_permission_enable_root">Orbot에게 루트권한 부여</string>
-  <string name="wizard_configure">토르화 설정</string>
-  <string name="wizard_configure_msg">Orbot은 모든 애플리케이션 또는 선택된 애플리케이션을 Tor를 통해 통신하도록 할 수 있습니다.</string>
-  <string name="wizard_configure_all">모든 앱을 토르 프록시로 연결하기</string>
-  <string name="wizard_configure_select_apps">Tor를 위해 각각의 앱 선택</string>
-  <string name="wizard_tips_tricks">Orbot이 활성화된 앱</string>
-  <string name="wizard_tips_msg">아래의 앱은 Orbot과 작동되도록 개발되었습니다. 지금 설치하려면 각각의 버튼을 누르십시오. 또는 나중에 Google Play, GuardianProject.info, F-Droid.org 에서 찾을 수 있습니다.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - 안드로이드를 위한 안전한 인스턴트 메세징 클라이언트</string>
-  <string name="wizard_tips_proxy">Proxy Settings - Orbot과 작동하도록 앱을 설정하는 방법을 배우기</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo 검색 엔진 앱</string>
-  <string name="wizard_tips_twitter">트위터 프록시를 localhost:8118로 설정</string>
-  <string name="wizard_tips_story_maker">StoryMaker - 스토리는 당신이 만들고 보안은 Tor에 맏기세요!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">프록시 설정</string>
-  <string name="wizard_final">Orbot이 준비되었습니다!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Orbot이 정상적으로 설정되었고 Tor에 연결되었는지 확인하기 위해 https://check.torproject.org 을 귀하의 웹 브라우저에 열 것입니다.</string>
-  <string name="pref_hs_group">숨겨진 서비스 호스팅</string>
-  <string name="pref_general_group">일반</string>
-  <string name="pref_start_boot_title">부팅 후 Orbot 시작</string>
-  <string name="pref_start_boot_summary">안드로이드 장치가 시작할 때 자동적으로 Orbot을 시작하고 Tor에 연결합니다</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">경고</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">권한</string>
-  <string name="wizard_permissions_root_msg1">투명 프록시 같은 고급 기능을 활성화하기 위해 귀하는 선택적으로 Orbot에게 \'수퍼유저\' 권한을 줄 수 있습니다.</string>
-  <string name="wizard_permissions_root_msg2">이것을 원하지 않으신다면, Orbot과 작동하도록 만들어진 앱만을 사용하십시오.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot을 사용하는 앱</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: 오프 더 레코드 암호화를 적용한 안전한 채팅 앱</string>
-  <string name="wizard_tips_play">구글 플레이에서 모든 가디언 프로젝트 앱 찾기</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">투명 프록시</string>
-  <string name="wizard_transproxy_msg">이것은 어떠한 설정 없이도 귀하의 앱이 자동적으로 토르 네트워크를 통해 작동하도록 해 줍니다.</string>
-  <string name="wizard_transproxy_hint">(위 내용을 이해할 수 없다면 이것을 선택해주십시오.)</string>
-  <string name="wizard_transproxy_none">없음</string>
-  <string name="pref_transparent_tethering_title">토르 테더링</string>
-  <string name="pref_transparent_tethering_summary">테더링 된 와이파이와 USB 장치에 토르 투명 프록시 활성화 (재시작 필요)</string>
-  <string name="button_grant_superuser">수퍼유저 권한 요청</string>
-  <string name="pref_select_apps">앱 선택</string>
-  <string name="pref_select_apps_summary">Tor를 통한 통신을 사용할 앱 선택</string>
-  <string name="pref_node_configuration">노드 설정</string>
-  <string name="pref_node_configuration_summary">귀하의 익명성을 감소시킬 수 있는 고급 설정이 있습니다.</string>
-  <string name="pref_entrance_node">입구 노드</string>
-  <string name="pref_entrance_node_summary">첫번째 Hop을 위한핑거프린트, 별칭, 나라와 주소</string>
-  <string name="pref_entrance_node_dialog">입구 노드 입력</string>
-  <string name="pref_proxy_title">외부 네트워크 프록시 (선택)</string>
-  <string name="pref_proxy_type_title">외부 프록시 유형</string>
-  <string name="pref_proxy_type_summary">프록시 서버를 위한 사용되는 프로토콜 : HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">프록시 형식 입력</string>
-  <string name="pref_proxy_host_title">외부 프록시 호스트</string>
-  <string name="pref_proxy_host_summary">프록시 서버 호스트네입</string>
-  <string name="pref_proxy_host_dialog">프록시 호스트 입력</string>
-  <string name="pref_proxy_port_title">외부 프록시 포트</string>
-  <string name="pref_proxy_port_summary">서버 포트 입력</string>
-  <string name="pref_proxy_port_dialog">프록시 포트 입력</string>
-  <string name="pref_proxy_username_title">외부 프록시 사용자명</string>
-  <string name="pref_proxy_username_summary">프록시 사용자명 (선택)</string>
-  <string name="pref_proxy_username_dialog">프록시 사용자명 입력</string>
-  <string name="pref_proxy_password_title">외부 프록시 비밀번호</string>
-  <string name="pref_proxy_password_summary">프록시 비밀번호 (선택)</string>
-  <string name="pref_proxy_password_dialog">프록시 비밀번호 입력</string>
-  <string name="status">상태</string>
-  <string name="setting_up_full_transparent_proxying_">전체 투명 프록시 설정중...</string>
-  <string name="setting_up_app_based_transparent_proxying_">앱에 기반한 투명 프록시 설정중...</string>
-  <string name="transparent_proxying_enabled">투명 프록시 활성화됨</string>
-  <string name="transproxy_enabled_for_tethering_">테더링을 위한 TransProxy 활성화됨</string>
-  <string name="warning_error_starting_transparent_proxying_">경고 : 투명 프록시 시작 오류</string>
-  <string name="transproxy_rules_cleared">TransProxy 규칙 모두 삭제됨</string>
-  <string name="couldn_t_start_tor_process_">Tor 프로세스 시작 불가능:  </string>
-  <string name="setting_up_port_based_transparent_proxying_">포트에 기반한 투명 프록시 설정</string>
-  <string name="bridge_error">브릿지 오류</string>
-  <string name="bridge_requires_ip">브릿지 기능을 사용하기 위해서, 최소한 1개 이상의 브릿지 IP 주소가 필요합니다.</string>
-  <string name="send_email_for_bridges">메일 본문에 get bridges라고 적어서 Gmail로 bridges at torproject.org에 메일을 보내십시오.</string>
-  <string name="error">오류</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">귀하의 ReachableAddress 설정은 예외를 발생시켰습니다!</string>
-  <string name="your_relay_settings_caused_an_exception_">귀하의 중계서버 설정은 예외를 발생시켰습니다!</string>
-  <string name="exit_nodes">출구 노드</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">마지막 Hop을 위한핑거프린트, 별칭, 나라와 주소</string>
-  <string name="enter_exit_nodes">출구 노드 입력</string>
-  <string name="exclude_nodes">차단할 노드</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">차단할 핑거프린트, 별칭, 나라와 주소</string>
-  <string name="enter_exclude_nodes">차단할 노드 입력</string>
-  <string name="strict_nodes">노드 선택</string>
-  <string name="use_only_these_specified_nodes">이 특정한 노드*만* 사용합니다.</string>
-  <string name="bridges">중계서버</string>
-  <string name="use_bridges">중계서버 사용</string>
-  <string name="bridges_obfuscated">Obfuscated Bridges</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Tor 네트워크로 들어가는 대안의 입구 노드 활성화</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">설정된 bridge가 obfsproxy bridge면 활성화</string>
-  <string name="ip_address_and_port_of_bridges">중계서버의 IP 주소와 </string>
-  <string name="enter_bridge_addresses">중게서버 주소 입력</string>
-  <string name="relays">중계서버</string>
-  <string name="relaying">중계</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">귀하의 장치를 출구가 아닌 중계서버로 활성화</string>
-  <string name="relay_port">중계 포트</string>
-  <string name="listening_port_for_your_tor_relay">귀하의 Tor 중계서버를 위한 Listening 포트</string>
-  <string name="enter_or_port">OR 포트 입력</string>
-  <string name="relay_nickname">중계서버 별명</string>
-  <string name="the_nickname_for_your_tor_relay">귀하의 중계서버를 위한 별명</string>
-  <string name="enter_a_custom_relay_nickname">임의의 중계서버 별명을 입력</string>
-  <string name="reachable_addresses">도달 가능한 주소</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">엄격한 정책을 가진 방화벽 뒤에서 클라이언트 가동</string>
-  <string name="reachable_ports">도달 가능한 포트</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">엄격한 방화벽 뒤에서 접근 가능한 포트</string>
-  <string name="enter_ports">포트 입력</string>
-  <string name="enable_hidden_services">히든 서비스 호스팅</string>
-  <string name="run_servers_accessible_via_the_tor_network">장치 내의 서버가 Tor 네트워크를 통해 접근 가능하도록 허용</string>
-  <string name="enter_localhost_ports_for_hidden_services">히든 서비스를 위한 localhost 포트 입력</string>
-  <string name="hidden_service_ports">히든 서비스 포트</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">귀하의 히든 서비스를 위한 주소화된 이름(자동으로 생성됨)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">디버그 로그 출력 활성화 (보기 위해서는 adb나 aLogCat을 사용해야 함)</string>
-  <string name="project_home">프로젝트 홈 페이지:</string>
-  <string name="the_tor_license">The Tor License</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">3rd-Party-Software: </string>
-  <string name="hidden_service_request">앱이 Tor 네트워크로 히든 서버 포트를 열고 싶어합니다. 앱을 믿는다면 안전합니다.</string>
-  <string name="found_existing_tor_process">존재하고 있는 Tor 프로세스 발견</string>
-  <string name="something_bad_happened">어떤 나쁜 것이 발생. 로그 확인하세요.</string>
-  <string name="hidden_service_on">히든 서비스 목록 :</string>
-  <string name="unable_to_read_hidden_service_name">히든 서비스 이름을 읽을 수 없음</string>
-  <string name="unable_to_start_tor">Tor 시작 불가능</string>
-  <string name="pref_use_sys_iptables_title">기본 iptables 사용</string>
-  <string name="pref_use_sys_iptables_summary">Orbot에 동봉된 것 대신에 빌트인된 iptables 바이너리 사용</string>
-  <string name="error_installing_binares">Tor 바이너리는 설치되거나 없그레이드 될 수 없었습니다.</string>
-  <string name="pref_use_persistent_notifications">Orbot이 연결되었을 때 툴바에 아이콘 보이기</string>
-  <string name="pref_use_persistent_notifications_title">항상 켜진 알림</string>
-  <string name="notification_using_bridges">bridge 활성화됨</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Orbot을 위한 로케일과 언어 선택</string>
-  <string name="wizard_locale_title">언어 선택</string>
-  <string name="wizard_locale_msg">기본값으로 두거나 현재 언어 바꾸기</string>
-  <string name="btn_save_settings">설정 저장</string>
-  <string name="bandwidth_">대역폭:</string>
-  <string name="down">아래로</string>
-  <string name="up">위로</string>
-  <string name="pref_disable_network_title">네트워크가 없을 때의 자동 슬립</string>
-  <string name="pref_disable_network_summary">인터넷이 불가능하다면 Tor를 슬립 모드로 두십시오</string>
-  <string name="newnym">새로운 Tor 신원으로 전환되었습니다!</string>
-  <string name="menu_use_chatsecure">ChatSecure  사용</string>
-  <string name="permission_manage_tor_label">Tor 관리</string>
-  <string name="permission_manage_tor_description">Tor 서비스를 제어하기 위해 이 앱을 활성화하십시오</string>
-  <string name="install_apps_">앱을 설치할까요?</string>
-  <string name="menu_vpn">VPN</string>
-</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
deleted file mode 100644
index 73cc98f..0000000
--- a/res/values-ky/strings.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_settings">Ырастоолор</string>
-  <string name="menu_info">Жардам</string>
-  <string name="menu_about">Программа жөнүндө</string>
-  <string name="button_help">Жардам</string>
-  <string name="button_about">Программа жөнүндө</string>
-  <string name="menu_exit">Чыгуу</string>
-  <string name="btn_cancel">Айнуу</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="status">Абал</string>
-  <string name="error">Ката</string>
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-lt-rLT/strings.xml b/res/values-lt-rLT/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-lt-rLT/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
deleted file mode 100644
index 515fd23..0000000
--- a/res/values-lt/strings.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_browse">Naršyti</string>
-  <string name="menu_settings">Nustatymai</string>
-  <string name="menu_info">Pagalba</string>
-  <string name="menu_about">Apie</string>
-  <string name="button_help">Pagalba</string>
-  <string name="button_close">Uždaryti</string>
-  <string name="button_about">Apie</string>
-  <string name="menu_exit">Išeiti</string>
-  <string name="btn_back">Atgal</string>
-  <string name="btn_cancel">Atsisakyti</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">Proxy nustatymai</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Įspėjimas</string>
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_none">Joks</string>
-  <string name="status">Statusas</string>
-  <string name="error">Klaida</string>
-  <string name="default_bridges"></string>
-  <string name="btn_save_settings">Išsaugoti nustatymus</string>
-</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
deleted file mode 100644
index 6aeabd6..0000000
--- a/res/values-lv/strings.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot ir starpniekserveru bezmaksas lietotne, kas sniedz iespēju citām lietotnēm drošāk lietot internetu. Orbot izmanto Tor, lai šifrētu Jūsu interneta datplūsmu, tad to paslēpj, pārsūtot to caur daudziem datoriem visā pasaulē. Tor ir bezmaksas programmatūra un atvērts tīkls, kas palīdz Jums aizsargāties pret tīkla uzraudzības veidu - datplūsmas analīzi -, ar kuras palīdzību tiek apdraudēta personiskā brīvība un privātums, konfidenciālas lietišķas darbības un attiecības, kā arī valsts drošība.  </string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">startēt un apturēt Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot startē...</string>
-  <string name="status_activated">Izveidots savienojums ar tīklu Tor</string>
-  <string name="status_disabled">Orbot ir deaktivēts</string>
-  <string name="tor_process_starting">Startē Tor klientu...</string>
-  <string name="tor_process_complete">pabeidz.</string>
-  <string name="tor_process_waiting">gaida.</string>
-  <string name="not_anonymous_yet">BRĪDINĀJUMS: Jūsu datplūsma vēl nav anonīma! Lūdzu konfigurējiet savas lietotnes, lai tās izmantotu HTTP starpnieku 127.0.0.1:8118 vai SOCKS4A , vai SOCKS5 starpnieku 127.0.0.1:9050</string>
-  <string name="menu_home">Mājas</string>
-  <string name="menu_browse">Pārlūkot</string>
-  <string name="menu_settings">Iestatījumi</string>
-  <string name="menu_log">Žurnāls</string>
-  <string name="menu_info">Palīdzība</string>
-  <string name="menu_start">Startēt</string>
-  <string name="menu_stop">Apturēt</string>
-  <string name="menu_about">Par</string>
-  <string name="main_layout_download">Lejupielāde</string>
-  <string name="main_layout_upload">Augšupielāde</string>
-  <string name="button_help">Palīdzība</string>
-  <string name="button_close">Aizvērt</string>
-  <string name="button_about">Par</string>
-  <string name="button_clear_log">Notīrīt žurnālu</string>
-  <string name="menu_verify">Pārbaudīt</string>
-  <string name="menu_exit">Iziet</string>
-  <string name="menu_scan">Skenēt BridgeQR</string>
-  <string name="menu_share_bridge">Koplietot BridgeQR</string>
-  <string name="press_to_start">Lai startētu, nospiediet ilgi</string>
-  <string name="pref_trans_proxy_group">Pārredzama starpniekošana (nepieciešamas saknes pilnvaras)</string>
-  <string name="pref_trans_proxy_title">Pārredzama starpniekošana</string>
-  <string name="pref_trans_proxy_summary">Lietotņu automātiska torificēšana</string>
-  <string name="pref_transparent_all_title">Tor\'ēt visu</string>
-  <string name="pref_transparent_all_summary">Visu lietotņu starpnieku datplūsma caur Tor</string>
-  <string name="pref_transparent_port_fallback_title">Porta starpnieka atkāpnorāde</string>
-  <string name="pref_transparent_port_fallback_summary">BRĪDINĀJUMS: Apiet parastos portus (80., 443., u.tml.). *IZMANTOJIET VIENĪGI* ja nestrādā \'All\' vai \'App\' režīmi.</string>
-  <string name="pref_transparent_port_title">Portu saraksts</string>
-  <string name="pref_transparent_port_summary">Saraksts portiem uz starpnieku. *IZMANTOJIET VIENĪGI* ja nestrādā \'All\' vai \'App\' režīmi.</string>
-  <string name="pref_transparent_port_dialog">Ievadiet portus uz starpnieku</string>
-  <string name="pref_has_root">Pieprasīt piekļuves saknes tiesības</string>
-  <string name="pref_has_root_summary">Pieprasīt piekļuves saknes tiesības pārredzamai starniekošanai</string>
-  <string name="status_install_success">Sekmīgi instalētas Tor binārās datnes!</string>
-  <string name="status_install_fail">Nebija iespējams instalēt Tor binārās datnes. Lūdzu pārbaudiet žurnālu, un informējiet tor-assistants at torproject.org </string>
-  <string name="title_error">Lietojumprogrammas kļūda</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Par Orbot</string>
-  <string name="btn_next">Tālāk</string>
-  <string name="btn_back">Atpakaļ</string>
-  <string name="btn_finish">Beigt</string>
-  <string name="btn_okay">Labi</string>
-  <string name="btn_cancel">Atcelt</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Vairāk informācijas par Orbot</string>
-  <string name="wizard_details_msg">Orbot ir atvērta koda lietojumprogramma, kura ietver Tor, LibEvent un Polipo. Programma nodrošina vietēju HTTP starpniekseveri (8118) un SOCKS starpniekserveri (9050) uz Tor tīklu. Turklāt saknes tiesību līmenī strādājošā ierīcē, Orbot spēj pārsūtīt visu interneta datplūsmu caur Tor.</string>
-  <string name="wizard_permissions_root">Tiesības piešķirtas</string>
-  <string name="wizard_permissions_stock">Orbot tiesības</string>
-  <string name="wizard_premissions_msg_root">Ļoti labi! Mēs konstatējām, ka Orbot\'am ir iespējotas saknes tiesības. Mēs apdomīgi izmantosim šīs tiesības.</string>
-  <string name="wizard_permissions_msg_stock">Lai gan tas nav obligāti, Orbot kļūst par vēl ietekmīgāku rīku, ja Jūsu ierīcei ir saknes piekļuves tiesības. Izmantojiet zemāk atrodošos pogu, lai piešķirtu Orbot\'am īpašu spēku!  </string>
-  <string name="wizard_permissions_no_root">Ja Jums nav saknes piekļuves tiesību vai Jums nav nojausmas par ko te ir runa, pārliecinieties, ka izmantojat lietotnes, kuras paredzētas darbam ar Orbot.</string>
-  <string name="wizard_permissions_consent">Es saprotu un vēlos turpināt bez superlietotāja tiesībām.</string>
-  <string name="wizard_permission_enable_root">Piešķirt Orbot saknes tiesības</string>
-  <string name="wizard_configure">Konfigurēt torifikāciju</string>
-  <string name="wizard_configure_msg">Orbot sniedz iespēju maršrutēt visu lietojumu datplūsmu caur Tor\'u vai izvēlēties lietojumprogrammas tās norādot individuāli.</string>
-  <string name="wizard_configure_all">Visas lietotnes izmantot starpniecības režīmā caur Tor</string>
-  <string name="wizard_configure_select_apps">Izvēlēties individuālas lietotnes Tor\'am</string>
-  <string name="wizard_tips_tricks">Orbot-iespējotas lietotnes</string>
-  <string name="wizard_tips_msg">Zemāk norādītās lietotnes ir izveidotas darbam ar Orbot. Noklikšķiniet katru no pogām, lai instalētu tūliņ, vai varat tās uzmeklēt vēlāk Android Tirgū.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Drošs Android\'a tūlītējās ziņojumapmaiņas klients</string>
-  <string name="wizard_tips_proxy">Starpnieka iestatījumi - Uzzini kā konfigurēt lietotnes, lai tās strādātu ar Orbot</string>
-  <string name="wizard_tips_duckgo">Meklētājprogrammas Duckduckgo lietotne</string>
-  <string name="wizard_tips_twitter">Twitter atbalsta http starpnieku \"localhost:8118\"</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Sagatavojiet stāstu un, lai uzlabotu drošību, atstājiet to Tor!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Starpnieka iestatījumi</string>
-  <string name="wizard_proxy_help_msg">Ja Jūsu lietotā Android lietotne spēj nodrošināt HTTP vai SOCKS starpniekserveri, tad varat to nokonfigurēt tā, lai tā savienotos ar Orbot un lietotu Tor. Viesotāja iestatījumi ir 127.0.0.1 vai „localhost”. HTTP porta iestatījums ir 8118. SOCKS starpniekserveris ir 9050. Pēc iespējas izmantojiet SOCKS4A vai SOCKS5. Uzziniet vairāk par starpniekošanu Android platformā un tīmekļa vietnē lasiet atbildes, kuras sagatavotas biežāk uzdotiem jautājumiem jeb FAQ: http://tinyurl.com/proxyandroid</string>
-  <string name="wizard_final">Orbot ir gatavs darbam!</string>
-  <string name="wizard_final_msg">Miljoniem ļaužu visā pasaulē lieto Tor dažādiem mērķiem. Žurnālisti un emuāru autori, cilvēktiesību aizstāvji, likumsargi, karavīri, korporācijas, apspiestībā dzīvojuši iedzīvotāji, un vienkārši parasti cilvēki ... un tagad arī Jūs esat tam gatavs!</string>
-  <string name="wizard_exit_at_first_screen_toast">Lūdzu nokonfigurējiet Orbot pirms sākat to lietot!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Šī darbība tīmekļa pārlūkā atvērs https://check.torproject.org , lai redzētu vai Orbot ir konfigurēts un esat izveidojies savienojumu ar Tor.</string>
-  <string name="pref_hs_group">Slēptu pakalpojumu viesošana</string>
-  <string name="pref_general_group">Vispārīgi</string>
-  <string name="pref_start_boot_title">Startēt Orbot, kad ielādējas</string>
-  <string name="pref_start_boot_summary">Automātiski startēt Orbot, un veidot savienojumu ar Tor, kad Jūsu Android ierīce ielādējas</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot ieved Tor Android\'u pasaulē! Tor palīdz aizsargāties pret satura filtrēšanu, datplūsmas analīzi un tīkla novērošanu, kuras apdraud privātumu, konfidenciālu informāciju un personiskās attiecības. Šis vednis palīdzēs Jūsu iekārtā nokonfigurēt Orbot\'u un Tor\'u.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Brīdinājums</string>
-  <string name="wizard_warning_msg">Pati Orbot instalēšana vēl nepadarīs anonīmu Jūsu mobilo datplūsmu.\n\nJums pareizi jānokonfigurē Orbot, sava ierīce un citas lietotnes, lai sekmīgi lietotu Tor.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Tesības</string>
-  <string name="wizard_permissions_root_msg1">Pēc izvēles variet piešķirt Orbot\'am \'Superlietotāja\' piekļuves tiesības, lai iespēju lietpratīgus līdzekļus, tādus kā Transparent Proxying jeb Pārredzamā .</string>
-  <string name="wizard_permissions_root_msg2">Ja nevēlaties šo darīt, lūdzu, pārliecinieties, ka izmantojat lietotnes, kuras paredzētas darbam ar Orbot</string>
-  <string name="wizard_permissions_no_root_msg">Šķiet, ka Jūsu ierīce nav saknēta vai arī nenodrošina saknes jeb superlietotāja piekļuvi.\n\nLūdzu pamēģiniet citādi - galvenajā ekrānā lietojiet režīmu „Lietotnes”.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot\'a iespējotas lietotnes</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Padarīt tērzēšanas lietotni drošāku ar Off-the-Record šifrēšanu</string>
-  <string name="wizard_tips_play">Visas Guardian Project\'a lietotnes atrodamas Google Play\'ā</string>
-  <string name="wizard_tips_fdroid">Atrodiet visas Guardian Project lietotnes F-Droid\'ā</string>
-  <string name="wizard_tips_fdroid_org">Atrodiet visas Guardian Project lietotnes https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Pārredzama starpniekošana</string>
-  <string name="wizard_transproxy_msg">Šis ļauj Jūsu lietotnēm automātiski, bez jebkādas papildu konfigurācijas darboties caur Tor tīklu.</string>
-  <string name="wizard_transproxy_hint">(Atzīmējiet šo kastīti gadījumā ja Jums nav ne mazākās nojausmas par to, ko mēs te runājam)</string>
-  <string name="wizard_transproxy_none">Neviens</string>
-  <string name="pref_transparent_tethering_title">Tor valgošana</string>
-  <string name="pref_transparent_tethering_summary">Iespējot Tor Pārredzamo starpniekošanu Wifi\'m un USB valgošanas ierīcēm (nepieciešams pārstartēt)</string>
-  <string name="button_grant_superuser">Pieprasīt superlietotāja piekļuvi</string>
-  <string name="pref_select_apps">Izvēlēties lietotnes</string>
-  <string name="pref_select_apps_summary">Izvēlēties lietotnes, lai maršrutētu caur Tor</string>
-  <string name="pref_node_configuration">Mezglu konfigurācija</string>
-  <string name="pref_node_configuration_summary">Šie it lietpratīgie iestatījumi, kuri var samazināt Jūsu anonimitāti</string>
-  <string name="pref_entrance_node">Ieejas mezgli</string>
-  <string name="pref_entrance_node_summary">Ciparvirknes, segvārdi, valstis un adreses pirmajam lēkumam</string>
-  <string name="pref_entrance_node_dialog">Ievadiet ieejas mezglus</string>
-  <string name="button_proxy_all">Lietot starpniekserveri visam</string>
-  <string name="button_proxy_none">Nekam nelietot starpniekserveri</string>
-  <string name="button_invert_selection">Mainīt atlasi uz pretējo</string>
-  <string name="pref_proxy_title">Tīkla ārejošais starpnieks (neobligāts)</string>
-  <string name="pref_proxy_type_title">Ārvērstā starpnieka tips</string>
-  <string name="pref_proxy_type_summary">Starpnieka serverim izmantojamais protokols: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Ievadiet starpnieka tipu</string>
-  <string name="pref_proxy_host_title">Ārvērstā starpnieka viesotājs</string>
-  <string name="pref_proxy_host_summary">Starpniekservera mitinātājvārds</string>
-  <string name="pref_proxy_host_dialog">Ievadiet starpnieka viesotāju</string>
-  <string name="pref_proxy_port_title">Ārvērstā starpnieka ports</string>
-  <string name="pref_proxy_port_summary">Starpniekservera ports</string>
-  <string name="pref_proxy_port_dialog">Ievadiet starpnieka portu</string>
-  <string name="pref_proxy_username_title">Ārvērstā starpnieka lietotājvārds</string>
-  <string name="pref_proxy_username_summary">Starpnieka lietotājvārds (neobligāts)</string>
-  <string name="pref_proxy_username_dialog">Ievadīt starpnieka lietotājvardu</string>
-  <string name="pref_proxy_password_title">Ārvērstā starpnieka parole</string>
-  <string name="pref_proxy_password_summary">Starpnieka parole (neobligāti)</string>
-  <string name="pref_proxy_password_dialog">Ievadīt starpnieka paroli</string>
-  <string name="status">Statuss</string>
-  <string name="setting_up_full_transparent_proxying_">Iestata pilnībā pārredzamu starpniekošanu...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Iestata lietotņu nodrošinātu starpniekošanu...</string>
-  <string name="transparent_proxying_enabled">Pārredzama starpniekošana IESPĒJOTA</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy iespējots valgošanai!</string>
-  <string name="warning_error_starting_transparent_proxying_">BRĪDINĀJUMS: kļūda uzsākot pārredzamu starpniekošanu!</string>
-  <string name="transproxy_rules_cleared">TransProxy kārtulas notīrītas</string>
-  <string name="couldn_t_start_tor_process_">Neizdevās palaist Tor\'a procesu:</string>
-  <string name="privoxy_is_running_on_port_">Polipo strādā caur portu: </string>
-  <string name="setting_up_port_based_transparent_proxying_">Iestata portu nodrošinātu pārredzamu starpniekošanu...</string>
-  <string name="bridge_error">Tilta kļūda</string>
-  <string name="bridge_requires_ip">Lai izmantotu tilta līdzekli, jāievada vismaz viena tilta IP adrese.</string>
-  <string name="send_email_for_bridges">No Gmail konta sūtiet e-pastu uz bridges at torproject.org ar rindu \"get bridges\" e-pasta ziņojuma korpusā.</string>
-  <string name="error">Kļūda</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Jūsu ReachableAddresses iestatījumi izraisīja izņēmuma stāvokli!</string>
-  <string name="your_relay_settings_caused_an_exception_">Jūsu retranslatora iestatījumi izraisīja izņēmuma situāciju!</string>
-  <string name="exit_nodes">Izejas mezgli</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Pēdējā lēkuma ciparvirknes, segvārdi, valstis un adreses</string>
-  <string name="enter_exit_nodes">Ievadiet izejas mezglus</string>
-  <string name="exclude_nodes">Neiekļautie mezgli</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Izslēdzamās ciparvirknes, segvārdi, valstis un adreses</string>
-  <string name="enter_exclude_nodes">Ievadīt Neiekļaujamos mezglus</string>
-  <string name="strict_nodes">Precīzie mezgli</string>
-  <string name="use_only_these_specified_nodes">Izmantojiet *vienīgi* šos norādītos mezglus</string>
-  <string name="bridges">Tilti</string>
-  <string name="use_bridges">Lietot tiltus</string>
-  <string name="bridges_obfuscated">Nomaskētie tilti</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Iespējot alternatīvus tīkla Tor ieejas mezglus </string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Iespējot, ja konfigurētie tilti ir nomaskētie tilti</string>
-  <string name="ip_address_and_port_of_bridges">Tiltu ports un IP addrese</string>
-  <string name="enter_bridge_addresses">Ievadiet tiltu adreses</string>
-  <string name="relays">Retranslatori</string>
-  <string name="relaying">Retranslēšana</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Iespējot Jūsu iekārtu par bezapstājas retranslatoru</string>
-  <string name="relay_port">Retranslatora ports</string>
-  <string name="listening_port_for_your_tor_relay">Jūsu Tor retranslatora klausīšanās ports</string>
-  <string name="enter_or_port">Ievadiet OR portu</string>
-  <string name="relay_nickname">Retranslatora segvārds</string>
-  <string name="the_nickname_for_your_tor_relay">Jūsu Tor\'a retranslatora segvārds</string>
-  <string name="enter_a_custom_relay_nickname">Ievadiet brīvi izraudzītu rertranslatora segvārdu</string>
-  <string name="reachable_addresses">Sasniedzamās adreses</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Izpildīt kā klientprogrammu aiz ugunsmūra, kurš nodrošina ierobežojošu kārtību</string>
-  <string name="reachable_ports">Sasniedzamie porti</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Porti, kuri sasniedzami otrpus ierobežojoša ugunsmūra</string>
-  <string name="enter_ports">Ievadiet portus</string>
-  <string name="enable_hidden_services">Slēptu pakalpojumu viesošana</string>
-  <string name="run_servers_accessible_via_the_tor_network">ļaut no tīkla Tor piekļūt serverim, kurš ir ierīcē.  </string>
-  <string name="enter_localhost_ports_for_hidden_services">ievadiet slēpto pakalpojumu localhost portus</string>
-  <string name="hidden_service_ports">Slēptu pakalpojumu porti</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Jūsu slēptā pakalpojuma adresējams vārds (tiek ģenerēts automātiski)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">iespējot atkļūdošanas žurnālu izvadei (jālieto adb vai aLogCat , lai skatītu)</string>
-  <string name="project_home">Projekta mājas:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Tor licence</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Trešo personu programmatūra:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="hidden_service_request">Lietotne vēlas atvērt slēptu servera portu %S uz tīklu Tor. Tas ir droši, ja uzticaties lietotnei.</string>
-  <string name="found_existing_tor_process">Atrada esošu Tor procesu...</string>
-  <string name="something_bad_happened">Nav labi. Pārbaudiet žurnālu</string>
-  <string name="hidden_service_on">Slēpts pakalpojums uz:</string>
-  <string name="unable_to_read_hidden_service_name">Nespēj lasīt slēpta pakalpojuma nosaukumu</string>
-  <string name="unable_to_start_tor">Nevar startēt Tor:</string>
-  <string name="unable_to_reset_tor">Nespēja atiestatīt Tor, sāknējiet ierīci atkārtoti!</string>
-  <string name="pref_use_sys_iptables_title">Izmantot noklusējuma Iptables</string>
-  <string name="pref_use_sys_iptables_summary">lietot iebūvēto bināro datni iptables nevis to, kura ir Orbot komplektācijā</string>
-  <string name="error_installing_binares">Tor binārās datnes nebija iespējams ne instalēt, ne jaunināt.</string>
-  <string name="pref_use_persistent_notifications">Vienmēr paturēt ikonu rīkjoslā, kad Orbot ir savienots</string>
-  <string name="pref_use_persistent_notifications_title">Vienmēr ieslēgtie paziņojumi</string>
-  <string name="pref_use_expanded_notifications">Rādīt paplašinātus paziņojumus, kur norādīts IP un Tor izejas valsts</string>
-  <string name="pref_use_expanded_notifications_title">Paplašināti paziņojumi</string>
-  <string name="notification_using_bridges">Tilti ir iespējoti!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Valoda</string>
-  <string name="set_locale_summary">Iestatiet Orbot lokalizāciju un valodu</string>
-  <string name="wizard_locale_title">Izvēlēties valodu</string>
-  <string name="wizard_locale_msg">Atstājiet noklusējuma vērtības, vai pārslēdziet pašreizējo valodu.</string>
-  <string name="powered_by">strādā ar Tor</string>
-  <string name="btn_save_settings">Saglabāt iestatījumus</string>
-  <string name="no_internet_connection_tor">Nav interneta savienojuma; Tor ir gaidstāvē...</string>
-  <string name="bandwidth_">Joslas platums:</string>
-  <string name="down">lejup</string>
-  <string name="up">augšup</string>
-  <string name="pref_disable_network_title">Neizmantot tīkla automātiskā miega režīmu</string>
-  <string name="pref_disable_network_summary">Kad nav interneta, pārslēgt Tor\'u uz miega režīmu</string>
-  <string name="newnym">Jūs pārslēdzāties uz jaunu Tor\'a identitāti!</string>
-  <string name="menu_use_chatsecure">Lietot ChatSecure</string>
-  <string name="permission_manage_tor_label">Pārvaldīt Tor\'u</string>
-  <string name="permission_manage_tor_description">Iespējot šo lietotni kontrolēt pakalpojumu Tor</string>
-  <string name="install_apps_">Vai instalēt lietotnes?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Nav tīkla savienojuma. Tor\'am iestata miega režīmu...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Labs tīkla savienojums. Aktivizē Tor\'u...</string>
-  <string name="updating_settings_in_tor_service">atjaunina Tor pakalpojuma iestatījumus </string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Ports, uz kura Tor piedāvā savu SOCKS starpniekserveri (noklusējumvērtība: 9050 vai 0 lai atspējotu)</string>
-  <string name="pref_socks_dialog">SOCKS Port Config</string>
-  <string name="pref_transport_title">Tor TransProxy Port</string>
-  <string name="pref_transport_summary">Ports, uz kura Tor piedāvā savu Transparent starpniekserveri (noklusējumvērtība: 9040 vai 0 lai atspējotu)</string>
-  <string name="pref_transport_dialog">TransProxy Port Config</string>
-  <string name="pref_dnsport_title">Tor DNS Ports</string>
-  <string name="pref_dnsport_summary">Ports, uz kura Tor piedāvā savu DNS (noklusējumvērtība: 5400 vai 0 lai atspējotu)</string>
-  <string name="pref_dnsport_dialog">DNS Port konfigurēšana</string>
-  <string name="pref_torrc_title">Torrc pielāgota konfigurēšana</string>
-  <string name="pref_torrc_summary">VIENĪGI EKSPERTIEM: tieši ievadīt torrc konfigurēšanas rindas</string>
-  <string name="pref_torrc_dialog">Pielāgot Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech\'a cilvēktiesību dokumentācijas lietotne</string>
-  <string name="your_tor_public_ips_">Jūsu Tor publiskās IP:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Lūdzu atspējojiet šo lietotni Android->Settings->Apps , ja rodas ar Orbot saistītas problēmas: </string>
-  <string name="app_conflict">Lietotņu konflikts</string>
-  <string name="pref_transproxy_refresh_title">Pārredzamā starpniekservera automātiska atsvaidzināšana</string>
-  <string name="pref_transproxy_refresh_summary">Kad mainās tīkla stāvoklis, atkārtoti lietot Pārredzamā starpniekserva kārtulas</string>
-  <string name="pref_transproxy_flush_title">Pārredzamā starpniekservera  PIESPIEDU NOŅEMŠANA</string>
-  <string name="pref_transproxy_flush_summary">Pieskarties te, lai TŪLĪT iztīrītu visas pārredzamā starpniekservera tīkla kārtulas</string>
-  <string name="transparent_proxy_rules_flushed_">Pārredzamā starpniekservera kārtulas ir iztīrītas!</string>
-  <string name="you_do_not_have_root_access_enabled">SAKNES piekļuve nav iespējota</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Lai iestatījumu maiņa tiktu iespējota, Jums var nākties apturēt un startēt Orbot.</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Tilti ir atjaunināti</string>
-  <string name="restart_orbot_to_use_this_bridge_">Lūdzu pārstartējiet Orbot, lai iespējotu izmaiņas</string>
-  <string name="menu_qr">QR kodi</string>
-  <string name="bridge_mode">Tiltu režīms</string>
-  <string name="get_bridges_email">E-pasts</string>
-  <string name="get_bridges_web">Tīmeklis</string>
-  <string name="activate">Aktivizēt</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Jūs varat iespējot visas savas ierīces lietotnes strādāt Tor tīklā, izmantojot Android VPN raksturiezīmi.\n\n*BRĪDINĀJUMS* Šī ir jauna, eksperimentāla raksturiezīme un dažos gadījumos tā var nesākt darbu automātiski, bet citos tā var pati pārtraukt darboties. To NEVAJAG izmantot anonimitātes nodrošināšanai, bet to var izmantot VIENĪGI lai strādātu caur ugunsmūriem un filtriem.</string>
-  <string name="send_email">Nosūtīt e-pastu</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Jūs varat saņemt tiltu adreses e-pastā, tīmeklī vai skenējot tiltu QR kodu. Zemāk atlasiet „E-pasts” vai „Tīmeklis”, lai pieprasītu tiltu adreses. Kad esat saņēmis adreses, tad tās iekopējiet un ielīmējiet Orbot iestatījumu preferencēs „Tilti” un pārstartējiet.</string>
-  <string name="standard_browser">Standarta pārlūks</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">PIEZĪME: Uz Intel X86/ATOM ierīcēm darbosies tikai standarta Tor tilti</string>
-</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
deleted file mode 100644
index 85f76a5..0000000
--- a/res/values-mk/strings.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot е слободна прокси апликација која им овозможува на другите апликации да го користат интернетот побезбедно. Orbot користи Tor за шифрирање на интернет-сообраќајот, а потоа го сокрива и го доставува преку неколку компјутери во целиот свет. Tor е слободен софтвер и отворена мрежа која се справува со вид надзор на мрежата која штети на личната слобода и приватноста, доверливи деловни активности и односи, и државната безбедност позната како анализа на сообраќајот.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">стартувај и стопирај ја Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Орбот се стартува...</string>
-  <string name="status_activated">Поврзан на мрежата на Tor</string>
-  <string name="status_disabled">Орбот е деактивиран</string>
-  <string name="tor_process_starting">Стартување на клиентот на Tor...</string>
-  <string name="tor_process_complete">завршено.</string>
-  <string name="tor_process_waiting">чекање.</string>
-  <string name="not_anonymous_yet">ВНИМАНИЕ: Вашиот сообраќај сè уште не е анонимен! Потребно е да ги конфигурирате Вашите апликации за да го користат проксито за HTTP, 127.0.0.1:8118, или проксито за SOCKS4A или SOCKS5, 127.0.0.1:9050</string>
-  <string name="menu_home">Дома</string>
-  <string name="menu_browse">Прелистување</string>
-  <string name="menu_settings">Поставки</string>
-  <string name="menu_log">Дневник</string>
-  <string name="menu_info">Помош</string>
-  <string name="menu_start">Стартувај</string>
-  <string name="menu_stop">Стопирај</string>
-  <string name="menu_about">За</string>
-  <string name="main_layout_download">Преземи</string>
-  <string name="main_layout_upload">Прикачи</string>
-  <string name="button_help">Помош</string>
-  <string name="button_close">Затвори</string>
-  <string name="button_about">За</string>
-  <string name="button_clear_log">Избриши дневник</string>
-  <string name="menu_verify">Провери</string>
-  <string name="menu_exit">Излез</string>
-  <string name="menu_scan">Скенирај BridgeQR</string>
-  <string name="menu_share_bridge">Сподели BridgeQR</string>
-  <string name="press_to_start">- пристисни подолго за старт -</string>
-  <string name="pref_trans_proxy_group">Транспарентно проксирање (бара root пристап)</string>
-  <string name="pref_trans_proxy_title">Транспарентно проксирање</string>
-  <string name="pref_trans_proxy_summary">Автоматско торифицирање на апликациите</string>
-  <string name="pref_transparent_all_title">Целосно торифицирање</string>
-  <string name="pref_transparent_all_summary">Проксирај го сообраќајот на сите апликации преку Tor</string>
-  <string name="pref_transparent_port_fallback_title">Резервна порта за прокси</string>
-  <string name="pref_transparent_port_fallback_summary">ВНИМАНИЕ: Избегни ги често користените порти (80, 443, итн). *USE ONLY* ако режимите \'All\' или \'App\' не работат.</string>
-  <string name="pref_transparent_port_title">Листа на порти</string>
-  <string name="pref_transparent_port_summary">Листа на порти за прокси. *USE ONLY* ако режимите \'All\' или \'App\' не работат.</string>
-  <string name="pref_transparent_port_dialog">Внесете порти за прокси</string>
-  <string name="pref_has_root">Барање за пристап до root</string>
-  <string name="pref_has_root_summary">Барање за пристап до root за транспарентно проксирање</string>
-  <string name="status_install_success">Извршните програми за Tor се успешно инсталирани!</string>
-  <string name="status_install_fail">Извршните фајлови на Tor не можат да се инсталираат. Проверете во дневникот и известете нè на tor-assistants at torproject.org</string>
-  <string name="title_error">Апликациска грешка</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">За Орбот</string>
-  <string name="btn_next">Следно</string>
-  <string name="btn_back">Назад</string>
-  <string name="btn_finish">Крај</string>
-  <string name="btn_okay">Во ред</string>
-  <string name="btn_cancel">Откажи</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Неколку детали за Орбот</string>
-  <string name="wizard_details_msg">Orbot е апликација со отворен код која ги содржи Tor, LibEvent и Polipo. Обезбедува локален HTTP прокси (8118) и SOCKS прокси (9050) во мрежата на Tor. Orbot, исто така, има опција кај основниот уред да го испраќа целиот интернет-сообраќај преку Tor.</string>
-  <string name="wizard_permissions_root">Дозволата е издадена</string>
-  <string name="wizard_permissions_stock">Дозволи на Orbot</string>
-  <string name="wizard_premissions_msg_root">Одлично! Откривме дека овозможивте root пристап за Orbot. Внимателно ќе ја користиме оваа опција.</string>
-  <string name="wizard_permissions_msg_stock">Иако не е задолжително, Orbot може да стане помоќна алатка доколку вашиот уред има root пристап. Со копчето подолу Orbot може да добие супер-моќ.</string>
-  <string name="wizard_permissions_no_root">Ако немате root пристап или ако не разбирате за што зборуваме, осигурајте се дека користите апликации кои што работат со Orbot.</string>
-  <string name="wizard_permissions_consent">Разбирам и сакам да продолжам без администраторски привилегии</string>
-  <string name="wizard_permission_enable_root">Додели root за Orbot</string>
-  <string name="wizard_configure">Конфигурација на торифицирањето</string>
-  <string name="wizard_configure_msg">Orbot преку Tor овозможува да се рутира целиот сообраќај на сите апликации или на секоја апликација одделно.</string>
-  <string name="wizard_configure_all">Проксирај ги сите апликации преку Tor</string>
-  <string name="wizard_configure_select_apps">Избери посебни апликации за Tor</string>
-  <string name="wizard_tips_tricks">Апликации кои го поддржуваат Orbot</string>
-  <string name="wizard_tips_msg">Апликациите подолу се креирани да работат со Orbot. Притисни го секое копче за инсталација или може да се најдат на Google Play, на веб-локацијата GuardianProject.info  или преку F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Безбедносен инстант клиент за разговор за Android</string>
-  <string name="wizard_tips_proxy">Поставки за прокси - Дознај како да се конфигурираат апликациите да работат со Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo апликација за пребарување</string>
-  <string name="wizard_tips_twitter">Подесете Twitter прокси на компјутерот \"localhost\" и порта 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Направи приказна и остави ја нејзината безбедност на Tor!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Поставки за прокси</string>
-  <string name="wizard_proxy_help_msg">Доколку Android апликацијата што се користи поддржува HTTP или SOCKS прокси, тогаш може да се конфигурира да се поврзе со Orbot и да користи Tor.\n\n\n Поставките за компјутерот се 127.0.0.1 или \"localhost\". За HTTP подесувањата на порта се 8118. За SOCKS проксито е 9050. Доколку е возможно треба да се користи SOCKS4A или SOCKS5.\n \n\n\n Може да дознаете повеќе за проксирање на Android преку ЧПП на: http://tinyurl.com/proxyandroid\n </string>
-  <string name="wizard_final">Orbot е спремен!</string>
-  <string name="wizard_final_msg">Милиони луѓе низ целиот свет го користат Tor за различни причини.\n\nНовинари и блогери, борци за човекови права, адвокати, војници, корпорации, граѓаните на репресивните режими и обичните граѓани ... а од сега и вие!</string>
-  <string name="wizard_exit_at_first_screen_toast">Ве молиме конфигурирајте го Орбот пред да започнете да го користите!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Ова ќе ја отвори страницата https://check.torproject.org во Вашиот веб-прелистувач за да видете дали Orbot е правилно конфигуриран и дали сте поврзани на Тор.</string>
-  <string name="pref_hs_group">Скриени сервиси за хостирање</string>
-  <string name="pref_general_group">Општо</string>
-  <string name="pref_start_boot_title">Стартувај го Orbot за бутирање</string>
-  <string name="pref_start_boot_summary">Автоматски стартувај го Orbot и поврзи го Tor кога твојот Android уред се стартува</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot го овозможува Tor за Android!\n\nTor помага против филтрирање на содржината, анализа на сообраќајот и надзор на мрежата кои штетат на приватноста, доверливи инфомации и лични односи.\n\nОвој волшебник помага за конфигурација на Orbot и Tor на вашиот уред.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Внимание</string>
-  <string name="wizard_warning_msg">Само инсталирање на Orbot нема автоматски да го анонимизира вашиот мобилен сообраќај.\n\nМорате правилно да ги конфигурирате Orbot, вашиот уредот и други апликации, за да успешно го користите Tor.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Дозволи</string>
-  <string name="wizard_permissions_root_msg1">Опционално може да се добие администраторски пристап за Orbot кој овозможува напредни функции, како што е транспарентно проксирање.</string>
-  <string name="wizard_permissions_root_msg2">Доколку не сакате да го направите ова, осигурајте се дека вашите апликации работат со Orbot</string>
-  <string name="wizard_permissions_no_root_msg">Вашиот уред не е основен или не дозволува пристап до основен уред или администраторски пристап.\n\nПробајте го режимот \'Апликации\' на главниот екран.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Апликации кои го поддржуваат Orbot</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Безбедносна апликација за разговор со енкрипција \'Off-the-Record\' </string>
-  <string name="wizard_tips_play">Најди ги сите Guardian Project апликации на Google Play</string>
-  <string name="wizard_tips_fdroid">Најди ги сите Guardian Project апликации на F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Најди ги сите Guardian Project апликации на https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Транспарентно проксирање</string>
-  <string name="wizard_transproxy_msg">Ова овозможува вашите апликации автоматски да се стартуваат преку мрежата Tor без конфигурација.</string>
-  <string name="wizard_transproxy_hint">(Селектирајте го ова поле ако не разбирате за што зборуваме)</string>
-  <string name="wizard_transproxy_none">Ништо</string>
-  <string name="pref_transparent_tethering_title">Tor поврзување</string>
-  <string name="pref_transparent_tethering_summary">Овозможи транспарентно проксирање на Tor за уреди поврзани преку Wifi и USB  (бара рестартирање)</string>
-  <string name="button_grant_superuser">Барање за пристап до администратор на системот</string>
-  <string name="pref_select_apps">Изберете апликации</string>
-  <string name="pref_select_apps_summary">Одбери апликации кои ќе се поврзуваат преку Тор</string>
-  <string name="pref_node_configuration">Конфигурација на јазол</string>
-  <string name="pref_node_configuration_summary">Ова се напредните поставувања кои можат да ја намалат вашата анонимност</string>
-  <string name="pref_entrance_node">Влезни јазли</string>
-  <string name="pref_entrance_node_summary">Отпечатоци од прсти, прекари, земји и адреси за првиот скок.</string>
-  <string name="pref_entrance_node_dialog">Внесете влезни јазли</string>
-  <string name="button_proxy_all">Се за проксирање</string>
-  <string name="button_proxy_none">Ништо за проксирање</string>
-  <string name="button_invert_selection">Преврти го изборот</string>
-  <string name="pref_proxy_title">Излезен прокси на мрежата (незадолжително)</string>
-  <string name="pref_proxy_type_title">Тип на излезен прокси</string>
-  <string name="pref_proxy_type_summary">Протокол за користење на прокси-сервер: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Внесете го типот на проски</string>
-  <string name="pref_proxy_host_title">Излезен домаќин на прокси</string>
-  <string name="pref_proxy_host_summary">Име на домаќин на серверот на прокси</string>
-  <string name="pref_proxy_host_dialog">Внесете домаќин на прокси</string>
-  <string name="pref_proxy_port_title">Излезна порта на прокси</string>
-  <string name="pref_proxy_port_summary">Порта на серверот на прокси</string>
-  <string name="pref_proxy_port_dialog">Внесете порта на прокси</string>
-  <string name="pref_proxy_username_title">Kорисничко име на излезен прокси</string>
-  <string name="pref_proxy_username_summary">Корисничко име на прокси (незадолжително)</string>
-  <string name="pref_proxy_username_dialog">Внесете корисничко име на прокси</string>
-  <string name="pref_proxy_password_title">Лозинка на излезен прокси</string>
-  <string name="pref_proxy_password_summary">Лозинка на прокси (незадолжително)</string>
-  <string name="pref_proxy_password_dialog">Внесете лозинка на прокси</string>
-  <string name="status">Статус</string>
-  <string name="setting_up_full_transparent_proxying_">Поставување на целосно транспарентно проксирање...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Поставување транспарентно проксирање базирано на апликација...</string>
-  <string name="transparent_proxying_enabled">Tранспарентното проксирање е ОВОЗМОЖЕНО</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy е овозможен за поврзување!</string>
-  <string name="warning_error_starting_transparent_proxying_">ВНИМАНИЕ: Грешка при стартување на транспарентно проксирање!</string>
-  <string name="transproxy_rules_cleared">Избришани правила за TransProxy </string>
-  <string name="couldn_t_start_tor_process_">Не може да се започне Tor-процесот:</string>
-  <string name="privoxy_is_running_on_port_">Polipo работи на порта: </string>
-  <string name="setting_up_port_based_transparent_proxying_">Поставување на транспарентно проксирање базирано на порта...</string>
-  <string name="bridge_error">Грешка во мостот</string>
-  <string name="bridge_requires_ip">За да ја користите функцијата на мостот, морате да внесете барем една ИП-адреса на мост.</string>
-  <string name="send_email_for_bridges">Испратете е-пошта од вашата gmail сметка на bridges at torproject.org со содржина \"get bridges\".</string>
-  <string name="error">Грешка</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Вашите поставки за достапните адреси предизвикаа грешка!</string>
-  <string name="your_relay_settings_caused_an_exception_">Вашите поставки за реле предизвикаа грешка!</string>
-  <string name="exit_nodes">Излезни јазли</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Отпечатоци од прсти, прекари, земји и адреси за последниот скок.</string>
-  <string name="enter_exit_nodes">Внесете излезни јазли</string>
-  <string name="exclude_nodes">Исклучи јазли</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Отпечатоци од прсти, прекари, земји и адреси кои треба да се исклучат</string>
-  <string name="enter_exclude_nodes">Внесете ги јазлите кои треба да се исклучат</string>
-  <string name="strict_nodes">Задолжителни јазли</string>
-  <string name="use_only_these_specified_nodes">Користете ги *само* овие наведени јазли</string>
-  <string name="bridges">Мостови</string>
-  <string name="use_bridges">Користи мостови</string>
-  <string name="bridges_obfuscated">Скриени мостови</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Овозможи алтернативни влезни јазли во мрежата Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Овозможи, ако мостовите се скриени мостови</string>
-  <string name="ip_address_and_port_of_bridges">ИП-адреса и порта на мостовите</string>
-  <string name="enter_bridge_addresses">Внесете адреси на мостовите</string>
-  <string name="relays">Релеа</string>
-  <string name="relaying">Пренесување</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Овозможи го уредот да биде реле без излез </string>
-  <string name="relay_port">Порта на реле</string>
-  <string name="listening_port_for_your_tor_relay">Порта за слушање на вашиот реле на Tor</string>
-  <string name="enter_or_port">Внесете OR порта</string>
-  <string name="relay_nickname">Назив на релето</string>
-  <string name="the_nickname_for_your_tor_relay">Назив на вашето реле за Tor</string>
-  <string name="enter_a_custom_relay_nickname">Внесете произволно име за релето</string>
-  <string name="reachable_addresses">Достапни адреси</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Стартувајте го како клиент зад безбедносен ѕид со ограничени полиси</string>
-  <string name="reachable_ports">Достапни порти</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Порти достапни зад рестрективен заштитен ѕид(firewall)</string>
-  <string name="enter_ports">Внесете порти</string>
-  <string name="enable_hidden_services">Скриени сервиси за хостирање</string>
-  <string name="run_servers_accessible_via_the_tor_network"> Овозможи on-device серверот да се пристапи преку мрежата на Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">Внеси ги портите за localhost за скриени сервиси </string>
-  <string name="hidden_service_ports">Порти на скриени сервиси</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Достапно име за вашиот скриен сервис (се генерира автоматски)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Активирај го дневникот за отстранување грешки за излез (за да се прикаже мора да се користи adb или aLogCat)</string>
-  <string name="project_home">Почетна страница:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Лиценца за Tor </string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Софтвер од друг производител:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="hidden_service_request">Апликација сака да отвори скриена порта на серверот %S на мрежата на Tor. Ова е безбедно, ако и\' веруваш на апликацијата.</string>
-  <string name="found_existing_tor_process">Пронајден постоечки Tor-процес ...</string>
-  <string name="something_bad_happened">Настана грешка. Проверете во дневникот</string>
-  <string name="hidden_service_on">Вклучен е скриениот сервис:</string>
-  <string name="unable_to_read_hidden_service_name">не може да се прочита името на скриениот сервис</string>
-  <string name="unable_to_start_tor">Tor не може да се стартува:</string>
-  <string name="unable_to_reset_tor">Рестартирајте го вашиот уред, Tor не може да се ресетира! </string>
-  <string name="pref_use_sys_iptables_title">Користи стандарден Iptables</string>
-  <string name="pref_use_sys_iptables_summary">Користи ги вградените бинарни ИП табели наместо таа што оди со Orbot</string>
-  <string name="error_installing_binares">Извршните датотеки на Tor не можат да се инсталираат или надградат</string>
-  <string name="pref_use_persistent_notifications">Секогаш чувајте ja иконата во лентата со алатки кога Orbot е поврзан</string>
-  <string name="pref_use_persistent_notifications_title">Известувања секогаш вклучени</string>
-  <string name="pref_use_expanded_notifications">Прикажи проширено известување со излезната земја и ИП на Tor</string>
-  <string name="pref_use_expanded_notifications_title">Прошири известувања</string>
-  <string name="notification_using_bridges">Вклучени мостови!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Јазик</string>
-  <string name="set_locale_summary">Избери локални поставки и јазик за Orbot</string>
-  <string name="wizard_locale_title">Избери јазик</string>
-  <string name="wizard_locale_msg">Остави го стандардниот или промени го постоечкиот јазик</string>
-  <string name="powered_by">Овозможено од Tor</string>
-  <string name="btn_save_settings">Сочувај поставки</string>
-  <string name="no_internet_connection_tor">Нема интернет-врска; Tor е во мирување...</string>
-  <string name="bandwidth_">Проток:</string>
-  <string name="down">долу</string>
-  <string name="up">горе</string>
-  <string name="pref_disable_network_title">Нема Auto-Sleep на мрежата</string>
-  <string name="pref_disable_network_summary">Стави го Тор на sleep кога интернетот не е достапен</string>
-  <string name="newnym">Се префрливте на нов идентитет на Tor!</string>
-  <string name="menu_use_chatsecure">Користи ChatSecure</string>
-  <string name="permission_manage_tor_label">Управувај со Tor</string>
-  <string name="permission_manage_tor_description">Дозволи оваа апликација да го управува со сервисот на Tor</string>
-  <string name="install_apps_">Инсталирај апликации?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Нема мрежно поврзување. Ставете го Тор на режимот на спиење...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Мрежното поврзување е добро. Го буди Tor...</string>
-  <string name="updating_settings_in_tor_service">ажурирање на поставките во сервисот Tor </string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Порта на која Тор и\' го нуди својот SOCKS-прокси (стандардно: 9050 или 0 за да се исклучи)</string>
-  <string name="pref_socks_dialog">Kонфигурирање на портата за SOCKS</string>
-  <string name="pref_transport_title">Tor TransProxy порта</string>
-  <string name="pref_transport_summary">Порта на која Tor и го нуди својот транспарентен прокси (стандардно: 9040 или 0 за да се исклучи)</string>
-  <string name="pref_transport_dialog">Kонфигурирање на портата за TransProxy</string>
-  <string name="pref_dnsport_title">DNS-порта за Tor </string>
-  <string name="pref_dnsport_summary">Порта на која Tor го нуди DNS (стандардно: 5400 или 0 за да се исклучи)</string>
-  <string name="pref_dnsport_dialog">конфигурирање на DNS-портата </string>
-  <string name="pref_torrc_title">Произволно конфигурирање на torrc</string>
-  <string name="pref_torrc_summary">САМО ЗА ЕКСПЕРТИ: внесете директни команди за конфигурирање на torrc</string>
-  <string name="pref_torrc_dialog">Произволен torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech апликација за документирање на човековите права</string>
-  <string name="your_tor_public_ips_">Вашата јавна ИП за Tor</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Ве молиме исклучете ја оваа апликација во Android->Settings->Apps ако имате проблем со Orbot:</string>
-  <string name="app_conflict">Конфликт со апликацијата</string>
-  <string name="pref_transproxy_refresh_title">Автоматско освежување на Transproxy </string>
-  <string name="pref_transproxy_refresh_summary">Примени ги повторно правилата за TransProxy кога се менува состојбата на мрежата</string>
-  <string name="pref_transproxy_flush_title">ПРИСИЛНО ОТСТРАНУВАЊЕ на Transproxy </string>
-  <string name="pref_transproxy_flush_summary">Допрете овде за да се избришат сите transproxy правила на мрежата СЕГА </string>
-  <string name="transparent_proxy_rules_flushed_">Избришани транспарентни прокси правила</string>
-  <string name="you_do_not_have_root_access_enabled">Немате вклучено пристап до корен</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Може би ќе треба да се стопира и стартува Orbot за да бидат овозможени промените во поставките.</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Ажурирани мостови</string>
-  <string name="restart_orbot_to_use_this_bridge_">Ве молиме рестартирајте го Orbot за да се овозможат промените</string>
-  <string name="menu_qr">QR-кодови</string>
-  <string name="bridge_mode">Режим на работа на мостот</string>
-  <string name="get_bridges_email">Е-пошта</string>
-  <string name="get_bridges_web">Веб</string>
-  <string name="activate">Активирај</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Можете да ги овозможите сите апликации на вашиот уред да работат низ мрежата Tor користејќи VPN-функција на Андроид.\n\n*ВНИМАНИЕ* нова, експериментална функција и во некои случаи нема да стартува автоматски, или може да се стопира. Не треба да се користи за анонимност, и САМО да се користи за минување низ заштитни ѕидови и филтри.</string>
-  <string name="send_email">Испрати е-пошта</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Aдреса на мостови можете да добивате преку е-пошта, веб или со скенирање на QR код. Изберете подолу \'Е-пошта\' или \'Web\', за да побарате адреса за мостот. \n\nОткако ќе ја добиете адресата, копирајте го & и залепете го во делот \"Мостови\" во подесувањето на Orbot и рестартирајте.</string>
-  <string name="standard_browser">Стандарден прелистувач</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">ЗАБЕЛЕШКА: Само стандардните мостови на Tor функционираат на уредите Intel X86/ATOM</string>
-</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-ml/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-mn/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-mr-rIN/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 4b1355c..0000000
--- a/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">mula dan henti Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot telah dimulakan..</string>
-  <string name="status_activated">Bersambung ke rangkaian Tor</string>
-  <string name="status_disabled">\"Orbot telah dinyah-aktifkan</string>
-  <string name="tor_process_starting">Memulakan klien Tor..</string>
-  <string name="tor_process_complete">selesai.</string>
-  <string name="tor_process_waiting">menunggu.</string>
-  <string name="not_anonymous_yet">AMARAN: Trafik anda tidak anonymous lagi! Sila tetapkan aplikasi anda untuk menggunakan proxy HTTP 127.0.0.1:8118 atau proxy SOCKS4A atau SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Rumah</string>
-  <string name="menu_browse">Carian</string>
-  <string name="menu_settings">Tetapan</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Bantuan</string>
-  <string name="menu_start">Mula</string>
-  <string name="menu_stop">Henti</string>
-  <string name="menu_about">Tentang</string>
-  <string name="main_layout_download">Muat turun</string>
-  <string name="main_layout_upload">Muat naik</string>
-  <string name="button_help">Bantuan</string>
-  <string name="button_close">Tutup</string>
-  <string name="button_about">Tentang</string>
-  <string name="button_clear_log">Padam Log</string>
-  <string name="menu_verify">Semak</string>
-  <string name="menu_exit">Keluar</string>
-  <string name="press_to_start">- Tekan lama untuk mulakan - </string>
-  <string name="pref_trans_proxy_group">Proxy Telus (Memerlukan akses Root)</string>
-  <string name="pref_trans_proxy_title">Proxy Telus</string>
-  <string name="pref_trans_proxy_summary">Tetapan Automatik Tor pada Apps</string>
-  <string name="pref_transparent_all_title">Tor segalanya</string>
-  <string name="pref_transparent_all_summary">Trafik proxy untuk semua aplikasi yang melalui Tor</string>
-  <string name="pref_transparent_port_fallback_title">Port proxy undur</string>
-  <string name="pref_transparent_port_fallback_summary">AMARAN: memintasi port biasa (80, 443, dll). * CUMA GUNA * jika mod \'Semua\' atau \'App\' idak berfungsi.</string>
-  <string name="pref_transparent_port_title">Senarai Port</string>
-  <string name="pref_transparent_port_summary">Senarai port untuk proxy. *GUNA HANYA* jika mod \'Semua\' atau \'App\' tidak berfungsi</string>
-  <string name="pref_transparent_port_dialog">Masukkan port untuk proxy</string>
-  <string name="pref_has_root">Minta Akses Root</string>
-  <string name="pref_has_root_summary">Minta akses root untuk proxy telus</string>
-  <string name="status_install_success">Tor berjaya dipasang!</string>
-  <string name="status_install_fail">Fail Tor gagal dipasang. Sila semak log dan maklumkan kepada tor-assistants at torproject.org</string>
-  <string name="title_error">Ralat Aplikasi</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Tentang Orbot</string>
-  <string name="btn_next">Seterusnya</string>
-  <string name="btn_back">Kembali</string>
-  <string name="btn_finish">Tamat</string>
-  <string name="btn_okay">Okay</string>
-  <string name="btn_cancel">Batal</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Maklumat Orbot</string>
-  <string name="wizard_permissions_root">Kebenaran disahkan</string>
-  <string name="wizard_permissions_stock">Kebenaran Orbot</string>
-  <string name="wizard_premissions_msg_root">Bagus! Kami mendapati anda ada akses root yang dibenarkan untuk Orbot. Kami akan gunakan kuasa ini dengan bijak.</string>
-  <string name="wizard_permissions_msg_stock">Walaupun ia tidak diperlukan, Orbot boleh menjadi alat yang berguna jika peranti anda mempunyai akses root. Guna butang di bawah untuk memberi Orbot superpower!</string>
-  <string name="wizard_permissions_no_root">Jika anda tidak mempunyai akses root atau tidak tahu mengenai ini, cuma pastikan anda menggunakan aplikasi yang boleh digunakan dengan Orbot.</string>
-  <string name="wizard_permissions_consent">Saya faham dan mahu teruskan tanpa Superuser</string>
-  <string name="wizard_permission_enable_root">Beri akses Root pada Orbot</string>
-  <string name="wizard_configure">Konfigurasi Torification</string>
-  <string name="wizard_configure_msg">Orbot memberi anda pilihan untuk menghala semua trafik aplikasi melalui Tor ATAU untuk memilih aplikasi untuk digunakan secara individual.</string>
-  <string name="wizard_configure_all">Proxy Semua Aplikasi Melalui Tor</string>
-  <string name="wizard_configure_select_apps">Pilih Aplikasi Untuk Tor</string>
-  <string name="wizard_tips_tricks">Aplikasi Yang Dibenar Menggunakan Orbot</string>
-  <string name="wizard_tips_msg">Aplikasi di bawah dibangunkan untuk digunakan bersama Orbot. Klik setiap butang untuk pasang sekarang, atau anda boleh cari nanti di Android Market.</string>
-  <string name="wizard_tips_proxy">Tetapan Proksi - Belajar bagaimana untuk mengkonfigurasi aplikasi untuk bekerja dengan Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo Enjin Carian</string>
-  <string name="wizard_tips_twitter">Tetapkan proxy twitter kepada hos \"localhost\" dan pada port 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Tetapan proxy</string>
-  <string name="wizard_final">Orbot sudah sedia!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Ini akan membuka pelayar web anda untuk https://check.torproject.org untuk melihat jika Orbot mungkin ditetapkan dan anda disambungkan kepada Tor.</string>
-  <string name="pref_hs_group">Perkhidmatan tersembunyi</string>
-  <string name="pref_general_group">Umum</string>
-  <string name="pref_start_boot_title">Mulakan Orbot semasa Boot</string>
-  <string name="pref_start_boot_summary">Mula Orbot secara automatik dan sambung Tor ketika peranti Android boot</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Amaran</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">kebenaran</string>
-  <string name="wizard_permissions_root_msg1">Anda juga boleh memberikan akses Orbot \'SuperUser\' untuk membolehkan ciri-ciri yang maju, seperti Proxying Telus.</string>
-  <string name="wizard_permissions_root_msg2">Jika anda tidak mahu berbuat demikian, sila pastikan untuk menggunakan aplikasi yang dibuat untuk bekerjasama dengan Orbot</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Aplikasi yang membenarkan Orbot</string>
-  <string name="wizard_tips_play">Cari semua projek Guardian di Google play</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Proxy Telus</string>
-  <string name="wizard_transproxy_msg">Ini membolehkan aplikasi anda secara automatik melalui rangkaian Tor tanpa apa apa konfigurasi</string>
-  <string name="wizard_transproxy_hint">(Tanda kotak ini jika anda belen)</string>
-  <string name="wizard_transproxy_none">Tiada</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Membolehkan Proxying Telus Tor untuk Wifi dan USB Devices terikat (memerlukan restart)</string>
-  <string name="button_grant_superuser">Minta Akses Superuser</string>
-  <string name="pref_select_apps">Pilih Aplikasi</string>
-  <string name="pref_select_apps_summary">Pilih Aplikasi untuk dihalakan melalui Tor</string>
-  <string name="pref_node_configuration">Konfigurasi Nod</string>
-  <string name="pref_node_configuration_summary">Ini ialah tetapan lanjutan yang boleh mengurangkan kadar anonymity anda</string>
-  <string name="pref_entrance_node">Nod Kemasukan</string>
-  <string name="pref_entrance_node_summary">Cap jari, nama samaran, negara, dan alamat untuk lompatan pertama</string>
-  <string name="pref_entrance_node_dialog">Masukkan Nod Kemasukan</string>
-  <string name="pref_proxy_title">Laluan keluar jaringan proxy (tambahan)</string>
-  <string name="pref_proxy_type_title">Jenis Proxy</string>
-  <string name="pref_proxy_type_summary">Protokol untuk digunakan pada pelayan proxy: HTTP,HTTPS,Socks4,Socks5</string>
-  <string name="pref_proxy_type_dialog">Masukkan Jenis Proxy</string>
-  <string name="pref_proxy_host_title">Hos Proxy</string>
-  <string name="pref_proxy_host_summary">Nama hos pelayan proxy</string>
-  <string name="pref_proxy_host_dialog">Masukkan Hos Proxy</string>
-  <string name="pref_proxy_port_title">Port Proxy</string>
-  <string name="pref_proxy_port_summary">Port pelayan proxy</string>
-  <string name="pref_proxy_port_dialog">Masukkan port Proxy</string>
-  <string name="pref_proxy_username_title">Laluan keluar kata nama proxy</string>
-  <string name="pref_proxy_username_summary">Kata nama proxy (tambahan)</string>
-  <string name="pref_proxy_username_dialog">Masukkan kata nama proxy</string>
-  <string name="pref_proxy_password_title">Laluan keluar kata laluan proxy</string>
-  <string name="pref_proxy_password_summary">Kata laluan proxy (tambahan)</string>
-  <string name="pref_proxy_password_dialog">Masukkan kata laluan proxy</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Tetapkan proxy telus secara keseluruhan</string>
-  <string name="setting_up_app_based_transparent_proxying_">Tetapkan proxy telus berdasarkan aplikasi</string>
-  <string name="transparent_proxying_enabled">Proxy telus dibolehkan</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy dibolehkan untuk Tethering!</string>
-  <string name="warning_error_starting_transparent_proxying_">AMARAN: ralat semasa memulakan proxy telus!</string>
-  <string name="transproxy_rules_cleared">Peraturan TransProxy dipadam</string>
-  <string name="couldn_t_start_tor_process_">Tidak boleh memulakan proses Tor:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Menetap proxy telus berdasarkan port..</string>
-  <string name="bridge_error">Ralat jambatan</string>
-  <string name="bridge_requires_ip">Untuk menggunakan ciri jambatan, anda mesti masukkan sekurang-kurangnya satu alamat IP jambatan.</string>
-  <string name="send_email_for_bridges">Hantar e-mel kepada bridges at torproject.org dengan garisan \"jambatan\" dengan sendirinya dalam badan mel dari akaun gmail.</string>
-  <string name="error">Ralat</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Tetapan ReachableAddresses anda menyebabkan pengecualian!</string>
-  <string name="your_relay_settings_caused_an_exception_">Tetapan relay anda menyebabkan pengecualian!</string>
-  <string name="exit_nodes">Keluar Nod</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Cap jari, nama samaran, negara, dan alamat untuk lompatan terakhir</string>
-  <string name="enter_exit_nodes">Masukkan Nod Keluar</string>
-  <string name="exclude_nodes">Keluarkan Nod</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Cap jari, nama samaran, negara dan alamat untuk dikeluarkan</string>
-  <string name="enter_exclude_nodes">Masukkan Nod Keluar</string>
-  <string name="strict_nodes">Nod Ketat</string>
-  <string name="use_only_these_specified_nodes">Guna *hanya* nod-nod ini</string>
-  <string name="bridges">Jambatan</string>
-  <string name="use_bridges">Guna Jambatan</string>
-  <string name="bridges_obfuscated">Jambatan Keliru</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Membolehkan nod pintu masuk ganti ke Rangkaian Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Benarkan jika konfigurasi jambatan adalah jambatan keliru</string>
-  <string name="ip_address_and_port_of_bridges">Alamat IP dan pelabuhan jambatan</string>
-  <string name="enter_bridge_addresses">Masukkan Alamat Jambatan</string>
-  <string name="relays">Relays</string>
-  <string name="relaying">Relaying</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Membolehkan peranti anda untuk menjadi geganti bukan keluar</string>
-  <string name="relay_port">Relay Port</string>
-  <string name="listening_port_for_your_tor_relay">Mendapatkan port untuk tetapan relay Tor anda</string>
-  <string name="enter_or_port">Masukkan port OR</string>
-  <string name="relay_nickname">Nama samaran relay</string>
-  <string name="the_nickname_for_your_tor_relay">Nama samaran ini untuk relay Tor anda</string>
-  <string name="enter_a_custom_relay_nickname">Masukkan nama samaran gantian untuk relay</string>
-  <string name="reachable_addresses">Alamat yang dapat dicapai</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Jalan sebagai klien dibelakang firewall dengan peraturan ketat</string>
-  <string name="reachable_ports">Port yang dapat dicapai</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Port yang dapat dicapai dibelakang firewall dengan kawalan ketat</string>
-  <string name="enter_ports">Masukkan port</string>
-  <string name="enable_hidden_services">Benarkan Servis Tersembunyi</string>
-  <string name="run_servers_accessible_via_the_tor_network">Jalankan pelayan boleh diakses melalui rangkaian Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">Masuk port localhost untuk servis tersembunyi</string>
-  <string name="hidden_service_ports">Port servis tersembunyi</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Nama beralamat untuk servis tersembunyi anda (dijana secara automatik)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">benarkan log debug pada output (mesti guna adb atau aLogCat untuk lihat)</string>
-  <string name="project_home">Rumah Projek(s):</string>
-  <string name="the_tor_license">Lesen Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">3rd-Party-Software: </string>
-  <string name="hidden_service_request">Satu aplikasi mahu membuka port tersembunyi %S pada rangkaian Tor. Ia selamat jika anda percaya pada aplikasi itu.</string>
-  <string name="found_existing_tor_process">Proses Tor sedia ada ditemui..</string>
-  <string name="something_bad_happened">Sesuatu yang buruk berlaku. Semak log.</string>
-  <string name="hidden_service_on">port tersembunyi pada:</string>
-  <string name="unable_to_read_hidden_service_name">tidak dapat membaca nama servis tersembunyi</string>
-  <string name="unable_to_start_tor">Tidak dapat memulakan Tor:</string>
-  <string name="pref_use_sys_iptables_title">Guna default Iptables</string>
-  <string name="pref_use_sys_iptables_summary">Guna binari built-in iptables daripada yang didatangkan bundle dengan Orbot</string>
-  <string name="error_installing_binares">Tor binari tidak boleh dipasang atau dinaiktaraf</string>
-  <string name="pref_use_persistent_notifications">Sentiasa biar ikon pada toolbar apabila Orbot bersambung</string>
-  <string name="pref_use_persistent_notifications_title">Sentiasa On Notifikasi</string>
-  <string name="notification_using_bridges">Jambatan dibenarkan!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Pilihan tempatan dan bahasa untuk Orbot</string>
-  <string name="wizard_locale_title">Pilih Bahasa</string>
-  <string name="wizard_locale_msg">Biar default atau ubah ke bahasa sekarang</string>
-  <string name="btn_save_settings">Simpan Tetapan</string>
-</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
deleted file mode 100644
index 32f8aa7..0000000
--- a/res/values-ms/strings.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">mula dan henti Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot telah dimulakan..</string>
-  <string name="status_activated">Bersambung ke rangkaian Tor</string>
-  <string name="status_disabled">\"Orbot telah dinyah-aktifkan</string>
-  <string name="status_shutting_down">Orbot sedang ditutup</string>
-  <string name="tor_process_starting">Memulakan klien Tor..</string>
-  <string name="tor_process_complete">selesai.</string>
-  <string name="tor_process_waiting">menunggu.</string>
-  <string name="not_anonymous_yet">AMARAN: Trafik anda tidak anonymous lagi! Sila tetapkan aplikasi anda untuk menggunakan proxy HTTP 127.0.0.1:8118 atau proxy SOCKS4A atau SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Rumah</string>
-  <string name="menu_browse">Carian</string>
-  <string name="menu_settings">Tetapan</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Bantuan</string>
-  <string name="menu_apps">Apps</string>
-  <string name="menu_start">Mula</string>
-  <string name="menu_stop">Henti</string>
-  <string name="menu_about">Tentang</string>
-  <string name="button_help">Bantuan</string>
-  <string name="button_close">Tutup</string>
-  <string name="button_about">Tentang</string>
-  <string name="button_clear_log">Padam Log</string>
-  <string name="menu_verify">Semak</string>
-  <string name="menu_exit">Keluar</string>
-  <string name="press_to_start">- Tekan lama untuk mulakan - </string>
-  <string name="pref_trans_proxy_group">Proxy Telus (Memerlukan akses Root)</string>
-  <string name="pref_trans_proxy_title">Proxy Telus</string>
-  <string name="pref_trans_proxy_summary">Tetapan Automatik Tor pada Apps</string>
-  <string name="pref_transparent_all_title">Tor segalanya</string>
-  <string name="pref_transparent_all_summary">Trafik proxy untuk semua aplikasi yang melalui Tor</string>
-  <string name="pref_transparent_port_fallback_title">Port proxy undur</string>
-  <string name="pref_transparent_port_fallback_summary">AMARAN: memintasi port biasa (80, 443, dll). * CUMA GUNA * jika mod \'Semua\' atau \'App\' idak berfungsi.</string>
-  <string name="pref_transparent_port_title">Senarai Port</string>
-  <string name="pref_transparent_port_summary">Senarai port untuk proxy. *GUNA HANYA* jika mod \'Semua\' atau \'App\' tidak berfungsi</string>
-  <string name="pref_transparent_port_dialog">Masukkan port untuk proxy</string>
-  <string name="pref_has_root">Minta Akses Root</string>
-  <string name="pref_has_root_summary">Minta akses root untuk proxy telus</string>
-  <string name="status_install_success">Tor berjaya dipasang!</string>
-  <string name="status_install_fail">Fail Tor gagal dipasang. Sila semak log dan maklumkan kepada tor-assistants at torproject.org</string>
-  <string name="title_error">Ralat Aplikasi</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Tentang Orbot</string>
-  <string name="btn_next">Seterusnya</string>
-  <string name="btn_back">Kembali</string>
-  <string name="btn_finish">Tamat</string>
-  <string name="btn_okay">Okay</string>
-  <string name="btn_cancel">Batal</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Maklumat Orbot</string>
-  <string name="wizard_details_msg">Orbot merupakan aplikasi sumber terbuka yang mengandungi Tor, LibEvent dan Privoxy. Ia menyediakan seorang proksi HTTP tempatan (8118) dan proksi SOCKS (9050) ke dalam rangkaian Tor. Orbot juga mempunyai keupayaan, pada peranti berakar umbi, untuk menghantar semua trafik internet melalui Tor.</string>
-  <string name="wizard_permissions_root">Kebenaran disahkan</string>
-  <string name="wizard_permissions_stock">Kebenaran Orbot</string>
-  <string name="wizard_premissions_msg_root">Bagus! Kami mendapati anda ada akses root yang dibenarkan untuk Orbot. Kami akan gunakan kuasa ini dengan bijak.</string>
-  <string name="wizard_permissions_msg_stock">Walaupun ia tidak diperlukan, Orbot boleh menjadi alat yang berguna jika peranti anda mempunyai akses root. Guna butang di bawah untuk memberi Orbot superpower!</string>
-  <string name="wizard_permissions_no_root">Jika anda tidak mempunyai akses root atau tidak tahu mengenai ini, cuma pastikan anda menggunakan aplikasi yang boleh digunakan dengan Orbot.</string>
-  <string name="wizard_permissions_consent">Saya faham dan mahu teruskan tanpa Superuser</string>
-  <string name="wizard_permission_enable_root">Beri akses Root pada Orbot</string>
-  <string name="wizard_configure">Konfigurasi Torification</string>
-  <string name="wizard_configure_msg">Orbot memberi anda pilihan untuk menghala semua trafik aplikasi melalui Tor ATAU untuk memilih aplikasi untuk digunakan secara individual.</string>
-  <string name="wizard_configure_all">Proxy Semua Aplikasi Melalui Tor</string>
-  <string name="wizard_configure_select_apps">Pilih Aplikasi Untuk Tor</string>
-  <string name="wizard_tips_tricks">Aplikasi Yang Dibenar Menggunakan Orbot</string>
-  <string name="wizard_tips_msg">Aplikasi di bawah dibangunkan untuk digunakan bersama Orbot. Klik setiap butang untuk pasang sekarang, atau anda boleh cari nanti di Android Market.</string>
-  <string name="wizard_tips_otrchat">Gibberbot - Klien mesej ringkas selamat untuk Android</string>
-  <string name="wizard_tips_proxy">Tetapan Proksi - Belajar bagaimana untuk mengkonfigurasi aplikasi untuk bekerja dengan Orbot</string>
-  <string name="wizard_proxy_help_info">Tetapan proxy</string>
-  <string name="wizard_proxy_help_msg">Jika aplikasi Android yang anda gunakan boleh menyokong penggunaan proksi HTTP atau SOCKS, kemudian anda boleh menatarajah untuk menyambung kepada Orbot dan menggunakan Tor. ⏎\n⏎\n⏎\n    Tetapan tuan rumah adalah 127.0.0.1 atau \"localhost\". Untuk HTTP, tetapan pelabuhan 8118. Untuk SOCKS, proksi adalah 9050. Anda harus menggunakan SOCKS4A atau socks5 jika boleh. ⏎\n    ⏎\n⏎\n⏎\n    Anda boleh mengetahui lebih lanjut tentang proxying pada Android melalui FAQ di: http://tinyurl.com/proxyandroid ⏎</string>
-  <string name="wizard_final">Orbot sudah sedia!</string>
-  <string name="wizard_final_msg">Beratus-ratus ribu orang di seluruh dunia menggunakan Tor untuk pelbagai sebab-sebab yang luas. ⏎\n⏎\nWartawan dan blogger, pembela hak asasi manusia, pegawai penguatkuasa undang-undang, tentera, perbadanan, rakyat rejim menindas, dan warganegara sahaja, biasa … dan kini anda bersedia untuk, juga!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Anda telah berjaya disambungkan kepada rangkaian Tor - tetapi ini bukanlah bermakna peranti anda adalah selamat. Anda boleh menggunakan pilihan \'Check\' daripada menu untuk menguji pelayar anda. ⏎\n⏎\nMelawat kami pada https://guardianproject.info/apps/orbot atau menghantar e-mel ke help at guardianproject.info untuk mengetahui lebih lanjut.</string>
-  <string name="tor_check">Ini akan membuka pelayar web anda untuk https://check.torproject.org untuk melihat jika Orbot mungkin ditetapkan dan anda disambungkan kepada Tor.</string>
-  <string name="pref_hs_group">Perkhidmatan tersembunyi</string>
-  <string name="pref_general_group">Umum</string>
-  <string name="pref_start_boot_title">Mulakan Orbot semasa Boot</string>
-  <string name="pref_start_boot_summary">Mula Orbot secara automatik dan sambung Tor ketika peranti Android boot</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot membawa Tor untuk Android! ⏎\n⏎\nTor membantu anda mempertahankan terhadap penapisan kandungan, analisis dan pengawasan trafik rangkaian yang mengancam privasi, maklumat sulit dan hubungan peribadi. ⏎\n⏎\nWizard ini akan membantu anda mengkonfigurasi Orbot dan Tor pada peranti anda.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Amaran</string>
-  <string name="wizard_warning_msg">Hanya memasang Orbot tidak secara automatik akan anonymize trafik mudah alih anda. ⏎\n⏎\nAnda betul mesti menatarajah Orbot, peranti anda dan aplikasi lain untuk berjaya menggunakan Tor.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">kebenaran</string>
-  <string name="wizard_permissions_root_msg1">Anda juga boleh memberikan akses Orbot \'SuperUser\' untuk membolehkan ciri-ciri yang maju, seperti Proxying Telus.</string>
-  <string name="wizard_permissions_root_msg2">Jika anda tidak mahu berbuat demikian, sila pastikan untuk menggunakan aplikasi yang dibuat untuk bekerjasama dengan Orbot</string>
-  <string name="wizard_permissions_no_root_msg">Peranti anda tidak perlu berakar umbi atau menyediakan \'SuperUser\' akses. ⏎\n⏎\nDalam untuk anda mendapat manfaat daripada Tor, anda akan perlu menggunakan aplikasi yang dibina untuk bekerja dengan Orbot, atau yang HTTP sokongan atau tetapan proksi SOCKS. ⏎\n</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Aplikasi yang membenarkan Orbot</string>
-  <string name="wizard_tips_gibberbot">Gibberbot: sembang app selamat dengan Penyulitan Off-the-Rekod</string>
-  <string name="wizard_tips_orweb">Orweb: Privasi ditambah penyemak imbas yang bekerja melalui Tor</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Proxy Telus</string>
-  <string name="wizard_transproxy_msg">Ini membolehkan aplikasi anda secara automatik melalui rangkaian Tor tanpa apa apa konfigurasi</string>
-  <string name="wizard_transproxy_hint">(Tanda kotak ini jika anda belen)</string>
-  <string name="wizard_transproxy_none">Tiada</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Membolehkan Proxying Telus Tor untuk Wifi dan USB Devices terikat (memerlukan restart)</string>
-  <string name="button_grant_superuser">Minta Akses Superuser</string>
-  <string name="pref_select_apps">Pilih Aplikasi</string>
-  <string name="pref_select_apps_summary">Pilih Aplikasi untuk dihalakan melalui Tor</string>
-  <string name="pref_node_configuration">Konfigurasi Nod</string>
-  <string name="pref_node_configuration_summary">Ini ialah tetapan lanjutan yang boleh mengurangkan kadar anonymity anda</string>
-  <string name="pref_entrance_node">Nod Kemasukan</string>
-  <string name="pref_entrance_node_summary">Cap jari, nama samaran, negara, dan alamat untuk lompatan pertama</string>
-  <string name="pref_entrance_node_dialog">Masukkan Nod Kemasukan</string>
-  <string name="pref_proxy_type_title">Jenis Proxy</string>
-  <string name="pref_proxy_type_summary">Protokol untuk digunakan pada pelayan proxy: HTTP,HTTPS,Socks4,Socks5</string>
-  <string name="pref_proxy_type_dialog">Masukkan Jenis Proxy</string>
-  <string name="pref_proxy_host_title">Hos Proxy</string>
-  <string name="pref_proxy_host_summary">Nama hos pelayan proxy</string>
-  <string name="pref_proxy_host_dialog">Masukkan Hos Proxy</string>
-  <string name="pref_proxy_port_title">Port Proxy</string>
-  <string name="pref_proxy_port_summary">Port pelayan proxy</string>
-  <string name="pref_proxy_port_dialog">Masukkan port Proxy</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Tetapkan proxy telus secara keseluruhan</string>
-  <string name="setting_up_app_based_transparent_proxying_">Tetapkan proxy telus berdasarkan aplikasi</string>
-  <string name="transparent_proxying_enabled">Proxy telus dibolehkan</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy dibolehkan untuk Tethering!</string>
-  <string name="warning_error_starting_transparent_proxying_">AMARAN: ralat semasa memulakan proxy telus!</string>
-  <string name="transproxy_rules_cleared">Peraturan TransProxy dipadam</string>
-  <string name="couldn_t_start_tor_process_">Tidak boleh memulakan proses Tor:</string>
-  <string name="privoxy_is_running_on_port_">Privoxy sedang berjalan pada port:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Menetap proxy telus berdasarkan port..</string>
-  <string name="bridge_error">Ralat jambatan</string>
-  <string name="bridge_requires_ip">Untuk menggunakan ciri jambatan, anda mesti masukkan sekurang-kurangnya satu alamat IP jambatan.</string>
-  <string name="send_email_for_bridges">Hantar e-mel kepada bridges at torproject.org dengan garisan \"jambatan\" dengan sendirinya dalam badan mel dari akaun gmail.</string>
-  <string name="error">Ralat</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Tetapan ReachableAddresses anda menyebabkan pengecualian!</string>
-  <string name="your_relay_settings_caused_an_exception_">Tetapan relay anda menyebabkan pengecualian!</string>
-  <string name="exit_nodes">Keluar Nod</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Cap jari, nama samaran, negara, dan alamat untuk lompatan terakhir</string>
-  <string name="enter_exit_nodes">Masukkan Nod Keluar</string>
-  <string name="exclude_nodes">Keluarkan Nod</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Cap jari, nama samaran, negara dan alamat untuk dikeluarkan</string>
-  <string name="enter_exclude_nodes">Masukkan Nod Keluar</string>
-  <string name="strict_nodes">Nod Ketat</string>
-  <string name="use_only_these_specified_nodes">Guna *hanya* nod-nod ini</string>
-  <string name="bridges">Jambatan</string>
-  <string name="use_bridges">Guna Jambatan</string>
-  <string name="bridges_obfuscated">Jambatan Keliru</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Membolehkan nod pintu masuk ganti ke Rangkaian Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Benarkan jika konfigurasi jambatan adalah jambatan keliru</string>
-  <string name="ip_address_and_port_of_bridges">Alamat IP dan pelabuhan jambatan</string>
-  <string name="enter_bridge_addresses">Masukkan Alamat Jambatan</string>
-  <string name="relays">Relays</string>
-  <string name="relaying">Relaying</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Membolehkan peranti anda untuk menjadi geganti bukan keluar</string>
-  <string name="relay_port">Relay Port</string>
-  <string name="listening_port_for_your_tor_relay">Mendapatkan port untuk tetapan relay Tor anda</string>
-  <string name="enter_or_port">Masukkan port OR</string>
-  <string name="relay_nickname">Nama samaran relay</string>
-  <string name="the_nickname_for_your_tor_relay">Nama samaran ini untuk relay Tor anda</string>
-  <string name="enter_a_custom_relay_nickname">Masukkan nama samaran gantian untuk relay</string>
-  <string name="reachable_addresses">Alamat yang dapat dicapai</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Jalan sebagai klien dibelakang firewall dengan peraturan ketat</string>
-  <string name="reachable_ports">Port yang dapat dicapai</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Port yang dapat dicapai dibelakang firewall dengan kawalan ketat</string>
-  <string name="enter_ports">Masukkan port</string>
-  <string name="enable_hidden_services">Benarkan Servis Tersembunyi</string>
-  <string name="run_servers_accessible_via_the_tor_network">Jalankan pelayan boleh diakses melalui rangkaian Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">Masuk port localhost untuk servis tersembunyi</string>
-  <string name="hidden_service_ports">Port servis tersembunyi</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Nama beralamat untuk servis tersembunyi anda (dijana secara automatik)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">benarkan log debug pada output (mesti guna adb atau aLogCat untuk lihat)</string>
-  <string name="project_home">Rumah Projek(s):</string>
-  <string name="project_urls">https://www.torproject.org/docs/android⏎ https://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Lesen Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">3rd-Party-Software: </string>
-  <string name="hidden_service_request">Satu aplikasi mahu membuka port tersembunyi %S pada rangkaian Tor. Ia selamat jika anda percaya pada aplikasi itu.</string>
-  <string name="found_existing_tor_process">Proses Tor sedia ada ditemui..</string>
-  <string name="something_bad_happened">Sesuatu yang buruk berlaku. Semak log.</string>
-  <string name="hidden_service_on">port tersembunyi pada:</string>
-  <string name="unable_to_read_hidden_service_name">tidak dapat membaca nama servis tersembunyi</string>
-  <string name="unable_to_start_tor">Tidak dapat memulakan Tor:</string>
-  <string name="pref_use_sys_iptables_title">Guna default Iptables</string>
-  <string name="pref_use_sys_iptables_summary">Guna binari built-in iptables daripada yang didatangkan bundle dengan Orbot</string>
-  <string name="error_installing_binares">Tor binari tidak boleh dipasang atau dinaiktaraf</string>
-  <string name="pref_use_persistent_notifications">Sentiasa biar ikon pada toolbar apabila Orbot bersambung</string>
-  <string name="pref_use_persistent_notifications_title">Sentiasa On Notifikasi</string>
-  <string name="notification_using_bridges">Jambatan dibenarkan!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Tetapan Tempatan</string>
-  <string name="set_locale_summary">Pilihan tempatan dan bahasa untuk Orbot</string>
-  <string name="wizard_locale_title">Pilih Bahasa</string>
-  <string name="wizard_locale_msg">Biar default atau ubah ke bahasa sekarang</string>
-  <string name="powered_by">Dijana oleh Projek Tor</string>
-  <string name="btn_save_settings">Simpan Tetapan</string>
-  <string name="menu_vpn">Apps</string>
-</resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
deleted file mode 100644
index c7c4e75..0000000
--- a/res/values-my/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_home">ပင်မ စာမျက်နှာ</string>
-  <string name="menu_browse">ဖွင့်ကြည့်ရန်</string>
-  <string name="menu_settings">ချိန်ညှိချက်များ</string>
-  <string name="menu_info">အကူအညီ</string>
-  <string name="menu_about">အကြောင်း</string>
-  <string name="button_help">အကူအညီ</string>
-  <string name="button_close">ပိတ်ရန်</string>
-  <string name="button_about">အကြောင်း</string>
-  <string name="menu_exit">ထွက်ရန်</string>
-  <string name="btn_back">နောက်သို့</string>
-  <string name="btn_cancel">ဖျက်သိမ်းရန်</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">ပရောက်ဇီ ချိန်ညှိချက်များ</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">ယေဘုယျ</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">သတိပေးချက်</string>
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_none">ဘာမှမရှိ</string>
-  <string name="status">အနေအထား</string>
-  <string name="error">ချို့ယွင်းချက်</string>
-  <string name="default_bridges"></string>
-  <string name="btn_save_settings">ချိန်ညှိချက်များကို သိမ်းဆည်းရန်</string>
-</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
deleted file mode 100644
index 1c0ce16..0000000
--- a/res/values-nb/strings.xml
+++ /dev/null
@@ -1,258 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot er en gratis proxy app som gjør det mulig for andre apps å bruke internett mer sikkert. Orbot bruker Tor for å kryptere din Internettrafikk, og skjuler da din trafikk ved å sende trafikken gjennom en lang rekke datamaskiner over hele verden. Tor er et gratis dataprogram, og et åpent nettverk som hjelper deg å forsvare deg mot en form for nettverksovervåking som truer din personlige frihet og privatliv, konfidensiell bedriftsvirksomhet og relasjoner, og statlig sikkerhet kjent som trafikkanalyse.</string>
-  <string name="internal_web_url">https://torproject.org</string>
-  <string name="default_web_url">https://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">start, og stopp Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot starter...</string>
-  <string name="status_activated">Koblet til Tor-nettverket</string>
-  <string name="status_disabled">Orbot er deaktivert</string>
-  <string name="tor_process_starting">Starter Tor klient...</string>
-  <string name="tor_process_complete">fullført.</string>
-  <string name="tor_process_waiting">venter.</string>
-  <string name="not_anonymous_yet">ADVARSEL: Trafikken din er enda ikke anonym! Vær vennlig og konfigurer applikasjonene dine til å bruke HTTP proxy 127.0.0.1:8118, eller SOCKS4A, eller SOCKS5 proxy 127.0.0.1:9050</string>
-  <string name="menu_home">Hjem</string>
-  <string name="menu_browse">Surfe</string>
-  <string name="menu_settings">Innstillinger</string>
-  <string name="menu_log">Logg</string>
-  <string name="menu_info">Hjelp</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Start</string>
-  <string name="menu_stop">Stopp</string>
-  <string name="menu_about">Om</string>
-  <string name="main_layout_download">Nedlast</string>
-  <string name="main_layout_upload">Last opp</string>
-  <string name="button_help">Hjelp</string>
-  <string name="button_close">Steng</string>
-  <string name="button_about">Om</string>
-  <string name="button_clear_log">Tøm logg</string>
-  <string name="menu_verify">Kontroller</string>
-  <string name="menu_exit">Avslutt</string>
-  <string name="press_to_start">- langt trykk for å starte -</string>
-  <string name="pref_trans_proxy_group">Transparent Proxying (Krever Root)</string>
-  <string name="pref_trans_proxy_title">Transparent Proxying</string>
-  <string name="pref_trans_proxy_summary">Automatisk Torifisering av applikasjoner</string>
-  <string name="pref_transparent_all_title">Tor alt</string>
-  <string name="pref_transparent_all_summary">Proxy trafikk for alle applikasjoner via Tor</string>
-  <string name="pref_transparent_port_fallback_title">Tilbakestill proxyport</string>
-  <string name="pref_transparent_port_fallback_summary">ADVARSEL: Omgår vanlige porter (80, 443, osv). *BRUKES KUN* hvis \'alle\', eller \'Applikasjon\'-modus ikke virker.</string>
-  <string name="pref_transparent_port_title">Port Liste</string>
-  <string name="pref_transparent_port_summary">Liste over porter som skal gå gjennom proxy. *BRUKES KUN* hvis \'Alle\', eller \'Applikasjon\'-modus ikke virker.</string>
-  <string name="pref_transparent_port_dialog">Angi porter som skal gå gjennom proxy</string>
-  <string name="pref_has_root">Be om Root tilgang</string>
-  <string name="pref_has_root_summary">Be om root-tilgang for transparent proxying</string>
-  <string name="status_install_success">Tor binære filer vellykket installert!</string>
-  <string name="status_install_fail">Tor-binære filer kunne ikke installeres. Vennligst sjekk loggen og varsle tor-assistants at torproject.org</string>
-  <string name="title_error">Applikasjonsfeil</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Om Orbot</string>
-  <string name="btn_next">Neste</string>
-  <string name="btn_back">Tilbake</string>
-  <string name="btn_finish">Ferdig</string>
-  <string name="btn_okay">Ok</string>
-  <string name="btn_cancel">Avbryt</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Noen Orbot detaljer</string>
-  <string name="wizard_permissions_root">Tillatelse gitt</string>
-  <string name="wizard_permissions_stock">Orbot tillatelser</string>
-  <string name="wizard_premissions_msg_root">Utmerket! Vi har oppdaget at du har root rettigheter aktivert for Orbot. Vi vil bruke denne makten med omhu.</string>
-  <string name="wizard_permissions_msg_stock">Selv om det ikke er er nødvendig, kan Orbot bli et mer kraftig verktøy hvis enheten har root-tilgang. Bruk knappen nedenfor til å innvilge Orbot superkrefter!</string>
-  <string name="wizard_permissions_no_root">Hvis du ikke har root-tilgang, eller ikke har noen anelse om hva vi snakker om, bare sørg for å bruke programmer laget for å fungere med Orbot.</string>
-  <string name="wizard_permissions_consent">Jeg forstår, og ønsker å fortsette uten superbruker</string>
-  <string name="wizard_permission_enable_root">Gi Orbot root-tilgang</string>
-  <string name="wizard_configure">Konfigurer Torification</string>
-  <string name="wizard_configure_msg">Orbot gir deg muligheten til å rute all applikasjonstrafikk gjennom Tor, ELLER å velge applikasjonene individuelt.</string>
-  <string name="wizard_configure_all">Bruk proxy for alle applikasjoner gjennom Tor</string>
-  <string name="wizard_configure_select_apps">Velg individuelle applikasjoner som skal brukes med Tor</string>
-  <string name="wizard_tips_tricks">Orbot aktiverte applikasjoner</string>
-  <string name="wizard_tips_msg">Applikasjonene nedenfor ble utviklet for å fungere med Orbot. Klikk på hver knapp for å installere nå, eller du kan finne dem senere på Google Play, på GuardianProject.info nettsiden, eller via F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Sikret lynmeldingsklient for Android</string>
-  <string name="wizard_tips_proxy">Proxy-innstillinger - Lær hvordan du konfigurerer applikasjoner til å fungere med Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo søkemotor applikasjon</string>
-  <string name="wizard_tips_twitter">Sett Twitters proxy til \"localhost\", og port 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proxyinnstillinger</string>
-  <string name="wizard_final">Orbot er klar!</string>
-  <string name="wizard_final_msg">Millioner av mennesker over hele verden bruker Tor for en rekke grunner.\n\ nJournalists og bloggere, menneskerettighetsforkjempere, politi, soldater, bedrifter, borgere i undertrykkende regimer, og bare vanlige borgere ... og nå er du klar til å , også!</string>
-  <string name="wizard_exit_at_first_screen_toast">Vennligst konfigurere Orbot før du bruker det!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Dette vil åpne nettleseren din med adressen https://check.torproject.org for å se om Orbot er korrekt konfigurert, og at du er koblet til Tor.</string>
-  <string name="pref_hs_group">Skjult Service Hosting</string>
-  <string name="pref_general_group">Generelt</string>
-  <string name="pref_start_boot_title">Start Orbot ved oppstart</string>
-  <string name="pref_start_boot_summary">Start Orbot automatisk, og koble til Tor når din Android-enhet starter opp</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot bringer Tor til Android!\n\nTor hjelper deg å forsvare seg mot innholdsfiltrering, trafikk analyse og overvåking som truer personvern, konfidensiell informasjon og personlige relasjoner. \ N \ nDenne veiviseren vil hjelpe deg med å konfigurere Orbot og Tor på enheten.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Advarsel</string>
-  <string name="wizard_warning_msg">Ganske enkelt å installere Orbot vil ikke automatisk anonymmobiltrafikk .\n\nDu må konfigurere Orbot, enheten og andre applikasjoner for å kunne bruke Tor.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Tillatelser</string>
-  <string name="wizard_permissions_root_msg1">Du kan eventuelt gi Orbot \'Superbruker\' adgang til å aktivere avanserte funksjoner, for eksempel Transparent proxy.</string>
-  <string name="wizard_permissions_root_msg2">Hvis du ikke ønsker å gjøre dette, må du sørge for å bruke applikasjoner som er laget for å fungere med Orbot.</string>
-  <string name="wizard_permissions_no_root_msg">Enheten ser ikke ut til å være forankret eller gi root eller \"superbruker\" tilgang.\n\nVennligst prøve \"apps\" modus på hovedskjermen i stedet.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot aktiverte applikasjoner</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Sikret sludreprogram med OTR-kryptering</string>
-  <string name="wizard_tips_play">Finn alle Guardian Prosjekt sine applikasjoner på Google Play</string>
-  <string name="wizard_tips_fdroid">Finn alle Guardian Project applikasjoner på F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Finn alle Guardian Project applikasjoner på https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transparent Proxying</string>
-  <string name="wizard_transproxy_msg">Dette tillater dine applikasjoner å kjøre automatisk gjennom Tor-nettverket uten noen konfigurasjon.</string>
-  <string name="wizard_transproxy_hint">(Marker denne boksen hvis du ikke har noen anelse om hva vi snakker om)</string>
-  <string name="wizard_transproxy_none">Ingen</string>
-  <string name="pref_transparent_tethering_title">Tor-deling</string>
-  <string name="pref_transparent_tethering_summary">Aktiver Tor Transparent proxyer for WiFi, og USB delte enheter (krever omstart)</string>
-  <string name="button_grant_superuser">Be om Superbruker tilgang</string>
-  <string name="pref_select_apps">Velg applikasjoner</string>
-  <string name="pref_select_apps_summary">Velg applikasjoner som skal rutes gjennom Tor</string>
-  <string name="pref_node_configuration">Node-konfigurasjon</string>
-  <string name="pref_node_configuration_summary">Dette er avanserte innstillinger som kan redusere din anonymitet</string>
-  <string name="pref_entrance_node">Inngangsnoder</string>
-  <string name="pref_entrance_node_summary">Fingeravtrykk, kallenavn, land, og adresser til det første hopp</string>
-  <string name="pref_entrance_node_dialog">Skriv inn inngangsnoder</string>
-  <string name="button_proxy_all">Mellomtjen alt</string>
-  <string name="button_proxy_none">Mellomtjen ingenting</string>
-  <string name="pref_proxy_title">Utgående nettverksproxy (Valgfritt)</string>
-  <string name="pref_proxy_type_title">Utgående proxytype</string>
-  <string name="pref_proxy_type_summary">Protokoll for proxy-server: HTTP, HTTPS, SOCKS4, SOCKS5</string>
-  <string name="pref_proxy_type_dialog">Skriv inn proxytype</string>
-  <string name="pref_proxy_host_title">Utgående proxyvert</string>
-  <string name="pref_proxy_host_summary">Proxyserver vertsnavn</string>
-  <string name="pref_proxy_host_dialog">Skriv inn proxyvert</string>
-  <string name="pref_proxy_port_title">Utgående proxyport</string>
-  <string name="pref_proxy_port_summary">Proxyserver port</string>
-  <string name="pref_proxy_port_dialog">Skriv inn proxyport</string>
-  <string name="pref_proxy_username_title">Utgående Proxy Brukernavn</string>
-  <string name="pref_proxy_username_summary">Proxy Brukernavn (valgfritt)</string>
-  <string name="pref_proxy_username_dialog">Skriv inn Proxy Brukernavn</string>
-  <string name="pref_proxy_password_title">Utgående Proxy Passord</string>
-  <string name="pref_proxy_password_summary">Proxy Passord (valgfritt)</string>
-  <string name="pref_proxy_password_dialog">Skriv inn Proxy Passord</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Konfigurerer full transparent proxying...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Konfigurerer applikasjonsbasert transparent proxying...</string>
-  <string name="transparent_proxying_enabled">Transparent proxying AKTIVERT</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy aktivert for nettdeling!</string>
-  <string name="warning_error_starting_transparent_proxying_">ADVARSEL: Feil under oppstart av transparent proxying!</string>
-  <string name="transproxy_rules_cleared">TransProxy regler fjernet</string>
-  <string name="couldn_t_start_tor_process_">Kunne ikke starte Tor prosessen:</string>
-  <string name="privoxy_is_running_on_port_">Polipo kjører på port:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Konfigurerer portbasert transparent proxying...</string>
-  <string name="bridge_error">Brofeil</string>
-  <string name="bridge_requires_ip">For å kunne bruke bro-funksjonen, må du oppgi minst én bro IP-adresse.</string>
-  <string name="send_email_for_bridges">Send en epost til bridges at torproject.org med teksten \"get bridges\" alene som eneste tekst i selve eposten fra en Gmail-konto.</string>
-  <string name="error">Feil</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Dine \"adresser som kan nås\"-innstillinger forårsaket et unntak!</string>
-  <string name="your_relay_settings_caused_an_exception_">Dine relé-innstillinger forårsaket et unntak!</string>
-  <string name="exit_nodes">Avslutt noder</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingeravtrykk, kallenavn, land og adresser for siste hopp</string>
-  <string name="enter_exit_nodes">Skriv inn utgående noder</string>
-  <string name="exclude_nodes">Ekskluder noder</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fineravtrykk, kallenavn, land og adresser som skal ekskluderes</string>
-  <string name="enter_exclude_nodes">Skriv inn ekskluderte noder</string>
-  <string name="strict_nodes">Strict noder</string>
-  <string name="use_only_these_specified_nodes">Bruk *bare* disse angitte nodene</string>
-  <string name="bridges">Broer</string>
-  <string name="use_bridges">Bruk broer</string>
-  <string name="bridges_obfuscated">Maskerte broer</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Aktiver alternative inngangsnoder til Tor-nettverket</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Aktiver hvis de konfigurerte broene er maskerte broer</string>
-  <string name="ip_address_and_port_of_bridges">IP-adresser og broporter</string>
-  <string name="enter_bridge_addresses">Skriv inn broadresser</string>
-  <string name="relays">Reléer</string>
-  <string name="relaying">Videresending</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Aktiver enheten din som et relé uten utgående trafikk</string>
-  <string name="relay_port">Relé-port</string>
-  <string name="listening_port_for_your_tor_relay">Porten Tor-reléet ditt lytter på</string>
-  <string name="enter_or_port">Skriv inn OR-port</string>
-  <string name="relay_nickname">Reléets kallenavn</string>
-  <string name="the_nickname_for_your_tor_relay">Kallenavnet på ditt Tor-relé</string>
-  <string name="enter_a_custom_relay_nickname">Skriv inn et egendefinert kallenavn på reléet</string>
-  <string name="reachable_addresses">Antreffbare adresser</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Kjør som en klient bak en brannmur med restriktive regler</string>
-  <string name="reachable_ports">Antreffbare porter</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Antreffbare porter bak en restriktiv brannmur</string>
-  <string name="enter_ports">Skriv inn porter</string>
-  <string name="enable_hidden_services">Skjult Service Hosting</string>
-  <string name="run_servers_accessible_via_the_tor_network">Tillat enhetsserveren å være tilgjengelig via Tor-nettverket</string>
-  <string name="enter_localhost_ports_for_hidden_services">Skriv inn localhost porter for skjulte tjenester</string>
-  <string name="hidden_service_ports">Skjulte tjenesteporter</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Det adresserbare navnet på din skjulte tjeneste (generert automatisk)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">aktiver feilsøkingslogg for output (må bruke adb eller aLogCat for å vise)</string>
-  <string name="project_home">Prosjektets nettside(r):</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Tor-lisensen</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Tredjepartsprogramvare:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">En applikasjon vil åpne den skjulte tjenesteporten %S til Tor-nettverket. Dette er trygt hvis du stoler på applikasjonen. </string>
-  <string name="found_existing_tor_process">fant eksisterende Tor-prosess...</string>
-  <string name="something_bad_happened">Noe alvorlig skjedde. Sjekk loggen.</string>
-  <string name="hidden_service_on">skjult tjeneste på:</string>
-  <string name="unable_to_read_hidden_service_name">klarte ikke å lese skjult tjenestenavn</string>
-  <string name="unable_to_start_tor">Klarte ikke å starte Tor:</string>
-  <string name="unable_to_reset_tor">Gjør en omstart av din enhet, kan ikke tilbakestille Tor!</string>
-  <string name="pref_use_sys_iptables_title">Bruk standard Iptables</string>
-  <string name="pref_use_sys_iptables_summary">bruk de innebygde binære-iptables istedenfor de som kommer med Orbot</string>
-  <string name="error_installing_binares">Tor-binærfilene var ikke i stand til å bli installert, eller oppgradert.</string>
-  <string name="pref_use_persistent_notifications">Alltid behold ikonet i verktøyslinjen når Orbot er tilkoblet</string>
-  <string name="pref_use_persistent_notifications_title">Alltid-På Varslinger</string>
-  <string name="pref_use_expanded_notifications_title">Utvidede varsler</string>
-  <string name="notification_using_bridges">Broer slått på!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Språk</string>
-  <string name="set_locale_summary">Velg nasjonale innstillinger, og språk for Orbot</string>
-  <string name="wizard_locale_title">Velg språk</string>
-  <string name="wizard_locale_msg">Bruk standard, eller endre det gjeldende språket</string>
-  <string name="powered_by">Levert av Tor</string>
-  <string name="btn_save_settings">Lagre Inntillinger</string>
-  <string name="no_internet_connection_tor">Ingen Internett-tilkobling; Tor er i ventemodus... </string>
-  <string name="bandwidth_">Båndbredde:</string>
-  <string name="down">ned</string>
-  <string name="up">opp</string>
-  <string name="pref_disable_network_title">Inget automatisk hvilemodus for nettverk</string>
-  <string name="pref_disable_network_summary">Legg Tor i hvilemodus når nettilkobling til internett ikke er tilgjengelig</string>
-  <string name="newnym">Du har byttet til en ny Tor-identitet!</string>
-  <string name="menu_verify_browser">Nettleser</string>
-  <string name="menu_use_chatsecure">Bruk ChatSecure</string>
-  <string name="permission_manage_tor_label">Håndter Tor</string>
-  <string name="permission_manage_tor_description">La dette programmet kontrollere Tor-tjenesten</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Det ser ikke ut til at du har Orfox installert. Ønsker du hjelp med dette, eller skal vi bare åpne nettleseren?</string>
-  <string name="install_apps_">Installere programmer?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Ingen nettverkstilkobling. Putting Tor å sove ...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Nettverkstilkobling er bra. Våkne Tor opp ...</string>
-  <string name="updating_settings_in_tor_service">Oppdaterer innstillinger i Tor service</string>
-  <string name="pref_socks_summary">Port som Tor tilbyr er SOCKS proxy på (standard: 9050 eller 0 for å slå av)</string>
-  <string name="pref_socks_dialog">SOCKS Port Konfigurasjon</string>
-  <string name="pref_transport_title">Tor TransProxy Port</string>
-  <string name="pref_transport_dialog">TransProxy Port Konfigurasjon</string>
-  <string name="pref_dnsport_title">Tor DNS Port</string>
-  <string name="pref_dnsport_dialog">DNS Port Configurer</string>
-  <string name="your_tor_public_ips_">Din Tor offentlige IP:</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Broer oppdatert</string>
-  <string name="restart_orbot_to_use_this_bridge_">Gjør omstart av Orbot før endringer trer i kraft</string>
-  <string name="menu_qr">QR-koder</string>
-  <string name="get_bridges_email">E-post</string>
-  <string name="get_bridges_web">Vev</string>
-  <string name="activate">Aktiver</string>
-  <string name="send_email">Send e-post</string>
-  <string name="install_orweb">Installer Orfox</string>
-  <string name="standard_browser">Forvalgt nettleser</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">Merk: Bare vanlige Tor-broer fungerer på Intel X86/Atom-enheter</string>
-</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
deleted file mode 100644
index 51c4892..0000000
--- a/res/values-nl/strings.xml
+++ /dev/null
@@ -1,292 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot is een gratis en vrije proxy-app die het andere apps mogelijk maakt het internet veiliger te gebruiken. Orbot gebruikt Tor om je internetverkeer te coderen en het vervolgens te verhullen het door het door een serie computers over de hele wereld te routeren. Tor is vrije software en een open netwerk dat je helpt te verdedigen tegen een vorm van netwerktoezicht die persoonlijke vrijheid en privacy, vertrouwelijke bedrijfsactiviteiten en relaties en staatsveiligheid genaamd \'traffic analyse\' bedreigt.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">start en stop Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot is bezig met starten…</string>
-  <string name="status_activated">Verbonden met het Tor-netwerk</string>
-  <string name="status_disabled">Orbot is uitgeschakeld</string>
-  <string name="status_shutting_down">TorService wordt afgesloten</string>
-  <string name="tor_process_starting">Bezig met Tor client starten…</string>
-  <string name="tor_process_complete">klaar.</string>
-  <string name="tor_process_waiting">bezig met wachten.</string>
-  <string name="not_anonymous_yet">WAARSCHUWING: je verkeer is nog niet anononiem! Stel je programma\'s in om gebruik te maken van HTTP-proxy 127.0.0.1:8118 of SOCKS4A- of SOCKS5-proxy 127.0.0.1:9050</string>
-  <string name="menu_home">Thuis</string>
-  <string name="menu_browse">Bladeren</string>
-  <string name="menu_settings">Instellingen</string>
-  <string name="menu_log">Logboek</string>
-  <string name="menu_info">Hulp</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Start</string>
-  <string name="menu_stop">Stop</string>
-  <string name="menu_about">Over</string>
-  <string name="menu_promo_apps">Apps ophalen...</string>
-  <string name="main_layout_download">Download</string>
-  <string name="main_layout_upload">Upload</string>
-  <string name="button_help">Hulp</string>
-  <string name="button_close">Afsluiten</string>
-  <string name="button_about">Over</string>
-  <string name="button_clear_log">Logboek wissen</string>
-  <string name="menu_verify">Controleren</string>
-  <string name="menu_exit">Sluiten</string>
-  <string name="menu_scan">BridgeQR scannen</string>
-  <string name="menu_share_bridge">BridgeQR delen</string>
-  <string name="press_to_start">- lang indrukken om te starten -</string>
-  <string name="pref_trans_proxy_group">Transparant proxyen (vereist root)</string>
-  <string name="pref_trans_proxy_title">Transparant proxyen</string>
-  <string name="pref_trans_proxy_summary">Automatisch Torificeren van apps</string>
-  <string name="pref_transparent_all_title">Tor alles</string>
-  <string name="pref_transparent_all_summary">Proxy verkeer van alle apps door Tor</string>
-  <string name="pref_transparent_port_fallback_title">Poort proxy fallback</string>
-  <string name="pref_transparent_port_fallback_summary">WAARSCHUWING: omzeilt veel voorkomende poorten (80, 443, etc). *GEBRUIK ENKEL* indien de \'Alles\' of \'Apps\'-modus niet werkt.</string>
-  <string name="pref_transparent_port_title">Poortlijst</string>
-  <string name="pref_transparent_port_summary">Lijst van poorten om te proxyen. *GEBRUIK ENKEL* indien \'Alles\' of \'Apps\'-modus niet werkt</string>
-  <string name="pref_transparent_port_dialog">Voer poorten in voor proxy</string>
-  <string name="pref_has_root">Vraag root-toegang aan</string>
-  <string name="pref_has_root_summary">Vraag root-toegang aan voor transparant proxyen</string>
-  <string name="status_install_success">Binaire bestanden van Tor succesvol geïnstalleerd!</string>
-  <string name="status_install_fail">De binaire bestanden konden niet worden geïnstalleerd. Gelieve de log te raadplegen en tor-assistants at torproject.org op de hoogte te stellen</string>
-  <string name="title_error">Toepassingsfout</string>
-  <string name="wizard_title">Welkom bij Orbot</string>
-  <string name="wizard_btn_tell_me_more">Over Orbot</string>
-  <string name="btn_next">Volgende</string>
-  <string name="btn_back">Vorige</string>
-  <string name="btn_finish">Einde</string>
-  <string name="btn_okay">OK</string>
-  <string name="btn_cancel">Annuleren</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Enkele Orbot-gegevens</string>
-  <string name="wizard_details_msg">Orbot is een open-bron-applicatie die Tor, LibEvent en Polipo bevat. Het biedt een lokale HTTP-proxy (8118) en een SOCKS-proxy (9050) naar het Tor-netwerk. Orbot heeft ook de mogelijkheid om op een toestel met root-toegang alle internetverkeer door Tor te sturen.</string>
-  <string name="wizard_permissions_root">Rechten toegewezen</string>
-  <string name="wizard_permissions_stock">Orbot-rechten</string>
-  <string name="wizard_premissions_msg_root">Uitstekend! We hebben gedetecteerd dat je root-rechten hebt aangezet voor Orbot. We gebruiken deze kracht met verstand.</string>
-  <string name="wizard_permissions_msg_stock">Hoewel het niet noodzakelijk is kan Orbot nog krachtiger worden als je toestel root-rechten heeft. Gebruik de knop onderaan om Orbot superkrachten te geven!</string>
-  <string name="wizard_permissions_no_root">Als je niet over root-toegang beschikt en geen idee hebt waarover we bezig zijn, let er dan op dat je apps gebruikt die geschikt zijn voor Orbot.</string>
-  <string name="wizard_permissions_consent">Ik begrijp dit en wil verdergaan zonder Superuser</string>
-  <string name="wizard_permission_enable_root">Root toestaan voor Orbot</string>
-  <string name="wizard_configure">Torificatie instellen</string>
-  <string name="wizard_configure_msg">Orbot geeft je de mogelijkheid om al het verkeer via Tor te laten gaan OF om individueel je applicaties te kiezen.</string>
-  <string name="wizard_configure_all">Proxy alle apps door Tor</string>
-  <string name="wizard_configure_select_apps">Selecteer individuele apps voor Tor</string>
-  <string name="wizard_tips_tricks">Orbot-geschikte apps</string>
-  <string name="wizard_tips_msg">De apps hieronder zijn gemaakt om met Orbot te werken. Klik op de knoppen om ze te installeren, of vind ze later op GuardianProject.info, F-Droid.org of Google Play.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Beveiligde instant messaging-cliënt voor Android</string>
-  <string name="wizard_tips_proxy">Proxy-instellingen - Leer hoe je apps te configureren voor Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo zoekmachine-app</string>
-  <string name="wizard_tips_twitter">Stel Twitter-proxy in als host \"localhost\" en poort 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Maak een verhaal en laat de veiligheid aan Tor over!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proxy-instellingen</string>
-  <string name="wizard_proxy_help_msg">Als de Android-applicatie die je gebruikt het gebruik van een HTTP- of SOCKS-proxy ondersteunt kan je het instellen om te verbinden met Orbot en Tor te gebruiken.\n\n\n De hostinstelling is 127.0.0.1 of \"localhost\". Voor HTTP is de poort 8118, voor SOCKS is de proxy 9050. Indien mogelijk zou je SOCKS4A of SOCKS5 moeten gebruiken.\n \n\n\n Je kan meer te weten komen over proxyen op Android in de VGV op: http://tinyurl.com/proxyandroid\n</string>
-  <string name="wizard_final">Orbot is klaar!</string>
-  <string name="wizard_final_msg">Miljoenen mensen de wereld rond gebruiken Tor voor uiteenlopende redenen.\n\nJournalisten en bloggers, verdedigers van mensenrechten, politie, soldaten, bedrijven, burgers van onderdrukkende regimes, en gewone burgers… en nu ben jij er ook klaar voor!</string>
-  <string name="wizard_exit_at_first_screen_toast">Je moet Orbot eerst configureren vooraleer je het kan gebruiken!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">De verbinding met het Tor netwerk is gelukt - maar dit betekent NIET dat je apparaat veilig is. Je kunt de \'Browser\' knop gebruiken om je verbinding te testen. \n\nBezoek ons op https://guardianproject.info/apps/orbot of stuur een email aan help at guardianproject.info om meer te weten te komen.</string>
-  <string name="tor_check">Dit opent je standaardbrowser naar https://check.torproject.org om te controleren of Orbot succesvol is geconfigureerd om te verbinden met het Tor-netwerk.</string>
-  <string name="pref_hs_group">Verborgen diensten hosten</string>
-  <string name="pref_general_group">Algemeen</string>
-  <string name="pref_start_boot_title">Start Orbot bij opstarten</string>
-  <string name="pref_start_boot_summary">Start Orbot en verbind automatisch met Tor wanneer je Android-toestel opstart</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot brengt Tor naar Android!\n\nTor helpt je te verdedigen tegen het filteren van inhoud, verkeersanalyse en netwerktoezicht die je privacy, vertrouwelijke informatie en persoonlijke relaties bedreigt.\n\nDeze wizard helpt je bij het instellen van Orbot en Tor op je toestel.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Waarschuwing</string>
-  <string name="wizard_warning_msg">Gewoonweg Orbot installeren zal je mobiele verkeer niet automatisch anonimiseren.\n\nJe moet Orbot, je toestel en andere applicaties juist instellen om Tor succesvol te gebruiken.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Rechten</string>
-  <string name="wizard_permissions_root_msg1">Je kan optioneel Orbot \'Superuser\'-toegang geven om geavanceerde functies beschikbaar te stellen, zoals transparant proxyen.</string>
-  <string name="wizard_permissions_root_msg2">Als je dit niet wil doen, let er dan op dat je apps gebruikt die geschikt zijn voor Orbot</string>
-  <string name="wizard_permissions_no_root_msg">Je toestel is niet geroot of biedt geen root of \'Superuser\'-toegang.\n\nProbeer de \'Apps\'-modus op het hoofdscherm.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-geschikte apps</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: beveiligde chat-applicatie met Off-the-Record-versleuteling</string>
-  <string name="wizard_tips_orweb">Orfox: Browser met pricavy functies die werkt met Tor</string>
-  <string name="wizard_tips_play">Vind alle Guardian Project-applicaties op Google Play</string>
-  <string name="wizard_tips_fdroid">Vind alle Guardian Project-applicaties op F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Vind alle Guardian Project-applicaties op https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transparant proxyen</string>
-  <string name="wizard_transproxy_msg">Dit maakt het mogelijk voor jouw applicaties om automatisch via het Tor-netwerk te draaien zonder enige configuratie.</string>
-  <string name="wizard_transproxy_hint">(Vink dit aan als je geen idee hebt waarover we het hebben)</string>
-  <string name="wizard_transproxy_none">Geen</string>
-  <string name="pref_transparent_tethering_title">Tor tetheren</string>
-  <string name="pref_transparent_tethering_summary">Schakel Tor transparante proxy voor WiFi en USB-getheterde toestellen in (vereist herstart)</string>
-  <string name="button_grant_superuser">Vraag Superuser-toegang aan</string>
-  <string name="pref_select_apps">Kies applicaties</string>
-  <string name="pref_select_apps_summary">Kies applicaties om via Tor te draaien</string>
-  <string name="pref_node_configuration">Node-configuratie</string>
-  <string name="pref_node_configuration_summary">Dit zijn geavanceerde instellingen die je anonimiteit kunnen verminderen</string>
-  <string name="pref_entrance_node">Toegangsnodes</string>
-  <string name="pref_entrance_node_summary">Vingerafdrukken, nicks, landen en adressen voor de eerste hop</string>
-  <string name="pref_entrance_node_dialog">Voer toegangsnodes in</string>
-  <string name="pref_allow_background_starts_title">Sta starten op de achtergrond toe</string>
-  <string name="pref_allow_background_starts_summary">Sta elke app toe om Orbot de Tor verbinding en diensten te laten starten </string>
-  <string name="button_proxy_all">Proxy alles</string>
-  <string name="button_proxy_none">Proxy niets</string>
-  <string name="button_invert_selection">Selectie omkeren</string>
-  <string name="pref_proxy_title">Uitgaande netwerk-proxy (facultatief)</string>
-  <string name="pref_proxy_type_title">Proxy-type</string>
-  <string name="pref_proxy_type_summary">Protocol om te gebruiken voor proxyserver: HTTP, HTTPS, SOCKS4, SOCKS5</string>
-  <string name="pref_proxy_type_dialog">Voer proxy-type in</string>
-  <string name="pref_proxy_host_title">Proxyhost</string>
-  <string name="pref_proxy_host_summary">Proxyserverhostnaam</string>
-  <string name="pref_proxy_host_dialog">Voer proxyhost in</string>
-  <string name="pref_proxy_port_title">Proxypoort</string>
-  <string name="pref_proxy_port_summary">Proxyserverpoort</string>
-  <string name="pref_proxy_port_dialog">Voer proxy poort in</string>
-  <string name="pref_proxy_username_title">Uitgaande proxygebruikersnaam</string>
-  <string name="pref_proxy_username_summary">Proxygebruikersnaam (facultatief)</string>
-  <string name="pref_proxy_username_dialog">Voer proxygebruikersnaam in</string>
-  <string name="pref_proxy_password_title">Uitgaande proxywachtwoord</string>
-  <string name="pref_proxy_password_summary">Proxywachtwoord (facultatief)</string>
-  <string name="pref_proxy_password_dialog">Voer proxywachtwoord in</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Bezig met opzetten van volledig transparante proxy…</string>
-  <string name="setting_up_app_based_transparent_proxying_">Bezig met opzetten van per-app transparante proxy…</string>
-  <string name="transparent_proxying_enabled">Transparante proxy INGESCHAKELD</string>
-  <string name="transproxy_enabled_for_tethering_">Transparante proxy ingeschakeld voor tetheren!</string>
-  <string name="warning_error_starting_transparent_proxying_">WAARSCHUWING: fout tijdens starten van transparante proxy!</string>
-  <string name="transproxy_rules_cleared">TransProxy-regels gewist</string>
-  <string name="couldn_t_start_tor_process_">Kon Tor-proces niet starten: </string>
-  <string name="privoxy_is_running_on_port_">Polipo wordt uitgevoerd op poort:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Bezig met opzetten van per-poort transparante proxy…</string>
-  <string name="bridge_error">Bridge-fout</string>
-  <string name="bridge_requires_ip">Om de bridge-functie te gebruiken moet je minstens één bridge IP-adres invoeren.</string>
-  <string name="send_email_for_bridges">Stuur een e-mail met een GMail-account naar bridges at torproject.org met enkel de regel \"get bridges\" in de body van de e-mail.</string>
-  <string name="error">Fout</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Je ReachableAddresses-instellingen veroorzaakten een fout!</string>
-  <string name="your_relay_settings_caused_an_exception_">Je relay-instellingen veroorzaakten een fout!</string>
-  <string name="exit_nodes">Exitnodes</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Vingerafdrukken, nicks, landen en adressen voor de laatste hop</string>
-  <string name="enter_exit_nodes">Voer exitnode in</string>
-  <string name="exclude_nodes">Uitgesloten nodes</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Vingerafdrukken, nicks, landen en adressen om uit te sluiten</string>
-  <string name="enter_exclude_nodes">Voer uitgesloten nodes in</string>
-  <string name="strict_nodes">Strikte nodes</string>
-  <string name="use_only_these_specified_nodes">Gebruik *enkel* deze opgegeven nodes</string>
-  <string name="bridges">Bridges</string>
-  <string name="use_bridges">Gebruik bridges</string>
-  <string name="bridges_obfuscated">Versluierde bridges</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Gebruik alternatieve toegangsnodes naar het Tor-etwerk</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Schakel in als de geconfigureerde bridges versluierde bridges zijn</string>
-  <string name="ip_address_and_port_of_bridges">IP-adres en poort van bridges</string>
-  <string name="enter_bridge_addresses">Voer bridge-adres in</string>
-  <string name="relays">Relays</string>
-  <string name="relaying">Relayen</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Stel je toestel in staat om een non-exit relay te zijn</string>
-  <string name="relay_port">Relay-poort</string>
-  <string name="listening_port_for_your_tor_relay">Luisterpoort van jouw Tor-relay</string>
-  <string name="enter_or_port">Voer OR-poort in</string>
-  <string name="relay_nickname">Relay-bijnaam</string>
-  <string name="the_nickname_for_your_tor_relay">De bijnaam voor jouw Tor-relay</string>
-  <string name="enter_a_custom_relay_nickname">Voer een eigen relay-bijnaam in</string>
-  <string name="reachable_addresses">Bereikbare adressen</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Draai als een cliënt achter een firewall met beperkend beleid</string>
-  <string name="reachable_ports">Bereikbare poorten</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Poorten bereikbaar achter een beperkende firewall</string>
-  <string name="enter_ports">Voer poorten in</string>
-  <string name="enable_hidden_services">Verborgen diensten hosten</string>
-  <string name="run_servers_accessible_via_the_tor_network">maak server-op-toestel toegankelijk via het Tor-netwerk</string>
-  <string name="enter_localhost_ports_for_hidden_services">voer localhost-poorten in voor verborgen diensten</string>
-  <string name="hidden_service_ports">Verborgen dienst-poort</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">de adresseerbare naam voor je verborgen dienst (automatisch gegenereerd)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">schakel debug log naar uitvoer in (adb of aLogCat is nodig om dit te bekijken)</string>
-  <string name="project_home">Project homepagina(\'s): </string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">De Tor-licentie</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Software van 3e partijen: </string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Een applicatie wil verborgen dienst-poort %S openen naar het Tor-netwerk. Dit is veilig als je de applicatie vertrouwt.</string>
-  <string name="found_existing_tor_process">bestaand Tor-proces gevonden…</string>
-  <string name="something_bad_happened">Er is een fout opgetreden. Controleer de log</string>
-  <string name="hidden_service_on">verborgen dienst op:</string>
-  <string name="unable_to_read_hidden_service_name">Kan verborgen dienst-naam niet lezen</string>
-  <string name="unable_to_start_tor">Kan Tor niet starten:</string>
-  <string name="unable_to_reset_tor">Herstart je toestel, kan Tor niet opnieuw instellen!</string>
-  <string name="pref_use_sys_iptables_title">Gebruik standaard iptables</string>
-  <string name="pref_use_sys_iptables_summary">gebruik de ingebouwde iptables-binary in plaats van de in Orbot geïntegreerde</string>
-  <string name="error_installing_binares">De Tor-binaries konden niet worden geïnstalleerd of bijgewerkt.</string>
-  <string name="pref_use_persistent_notifications">Houd icoon in taakbalk zolang Orbot verbonden is</string>
-  <string name="pref_use_persistent_notifications_title">Meldingen altijd aan</string>
-  <string name="pref_use_expanded_notifications">Toon uitgebreide melding met Tor-exitland en IP</string>
-  <string name="pref_use_expanded_notifications_title">Uitgebreide meldingen</string>
-  <string name="notification_using_bridges">Bridges ingeschakeld!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Taal</string>
-  <string name="set_locale_summary">Kies de landsinstellingen en taal voor Orbot</string>
-  <string name="wizard_locale_title">Kies taal</string>
-  <string name="wizard_locale_msg">Laat standaard of schakel over naar huidige taal</string>
-  <string name="powered_by">aangedreven door Tor</string>
-  <string name="btn_save_settings">Sla instellingen op</string>
-  <string name="no_internet_connection_tor">Geen internetverbinding; Tor is op stand-by…</string>
-  <string name="bandwidth_">Bandbreedte:</string>
-  <string name="down">omlaag</string>
-  <string name="up">omhoog</string>
-  <string name="pref_disable_network_title">Geen netwerk automatisch slapen</string>
-  <string name="pref_disable_network_summary">Laat Tor slapen als er geen internetverbinding beschikbaar is</string>
-  <string name="newnym">Je bent naar een nieuwe Tor identiteit gewisseld!</string>
-  <string name="menu_verify_browser">Browser</string>
-  <string name="menu_use_chatsecure">Gebruik ChatSecure</string>
-  <string name="permission_manage_tor_label">Tor beheren</string>
-  <string name="permission_manage_tor_description">Deze applicatie toestaan om de Tor-dienst te bedienen</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Orfox lijkt niet geïnstalleerd te zijn, Wil je daar hulp bij, of wil je gewoon de browser openen?</string>
-  <string name="install_apps_">Applicaties installeren?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Geen internetverbinding. Tor wordt te slapen gelegd…</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Netwerkverbinding is in orde. Tor wordt wakker gemaakt…</string>
-  <string name="updating_settings_in_tor_service">instellingen in Tor-dienst worden bijgewerkt</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Poort waarop Tor de SOCKS-proxy aanbiedt (standaard: 9050 of 0 om uit te schakelen)</string>
-  <string name="pref_socks_dialog">SOCKS-poortconfiguratie</string>
-  <string name="pref_transport_title">Tor TransProxy-poort</string>
-  <string name="pref_transport_summary">Poort waarop Tor de transparante proxy aanbiedt (standaard: 9040 of 0 om uit te schakelen)</string>
-  <string name="pref_transport_dialog">TransProxy-poortconfiguratie</string>
-  <string name="pref_dnsport_title">Tor DNS-poort</string>
-  <string name="pref_dnsport_summary">Poort waarop Tor de DNS aanbiedt (standaard: 5400 of 0 om uit te schakelen)</string>
-  <string name="pref_dnsport_dialog">DNS-poortconfiguratie</string>
-  <string name="pref_torrc_title">Torrc aangepaste configuratie</string>
-  <string name="pref_torrc_summary">ENKEL VOOR GEVORDERDEN: voer rechtstreeks torrc-configuratieregels in</string>
-  <string name="pref_torrc_dialog">Aangepaste Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech Human Rights Documentation App</string>
-  <string name="your_tor_public_ips_">Je Tor publieke IP\'s:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Schakel deze applicatie uit in Android->Instellingen->Applicaties als je problemen ondervindt met Orbot:</string>
-  <string name="app_conflict">App-conflict</string>
-  <string name="pref_transproxy_refresh_title">Transproxy automatisch verversen</string>
-  <string name="pref_transproxy_refresh_summary">Transproxy-regels opnieuw toepassen wanneer de status van het netwerk verandert</string>
-  <string name="pref_transproxy_flush_title">Transproxy VERWIJDEREN DWINGEN</string>
-  <string name="pref_transproxy_flush_summary">Tik hier om alle transproxy-netwerkregels NU te spoelen</string>
-  <string name="transparent_proxy_rules_flushed_">Transparante proxy-regels gespoeld!</string>
-  <string name="you_do_not_have_root_access_enabled">Je hebt ROOT-toegang niet ingeschakeld</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Het kan nodig zijn Orbot te stoppen en opnieuw te starten opdat wijzigingen in de instellingen worden ingeschakeld.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Bridges bijgewerkt</string>
-  <string name="restart_orbot_to_use_this_bridge_">Herstart Orbot om de wijzigingen in te schakelen</string>
-  <string name="menu_qr">QR-codes</string>
-  <string name="bridge_mode">Bridge-modus</string>
-  <string name="get_bridges_email">E-mail</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Activeren</string>
-  <string name="apps_mode">Apps VPN Modus</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Je kan instellen dat alle applicaties op je toestel gebruik maken van het Tor-netwerk met de VPN-functie van Android.\n\n*WAARSCHUWING* Dit is een nieuwe, experimentele functie die in sommige gevallen niet automatisch kan starten, of zou kunnen stoppen. Het moet NIET worden gebruikt voor anonimiteit en ENKEL om firewalls en filters te omzeilen.</string>
-  <string name="send_email">E-mail versturen</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Je kan een bridge-adres verkrijgen door e-mail, het web of door een bridge-QR-code te scannen. Kies \'E-mail\' of \'Web\' hieronder om een bridge-adres aan te vragen.\n\nEenmaal je een adres hebt kopieer en plak je het in de \"Bridges\"-optie in de Orbot-instellingen, waarna je Orbot herstart.</string>
-  <string name="install_orweb">Orfox installeren</string>
-  <string name="standard_browser">Standaardbrowser</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">LET OP: enkel standaard Tor-bridges werken op Intel x86/Atom-toestellen</string>
-  <string name="vpn_default_world">Wereld</string>
-</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
deleted file mode 100644
index fc1d130..0000000
--- a/res/values-pa/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_browse">ਚਰਨਾ</string>
-  <string name="menu_settings">ਪਰਿਸਥਿਤੀ</string>
-  <string name="menu_info">ਸਹਾਇਤਾ</string>
-  <string name="button_help">ਸਹਾਇਤਾ</string>
-  <string name="btn_cancel">ਰੱਦ ਕਰੋ</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">ਪਰਾਕਸੀ ਸੈਟਿੰਗ</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_none">ਖਾਲੀ</string>
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
deleted file mode 100644
index 14f254c..0000000
--- a/res/values-pl/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot jest darmową aplikacją proxy która wspomaga inne aplikacje do używania internetu bezpiecznie. Orbot używa Tora do szyfrowania Twojego ruchu internetowego i następnie przepuszczania go przez wiele innych komputereów pororzucanych na całym świecie. Tor jest darmowym oprogramowaniem i otwartą siecią która pomaga Tobie w obronie przed monitoringiem sieci która zagrarza osobistej wolności i prywatności, poufnym biznesowym aktywnościom.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">włącz i wyłącz Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot startuje...</string>
-  <string name="status_activated">Podłączony do sieci Tor</string>
-  <string name="status_disabled">Orbot wyłączony</string>
-  <string name="status_shutting_down">TorService wyłącza się</string>
-  <string name="tor_process_starting">Uruchamianie klienta sieci Tor...</string>
-  <string name="tor_process_complete">gotowe.</string>
-  <string name="tor_process_waiting">czekaj.</string>
-  <string name="not_anonymous_yet">UWAGA: Twoja komunikacja nie jest jeszcze anonimowa! Proszę skonfiguruj aplikacje aby używały serwera proxy HTTP 127.0.0.1:8118 lub SOCKS4A lub SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Start</string>
-  <string name="menu_browse">Przeglądaj</string>
-  <string name="menu_settings">Ustawienia</string>
-  <string name="menu_log">Logi</string>
-  <string name="menu_info">Pomoc</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Start</string>
-  <string name="menu_stop">Stop</string>
-  <string name="menu_about">O programie</string>
-  <string name="menu_promo_apps">Zdobądź aplikacje</string>
-  <string name="main_layout_download">Pobieranie (prędkość/suma)</string>
-  <string name="main_layout_upload">Wysyłanie (prędkość/suma)</string>
-  <string name="button_help">Pomoc</string>
-  <string name="button_close">Zamknij</string>
-  <string name="button_about">O programie</string>
-  <string name="button_clear_log">Czyść dziennik</string>
-  <string name="menu_verify">Sprawdź</string>
-  <string name="menu_exit">Wyjście</string>
-  <string name="menu_scan">Skanuj BridgeQR</string>
-  <string name="menu_share_bridge">Podziel się BridgeQR</string>
-  <string name="press_to_start">- wciśnij na dłużej, by uruchomić -</string>
-  <string name="pref_trans_proxy_group">Przekierowanie przezroczyste (Wymaga uprawnień administratora)</string>
-  <string name="pref_trans_proxy_title">Przekierowanie przezroczyste</string>
-  <string name="pref_trans_proxy_summary">Automatyczne toryfikowanie aplikacji</string>
-  <string name="pref_transparent_all_title">Przepuść wszystko przez Tora</string>
-  <string name="pref_transparent_all_summary">Przekierowanie ruchu wszystkich aplikacji przez Tora</string>
-  <string name="pref_transparent_port_fallback_title">Zapasowy Port Proxy</string>
-  <string name="pref_transparent_port_fallback_summary">UWAGA: Unika powszechnych portów (80, 443, etc). *UŻYWAĆ TYLKO* gdy \'All\' lub tryb \'App\' nie działa.</string>
-  <string name="pref_transparent_port_title">Lista Portów</string>
-  <string name="pref_transparent_port_summary">Lista portów, które przechwytywać. *UŻYWAĆ TYLKO* gdy \'All\' lub tryb \'App\' nie działa.</string>
-  <string name="pref_transparent_port_dialog">Wpisz porty do przechwytywania</string>
-  <string name="pref_has_root">Żądaj dostępu administratora</string>
-  <string name="pref_has_root_summary">Żądaj dostępu administratora dla przezroczystego przekierowania</string>
-  <string name="status_install_success">Binarki Tora pomyślnie zainstalowane!</string>
-  <string name="status_install_fail">Nie można zainstalować plików binarnych Tora. Zajrzyj do dziennika i powiadom tor-assistants at torproject.org</string>
-  <string name="title_error">Błąd Aplikacji</string>
-  <string name="wizard_title">Witamy w Orbocie</string>
-  <string name="wizard_btn_tell_me_more">O Orbocie</string>
-  <string name="btn_next">Dalej</string>
-  <string name="btn_back">wstecz</string>
-  <string name="btn_finish">Koniec</string>
-  <string name="btn_okay">OK</string>
-  <string name="btn_cancel">Anuluj</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Niektóre szczegóły o Orbocie</string>
-  <string name="wizard_details_msg">Orbot jest otwartą aplikacją zawierającą Tor, LibEvent i Polipo. Dostarcza lokalnego proxy HTTP (8118) i SOCKS proxy (9050) do sieci Tora. Orbot ma możliwość, na urządzeniu uruchomionym z prawami administratora, wysyłać cały ruch internetowy przez Tora.</string>
-  <string name="wizard_permissions_root">Dostęp zezwolony</string>
-  <string name="wizard_permissions_stock">Prawa dostepu Orbota</string>
-  <string name="wizard_premissions_msg_root">Doskonale! Odkryliśmy, że masz uprawnienia administratora włączone dla Orbota. Będziemy mądrze korzystać z tej władzy.</string>
-  <string name="wizard_permissions_msg_stock">Podczas gdy nie jest to wymagane, Orbot może stać się znacznie potężniejszym narzędziem, gdy masz prawa administratora na swoim urządzeniu. Użyj przycisku poniżej, by dać Orbotowi duży uprawnienia.</string>
-  <string name="wizard_permissions_no_root">Jeśli nie masz uprawnień administratora lub nie masz pojęcia, o czym mówimy, używaj aplikacji skonfigurowanych do pracy z Orbotem.</string>
-  <string name="wizard_permissions_consent">Rozumiem i chcę kontynuować bez uprawnień administratora</string>
-  <string name="wizard_permission_enable_root">Nadaj uprawnienia administratora Orbotowi</string>
-  <string name="wizard_configure">Skonfiguruj Toryfikację</string>
-  <string name="wizard_configure_msg">Orbot daje Ci możliwość przekierowania całego ruchu aplikacji przez Tora albo wybrania aplikacji pojedynczo.</string>
-  <string name="wizard_configure_all">Przekierowuj wszystkie aplikacje przez Tora</string>
-  <string name="wizard_configure_select_apps">Wybierz poszczególne aplikacje dla Tora</string>
-  <string name="wizard_tips_tricks">Aplikacje skonfigurowane dla Orbota</string>
-  <string name="wizard_tips_msg">Zachęcamy do pobierania i używania aplikacji, które wiedzą, jak łączyć się bezpośrednio z Orbotem. Kliknij na poniższe przyciski, by zainstalować.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Bezpieczny komunikator pod Androida</string>
-  <string name="wizard_tips_proxy">Ustawienia Proxy - Dowiedz się, jak konfigurować aplikacje do współpracy z Orbotem</string>
-  <string name="wizard_tips_duckgo">Aplikacja Duckduckgo Search Engine</string>
-  <string name="wizard_tips_twitter">Twitter obsługuje proxy http \"localhost:8118\"</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Napisz artukuł, historię, a bezpieczeństwo pozostaw Torowi.</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Ustawienia Proxy</string>
-  <string name="wizard_proxy_help_msg">Jeśli aplikacja na Androida, której używasz obsługuje proxy HTTP lub SOCKS proxy, to możesz skonfigurować ją do łączenia się z Orbotem i używania Tora. Ustawienie hosta to 127.0.0.1 lub \"localhost\". Dla HTTP, numer portu to 8118. Dla SOCKS proxy to 9050. Powinno się używać SOCKS4A lub SOCKS5, jeśli to możliwe.\n \n\n\n Możesz dowiedzieć się więcej o przekierowaniu ruchu na Androidzie z FAQ pod adresem: http://tinyurl.com/proxyandroid\n </string>
-  <string name="wizard_final">Orbot jest gotowy!</string>
-  <string name="wizard_final_msg">Miliony ludzi na całym świecie używają Tora z różnych powodów.\n\nDziennikarze i blogerzy, działacze na rzecz praw człowieka, stróże prawa, żołnierze, korporacje, obywatele represyjnych reżimów i zwykli obywatele... teraz Ty też możesz!</string>
-  <string name="wizard_exit_at_first_screen_toast">Proszę skonfiguruj Orbot zanim zaczniesz go uzywać!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Pomyślnie połączyłeś się do sieci Tor - ale to nie oznacza, że Twoje urządzenie jest bezpieczne. Możesz użyć przycisku \'Przeglądarka\' aby sprawdzić swoje połączenie. \n\nOdwiedź nas na https://guardianproject.info/apps/orbot lub wyślij nam maila na help at guardianproject.info aby dowiedzieć się więcej.</string>
-  <string name="tor_check">To otworzy Twoją domyślną przeglądarkę na adresie https://check.torproject.org w celu sprawdzenia, czy Orbot jest skonfigurowany i jest połączenie z Torem.</string>
-  <string name="pref_hs_group">Usługi ukryte</string>
-  <string name="pref_general_group">Ogólne</string>
-  <string name="pref_start_boot_title">Uruchamiaj Orbota przy starcie</string>
-  <string name="pref_start_boot_summary">Automatycznie uruchamiaj Orbota i łącz się z Torem, gdy Twoje urządzenie z Androidem się uruchomi</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot daje Tora Androidowi! Tor pomaga bronić się przed podsłuchem sieci znanym jako analiza ruchu, który zagraża wolności osobistej i prywatności, poufnym działaniom biznesowym i relacjami.\n\nTen kreator pomoże Ci skonfigurować Orbota i Tora na Twoim urządzeniu.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Ostrzeżenie</string>
-  <string name="wizard_warning_msg">Sama instalacja Orbota nie sprawi, że Twój mobilny ruch będzie całkiem anonimowy.\n\nMusisz wykonać poprawną konfigurację Orbota, Twojego urządzenia i innych aplikacji, aby skutecznie używać Tora.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Uprawnienia</string>
-  <string name="wizard_permissions_root_msg1">Możesz opcjonalnie przekazać darowiznę Orbotowi i otrzymać dostęp \'Superużytkownika\' aby włączyć zaawansowane funkcje, jak np. Transparentne Proxy.</string>
-  <string name="wizard_permissions_root_msg2">Jeśli nie chcesz tego robić, upewnij się by używać aplikacji stworzonych do pracy z Orbotem</string>
-  <string name="wizard_permissions_no_root_msg">Wygląda na to, że Twoje urządzenie nie ma praw administratora, lub nie posiada opcji \'Super użytkownika\'.\n\nZamiast tego prosimy o spróbowanie opcji \'Aplikacje\' na głównym ekranie.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-Włączone Aplikacje</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Bezpieczny komunikator z szyfrowaniem Off-the-Record</string>
-  <string name="wizard_tips_orweb">Orfox: Przeglądarka, która działa przez Tora</string>
-  <string name="wizard_tips_play">Znajdź wszystkie aplikacje Guardian Project na Google Play</string>
-  <string name="wizard_tips_fdroid">Zobacz wszystkie aplikacje Guardian Project na F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Zobacz wszystkie aplikacje Guardian Project na https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transparentne Proxy</string>
-  <string name="wizard_transproxy_msg">To pozwala Twojej aplikacji na automatyczne połączenie przez Sieć Tor bez żadnej konfiguracji.</string>
-  <string name="wizard_transproxy_hint">(Sprawdź tutaj, jeśli nie masz pojęcia o czym mówimy)</string>
-  <string name="wizard_transproxy_none">Brak</string>
-  <string name="pref_transparent_tethering_title">Przywiązywanie Tora</string>
-  <string name="pref_transparent_tethering_summary">Włącz Transparentne Proxy Tora dla Wifi i USB (wymaga restartu)</string>
-  <string name="button_grant_superuser">Żądanie dostępu Superużytkownika</string>
-  <string name="pref_select_apps">Wybierz aplikacje</string>
-  <string name="pref_select_apps_summary">Wybierz aplikacje do przejścia przez Tor</string>
-  <string name="pref_node_configuration">Konfiguracja węzła</string>
-  <string name="pref_node_configuration_summary">Są to zaawansowane ustawienia, które mogą zmniejszyć Twoją anonimowość</string>
-  <string name="pref_entrance_node">Węzły wejściowe</string>
-  <string name="pref_entrance_node_summary">Odciski palców, nicki, państwa i adresy na pierwszy raz</string>
-  <string name="pref_entrance_node_dialog">Wpisz Węzły Wejściowe</string>
-  <string name="pref_allow_background_starts_title">Pozwól na start z tle</string>
-  <string name="pref_allow_background_starts_summary">Pozwól każdej aplikacji powiedzieć, aby Orbot uruchomił Tor i inne związane z nim usługi</string>
-  <string name="button_proxy_all">Przepuszczaj wszystko przez proxy</string>
-  <string name="button_proxy_none">Nie przepuszczaj niczego przez proxy</string>
-  <string name="button_invert_selection">Odwróć zaznaczone</string>
-  <string name="pref_proxy_title">Wychodzący serwer sieciowy proxy</string>
-  <string name="pref_proxy_type_title">Wychodzące Typy Proxy</string>
-  <string name="pref_proxy_type_summary">Protokół używany dla serwera proxy: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Wpis Typ Proxy</string>
-  <string name="pref_proxy_host_title">Wychodzący Proxy Host</string>
-  <string name="pref_proxy_host_summary">Nazwa hosta serwera proxy</string>
-  <string name="pref_proxy_host_dialog">Wpisz Hosta Proxy</string>
-  <string name="pref_proxy_port_title">Wychodzące Porty Proxy</string>
-  <string name="pref_proxy_port_summary">Port serwera Proxy</string>
-  <string name="pref_proxy_port_dialog">Wpisz port Proxy</string>
-  <string name="pref_proxy_username_title">Nazwa użytkownika Wychodzącego Proxy</string>
-  <string name="pref_proxy_username_summary">Nazwa użytkownika proxy (opcjonalna)</string>
-  <string name="pref_proxy_username_dialog">Wpisz nazwę użytkownika Proxy</string>
-  <string name="pref_proxy_password_title">Hasło Wychodzącego Proxy</string>
-  <string name="pref_proxy_password_summary">Hasło Proxy (opcjonalne)</string>
-  <string name="pref_proxy_password_dialog">Wpisz hasło Proxy</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Ustawianie w pełni transparentnego proxy...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Ustawianie bazującego na aplikacji transparentnego proxy</string>
-  <string name="transparent_proxying_enabled">Transparentne proxy WŁĄCZONE</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy podłączone do modemu!</string>
-  <string name="warning_error_starting_transparent_proxying_">OSTRZEŻENIE: błąd w uruchamianiu transparentnego proxy!</string>
-  <string name="transproxy_rules_cleared">TransProxy działa czysto</string>
-  <string name="couldn_t_start_tor_process_">Nie można było zainicjować procesu Tora:</string>
-  <string name="privoxy_is_running_on_port_">Polipo działa na porcie:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Ustawianie bazującego na porcie transparentnego proxy</string>
-  <string name="bridge_error">Błąd mostka</string>
-  <string name="bridge_requires_ip">Aby użyć funkcji mostka, musisz wpisać przynajmniej jeden adres IP mostka.</string>
-  <string name="send_email_for_bridges">Wyślij e-mail do bridges at torproject.org pisząc w treści \"get bridges\" z konta gmail.</string>
-  <string name="error">Błąd</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Twoje ustawienia dostępnych adresów spowodowały wyjątek!</string>
-  <string name="your_relay_settings_caused_an_exception_">Ustawienia Twojego przekaźnika spowodowały wyjątek!</string>
-  <string name="exit_nodes">Węzły Wyjściowe</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Odciski palców, nicki, państwa i adresy na ostatni skok</string>
-  <string name="enter_exit_nodes">Wpisz węzły wyjściowe.</string>
-  <string name="exclude_nodes">Wyklucz węzły</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Odciski palców, nicki, państwa i adresy do wykluczenia.</string>
-  <string name="enter_exclude_nodes">Wpisz wykluczone węzły.</string>
-  <string name="strict_nodes">Ścisłe węzły</string>
-  <string name="use_only_these_specified_nodes">Użyj *tylko* tych określonych węzłów</string>
-  <string name="bridges">Mostki</string>
-  <string name="use_bridges">Użyj mostków</string>
-  <string name="bridges_obfuscated">UUtajnione Mostki</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Umożliw alternatywne wejściowe węzły do Sieci Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Włącz, jeśli skonfigurowane mostki są ukrytymi mostkami</string>
-  <string name="ip_address_and_port_of_bridges">Adres IP i port mostków</string>
-  <string name="enter_bridge_addresses">Wpisz adresy mostków</string>
-  <string name="relays">Przekaźniki</string>
-  <string name="relaying">Przekazywanie</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Pozwól swojemu urządzeniu zostać bezwyjściowym przekaźnikiem</string>
-  <string name="relay_port">Port Przekaźników</string>
-  <string name="listening_port_for_your_tor_relay">Nasłuchiwanie portu Twojego przekaźnika</string>
-  <string name="enter_or_port">Wpisz port OR</string>
-  <string name="relay_nickname">Nick przekaźnika</string>
-  <string name="the_nickname_for_your_tor_relay">Nick Twojego przekaźnika Tora</string>
-  <string name="enter_a_custom_relay_nickname">Wpisz standardową nazwę przekaźnika</string>
-  <string name="reachable_addresses">Osiągalne adresy:</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Włącz jako klienta za firewallem z restrykcyjną polityką</string>
-  <string name="reachable_ports">Osiągalne porty</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Porty dostępne za ograniczającym firewallem</string>
-  <string name="enter_ports">Wpisz porty</string>
-  <string name="enable_hidden_services">Włącz Ukryte Serwisy</string>
-  <string name="run_servers_accessible_via_the_tor_network">włącz serwisy dostępne przez Sieć Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">wpisz porty localhosta dla ukrytych serwisów</string>
-  <string name="hidden_service_ports">Porty Ukrytych Serwisów</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">adresowana nazwa dla Twojego ukrytego serwisu (generowana automatycznie)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">włącz zdebugowany log do wydajności (musisz używać adb lub aLogCat, by go zobaczyć)</string>
-  <string name="project_home">Strony domowe projektu:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Licencja Tora</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Oprogramowanie 3rd-Party</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Aplikacja chce otworzyć port ukrytego serwera %S do Sieci Tor. Jest to bezpieczne, jeśli ufasz aplikacji.</string>
-  <string name="found_existing_tor_process">znaleziono istniejący proces Tora...</string>
-  <string name="something_bad_happened">Coś nie poszło nie tak. Sprawdź logi</string>
-  <string name="hidden_service_on">ukryty serwis:</string>
-  <string name="unable_to_read_hidden_service_name">uniemożliw czytanie nazw ukrytych serwisów</string>
-  <string name="unable_to_start_tor">Nie można wystartować aplikacji Tor:</string>
-  <string name="unable_to_reset_tor">Zrestartuj swoje urządzenie, nie można zrestartować Tora!</string>
-  <string name="pref_use_sys_iptables_title">Użyj domyślnie Iptables</string>
-  <string name="pref_use_sys_iptables_summary">użyj wbudowanych plików binarnych iptables zamiast tych w pakiecie z Orbotem</string>
-  <string name="error_installing_binares">Pliki binarne Tora nie zostały zainstalowane lub uaktualnione.</string>
-  <string name="pref_use_persistent_notifications">Zawsze trzymaj ikonę w pasku powiadomień gdy Orbot jest połączony</string>
-  <string name="pref_use_persistent_notifications_title">Powiadomienia zawsze aktywne</string>
-  <string name="pref_use_expanded_notifications">Pokaż rozszerzone powiadomienie z krajem Tor exit node oraz jego IP</string>
-  <string name="pref_use_expanded_notifications_title">Rozszerzone Powiadomienia</string>
-  <string name="notification_using_bridges">Mostki włączone!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Język</string>
-  <string name="set_locale_summary">Wybierz ustawienia regionalne i język dla Orbota</string>
-  <string name="wizard_locale_title">Wybierz język</string>
-  <string name="wizard_locale_msg">Zostaw domyślny albo zmień język</string>
-  <string name="powered_by">napędzane oprogramowaniem Projektu Tor</string>
-  <string name="btn_save_settings">Zapisz ustawienia</string>
-  <string name="no_internet_connection_tor">Brak połączenia internetowego; Tor jest w trybie oczekiwania...</string>
-  <string name="bandwidth_">Przepustowość:</string>
-  <string name="down">pobieranie</string>
-  <string name="up">wysyłanie</string>
-  <string name="pref_disable_network_title">Brak Auto-Uśpienia Sieci</string>
-  <string name="pref_disable_network_summary">Ustaw Tor\'a w tryb uśpienia kiedy połączenie internetowe będzie niedostępne</string>
-  <string name="newnym">Nowa tożsamość Tor\'a została zmieniona!</string>
-  <string name="menu_verify_browser">Przeglądarka</string>
-  <string name="menu_use_chatsecure">Użyj ChatSecure</string>
-  <string name="permission_manage_tor_label">Administruj Tor\'em</string>
-  <string name="permission_manage_tor_description">Pozwól tej aplikacji kontrolować serwis Tor</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Wygląda na to, że nie masz zainstalowanej Orfoxa. Chcesz abyśmy Ci pomogli, czy chcesz abyśmy otworzyli to w przeglądarce?</string>
-  <string name="install_apps_">Zainstalować aplikacje?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Brak połączenia internetowego. Tor będzie w trybie snu...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Połączenie internetowe jest dobre. Trwa budzenie Tora...</string>
-  <string name="updating_settings_in_tor_service">aktualizowanie ustawień w serwisie Tor</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Port który oferuje SOCKS proxy (domyślnie: 9050 lub 0, aby wyłączyć)</string>
-  <string name="pref_socks_dialog">Konfiguracja portu SOCKS</string>
-  <string name="pref_transport_title">Tor TransProxy Port</string>
-  <string name="pref_transport_summary">Port który oferuje Transparent Proxy (domyślnie: 9040 lub 0, aby wyłączyć)</string>
-  <string name="pref_transport_dialog">Konfiguracja portu TransProxy</string>
-  <string name="pref_dnsport_title">Tor DNS Port</string>
-  <string name="pref_dnsport_summary">Port na którym Tor oferuje swój DNS (domyślnie: 5400 lub 0, aby wyłączyć)</string>
-  <string name="pref_dnsport_dialog">Konfiguracja portu DNS</string>
-  <string name="pref_torrc_title">Konfiguracja Torrc klienta</string>
-  <string name="pref_torrc_summary">TYLKO DLA EKSPERTÓW: wpisz linijki konfiguracyjne torrc</string>
-  <string name="pref_torrc_dialog">Torrc klienta</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech Dokumentacja Aplikacji Praw Człowieka</string>
-  <string name="your_tor_public_ips_">Twoje publiczne Tor IP:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Proszę wyłącz tą aplikację w Android->Ustawienia->Aplikacje jesli masz problemy z Orbot:</string>
-  <string name="app_conflict">Konflikt aplikacji</string>
-  <string name="pref_transproxy_refresh_title">Transproxy Auto-Odśwież</string>
-  <string name="pref_transproxy_refresh_summary">Zaztosuj ustawienia Transproxy kiedy stan sieci zmieni się</string>
-  <string name="pref_transproxy_flush_title">Transproxy WYMUŚ USUNIĘCIE</string>
-  <string name="pref_transproxy_flush_summary">Dotknij tutaj, aby wyczyścić wszystkie zasady sieciowe transproxy TERAZ</string>
-  <string name="transparent_proxy_rules_flushed_">Ustawienia Transproxy zostały wyczyszczone!</string>
-  <string name="you_do_not_have_root_access_enabled">Nie masz praw użytkownika root.</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Możesz zatrzymać i uruchomić ponownie Orbota, aby zmiany ustawień weszły w życie.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Zaktualizowane Bridges</string>
-  <string name="restart_orbot_to_use_this_bridge_">Proszę zrestartować Orbot, aby zmiany mogły wejść w życie</string>
-  <string name="menu_qr">Kody QR</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Jeśli Twoja sieć telefoniczna aktywnie blokuje Tora, to możesz używać Bridge., aby połączyć się z siecią. WYBIERZ jeden typ bridge powyżej, aby włączyć bridges.</string>
-  <string name="bridge_mode">Tryb Bridge</string>
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Aktywuj</string>
-  <string name="apps_mode">Tryb VPN Aplikacji</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Możesz włączyć opcję dla wszystkich aplikacji, tak, aby ich ruch internetowy był przepuszczany przez sieć Tor używając do tego opcji VPN w Androidzie.\n\n*UWAGA* Jest to nowa, eksperymentalana opcja i w niektórych przypadkach może ona nie uruchomić się automatycznie, lub może się zatrzymać. Opcja ta NIE POWINNA być używana w celach uzyskania anonimowości, a TYLKO wyłącznie w celu ominięcia firewalli i filtrów.</string>
-  <string name="send_email">Wyślij Email</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Możesz uzyskać adres Bridge poprzez email, internet, lub poprzez zeskanowanie kodu QR. Wybierz \'Email\' lub \'Internet\' poniżej, aby poprosić o adres bridge\'a.\n\nJak już będziesz mieć ten adres to skopiuj i wklej go do \"Bridges\" we właściwościach Orbota a następnie go zrestartuj.</string>
-  <string name="install_orweb">Zainstaluj Orfox</string>
-  <string name="standard_browser">Standardowa przeglądarka</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">UWAGA: Tylko standardowe bridges działają na urządzeniach z Intel X86/ATOM.</string>
-  <string name="vpn_default_world">Świat</string>
-</resources>
diff --git a/res/values-ps/strings.xml b/res/values-ps/strings.xml
deleted file mode 100644
index de5c389..0000000
--- a/res/values-ps/strings.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 90aa6c3..0000000
--- a/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,285 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot é um aplicativo de proxy livre que capacita outros aplicativos a usar a internet com mais segurança. Orbot usa o Tor para criptografar seu tráfego na internet e então o esconde \"saltando\" entre uma série de computadores ao redor do mundo. Tor é um software livre e de rede aberta que ajuda você a se defender de certas formas de vigilância que ameaçam privacidade e liberdade pessoais, atividades e relações comerciais confidenciais e segurança estatal conhecida como análise de tráfego.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">iniciar e parar o Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot está iniciando...</string>
-  <string name="status_activated">Conectado à rede Tor</string>
-  <string name="status_disabled">Orbot está desativado</string>
-  <string name="status_shutting_down">TorService está desligando</string>
-  <string name="tor_process_starting">Iniciando cliente Tor...</string>
-  <string name="tor_process_complete">completo.</string>
-  <string name="tor_process_waiting">esperando.</string>
-  <string name="not_anonymous_yet">AVISO: Seu tráfego não é anônimo ainda! Por favor, configure suas aplicações para usar proxy HTTP 127.0.0.1:8118 ou proxy SOCKS4A ou SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Início</string>
-  <string name="menu_browse">Procurar</string>
-  <string name="menu_settings">Configurações</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Ajuda</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Iniciar</string>
-  <string name="menu_stop">Parar</string>
-  <string name="menu_about">Sobre</string>
-  <string name="menu_promo_apps">Obter aplicativos...</string>
-  <string name="main_layout_download">Download</string>
-  <string name="main_layout_upload">Upload</string>
-  <string name="button_help">Ajuda</string>
-  <string name="button_close">Fechar</string>
-  <string name="button_about">Sobre</string>
-  <string name="button_clear_log">Limpar Log</string>
-  <string name="menu_verify">Checar</string>
-  <string name="menu_exit">Sair</string>
-  <string name="menu_scan">Escanear BridgeQR</string>
-  <string name="menu_share_bridge">Compartilhar BridgeQR</string>
-  <string name="press_to_start">- clique longo para iniciar -</string>
-  <string name="pref_trans_proxy_group">Proxying Transparente (Requer Root)</string>
-  <string name="pref_trans_proxy_title">Proxying Transparente</string>
-  <string name="pref_trans_proxy_summary">Automaticamente Torificar Apps</string>
-  <string name="pref_transparent_all_title">Tor Tudo</string>
-  <string name="pref_transparent_all_summary">Tráfego proxy para todos apps através do Tor</string>
-  <string name="pref_transparent_port_fallback_title">Porta do Proxy Reserva</string>
-  <string name="pref_transparent_port_fallback_summary">AVISO: Evite as portas comuns (80,443, etc). *USE SOMENTE* se o modo \'Todos\' ou \'App\' não funcionou.</string>
-  <string name="pref_transparent_port_title">Lista de Portas</string>
-  <string name="pref_transparent_port_summary">Lista de portas para proxy. *USE SOMENTE* se o modo \'Todos\' ou \'App\' não funcionou</string>
-  <string name="pref_transparent_port_dialog">Insira as portas para proxy</string>
-  <string name="pref_has_root">Requer Acesso Root</string>
-  <string name="pref_has_root_summary">Requer acesso root para proxy transparente</string>
-  <string name="status_install_success">Binário do Tor instalados com sucesso!</string>
-  <string name="status_install_fail">Os arquivos binários do Tor estão inaptos à serem instalados. Por favor, cheque o log e notifique tor-assistants at torproject.org</string>
-  <string name="title_error">Erro de Aplicação</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Sobre Orbot</string>
-  <string name="btn_next">Próximo</string>
-  <string name="btn_back">Voltar</string>
-  <string name="btn_finish">Terminar</string>
-  <string name="btn_okay">Okay</string>
-  <string name="btn_cancel">Cancelar</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Alguns detalhes do Orbot</string>
-  <string name="wizard_details_msg">Orbot é uma aplicação de código aberto que contém Tor, libEvent e Polipo. Ela provê um proxy HTTP local (8118) e um proxy SOCKS (9050) dentro da rede Tor. Orbot também tem a a habilidade, num dispositivo de com acesso root, de enviar todo o tráfego de internet através do Tor.</string>
-  <string name="wizard_permissions_root">Permissão Concedida</string>
-  <string name="wizard_permissions_stock">Permissões do Orbot</string>
-  <string name="wizard_premissions_msg_root">Excelente! Detectamos que você habilitou permissões de root para Orbot. Nós usaremos este poder com sabedoria.</string>
-  <string name="wizard_permissions_msg_stock"> Enquanto não é requerido, o Orbot pode se tornar uma ferramenta mais poderosa se seu dispositivo tivesse acesso root. Use o botão abaixo para conceder superpoderes ao Orbot! </string>
-  <string name="wizard_permissions_no_root">Se você não tem acesso root ou não tem idéia sobre o que estamos falando, só tenha a certeza de usar apps feitas para trabalhar com o Orbot.</string>
-  <string name="wizard_permissions_consent">Eu entendo e gostaria de continuar sem o Superusuário</string>
-  <string name="wizard_permission_enable_root">Conceder acesso Root ao Orbot</string>
-  <string name="wizard_configure">Configurar Torificação</string>
-  <string name="wizard_configure_msg">Orbot dá a você a opção de rotear todo o tráfego de aplicação através do Tor OU para escolher suas aplicações individualmente.</string>
-  <string name="wizard_configure_all">Usar Proxy para Todas Apps Através do Tor</string>
-  <string name="wizard_configure_select_apps">Selecionar Apps Individuais para o Tor</string>
-  <string name="wizard_tips_tricks">Apps habilitadas para Orbot</string>
-  <string name="wizard_tips_msg">As apps abaixo foram desenvolvidas para trabalhar com Orbot. Clique em cada botão para instalar agora, ou você pode encontrá-las posteriormente no Android Market.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - cliente de mensagem instantânea segura para Android</string>
-  <string name="wizard_tips_proxy">Configurações de Proxy - Aprenda como configurar apps para trabalhar com Orbot</string>
-  <string name="wizard_tips_duckgo">Ferramenta de Busca DuckDuckGo</string>
-  <string name="wizard_tips_twitter">Define o proxy do Twitter para \"localhost\" e a porta 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Faça uma história e deixe-a para o tor por segurança!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Configurações de Proxy</string>
-  <string name="wizard_proxy_help_msg">Se a app Android que você está usando puder suportar o uso de proxy HTTP ou SOCKS, então você pode configurar para conectar ao Orbot e usar o Tor. As configurações de host são 127.0.0.1 ou \"localhost\". Para HTTP, a porta configurada é 8118. Para SOCKS, o proxy é 9050. Você deve usar SOCKS4A ou SOCKS5 se possível. Você pode aprender mais sobre proxy no Android através do FAQ em: http://tinyurl.com/proxyandroid</string>
-  <string name="wizard_final">Orbot está pronto!</string>
-  <string name="wizard_final_msg">Centenas de milhares de pessoas ao redor do mundo usam o Tor por uma enorme variedade de razões. Jornalistas e bloggers, defensores dos direitos humanos, oficiais da lei, soldados, corporações, cidadãos em regimes repressivos, e somente cidadãos comuns... e agora você está pronto para usar, também! </string>
-  <string name="wizard_exit_at_first_screen_toast">Por favor, configure o Orbot antes de começar a usá-lo!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Você se conectou à rede Tor com sucesso - mas isto NÃO significa que seu dispositivo é seguro. Você pode usar a opção \'Checar\' no menu para testar seu navegador. Visite-nos em https://guardianproject.info/apps/orbot ou envie um e-mail para help at guardianproject.info para saber mais.</string>
-  <string name="tor_check">Isto irá abrir seu navegador web em https://check.torproject.org com o intuito de ver se o Orbot está provavelmente configurado e você está conectado ao Tor.</string>
-  <string name="pref_hs_group">Serviços Ocultos</string>
-  <string name="pref_general_group">Geral</string>
-  <string name="pref_start_boot_title">Iniciar Orbot no Boot</string>
-  <string name="pref_start_boot_summary">Automaticamente iniciar o Orbot e conectar o Tor quando seu Android bootar.</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot trouxe Tor para Android!! Tor ajuda você a se defender contra filtro de conteúdo, análises de tráfego e vigilância de rede que ameaçam sua privacidade, informação confidencial e relacionamentos pessoais. Este assistente irá ajudá-lo a configurar o Orbot e Tor no seu dispositivo.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Aviso</string>
-  <string name="wizard_warning_msg">Simplesmente instalando o Orbot não irá automaticamente anonimizar seu tráfego móvel. Você deve configurar apropriadamente o Orbot, seu dispositivo e outras apps para usar o Tor com sucesso.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Permissões</string>
-  <string name="wizard_permissions_root_msg1">Você pode opcionalmente garantir ao Orbot acesso de \'Superusuário\' para habilitar recursos avançados, como um proxy transparente.</string>
-  <string name="wizard_permissions_root_msg2">Se você não quiser fazer isto, tenha certeza de usar apps feitas para trabalhar com o Orbot.</string>
-  <string name="wizard_permissions_no_root_msg">Seu dispositivo não parece ser roteado ou prover um acesso \'Superusuário\'. De maneira a você se beneficiar do Tor, você precisará usar apps criadas para trabalhar com o Orbot, ou que suportem configurações de proxy HTTP ou SOCKS. </string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Apps Orbot Habilitadas</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: app de chat seguro com criptografia Off-the-Record</string>
-  <string name="wizard_tips_orweb">Orfox: navegador de privacidade aprimorada que funciona através do Tor</string>
-  <string name="wizard_tips_play">Encontre todos os aplicativos da Guardian Project no Google Play</string>
-  <string name="wizard_tips_fdroid">Encontre todos os aplicativos da Guardian Project no F-Droid </string>
-  <string name="wizard_tips_fdroid_org">Encontre todos os aplicativos da Guardian Project no https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Proxy Transparente</string>
-  <string name="wizard_transproxy_msg">Isto permite à suas apps automaticamente rodarem através da rede Tor sem nenhuma configuração.</string>
-  <string name="wizard_transproxy_hint">(Selecione esta caixa se você não souber do que estamos falando)</string>
-  <string name="wizard_transproxy_none">Nenhum</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Habilitar Proxy Transparente para Tor Dispositivos de Toque Wifi e Usb (requer reinicialização)</string>
-  <string name="button_grant_superuser">Acesso Superusuário Requerido</string>
-  <string name="pref_select_apps">Selecionar Apps</string>
-  <string name="pref_select_apps_summary">Escolha as Apps para Rotearem Através do Tor</string>
-  <string name="pref_node_configuration">Configuração de Nó</string>
-  <string name="pref_node_configuration_summary">Aqui estão as configurações avançadas que podem reduzir seu anonimato.</string>
-  <string name="pref_entrance_node">Nós de Entrada</string>
-  <string name="pref_entrance_node_summary">Impressões digitais, apelidos, países e endereços para a primeira etapa</string>
-  <string name="pref_entrance_node_dialog">Insira os Nós de Entrada</string>
-  <string name="pref_allow_background_starts_title">Permitir estrelas em segundo plano</string>
-  <string name="button_proxy_all">Todo o Proxy</string>
-  <string name="button_proxy_none">Nenhum Proxy</string>
-  <string name="button_invert_selection">Inverter Sele</string>
-  <string name="pref_proxy_title">Proxy de saída da rede (Opcional)</string>
-  <string name="pref_proxy_type_title">Tipo de Proxy</string>
-  <string name="pref_proxy_type_summary">Protocolo para usar no servidor proxy: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Insira o Tipo de Proxy</string>
-  <string name="pref_proxy_host_title">Proxy Host</string>
-  <string name="pref_proxy_host_summary">Endereço do servidor Proxy</string>
-  <string name="pref_proxy_host_dialog">Insira o Host do Proxy</string>
-  <string name="pref_proxy_port_title">Porta do Proxy</string>
-  <string name="pref_proxy_port_summary">Porta do servidor Proxy</string>
-  <string name="pref_proxy_port_dialog">Insira a porta do Proxy</string>
-  <string name="pref_proxy_username_title">Nome de usuário do Proxy de saída</string>
-  <string name="pref_proxy_username_summary">Nome de usuário do Proxy (Opcional)</string>
-  <string name="pref_proxy_username_dialog">Digite o nome de usuário do Proxy</string>
-  <string name="pref_proxy_password_title">Senha do Proxy de saída</string>
-  <string name="pref_proxy_password_summary">Senha do Proxy (Opcional)</string>
-  <string name="pref_proxy_password_dialog">Digite a senha do Proxy</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Configurando proxy com total transparência...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Configurando apps baseadas em transparência de proxy...</string>
-  <string name="transparent_proxying_enabled">Proxy Transparente HABILITADO</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy habilitado para Toque!</string>
-  <string name="warning_error_starting_transparent_proxying_">AVISO: erro ao iniciar o proxy transparente!</string>
-  <string name="transproxy_rules_cleared">Regras TransProxy limpas</string>
-  <string name="couldn_t_start_tor_process_">Não foi possível iniciar o processo Tor: </string>
-  <string name="privoxy_is_running_on_port_">Polipo está rodando na porta:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Configurando proxy transparente baseado em porta...</string>
-  <string name="bridge_error">Erro na Ponte</string>
-  <string name="bridge_requires_ip">Como condição para usar o recurso de ponte, você deve inserir pelo menos um endereço IP de ponte.</string>
-  <string name="send_email_for_bridges">Envie um email para bridges at torproject.org com a linha \"get bridges\" sozinha no corpo do e-mail, a partir de uma conta do gmail</string>
-  <string name="error">Erro</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Suas configurações de Endereços Acessíveis causou uma exceção!</string>
-  <string name="your_relay_settings_caused_an_exception_">Suas configurações de retransmissão causaram uma exceção!</string>
-  <string name="exit_nodes">Nós de Saída</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Impressões digitais, apelidos, países e endereços para a última etapa.</string>
-  <string name="enter_exit_nodes">Insira os Nós de Saída</string>
-  <string name="exclude_nodes">Nós Excluídos</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Impressões digitais, apelidos, países e endereços para excluir</string>
-  <string name="enter_exclude_nodes">Insira Nós Excluídos</string>
-  <string name="strict_nodes">Nós Estritos</string>
-  <string name="use_only_these_specified_nodes">Use *somente* estes nós específicos</string>
-  <string name="bridges">Pontes</string>
-  <string name="use_bridges">Usar pontes</string>
-  <string name="bridges_obfuscated">Pontes Ofuscadas</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Habilitar nós de entrada alternativos dentro da rede Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Habilitar se pontes configuradas forem pontes ofuscadas</string>
-  <string name="ip_address_and_port_of_bridges">Endereço IP e porta das pontes</string>
-  <string name="enter_bridge_addresses">Insira os Endereços das Pontes</string>
-  <string name="relays">Retransmissores</string>
-  <string name="relaying">Retransmitindo</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Habilitar seu dispositivo para não ser um retransmissor de saída</string>
-  <string name="relay_port">Porta Retransmissora</string>
-  <string name="listening_port_for_your_tor_relay">Ouvindo porta do seu retransmissor Tor</string>
-  <string name="enter_or_port">Insira porta OR</string>
-  <string name="relay_nickname">Apelido do Retransmissor</string>
-  <string name="the_nickname_for_your_tor_relay">O apelido para seu retransmissor Tor</string>
-  <string name="enter_a_custom_relay_nickname">Insira um apelido de retransmissor customizado</string>
-  <string name="reachable_addresses">Endereços Atingíveis</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Rodar como um cliente atrás de um firewall com políticas restritivas.</string>
-  <string name="reachable_ports">Portas Atingíveis</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Portas atingíveis atrás de um firewall restritivo</string>
-  <string name="enter_ports">Insira as portas</string>
-  <string name="enable_hidden_services">Habilitar Serviços Ocultos</string>
-  <string name="run_servers_accessible_via_the_tor_network">rodar servidores acessíveis via rede Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">insira as portas local para serviços ocultos</string>
-  <string name="hidden_service_ports">Portas de Serviço Oculto</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">o nome enderessável para seu serviço oculto (gerado automaticamente)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">habilitar debug log para saída (deve usar adb ou aLogCat para ver)</string>
-  <string name="project_home">Home(s) do Projeto: </string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">A Licença Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Software de Terceiros</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Uma app quer abrir a porta %S oculta do servidor para a rede Tor. Isto é seguro se você confia na app.</string>
-  <string name="found_existing_tor_process">procurando processos Tor existentes...</string>
-  <string name="something_bad_happened">Algo ruim aconteceu. Cheque o lo</string>
-  <string name="hidden_service_on">serviço oculto em:</string>
-  <string name="unable_to_read_hidden_service_name">habilitar ler o nome do serviço oculto</string>
-  <string name="unable_to_start_tor">Habilitar iniciar o Tor:</string>
-  <string name="unable_to_reset_tor">Reinicie seu dispositivo, incapaz de resetar Tor!</string>
-  <string name="pref_use_sys_iptables_title">Usar tabelas de IP padrão:</string>
-  <string name="pref_use_sys_iptables_summary">usar as tabelas ip binárias embutidas ao invés das tabelas do pacote Orbot</string>
-  <string name="error_installing_binares">Os binários Tor não estão disponíveis para serem instalados ou atualizados.</string>
-  <string name="pref_use_persistent_notifications">Sempre manter o ícone na barra de tarefas quando o Orbot está conectado</string>
-  <string name="pref_use_persistent_notifications_title">Notificações Sempre Ligadas</string>
-  <string name="pref_use_expanded_notifications">Mostrar notificação expandida com Tor país de saída e IP</string>
-  <string name="pref_use_expanded_notifications_title">Notificações Expandidas</string>
-  <string name="notification_using_bridges">Pontes habilitadas!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Idioma</string>
-  <string name="set_locale_summary">Escolha o local e idioma para o Orbot</string>
-  <string name="wizard_locale_title">Escolha o Idioma</string>
-  <string name="wizard_locale_msg">Deixe o padrão ou troque o idioma atual</string>
-  <string name="powered_by">distribuído por Tor</string>
-  <string name="btn_save_settings">Salvar Configurações</string>
-  <string name="no_internet_connection_tor">Sem conexão na internet; Tor está na espera...</string>
-  <string name="bandwidth_">Largura de banda:</string>
-  <string name="down">down</string>
-  <string name="up">up</string>
-  <string name="pref_disable_network_title">Modo de espera automático</string>
-  <string name="pref_disable_network_summary">Colocar o Tor em modo de espera quando não houver acesso Internet disponível</string>
-  <string name="newnym">Você trocou para uma nova identidade Tor!</string>
-  <string name="menu_verify_browser">Navegador</string>
-  <string name="menu_use_chatsecure">Usar ChatSecure</string>
-  <string name="permission_manage_tor_label">Gerenciar Tor</string>
-  <string name="permission_manage_tor_description">Habilitar este app a controlar o serviço Tor</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Parece que você não tem o Orweb instalado. Quer ajuda com isso ou devemos apenas abrir o navegador?</string>
-  <string name="install_apps_">Instalar apps?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Sem conectividade na rede. Colocando o Tor para dormir...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Conectividade da rede está boa. Acordando Tor</string>
-  <string name="updating_settings_in_tor_service">atualizando configurações no serviço Tor</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Porta que Tor oferece seu proxy SOCKS (padrão: 9050 ou 0 para desativar)</string>
-  <string name="pref_socks_dialog">Config da Porta SOCKS</string>
-  <string name="pref_transport_title">Porta TransProxy Tor</string>
-  <string name="pref_transport_summary">Porta que Tor oferece seu Proxy Transparente no (padrão: 9040 ou 0 para desativar)</string>
-  <string name="pref_transport_dialog">Config da Porta TransProxy</string>
-  <string name="pref_dnsport_title">Porta DNS Tor</string>
-  <string name="pref_dnsport_summary">Porta que Tor oferece seu DNS no (padrão: 5400 ou 0 para desativar)</string>
-  <string name="pref_dnsport_dialog">Config da Porta DNS</string>
-  <string name="pref_torrc_title">Config Personalizada do Torrc</string>
-  <string name="pref_torrc_dialog">Torrc Personalizado</string>
-  <string name="your_tor_public_ips_">Seus IPs Públicos do Tor:</string>
-  <string name="app_conflict">Conflito de aplicattivo</string>
-  <string name="pref_transproxy_flush_title">Transproxy FORÇAR REMOÇÃO</string>
-  <string name="you_do_not_have_root_access_enabled">Você não tem acesso root ativado</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Você pode precisar parar e iniciar Orbot para as configurações de mudar para ser ativado.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Pontes Atualizadas</string>
-  <string name="restart_orbot_to_use_this_bridge_">Por favor reinicie Orbot para habilitar as mundanças</string>
-  <string name="menu_qr">QR Codes</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Se a sua rede móvel ativamente blocos Tor, você pode usar uma ponte para acessar a rede. Selecione um dos tipos de pontes acima, para permitir pontes.</string>
-  <string name="bridge_mode">Modo Ponte</string>
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Atvar</string>
-  <string name="apps_mode">Modo Apps VPN</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Você pode permitir que todos os aplicativos em seu dispositivo para executar através da rede Tor usando o recurso VPN do Android.\n\n*AVISO* Esta é uma característica nova, experimental e em alguns casos pode não começar automaticamente, ou pode parar.   Não deve ser usado para manter o anonimato, e serão utilizadas apenas para obter através de firewalls e filtros.</string>
-  <string name="send_email">Enviar Email</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Você pode obter um endereço de ponte através de e-mail, web ou lendo um código QR ponte. Selecione \'E-mail\' ou \'Web\' abaixo para solicitar uma ponte endereço. \n\nUma vez que você tem um endereço, copie & colá-lo na "Bridges" preferência na configuração e reiniciar do Orbot.</string>
-  <string name="install_orweb">Instalar Orfox</string>
-  <string name="standard_browser">Navegador Padrão</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOTA: Apenas pontes Tor padrão funcionam em dispositivos Atom/Intel X86</string>
-  <string name="vpn_default_world">Mundo</string>
-</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
deleted file mode 100644
index d580cae..0000000
--- a/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="wizard_title">Orbot</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
deleted file mode 100644
index a36ed0f..0000000
--- a/res/values-pt/strings.xml
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">iniciar e parar Tor</string>
-  <string name="tor_proxy_service_process">serviço proxy Tor</string>
-  <string name="status_starting_up">O Orbot está a iniciar...</string>
-  <string name="status_activated">Conetado à rede Tor</string>
-  <string name="status_disabled">O Orbot está desativado</string>
-  <string name="tor_process_starting">A iniciar o cliente Tor...</string>
-  <string name="tor_process_complete">completo.</string>
-  <string name="tor_process_waiting">a aguardar.</string>
-  <string name="not_anonymous_yet">AVISO: O seu tráfego não está anónimo! Por favor, configure as suas aplicações para utilizarem o proxy HTTP 127.0.0.1:8118 ou o proxy SOCKS4A ou SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Início</string>
-  <string name="menu_browse">Explorar</string>
-  <string name="menu_settings">Configurações</string>
-  <string name="menu_log">Registo</string>
-  <string name="menu_info">Ajuda</string>
-  <string name="menu_start">Iniciar</string>
-  <string name="menu_stop">Parar</string>
-  <string name="menu_about">Sobre</string>
-  <string name="main_layout_download">Transferir</string>
-  <string name="main_layout_upload">Enviar</string>
-  <string name="button_help">Ajuda</string>
-  <string name="button_close">Fechar</string>
-  <string name="button_about">Sobre</string>
-  <string name="button_clear_log">Limpar Registo</string>
-  <string name="menu_verify">Verificar</string>
-  <string name="menu_exit">Sair</string>
-  <string name="menu_scan">Digitalizar BridgeQR</string>
-  <string name="menu_share_bridge">Compartilhar BridgeQR</string>
-  <string name="press_to_start">- pressionar longo para iniciar - </string>
-  <string name="pref_trans_proxy_group">Proxy Transparente (requer \'Root\')</string>
-  <string name="pref_trans_proxy_title">Proxy Transparente</string>
-  <string name="pref_transparent_all_title">Tor em Tudo</string>
-  <string name="pref_transparent_all_summary">Passar todo o tráfego das apps via Tor</string>
-  <string name="pref_transparent_port_fallback_summary">AVISO: Rodear as portas comuns (80, 443, etc...). *USAR APENAS* se o modo  \'Todas\' ou \'App\' não funcionar.</string>
-  <string name="pref_transparent_port_title">Lista de Portas</string>
-  <string name="pref_transparent_port_summary">Lista de portas para o proxy. *USAR APENAS* se o modo \'Todas\' ou \'App\' não funcionar.</string>
-  <string name="pref_transparent_port_dialog">Insira as portas para o proxy</string>
-  <string name="pref_has_root">Solicitar Acesso \'Root\'</string>
-  <string name="pref_has_root_summary">Solicitar acesso \'root\' para o proxy transparente</string>
-  <string name="status_install_success">Binários do Tor instalados com sucesso!</string>
-  <string name="status_install_fail">Não foi possível instalar os ficheiros binário do Tor. Por favor, verifique o registo de eventos e notifique tor-assistants at torproject.org</string>
-  <string name="title_error">Erro de Aplicação</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Sobre o Orbot</string>
-  <string name="btn_next">Seguinte</string>
-  <string name="btn_back">Voltar</string>
-  <string name="btn_finish">Terminar</string>
-  <string name="btn_okay">OK</string>
-  <string name="btn_cancel">Cancelar</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Alguns Detalhes do Orbot</string>
-  <string name="wizard_permissions_root">Autorização Concedida</string>
-  <string name="wizard_permissions_stock">Autorizações do Orbot</string>
-  <string name="wizard_permissions_consent">Eu compreendo e gostaria de continuar sem a Superuser</string>
-  <string name="wizard_permission_enable_root">Conceder \'Root\' para o Orbot</string>
-  <string name="wizard_configure">Configurar Acesso do Tor</string>
-  <string name="wizard_configure_all">Passar Todas as Aplicações Via Tor</string>
-  <string name="wizard_configure_select_apps">Selecione Individualmente as Apps para o Tor</string>
-  <string name="wizard_tips_tricks">Orbot - Apps ativadas</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Cliente de mensagens instantâneas seguras para Android</string>
-  <string name="wizard_tips_proxy">Configurações do Proxy - Aprenda a configurar as apps para funcionarem com o Orbot</string>
-  <string name="wizard_tips_duckgo">App de Mecanismo de Procura DuckDuckGo</string>
-  <string name="wizard_tips_twitter">Defina o proxy do Twitter para hospedeiro \"localhost\" e porta 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Definições Proxy</string>
-  <string name="wizard_final">O Orbot está pronto!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_hs_group">Serviço de Hospedagem Ocultado</string>
-  <string name="pref_general_group">Geral</string>
-  <string name="pref_start_boot_title">Iniciar o Orbot no Arranque</string>
-  <string name="pref_start_boot_summary">Iniciar automaticamente o Orbot e conetar o Tor quando o seu dispositivo Android inicia</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Aviso</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Autorizações</string>
-  <string name="wizard_permissions_root_msg1">Opcionalmente, pode conceder acesso de  Administrador\' ao Orbot para ativar as funções avançadas, tais como, Proxy Transparente.</string>
-  <string name="wizard_permissions_root_msg2">Se não quer isto, por favor, certifique-se que usa as apps criadas para funcionarem com a Orbot</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot - Apps Ativadas</string>
-  <string name="wizard_tips_play">Encontre todas as apps do Projeto Guardian na Play Store da Google</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Proxy Transparente</string>
-  <string name="wizard_transproxy_hint">(Selecione esta caixa se não souber do que estamos a falar)</string>
-  <string name="wizard_transproxy_none">Nenhum</string>
-  <string name="pref_transparent_tethering_title">\"Tethering\" Tor</string>
-  <string name="pref_transparent_tethering_summary">Ativar o Proxy Transparente Tor para a rede Sem Fios e Dispositivos USB \"Tethered\" (necessário reiniciar)</string>
-  <string name="button_grant_superuser">Solicitar Acesso de Administrador</string>
-  <string name="pref_select_apps">Selecionar Apps</string>
-  <string name="pref_select_apps_summary">Escolher Apps para Encaminhar Via Tor</string>
-  <string name="button_proxy_all">Tudo com o Proxy</string>
-  <string name="button_proxy_none">Nenhum Proxy</string>
-  <string name="button_invert_selection">Inverter Seleção</string>
-  <string name="pref_proxy_title">Proxy de Rede de Saída (Opcional)</string>
-  <string name="pref_proxy_type_title">Tipo de Proxy de Saída</string>
-  <string name="pref_proxy_type_summary">Protocolo para usar para o servidor proxy: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Inserir Tipo de Proxy</string>
-  <string name="pref_proxy_host_title">Anfitrião Proxy de Saída</string>
-  <string name="pref_proxy_host_summary">Nome do Hospedeiro do Servidor Proxy</string>
-  <string name="pref_proxy_host_dialog">Inserir Hospedeiro Proxy</string>
-  <string name="pref_proxy_port_title">Porta Proxy de Saída</string>
-  <string name="pref_proxy_port_summary">Porta do Servidor Proxy</string>
-  <string name="pref_proxy_port_dialog">Inserir Porta do Proxy</string>
-  <string name="pref_proxy_username_title">Nome do Utilizador do Proxy de Saída</string>
-  <string name="pref_proxy_username_summary">Nome do Utilizador do Proxy (Opcional)</string>
-  <string name="pref_proxy_username_dialog">Inserir Nome de Utilizador do Proxy</string>
-  <string name="pref_proxy_password_title">Senha do Proxy de Saída</string>
-  <string name="pref_proxy_password_summary">Senha do Proxy (Opcional)</string>
-  <string name="pref_proxy_password_dialog">Inserir Senha do Proxy</string>
-  <string name="status">Estado</string>
-  <string name="couldn_t_start_tor_process_">Não foi possível iniciar o processo Tor: </string>
-  <string name="error">Erro</string>
-  <string name="bridges">Pontes</string>
-  <string name="use_bridges">Usar Pontes</string>
-  <string name="ip_address_and_port_of_bridges">Endereço de IP e porta das pontes</string>
-  <string name="enter_or_port">Inserir OU porta</string>
-  <string name="reachable_ports">Portas alcançáveis</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Portas alcançáveis por detrás de uma Firewal restritiva</string>
-  <string name="enter_ports">Insira as portas</string>
-  <string name="enable_hidden_services">Hospedeiro de Serviço Ocultado</string>
-  <string name="hidden_service_ports">Portas de Serviço Ocultadas</string>
-  <string name="project_home">Projeto Home(s): </string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">A Licença do Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Programas de Terceiros: </string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="hidden_service_request">Uma app pretende abrir a porta %S do servidor ocultado para a rede Tor. Isto é seguro, se confiar na app.</string>
-  <string name="found_existing_tor_process">encontrado o processo Tor existente...</string>
-  <string name="something_bad_happened">Aconteceu algo de mau. Verifique o registo de eventos.</string>
-  <string name="hidden_service_on">serviço ocultado em:</string>
-  <string name="unable_to_read_hidden_service_name">não é possível ler o nome do serviço ocultado</string>
-  <string name="unable_to_start_tor">Não é possível iniciar o Tor:</string>
-  <string name="unable_to_reset_tor">Reinicie o seu dispositivo, não é possível reiniciar Tor!</string>
-  <string name="pref_use_sys_iptables_title">Usar Tabelas de IP Predefinidas</string>
-  <string name="pref_use_persistent_notifications_title">Notificações Sempre Ativadas</string>
-  <string name="pref_use_expanded_notifications_title">Notificações Estendidas</string>
-  <string name="notification_using_bridges">Pontes ativadas!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Idioma</string>
-  <string name="set_locale_summary">Escolha o local e o idioma para o Orbot</string>
-  <string name="wizard_locale_title">Escolher Idioma</string>
-  <string name="wizard_locale_msg">Deixe a predefinição ou mude o idioma atual</string>
-  <string name="btn_save_settings">Guardar Definições</string>
-  <string name="bandwidth_">Largura de banda:</string>
-  <string name="down">para baixo</string>
-  <string name="up">para cima</string>
-  <string name="newnym">Mudou para uma nova identidade do Tor!</string>
-  <string name="menu_use_chatsecure">Usar ChatSecure</string>
-  <string name="permission_manage_tor_label">Gerir Tor</string>
-  <string name="permission_manage_tor_description">Ative esta app para controlar o serviço Tor</string>
-  <string name="install_apps_">Instalar apps?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Nenhuma conetividade de rede. A hibernar Tor…</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">A conetividade de rede é boa. A iniciar Tor…</string>
-  <string name="updating_settings_in_tor_service">a atualizar as definições no serviço Tor</string>
-  <string name="pref_socks_title">SOCKS Tor</string>
-  <string name="pref_dnsport_title">Porta DNS Tor</string>
-  <string name="your_tor_public_ips_">Os seus IPs Públicos Tor:</string>
-  <string name="app_conflict">Conflito de App</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Pontes Atualizadas</string>
-  <string name="menu_qr">Códigos QR</string>
-  <string name="get_bridges_email">Correio Eletrónico</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Ativar</string>
-  <string name="send_email">Enviar Mensagem</string>
-  <string name="standard_browser">Navegador Padrão</string>
-</resources>
diff --git a/res/values-ro-rRO/strings.xml b/res/values-ro-rRO/strings.xml
deleted file mode 100644
index d0e466c..0000000
--- a/res/values-ro-rRO/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_home">Pagina de start</string>
-  <string name="menu_browse">Răsfoieşte</string>
-  <string name="menu_settings">Setări</string>
-  <string name="menu_info">Asistenţă</string>
-  <string name="menu_about">Despre</string>
-  <string name="button_help">Asistenţă</string>
-  <string name="button_close">Închide</string>
-  <string name="button_about">Despre</string>
-  <string name="menu_exit">Ieşire</string>
-  <string name="btn_back">Înapoi</string>
-  <string name="btn_cancel">Revocare</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">Setări proxy</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">General</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Avertizare</string>
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_none">Nimic</string>
-  <string name="status">Stare</string>
-  <string name="error">Eroare</string>
-  <string name="default_bridges"></string>
-  <string name="btn_save_settings">Salvează setările</string>
-</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
deleted file mode 100644
index 571f512..0000000
--- a/res/values-ro/strings.xml
+++ /dev/null
@@ -1,231 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">pornește și oprește Tor</string>
-  <string name="tor_proxy_service_process">serviciu proxy tor</string>
-  <string name="status_starting_up">Orbot porneste...</string>
-  <string name="status_activated">Conectat la reteaua Tor</string>
-  <string name="status_disabled">Orbot este dezactivat</string>
-  <string name="tor_process_starting">Porneste clientul Tor...</string>
-  <string name="tor_process_complete">terminat.</string>
-  <string name="tor_process_waiting">asteptare.</string>
-  <string name="not_anonymous_yet">ATENTIE: Traficul inca nu este anonim! Configureaza aplicatile sa foloseasca proxy-ul HTTP 127.0.0.1:8118 sau SOCKS4A sau proxy-ul SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Pagina de start</string>
-  <string name="menu_browse">Răsfoieşte</string>
-  <string name="menu_settings">Setări</string>
-  <string name="menu_log">log</string>
-  <string name="menu_info">Asistenţă</string>
-  <string name="menu_start">Start</string>
-  <string name="menu_stop">Stop</string>
-  <string name="menu_about">Despre</string>
-  <string name="main_layout_download">Descarca</string>
-  <string name="main_layout_upload">Incarca</string>
-  <string name="button_help">Asistenţă</string>
-  <string name="button_close">Închide</string>
-  <string name="button_about">Despre</string>
-  <string name="button_clear_log">Goleste log-ul</string>
-  <string name="menu_verify">Verifica</string>
-  <string name="menu_exit">Ieşire</string>
-  <string name="press_to_start">- apasa lung pentru pornire -</string>
-  <string name="pref_trans_proxy_group">Proxy transparent (necesita root)</string>
-  <string name="pref_trans_proxy_title">Proxy transparent</string>
-  <string name="pref_trans_proxy_summary">Aplicare automata a Tor la aplicatii</string>
-  <string name="pref_transparent_all_title">Tor tot</string>
-  <string name="pref_transparent_all_summary">Toate aplicatile folosesc Tor pentru trafic</string>
-  <string name="pref_transparent_port_fallback_title">Port proxy de rezerva</string>
-  <string name="pref_transparent_port_fallback_summary">ATENTIE: Ocoleste porturile comune (80, 443, etc.). *FOLOSESTE DOAR* daca modurile \"Toate\" sau \"Aplicatii\" nu functioneaza</string>
-  <string name="pref_transparent_port_title">Lista porturi</string>
-  <string name="pref_transparent_port_summary">Lista porturi pentru proxy. *FOLOSESTE DOAR* daca modurile \"Toate\" sau \"Aplicatii\" nu functioneaza</string>
-  <string name="pref_transparent_port_dialog">Introdu porturile pentru proxy</string>
-  <string name="pref_has_root">Necesita acces root</string>
-  <string name="pref_has_root_summary">Necesita acces root pentru proxy transparent</string>
-  <string name="status_install_success">Fisierele binare Tor instalate cu succes!</string>
-  <string name="status_install_fail">Fisierele binare Tor nu au putut fi instalate. Verificati log-ul si raportati bug-ul la tor-assistants at torproject.org</string>
-  <string name="title_error">Eroare de aplicatie</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Despre Orbot</string>
-  <string name="btn_next">Urmatorul</string>
-  <string name="btn_back">Înapoi</string>
-  <string name="btn_finish">Termina</string>
-  <string name="btn_okay">Ok</string>
-  <string name="btn_cancel">Revocare</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Detalii Orbot</string>
-  <string name="wizard_permissions_root">Permisiune acordata</string>
-  <string name="wizard_permissions_stock">Permisiuni Orbot</string>
-  <string name="wizard_premissions_msg_root">Excelent! Am detectat ca ai permis acces root pentru Orbot. Vom folosi aceasta putere cu raspundere.</string>
-  <string name="wizard_permissions_msg_stock">Desi nu este necesar, Orbot poate fi mai puternic daca dispozitivul dumneavoastra are acces root. Foloseste butonul de mai jos pentru ai oferi superputeri lui Orbot!</string>
-  <string name="wizard_permissions_no_root">Daca nu ai acces root, sau nu ai habar despre ce vorbim, asigura-te ca folosesti aplicatii facute sa functioneze cu Orbot.</string>
-  <string name="wizard_permissions_consent">Inteleg si as vrea sa continui fara Superuser</string>
-  <string name="wizard_permission_enable_root">Aproba root pentru Orbot</string>
-  <string name="wizard_configure">Configureaza Tor</string>
-  <string name="wizard_configure_msg">Orbot ofera posibilitatea sa trimita tot traficul prin Tor SAU sa alegi aplicatii individuale.</string>
-  <string name="wizard_configure_all">Toate aplicatiile folosesc Tor</string>
-  <string name="wizard_configure_select_apps">Alege aplicatii individuale pentru Tor</string>
-  <string name="wizard_tips_tricks">Aplicatii compatibile Orbot</string>
-  <string name="wizard_tips_msg">Aplicatiile de mai jos au fost create sa fie compatibile cu Orbot. Apasa pe fiecare buton pentru a instala acum, sau le poti gasi mai tarziu pe Google Play, pe site-ul GuardianProject.info sau pe F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Mesagerie instantanee securizată pentru Android</string>
-  <string name="wizard_tips_proxy">Setari pentru proxy - Invata cum sa configurezi aplicatii sa fie compatibile cu Orbot</string>
-  <string name="wizard_tips_duckgo">Motor de cautare DuckDuckGo</string>
-  <string name="wizard_tips_twitter">Seteaza proxy-ul Twitter \"localhost\" su portul 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Setări proxy</string>
-  <string name="wizard_final">Orbot este pregatit!</string>
-  <string name="wizard_exit_at_first_screen_toast">Configurați Orbot înainte de a începe să-l utilizați!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Vom deschide pagina https://check.torproject.org pentru a verifica daca Orbot este configurat corespunzator si daca este conectat la Tor.</string>
-  <string name="pref_hs_group">Serviciu de gazduire ascuns</string>
-  <string name="pref_general_group">General</string>
-  <string name="pref_start_boot_title">Porneste Orbot la boot-are</string>
-  <string name="pref_start_boot_summary">Porneste Orbot automat si conecteaza-te la Tor cand porneste dispozitivul</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Atentie</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Permisiuni</string>
-  <string name="wizard_permissions_root_msg1">Optional, ii poti oferi lui Orbot acces \"Superuser\" pentru a activa optiuni avansate, cum ar fi proxy transparent.</string>
-  <string name="wizard_permissions_root_msg2">Daca nu vrei sa faci asta, asigura-te ca folosesti aplicatii compatibile cu Orbot.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Aplicatii cu Orbot activat</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Aplicație sigură de chat cu codare Off-the-Record</string>
-  <string name="wizard_tips_play">Gaseste toate aplicatile Guardian Project pe Google Play</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Proxy transparent</string>
-  <string name="wizard_transproxy_msg">Asta va permite aplicatilor tale sa foloseasca Tor automat fara nici o configurare.</string>
-  <string name="wizard_transproxy_hint">(Bifeaza asta daca nu ai idee despre ce vorbim)</string>
-  <string name="wizard_transproxy_none">Nimic</string>
-  <string name="pref_transparent_tethering_title">Partajarea conexiunii Tor</string>
-  <string name="pref_transparent_tethering_summary">Activeaza proxy transparent pentru conexiuni partajate prin WiFi si USB (necesita restart)</string>
-  <string name="button_grant_superuser">Cere acces Superuser</string>
-  <string name="pref_select_apps">Selecteaza aplicatii</string>
-  <string name="pref_select_apps_summary">Alege aplicatii care sa foloseasca Tor</string>
-  <string name="pref_node_configuration">Configurare nod</string>
-  <string name="pref_node_configuration_summary">Setari avansate care ar putea sa iti reduca anonimitatea</string>
-  <string name="pref_entrance_node">Noduri de intrare</string>
-  <string name="pref_entrance_node_summary">Amprente, nick name-uri si adrese pentru primul hop</string>
-  <string name="pref_entrance_node_dialog">Introdu noduri de intrare</string>
-  <string name="pref_proxy_title">Proxy de retea pentru iesire (optional)</string>
-  <string name="pref_proxy_type_title">Tipul proxy-ului de iesire</string>
-  <string name="pref_proxy_type_summary">Tipul protocolului pentru proxy: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Introdu tipul proxy-ului</string>
-  <string name="pref_proxy_host_title">Host-ul proxy-ului de iesire</string>
-  <string name="pref_proxy_host_summary">Hostname-ul server-ului proxy</string>
-  <string name="pref_proxy_host_dialog">Introdu host-ul proxy-ului</string>
-  <string name="pref_proxy_port_title">Port-ul proxy-ului de iesire</string>
-  <string name="pref_proxy_port_summary">Port-ul serverului proxy</string>
-  <string name="pref_proxy_port_dialog">Introdu port-ul proxy</string>
-  <string name="pref_proxy_username_title">Username-ul proxy-ului de iesire</string>
-  <string name="pref_proxy_username_summary">Username-ul proxy-ului (optional)</string>
-  <string name="pref_proxy_username_dialog">Introdu username-ul proxy-ului</string>
-  <string name="pref_proxy_password_title">Parola pentru proxy-ul de iesire</string>
-  <string name="pref_proxy_password_summary">Parola pentru proxy (optional)</string>
-  <string name="pref_proxy_password_dialog">Introdu parola pentru proxy</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Configurez proxy transparent complet...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Configurez un proxy transparent bazat pe aplicatie...</string>
-  <string name="transparent_proxying_enabled">Proxy transparent ACTIVAT</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy activat pentru partajare!</string>
-  <string name="warning_error_starting_transparent_proxying_">ATENTIE: eroare la pornirea proxy-ului transparent!</string>
-  <string name="transproxy_rules_cleared">Reguli TransProxy golite</string>
-  <string name="couldn_t_start_tor_process_">Nu am putut porni procesul Tor:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Configurez proxy transparent bazat pe port...</string>
-  <string name="bridge_error">Eroare de punte</string>
-  <string name="bridge_requires_ip">Pentru a putea folosi optiunea de punte, trebuie introdusa cel putin o adresa IP pentru punte.</string>
-  <string name="send_email_for_bridges">Trimite un e-mail la bridges at torproject.org cu linia \"get bridges\" in continutul mail-ului de pe un cont de GMail.</string>
-  <string name="error">Eroare</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Setarile tale pentru adrese accesibile au cauzat o exceptie!</string>
-  <string name="your_relay_settings_caused_an_exception_">Setarile tale de relay au cauzat o exceptie!</string>
-  <string name="exit_nodes">Noduri de iesire</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Amprente, nick name-uri, tari si adrese pentru ultimul hop</string>
-  <string name="enter_exit_nodes">Introdu noduri de iesire</string>
-  <string name="exclude_nodes">Noduri de exclus</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Amprente, nick name-uri, tari si adrese de exclus</string>
-  <string name="enter_exclude_nodes">Introdu noduri de exclus</string>
-  <string name="strict_nodes">Noduri stricte</string>
-  <string name="use_only_these_specified_nodes">Foloseste *doar* nodurile specificate</string>
-  <string name="bridges">Punti</string>
-  <string name="use_bridges">Foloseste punti</string>
-  <string name="bridges_obfuscated">Punti mascate</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Activeaza noduri de intrare alternative in reteaua Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Activeaza daca puntile configurate sunt punti mascate</string>
-  <string name="ip_address_and_port_of_bridges">Adresa IP si port pentru punti</string>
-  <string name="enter_bridge_addresses">Introdu adresa pentru punte</string>
-  <string name="relays">Comutatoare</string>
-  <string name="relaying">Comutare</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Activeaza dispozitivul sa fie un comutator fara iesire</string>
-  <string name="relay_port">Port de retransmitere</string>
-  <string name="listening_port_for_your_tor_relay">Port pentru comutatorul tau Tor</string>
-  <string name="enter_or_port">Introdu portul OR</string>
-  <string name="relay_nickname">Nick name-ul comutatorului</string>
-  <string name="the_nickname_for_your_tor_relay">Nick name-ul pentru comutatorul tau Tor</string>
-  <string name="enter_a_custom_relay_nickname">Introdu un nick name pentru comutator</string>
-  <string name="reachable_addresses">Adresa accesibila</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Ruleaza ca si client in spatele firewall-ului cu politici restrictive</string>
-  <string name="reachable_ports">Porturi accesibile</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Porturi accesibile in spatele unui firewall restrictiv</string>
-  <string name="enter_ports">Introdu porturi</string>
-  <string name="enable_hidden_services">Serviciu de gazduire ascuns</string>
-  <string name="run_servers_accessible_via_the_tor_network">permite serverului de pe dispozitiv sa fie accesibil in reteaua Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">introdu porturile localhost-ului pentru servicile ascunse</string>
-  <string name="hidden_service_ports">Porturi de serviciu ascunse</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">numele serviciului tau ascuns (generat automat)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">activeaza exportul log-ului (trebuie folosit adb sau LogCat pentru vizualizare)</string>
-  <string name="project_home">Casa(le) proiectului:</string>
-  <string name="the_tor_license">Licenta Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Aplicatii tertiare:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="hidden_service_request">O aplicatie vrea sa deschida portul ascuns %S spre reteaua Tor. Este sigur daca ai incredere in aplicatie.</string>
-  <string name="found_existing_tor_process">gasit proces Tor existent...</string>
-  <string name="something_bad_happened">Ceva rau s-a intamplat. Verifica log-ul</string>
-  <string name="hidden_service_on">serviciu ascuns pe:</string>
-  <string name="unable_to_read_hidden_service_name">nu am putut citi numele serviciului ascuns</string>
-  <string name="unable_to_start_tor">Nu am reusit sa pornesc Tor:</string>
-  <string name="pref_use_sys_iptables_title">Foloseste Iptables implicite</string>
-  <string name="pref_use_sys_iptables_summary">foloseste fisierele binare iptables incorporate in locul celor din Orbot</string>
-  <string name="error_installing_binares">Fisierele binare Tor nu au putut fi instalate sau actualizate.</string>
-  <string name="pref_use_persistent_notifications">Arata tot timpul icoana in bara cand Orbot este conectat</string>
-  <string name="pref_use_persistent_notifications_title">Notificari active tot timpul</string>
-  <string name="notification_using_bridges">Punti activate!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Limbă</string>
-  <string name="set_locale_summary">Alege localele si limba pentru Orbot</string>
-  <string name="wizard_locale_title">Alege limba</string>
-  <string name="wizard_locale_msg">Lasa implicit sau schimba limba curenta</string>
-  <string name="btn_save_settings">Salvează setarile</string>
-  <string name="no_internet_connection_tor">Nu este conexiune la internet; Tor este în așteptare...</string>
-  <string name="bandwidth_">Lățime de bandă:</string>
-  <string name="down">jos</string>
-  <string name="up">sus</string>
-  <string name="pref_disable_network_title">Fără adormirea automată a rețelei</string>
-  <string name="pref_disable_network_summary">Pune Tor să doarmă dacă nu este internet disponibil</string>
-  <string name="newnym">Ați comutat la o nouă identitate Tor!</string>
-  <string name="menu_use_chatsecure">Utilizați ChatSecure</string>
-  <string name="permission_manage_tor_label">Administrare Tor</string>
-  <string name="permission_manage_tor_description">Activați această aplicație pentru a controla serviciile Tor</string>
-  <string name="install_apps_">Se instalează aplicația?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Nu este conexiune la rețea. Se pune Tor în adormire...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Conexiunea la rețea este bună. Se trezește Tor...</string>
-  <string name="updating_settings_in_tor_service">se actualizează configurările în serviciul Tor</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="you_do_not_have_root_access_enabled">Nu aveți activat accesul ca ROOT</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KiO</string>
-  <string name="mb">MiO</string>
-  <string name="menu_qr">Coduri QR</string>
-  <string name="bridge_mode">Mod punte</string>
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Activează</string>
-  <string name="send_email">Trimite email</string>
-  <string name="standard_browser">Navigator standard</string>
-</resources>
diff --git a/res/values-rs-rAR/strings.xml b/res/values-rs-rAR/strings.xml
deleted file mode 100644
index 0f876c9..0000000
--- a/res/values-rs-rAR/strings.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">reiniciar Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot está iniciándose…</string>
-  <string name="status_activated">Conectado a la red Tor</string>
-  <string name="status_disabled">\"Orbot está Desactivado</string>
-  <string name="status_shutting_down">Orbot se está apagando</string>
-  <string name="tor_process_complete">Completar</string>
-  <string name="not_anonymous_yet">CIUDADO: Tu tráfico no es anónimo aún! Por favor configura tus aplicaciones para que usen el HTTP proxy 127.0.0.1:8118 o SOCKS4A o el proxy SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Inicio</string>
-  <string name="menu_browse">Navegar</string>
-  <string name="menu_settings">Configuración</string>
-  <string name="menu_log">Registro</string>
-  <string name="menu_info">Ayuda</string>
-  <string name="menu_apps">Apps</string>
-  <string name="menu_start">Iniciar</string>
-  <string name="menu_stop">Detener</string>
-  <string name="menu_about">Acerca de</string>
-  <string name="menu_wizard">Asistente</string>
-  <string name="button_help">Ayuda</string>
-  <string name="button_close">Cerrar</string>
-  <string name="button_about">Acerca de</string>
-  <string name="button_clear_log">Borrar Registros</string>
-  <string name="menu_verify">Chequear</string>
-  <string name="menu_exit">Salir</string>
-  <string name="pref_trans_proxy_group">Proxying Transparente (Requiere Root)</string>
-  <string name="pref_trans_proxy_title">Proxying Transparente</string>
-  <string name="pref_trans_proxy_summary">Torificación Automática de Aplicaciones</string>
-  <string name="pref_transparent_all_title">Torear Todo</string>
-  <string name="btn_next">Siguiente</string>
-  <string name="btn_back">Atrás</string>
-  <string name="btn_finish">Finalizar</string>
-  <string name="btn_cancel">Cancelar</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_final">Orbot está listo!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">General</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-
-
-
-
-  <!--Transparent Proxy screen-->
-  <!--<string name="pref_use_whispercore">Use WhisperCore</string>
-<string name="pref_use_whispercore_summary">Use the proprietary NetFilter APIs provided by WhisperSystems (required device with WhisperCore installed)</string>-->
-  <string name="default_bridges"/>
-  <string name="powered_by">potenciado por The Tor Project</string>
-</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
deleted file mode 100644
index 816ca1a..0000000
--- a/res/values-ru/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot - это свободная программа для прокси-соединений, она позволяет другим приложениям более безопасно использовать интернет-соединение. Orbot использует Tor для шифрования интернет-трафика, который затем скрывается в ходе пересылки через несколько компьютеров в разных частях планеты. Tor является свободным программным приложением, а также открытой сетью, помогающей защититься от слежки в сетях, угрожающей личной свободе и частной жизни, конфиденциальным бизнес-деятельности и контактам, а также государственной программе бÐ
 µÐ·Ð¾Ð¿Ð°ÑÐ½Ð¾ÑÑ‚и, известной как анализ трафика.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">Запуск и остановка Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Запуск Orbot...</string>
-  <string name="status_activated">Подключён к сети Tor</string>
-  <string name="status_disabled">Orbot отключён</string>
-  <string name="status_shutting_down">Служба Tor выключается</string>
-  <string name="tor_process_starting">Запускается клиент Tor...</string>
-  <string name="tor_process_complete">завершено.</string>
-  <string name="tor_process_waiting">ожидание.</string>
-  <string name="not_anonymous_yet">ПРЕДУПРЕЖДЕНИЕ: ваш трафик ещё не анонимен! Пожалуйста, настройте свои приложения на использование HTTP-прокси 127.0.0.1:8118 или же SOCKS4A или SOCKS5-прокси 127.0.0.1:9050</string>
-  <string name="menu_home">Домашняя страница</string>
-  <string name="menu_browse">Просмотр</string>
-  <string name="menu_settings">Настройки</string>
-  <string name="menu_log">Журнал</string>
-  <string name="menu_info">Справка</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Запустить</string>
-  <string name="menu_stop">Остановить</string>
-  <string name="menu_about">О программе</string>
-  <string name="menu_promo_apps">Получить приложения...</string>
-  <string name="main_layout_download">Загрузка</string>
-  <string name="main_layout_upload">Отправка</string>
-  <string name="button_help">Справка</string>
-  <string name="button_close">Закрыть</string>
-  <string name="button_about">О программе</string>
-  <string name="button_clear_log">Очистить журнал</string>
-  <string name="menu_verify">Проверка</string>
-  <string name="menu_exit">Выход</string>
-  <string name="menu_scan">Сканировать QR-код моста</string>
-  <string name="menu_share_bridge">Опубликовать QR-код моста</string>
-  <string name="press_to_start">- долгое нажатие для запуска -</string>
-  <string name="pref_trans_proxy_group">Прозрачный прокси (требуется root-доступ)</string>
-  <string name="pref_trans_proxy_title">Прозрачный прокси</string>
-  <string name="pref_trans_proxy_summary">Автоматическая Tor-ификация приложений</string>
-  <string name="pref_transparent_all_title">Направлять всё через Tor</string>
-  <string name="pref_transparent_all_summary">Направлять трафик всех приложений через Tor</string>
-  <string name="pref_transparent_port_fallback_title">Резервный порт прокси</string>
-  <string name="pref_transparent_port_fallback_summary">ПРЕДУПРЕЖДЕНИЕ: обходит общие порты (80, 443, и т.д.). *ИСПОЛЬЗОВАТЬ ТОЛЬКО* если режимы \'Всё\' или \'Приложение\' не работают.</string>
-  <string name="pref_transparent_port_title">Список портов</string>
-  <string name="pref_transparent_port_summary">Список портов для проксификации. *ИСПОЛЬЗОВАТЬ ТОЛЬКО* если режимы \'Всё\' или \'Приложение\' не работают.</string>
-  <string name="pref_transparent_port_dialog">Введите порты для проксификации</string>
-  <string name="pref_has_root">Запросить root-доступ</string>
-  <string name="pref_has_root_summary">Запросить root-доступ для прозрачной проксификации</string>
-  <string name="status_install_success">Программа Tor успешно установлена!</string>
-  <string name="status_install_fail">Не удалось установить программу Tor. Пожалуйста, проверьте системный журнал и сообщите нам: tor-assistants at torproject.org</string>
-  <string name="title_error">Ошибка приложения</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Об Orbot</string>
-  <string name="btn_next">Вперёд</string>
-  <string name="btn_back">Назад</string>
-  <string name="btn_finish">Завершить</string>
-  <string name="btn_okay">OK</string>
-  <string name="btn_cancel">Отмена</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Некоторые сведения о программе Orbot</string>
-  <string name="wizard_details_msg">Orbot — это приложение с открытым исходным кодом, которое содержит Tor, LibEvent и Privoxy. Оно предоставляет локальный HTTP-прокси (8118) и SOCKS-прокси (9050) в сеть Tor. Orbot также позволяет на устройствах с правами root пересылать весь интернет-трафик через Tor.</string>
-  <string name="wizard_permissions_root">Разрешение получено</string>
-  <string name="wizard_permissions_stock">Разрешения Orbot</string>
-  <string name="wizard_premissions_msg_root">Отлично! Мы определили, что вы предоставили root-права для Orbot. Мы будем использовать эту возможность с умом.</string>
-  <string name="wizard_permissions_msg_stock">Хотя это и не требуется, Orbot может быть более мощным инструментом, если ваше устройство имеет права root. Нажмите на кнопку ниже и предоставьте Orbot супервозможности!</string>
-  <string name="wizard_permissions_no_root">Если у вас нет root-прав или вы не имеете представления о чём мы говорим, просто убедитесь, что используете приложения, разработанные для Orbot.</string>
-  <string name="wizard_permissions_consent">Я понимаю и хочу продолжить без прав суперпользователя</string>
-  <string name="wizard_permission_enable_root">Дать root-права Orbot</string>
-  <string name="wizard_configure">Настроить Tor-ификацию</string>
-  <string name="wizard_configure_msg">Программа Orbot даёт вам возможность направлять трафик всех приложений через Tor ИЛИ выбрать приложения для перенаправления самостоятельно.</string>
-  <string name="wizard_configure_all">Направлять все приложения через Tor</string>
-  <string name="wizard_configure_select_apps">Направлять выбранные приложения через Tor</string>
-  <string name="wizard_tips_tricks">Orbot-задействованные приложения</string>
-  <string name="wizard_tips_msg">Мы советуем вам скачать и использовать приложения, которые умеют работать напрямую через Orbot. Нажмите на кнопки ниже, чтобы запустить процесс установки.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - защищённый обмен сообщениями в Android</string>
-  <string name="wizard_tips_proxy">Настройки прокси: узнайте, как настроить приложения для работы с Orbot</string>
-  <string name="wizard_tips_duckgo">Приложение поисковой системы DuckDuckGo</string>
-  <string name="wizard_tips_twitter">Twitter поддерживает http-прокси \"localhost:8118\"</string>
-  <string name="wizard_tips_story_maker">StoryMaker - напишите рассказ и оставьте его Tor для обеспечения безопасности!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Настройки прокси</string>
-  <string name="wizard_proxy_help_msg">Если используемое вами приложение для Android поддерживает HTTP или SOCKS-прокси, то вы можете настроить его на подключение к Orbot и использование Tor.\n\n\nЗначение хоста - 127.0.0.1 или \"localhost\". Для HTTP номер порта - 8118. Для SOCKS-прокси - 9050. По возможности используйте SOCKS4A или SOCKS5.\n \n\n\nВы можете узнать больше о работе через прокси на Android, прочитав этот FAQ: http://tinyurl.com/proxyandroid\n </string>
-  <string name="wizard_final">Orbot готов к использованию!</string>
-  <string name="wizard_final_msg">Миллионы людей во всём мире используют Tor по различным причинам. Журналисты и блоггеры, правозащитники, сотрудники правоохранительных органов, солдаты, корпорации, граждане стран с репрессивным режимом и просто обычные граждане..., а теперь готовы и вы!</string>
-  <string name="wizard_exit_at_first_screen_toast">Пожалуйста, настройте Orbot прежде чем приступить к использованию!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Вы успешно подключились к сети Tor, но это НЕ значит, что ваше устройство безопасно. Вы можете воспользоваться функцией \'Проверка\' из меню, чтобы протестировать ваш браузер.\n\nПосетите наш сайт https://guardianproject.info/apps/orbot или отправьте письмо на адрес help at guardianproject.info, чтобы узнать больше.</string>
-  <string name="tor_check">Это приведёт к запуску браузера, выбранного на вашем устройстве по умолчанию, и подключению к сайту https://check.torproject.org с целью проверки правильности работы Orbot и определения, подключены ли вы к сети Tor.</string>
-  <string name="pref_hs_group">Скрытые службы</string>
-  <string name="pref_general_group">Общие</string>
-  <string name="pref_start_boot_title">Запускать Orbot при загрузке</string>
-  <string name="pref_start_boot_summary">Автоматически запускать Orbot и подключаться к сети Tor при загрузке вашего Android-устройства</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot позволяет использовать Tor на Android!\n\nTor позволяет вам защититься от фильтрации содержимого, анализа трафика и наблюдения за сетью, которые ставят под угрозу приватность, конфиденциальную информацию и личные отношения.\n\nЭтот мастер поможет вам настроить Orbot и Tor на вашем устройстве.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Предупреждение</string>
-  <string name="wizard_warning_msg">Сама по себе установка Orbot не сделает автоматически ваш мобильный трафик анонимным.\n\nВы должны правильно настроить Orbot, ваше устройство и другие приложения, что бы успешно использовать Tor.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Разрешения</string>
-  <string name="wizard_permissions_root_msg1">Вы так же можете по желанию дать Orbot права \'Суперпользователя\' для доступа к дополнительным возможностям типа прозрачной проксификации.</string>
-  <string name="wizard_permissions_root_msg2">Если вы не хотите делать это, пожалуйста, удостоверьтесь, что используете приложения, созданные для работы с Orbot.</string>
-  <string name="wizard_permissions_no_root_msg">Похоже, ваше устройство не имеет root-прав и не предоставляет доступ \'Суперпользователя\'.\n\nЧтобы использовать Tor, вам надо использовать приложения, построенные для работы с Orbot или те, которые поддерживают использование HTTP или SOCKS-прокси.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Приложения, работающие с Orbot:</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: приложение для безопасной переписки с конфиденциальным шифрованием</string>
-  <string name="wizard_tips_orweb">Orfox: конфиденциальный браузер, работающий через Tor</string>
-  <string name="wizard_tips_play">Найти все приложения Guardian Project на Google Play</string>
-  <string name="wizard_tips_fdroid">Найти все приложения Guardian Project на F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Найти все приложения Guardian Project на сайте https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Прозрачное проксирование</string>
-  <string name="wizard_transproxy_msg">Это позволяет вашим приложениям автоматически работать по сети Tor без какого-либо конфигурирования.</string>
-  <string name="wizard_transproxy_hint">(Отметьте данный пункт, если вы не знаете о чём идёт речь)</string>
-  <string name="wizard_transproxy_none">Нет</string>
-  <string name="pref_transparent_tethering_title">Тетеринг Tor</string>
-  <string name="pref_transparent_tethering_summary">Включить прозрачную проксификацию Tor для устройств с тетерингом по Wi-Fi и USB (требуется перезапуск)</string>
-  <string name="button_grant_superuser">Запросить доступ Суперпользователя</string>
-  <string name="pref_select_apps">Выбранные приложения</string>
-  <string name="pref_select_apps_summary">Выбрать приложения для направления через Tor</string>
-  <string name="pref_node_configuration">Конфигурация узла</string>
-  <string name="pref_node_configuration_summary">Это дополнительные настройки, которые могут снизить вашу анонимность</string>
-  <string name="pref_entrance_node">Входные узлы</string>
-  <string name="pref_entrance_node_summary">Отпечатки, псевдонимы, страны и адреса для первого прыжка</string>
-  <string name="pref_entrance_node_dialog">Введите входные узлы</string>
-  <string name="pref_allow_background_starts_title">Разрешить фоновую загрузку</string>
-  <string name="pref_allow_background_starts_summary">Позволить любому приложению требовать от Orbot запускать Tor и относящиеся к нему сервисы</string>
-  <string name="button_proxy_all">Проксировать всё</string>
-  <string name="button_proxy_none">Не проксировать </string>
-  <string name="button_invert_selection">Инвертировать выделенное</string>
-  <string name="pref_proxy_title">Исходящий сетевой прокси (необязательно)</string>
-  <string name="pref_proxy_type_title">Тип прокси</string>
-  <string name="pref_proxy_type_summary">Протокол для использования прокси-сервером: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Введите тип прокси</string>
-  <string name="pref_proxy_host_title">Хост прокси</string>
-  <string name="pref_proxy_host_summary">Имя хоста прокси-сервера</string>
-  <string name="pref_proxy_host_dialog">Введите хост прокси</string>
-  <string name="pref_proxy_port_title">Порт прокси</string>
-  <string name="pref_proxy_port_summary">Порт прокси-сервера</string>
-  <string name="pref_proxy_port_dialog">Введите порт прокси</string>
-  <string name="pref_proxy_username_title">Имя пользователя прокси</string>
-  <string name="pref_proxy_username_summary">Имя пользователя прокси-сервера (необязательно)</string>
-  <string name="pref_proxy_username_dialog">Введите имя пользователя прокси</string>
-  <string name="pref_proxy_password_title">Пароль пользователя прокси</string>
-  <string name="pref_proxy_password_summary">Пароль пользователя прокси-сервера (необязательно)</string>
-  <string name="pref_proxy_password_dialog">Введите пароль пользователя прокси</string>
-  <string name="status">Статус</string>
-  <string name="setting_up_full_transparent_proxying_">Установка общей прозрачной проксификации...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Установка основанной на приложениях прозрачной проксификации...</string>
-  <string name="transparent_proxying_enabled">Прозрачная проксификация ВКЛЮЧЕНА</string>
-  <string name="transproxy_enabled_for_tethering_">Прозрачный прокси поддерживает тетеринг!</string>
-  <string name="warning_error_starting_transparent_proxying_">ВНИМАНИЕ: ошибка запуска прозрачной проксификации!</string>
-  <string name="transproxy_rules_cleared">Правила прозрачного прокси удалены</string>
-  <string name="couldn_t_start_tor_process_">Невозможно запустить Tor: </string>
-  <string name="privoxy_is_running_on_port_">Polipo работает на порту:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Установка основанной на портах прозрачной проксификации...</string>
-  <string name="bridge_error">Ошибка моста</string>
-  <string name="bridge_requires_ip">Для использования необходимо задать IP-адрес как минимум одного моста.</string>
-  <string name="send_email_for_bridges">Отправьте письмо на адрес bridges at torproject.org со строкой \"get bridges\" в теле сообщения из учётной записи GMail.</string>
-  <string name="error">Ошибка</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Ваши настройки доступных адресов вызвали исключение!</string>
-  <string name="your_relay_settings_caused_an_exception_">Настройки вашего ретранслятора вызвали исключение!</string>
-  <string name="exit_nodes">Выходные узлы</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Отпечатки, псевдонимы, страны и адреса для последнего прыжка</string>
-  <string name="enter_exit_nodes">Введите выходные узлы</string>
-  <string name="exclude_nodes">Исключённые узлы</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Отпечатки, псевдонимы, страны и адреса на исключение</string>
-  <string name="enter_exclude_nodes">Введите исключённые узлы</string>
-  <string name="strict_nodes">Точные узлы</string>
-  <string name="use_only_these_specified_nodes">Использовать *только* эти заданные узлы</string>
-  <string name="bridges">Мосты</string>
-  <string name="use_bridges">Использовать мосты</string>
-  <string name="bridges_obfuscated">Обфусцированные мосты</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Включить альтернативные входные узлы в сеть Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Заданные мосты обфусцированы</string>
-  <string name="ip_address_and_port_of_bridges">IP-адреса и порты мостов</string>
-  <string name="enter_bridge_addresses">Введите адреса мостов</string>
-  <string name="relays">Ретрансляторы</string>
-  <string name="relaying">Ретрансляция</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Разрешить вашему устройству быть невыходным ретранслятором</string>
-  <string name="relay_port">Порт ретранслятора</string>
-  <string name="listening_port_for_your_tor_relay">Слушающий порт для вашего ретранслятора Tor</string>
-  <string name="enter_or_port">Введите порт OR</string>
-  <string name="relay_nickname">Имя ретранслятора</string>
-  <string name="the_nickname_for_your_tor_relay">Имя для вашего ретранслятора Tor</string>
-  <string name="enter_a_custom_relay_nickname">Введите пользовательское имя ретранслятора</string>
-  <string name="reachable_addresses">Доступные адреса</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Запускать как клиент за межсетевым экраном с ограничивающими политиками</string>
-  <string name="reachable_ports">Доступные порты</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Порты, доступные из-за ограничительного сетевого экрана</string>
-  <string name="enter_ports">Введите порты</string>
-  <string name="enable_hidden_services">Включить скрытые службы</string>
-  <string name="run_servers_accessible_via_the_tor_network">Запустить сервера, доступные через сеть Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">Введите локальные порты для скрытых служб</string>
-  <string name="hidden_service_ports">Порты скрытой службы</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Адресуемое имя для вашей скрытой службы (создаётся автоматически)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Включить вывод журнала отладки (требует использовать adb или aLogCat для просмотра)</string>
-  <string name="project_home">Домашняя страница проекта: </string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Лицензия Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Программы сторонних разработчиков: </string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Приложение хочет открыть скрытый порт сервера %S сети Tor. Это безопасно, если вы доверяете данному приложению.</string>
-  <string name="found_existing_tor_process">найден существующий процесс Tor...</string>
-  <string name="something_bad_happened">Произошла какая-то ошибка. Проверьте журнал.</string>
-  <string name="hidden_service_on">скрытая служба на:</string>
-  <string name="unable_to_read_hidden_service_name">невозможно прочитать имя скрытой службы</string>
-  <string name="unable_to_start_tor">Невозможно запустить Tor:</string>
-  <string name="unable_to_reset_tor">Перезагрузите устройство, невозможно переустановить Tor!</string>
-  <string name="pref_use_sys_iptables_title">Использовать Iptables по умолчанию</string>
-  <string name="pref_use_sys_iptables_summary">Использовать встроенный файл iptables вместо поставляемого с Orbot</string>
-  <string name="error_installing_binares">Исполняемые файлы Tor не смогли установиться или обновится.</string>
-  <string name="pref_use_persistent_notifications">Всегда отображать иконку в панели задач когда Orbot подключен</string>
-  <string name="pref_use_persistent_notifications_title">Постоянное уведомление о работе</string>
-  <string name="pref_use_expanded_notifications">Показать расширенное уведомление Tor со страной выхода и IP</string>
-  <string name="pref_use_expanded_notifications_title">Расширенные уведомления</string>
-  <string name="notification_using_bridges">Мосты включены!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Язык</string>
-  <string name="set_locale_summary">Выбрать язык интерфейса для Orbot</string>
-  <string name="wizard_locale_title">Выбрать язык</string>
-  <string name="wizard_locale_msg">Оставить по умолчанию или переключить текущий язык</string>
-  <string name="powered_by">основано на Tor</string>
-  <string name="btn_save_settings">Сохранить настройки</string>
-  <string name="no_internet_connection_tor">Отсутствует подключение к интернету, Tor находится в режиме ожидания…</string>
-  <string name="bandwidth_">Канал:</string>
-  <string name="down">к нам</string>
-  <string name="up">от нас</string>
-  <string name="pref_disable_network_title">Автозасыпание без сети</string>
-  <string name="pref_disable_network_summary">Переводить Tor в спящий режим при отсутствии интернета</string>
-  <string name="newnym">Вы переключились на новый идентификатор Tor!</string>
-  <string name="menu_verify_browser">Проверить браузер</string>
-  <string name="menu_use_chatsecure">Использовать ChatSecure</string>
-  <string name="permission_manage_tor_label">Управление Tor</string>
-  <string name="permission_manage_tor_description">Разрешить приложению управлять сервисом Tor</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Не похоже, что у вас установлен Orfox. Хотите справку на эту тему или просто открыть браузер?</string>
-  <string name="install_apps_">Установить приложения?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Нет подключения к сети. Tor входит в режим сна...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Подключение к сети установлено. Tor просыпается...</string>
-  <string name="updating_settings_in_tor_service">обновление настроек в сервисе Tor</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Порт, на котором Tor предоставляет свой SOCKS-прокси (по умолчанию: 9050, 0 - для отключения)</string>
-  <string name="pref_socks_dialog">Настройка порта SOCKS</string>
-  <string name="pref_transport_title">Порт прозрачного прокси Tor</string>
-  <string name="pref_transport_summary">Порт, на котором Tor предоставляет свой прозрачный прокси (по умолчанию: 9040, 0 - для отключения)</string>
-  <string name="pref_transport_dialog">Настройка порта прозрачного прокси</string>
-  <string name="pref_dnsport_title">Порт DNS Tor</string>
-  <string name="pref_dnsport_summary">Порт, на котором Tor предоставляет свой DNS (по умолчанию: 5400, 0 - для отключения)</string>
-  <string name="pref_dnsport_dialog">Настройка порта DNS</string>
-  <string name="pref_torrc_title">Пользовательские настройки Torrc</string>
-  <string name="pref_torrc_summary">ТОЛЬКО ДЛЯ ЭКСПЕРТОВ: внесите настройки напрямую в строки файла конфигурации torrc</string>
-  <string name="pref_torrc_dialog">Пользовательские Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus -  приложение Benetech документация по правам человека </string>
-  <string name="your_tor_public_ips_">Ваши публичные IP-адреса Tor:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Пожалуйста, отключите эту программу в Android->Настройки->Приложения, если у вас возникли проблемы с Orbot:</string>
-  <string name="app_conflict"> Конфликт приложений</string>
-  <string name="pref_transproxy_refresh_title">Автообновление прозрачного прокси</string>
-  <string name="pref_transproxy_refresh_summary">Повторно применить правила прозрачного прокси при изменении состояния сети</string>
-  <string name="pref_transproxy_flush_title">ПРИНУДИТЕЛЬНОЕ УДАЛЕНИЕ прозрачного прокси</string>
-  <string name="pref_transproxy_flush_summary">Нажмите здесь, чтобы НЕМЕДЛЕННО очистить все сетевые правила прозрачного прокси</string>
-  <string name="transparent_proxy_rules_flushed_">Правила прозрачного прокси удалены!</string>
-  <string name="you_do_not_have_root_access_enabled">У вас не включён root-доступ</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Возможно, потребуется остановить и запустить Orbot заново для подключения изменений настроек.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">кбит/с</string>
-  <string name="mbps">мбит/с</string>
-  <string name="kb">КБ</string>
-  <string name="mb">МБ</string>
-  <string name="bridges_updated">Мосты обновлены</string>
-  <string name="restart_orbot_to_use_this_bridge_">Пожалуйста, перезапустите Orbot для вступления изменения в силу</string>
-  <string name="menu_qr">QR-коды</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Если ваша сеть мобильной связи активно блокирует Tor, вы можете использовать мосты Tor для доступа к сети. Выберите один из типов мостов выше, чтобы включить эту функцию.</string>
-  <string name="bridge_mode">Режим моста</string>
-  <string name="get_bridges_email">Эл. почта</string>
-  <string name="get_bridges_web">Сайт</string>
-  <string name="activate">Активация</string>
-  <string name="apps_mode">VPN-режим приложений</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Вы можете включить функцию перенаправления всех приложений на вашем устройстве через сеть Tor, используя функцию VPN в Android.\n\n* ПРЕДУПРЕЖДЕНИЕ * Это новая экспериментальная функция и в некоторых случаях может остановиться или не запуститься автоматически. Она не должна быть использована для анонимности, а ТОЛЬКО для прохождения фильтров и межсетевых экранов.</string>
-  <string name="send_email">Отправить письмо</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Вы можете получить адрес моста по электронной почте, с сайта или путём сканирования QR-кода. Выберите \"Эл. почта\" или \"Сайт\" ниже, чтобы запросить адрес моста.\n\nПолученный адрес скопируйте и вставьте его в разделе настроек Orbot \"Мосты\", после чего перезапустите приложение.</string>
-  <string name="install_orweb">Установить Orfox</string>
-  <string name="standard_browser">Стандартный браузер</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">ПРИМЕЧАНИЕ: только стандартные мосты Tor работают на устройствах Intel X86/Atom</string>
-  <string name="vpn_default_world">Мир</string>
-</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
deleted file mode 100644
index 32a0f13..0000000
--- a/res/values-si-rLK/strings.xml
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">Tor ආරම්භ කිරීම හා නැවතීම</string>
-  <string name="tor_proxy_service_process">Tor නියුතු සේවා </string>
-  <string name="status_starting_up">Orbot ආරම්භ කරමින්…</string>
-  <string name="status_activated">Tor ජාලයට සබැදියි</string>
-  <string name="status_disabled">Orbot ක්‍රියාවිරහිත කර ඇත </string>
-  <string name="tor_process_starting">Tor දායකයා ආරම්භ කරමින්...</string>
-  <string name="tor_process_complete">සම්පුර්ණයි.</string>
-  <string name="tor_process_waiting">රැදී සිටියි.</string>
-  <string name="not_anonymous_yet">අවවාදයයි: ඔබේ ගනුදෙනු තවම නිර්නාමික නොමැත. කරුණාකර ඔබේ යෙදුම් සදහා HTTP proxy 127.0.0.1:8118 හෝ SOCKS4A හෝ SOCKS5 proxy 127.0.0.1:9050 භාවිතා වන පරිදි වින්‍යාස කරගන්න.</string>
-  <string name="menu_home">මුල්පිටුව</string>
-  <string name="menu_browse">පිරික්සන්න</string>
-  <string name="menu_settings">සිටවුම්</string>
-  <string name="menu_log">ලොගය </string>
-  <string name="menu_info">උදව්</string>
-  <string name="menu_start">අරඹන්න</string>
-  <string name="menu_stop">නවත්වන්න</string>
-  <string name="menu_about">පිළිබද</string>
-  <string name="main_layout_download">භාගත කරන්න </string>
-  <string name="main_layout_upload">උඩුගත කරන්න </string>
-  <string name="button_help">උදව්</string>
-  <string name="button_close">වසන්න</string>
-  <string name="button_about">පිළිබද</string>
-  <string name="button_clear_log">ලොගය හිස් කරන්න </string>
-  <string name="menu_verify">පරීක්ෂා කරන්න</string>
-  <string name="menu_exit">ඉවත් වන්න</string>
-  <string name="press_to_start">- ආරම්භ කිරීමට ටික වෙලාවක් තදකරන්න -</string>
-  <string name="pref_trans_proxy_group">පාරදෘශ්‍ය නියුතුසේවා (මුලය අවශ්‍ය වේ)</string>
-  <string name="pref_trans_proxy_title">පාරදෘශ්‍ය නියුතුසේවා</string>
-  <string name="pref_trans_proxy_summary">යොමුන් ස්වයංක්‍රීයව ටොර්කරණය </string>
-  <string name="pref_transparent_all_title">Tor සියල්ල</string>
-  <string name="pref_transparent_all_summary">Tor තුල සියළු යොමුවලට පවතින නියුතුසේවා තදබදය</string>
-  <string name="pref_transparent_port_fallback_title">පෝට නියුතුසේවා පසුබැසීම </string>
-  <string name="pref_transparent_port_fallback_summary">අවවාදයයි: මගහැරිය යුතු පොදු පෝට (80, 443, යනාදිය). *භාවිතාව හුදෙක්* \'සියළු\' සෝ \'යොමු\' ප්‍රකාර වැඩ නොකරන්නේ නම් පමණි.</string>
-  <string name="pref_transparent_port_title">පෝට ලැයිස්තුව </string>
-  <string name="pref_transparent_port_summary">නියුතුසේවා සදහා පෝට ලැයිස්තුව. *භාවිතාව හුදෙක්* \'සියළු\' සෝ \'යොමු\' ප්‍රකාර වැඩ නොකරන්නේ නම් පමණි.</string>
-  <string name="pref_transparent_port_dialog">පෝට නියුතුසේවාවට එක් කරන්න</string>
-  <string name="pref_has_root">මුල ප්‍රවේශය ඉල්ලන්න </string>
-  <string name="pref_has_root_summary">පාරදෘශ්‍ය නියුතුසේවා සදහා මුල ප්‍රවේශය ඉල්ලන්න </string>
-  <string name="status_install_success">Tor ද්විමයන් සාර්ථකව ස්ථාපනය කරන ලදී!</string>
-  <string name="status_install_fail">Tor ද්විමය ගොනුවන් ස්ථාපනය කිරීමට නොහැකි විය. කරුණාකර ලොගය පරික්ෂාකර tor-assistants at torproject.org ට දැනුම් දෙන්න</string>
-  <string name="title_error">යෙදුම් දෝෂ </string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Orbot පිලිබදව </string>
-  <string name="btn_next">ඊලග </string>
-  <string name="btn_back">පසුපසට</string>
-  <string name="btn_finish">අවසානයි </string>
-  <string name="btn_okay">එකගයි</string>
-  <string name="btn_cancel">අවලංගු කරන්න</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Orbot පිළිබද ඇතැම් විස්තර </string>
-  <string name="wizard_permissions_root">අනුමැතිය ලැබී ඇත.</string>
-  <string name="wizard_permissions_stock">Orbot අනුමැතියන් </string>
-  <string name="wizard_premissions_msg_root">අනර්ඝයි! ඔබ මුල Orbot සදහා මුල අනුමැතියන් සබල කර ඇති බව අපට අනාවරණය විය. අප මෙම බලය නැණවත් ලෙස භාවිතා කිරීමට පොරොන්දු වෙමු.</string>
-  <string name="wizard_permissions_msg_stock">අත්‍යවශ්‍ය නොවුවත් Orbot හට මුල ප්‍රවේශය ලබාදීමෙන් එය බලගතු මෙවලමක් බවට පත්වේ. පහල බොත්තම භාවිතයෙන් Orbot හට සුපිරිබලය ලබාදෙන්න!</string>
-  <string name="wizard_permissions_no_root">ඔබට මුල ප්‍රවේශය සම්බන්ධව කිසිදු අවබෝධයක් නොමැති නම්, Orbot වල වඩා කරන යොමුන් පමණක් භාවිතා කරන්න.</string>
-  <string name="wizard_permissions_consent">මා හට වැටහෙයි. සුපිරි පරිශිලකයා නොමැතිව දිගටම කරගෙන යාමට කැමැත්තෙමි.</string>
-  <string name="wizard_permission_enable_root">Orbot හට මුලය ප්‍රදානය කරන්න </string>
-  <string name="wizard_configure">ටොර්කරණය වින්‍යාස කරන්න </string>
-  <string name="wizard_configure_msg">Orbot ඔබට සියළු යොමුවල ගනුදෙනු Tor තුලින් යැවීමට හෝ ඔබේ යොමු තනි තනිව තෝරාගැනීමට අවකාශ ලබාදේ.</string>
-  <string name="wizard_configure_all">සියළු යොමුවලට පවතින නියුතුසේවා Tor තුලින් යවන්න </string>
-  <string name="wizard_configure_select_apps">තනි යොමුන් Tor සදහා තෝරාගන්න </string>
-  <string name="wizard_tips_tricks">Orbot සබල කල යොමු </string>
-  <string name="wizard_tips_msg">පහත යොමු සාදා ඇත්තේ Orbot සමග වැඩ කිරීමට ය. ස්ථාපනය කිරීම සදහා එක් එක් බොත්තම මත ක්ලික් කරන්න. නැතහොත් ඔබට මෙම යොමු Google Play, GuardianProject.info වෙබ්අඩවියෙන් හෝ F-Droid.org වලින් සොයා ගත හැක.</string>
-  <string name="wizard_tips_proxy">නියුතු සේවා සිටුවම් - Orbot සමග ක්‍රියාකිරීමට අනෙක් යොමු වින්‍යාස කරන ආකාරය හදාරන්න </string>
-  <string name="wizard_tips_duckgo">DuckDuckGo සෙවුම් යන්ත්‍ර යෙදුම </string>
-  <string name="wizard_tips_twitter">Twitter නියුතුසේවාව \"localhost\" සත්කාරකයට හා පෝටය 8118 ට පිහිටුවන්න </string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">නියුතු සේවා සිටුවම් </string>
-  <string name="wizard_final">Orbot සුදානම්!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">මෙමගින් ඔබේ වෙබ් බ්‍රව්සරය https://check.torproject.org ට විවෘත වේ. එවිට ඔබට Orbot නිසි ලෙස වින්‍යාස වී ඇතිදැයි හා ඔබ Tor ජාලයට සම්බන්ධ වී ඇතිදැයි දැකගත හැක.</string>
-  <string name="pref_hs_group">සැගවුණු සේවා සත්කාර කරමින් </string>
-  <string name="pref_general_group">පොදු</string>
-  <string name="pref_start_boot_title">Orbot ඇරඹුම් ධාවකයේ අරඹන්න </string>
-  <string name="pref_start_boot_summary">Orbot ස්වයංක්‍රියව ආරම්භ කර, ඔබේ Android උපකරණය පටන්ගත් විට Tor වලට සම්බන්ධ කරගන්න.</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">අවවාදයයි</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">අනුමැතිය</string>
-  <string name="wizard_permissions_root_msg1">ඔබට අවශ්‍ය නම් Orbot සුපිරි පරිශීලකයාට පාරදෘශ්‍ය නියුතු සේවා වැනි ප්‍රගමන විශේෂාංග සබල කිරීමට අවසර ලබාදිය හැක. </string>
-  <string name="wizard_permissions_root_msg2">ඔබට මෙය සිදු කිරීමට අවශ්‍යතාවක් නොමැති නම්, Orbot වල වැඩා කරන යොමුන් පමණක් භාවිතා කරන්න.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot සබල කල යොමු</string>
-  <string name="wizard_tips_play">Google Play තුලින් Guardian Project apps තෝරාගන්න </string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">පාරදෘශ්‍ය නියුතුසේවා</string>
-  <string name="wizard_transproxy_msg">මෙමගින් ඔබේ යොමුන්ට කිසිදු වින්‍යසකරණයක් නොමැතිව Tor ජාලය හරහා ස්වයංක්‍රියව ක්‍රියාත්මක විය හැක.</string>
-  <string name="wizard_transproxy_hint">(ඔබට අප සදහන් කල කරුණු පිළිබද අවබෝධයක් නොමැති නම් මෙම කොටුව සලකුණු කරන්න)</string>
-  <string name="wizard_transproxy_none">කිසිවක් නොමැත</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Wifi හා USB Tethered උපාංග සදහා Tor පාරදෘශ්‍ය නියුතු සේවාව සබල කරන්න (නැවත ආරම්භ කිරීමක් අවශ්‍යවේ)</string>
-  <string name="button_grant_superuser">සුපිරි පරිශීලකයාගේ ප්‍රවේශය ඉල්ලන්න </string>
-  <string name="pref_select_apps">යොමුන් තෝරාගන්න </string>
-  <string name="pref_select_apps_summary">Tor හරහා යැවීමට යොමුන් තෝරාගන්න </string>
-  <string name="pref_node_configuration">නොඩු වින්‍යාසකරණය </string>
-  <string name="pref_node_configuration_summary">මේවා ඔබේ නිර්නාමිකතාව අඩු කරන ප්‍රගමන සිටුවම් ය.</string>
-  <string name="pref_entrance_node">ඇතුළු විමේ නොඩු </string>
-  <string name="pref_entrance_node_summary">පළමු hop සදහා අගිලිසලකුණු, nicks, රටවල් හා ලිපිනයන් </string>
-  <string name="pref_entrance_node_dialog">ඇතුළු විමේ නොඩුවලට පිවිසෙන්න </string>
-  <string name="pref_proxy_title">Outbound ජාල නියුතු </string>
-  <string name="pref_proxy_type_title">Outbound නියුතු වර්ගයකි </string>
-  <string name="pref_proxy_type_summary">නියුතු සේවාදායකයන් සදහා ප්‍රොටෝකෝල: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">නියුතු සේවා වර්ගය ඇතුලත් කරන්න </string>
-  <string name="pref_proxy_host_title">Outbound නියුතු සත්කාරයකි  </string>
-  <string name="pref_proxy_host_summary">නියුතු සේවාදායකගේ සත්කාරක නාමය </string>
-  <string name="pref_proxy_host_dialog">නියුතුසේවා සත්කාරය ඇතුලු කරන්න </string>
-  <string name="pref_proxy_port_title">Outbound නියුතු පොර්ටයකි </string>
-  <string name="pref_proxy_port_summary">නියුතු සේවාදායක පෝටය</string>
-  <string name="pref_proxy_port_dialog">නියුතු සේවා පෝටය ඇතුළු කරන්න </string>
-  <string name="status">තත්වය</string>
-  <string name="setting_up_full_transparent_proxying_">සම්පුර්ණ පාරදෘශ්‍ය නියුතුසේවා පිහිටුවීම...</string>
-  <string name="setting_up_app_based_transparent_proxying_">යොමු පදනම් කරගෙන ක්‍රියාත්මක වන පාරදෘශ්‍ය නියුතුසේවා පිහිටුවීම...</string>
-  <string name="transparent_proxying_enabled">පාරදෘශ්‍ය නියුතුසේවා සබල කර ඇත </string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy Tethering සදහා සබල කර ඇත!</string>
-  <string name="warning_error_starting_transparent_proxying_">අවවාදයයි: පාරදෘශ්‍ය නියුතුසේවාවෙන් දෝෂයක් හටගෙන ඇත!</string>
-  <string name="transproxy_rules_cleared">TransProxy කොන්දේසි ඉවත් කර ඇත </string>
-  <string name="couldn_t_start_tor_process_">Tor ක්‍රියාවලින් ආරම්භ කිරීමට නොහැකි විය:</string>
-  <string name="setting_up_port_based_transparent_proxying_">පෝට පදනම් කරගෙන ක්‍රියාත්මක වන පාරදෘශ්‍ය නියුතුසේවා පිහිටුවීම...</string>
-  <string name="bridge_error">සේතු දෝෂයකි</string>
-  <string name="bridge_requires_ip">සේතු විශේෂාංග භාවිතාය සදහා ඔබ අඩු තරමින් එක් සේතු IP ලිපිනයක් හෝ ඇතුලත් කල යුතුය.</string>
-  <string name="send_email_for_bridges">\"get bridges\" නම් පේලිය විද්‍යුත් ලිපියේ දේහයේ ඇතුලත් කර gmail ගිණුමකින් bridges at torproject.org ලිපිනයට යවන්න.</string>
-  <string name="error">දෝෂයකි</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">ඔබේ සේන්දුවන ලිපිනයෙහි සිටුවම්වල ව්‍යතිරේකයක් හටගෙන ඇත!</string>
-  <string name="your_relay_settings_caused_an_exception_">ඔබේ ප්‍රතියෝජක සිටුවම්වල ව්‍යතිරේකයක් හටගෙන ඇත!</string>
-  <string name="exit_nodes">පිටවුම් නෝඩු</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">පළමු hop සදහා අගිලිසලකුණු, nicks, රටවල් හා ලිපිනයන්</string>
-  <string name="enter_exit_nodes">පිටවුම් නොඩුවලට පිවිසෙන්න</string>
-  <string name="exclude_nodes">අත්හරින නොඩු</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">අත්හරින අගිලිසලකුණු, nicks, රටවල් හා ලිපිනයන්</string>
-  <string name="enter_exclude_nodes">අත්හරින නොඩුඩුවලට පිවිසෙන්න</string>
-  <string name="strict_nodes">දැඩි නොඩු </string>
-  <string name="use_only_these_specified_nodes">ඉහත සදහන් නොඩු *පමණක්* භාවිතා කරන්න </string>
-  <string name="bridges">සේතු</string>
-  <string name="use_bridges">සේතු භාවිතා කරන්න </string>
-  <string name="bridges_obfuscated">සේතු අදුරු කරන්න </string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Tor ජාලයට විකල්ප ඇතුළු විමේ නොඩු සබල කරන්න </string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">වින්‍යාස කර ඇති සේතු අදුරු කල සේතු නම් ඒවා සබල කරන්න </string>
-  <string name="ip_address_and_port_of_bridges">IP ලිපිනය හා සේතුවල පෝට</string>
-  <string name="enter_bridge_addresses">සේතු ලිපිනයන් ඇතුළු කරන්න </string>
-  <string name="relays">ප්‍රතියෝජකය</string>
-  <string name="relaying">ප්‍රතියෝජනය </string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">ඔබේ උපාංගය නික්ම-නොයන ප්‍රතියෝජකයක් බවට සබල කරන්න </string>
-  <string name="relay_port">ප්‍රතියෝජක පෝටය</string>
-  <string name="listening_port_for_your_tor_relay">Tor ප්‍රතියෝජකයට සවන්දෙන පෝටය </string>
-  <string name="enter_or_port">OR පෝටය ඇතුළු කරන්න </string>
-  <string name="relay_nickname">ප්‍රතියෝජක අපනාමය</string>
-  <string name="the_nickname_for_your_tor_relay">ඔබේ Tor ප්‍රතියෝජකයේ අපනාමය</string>
-  <string name="enter_a_custom_relay_nickname">ව්‍යාවහාරික ප්‍රතියෝජක අපනාමය ඇතුළු කරන්න </string>
-  <string name="reachable_addresses">සේන්දු වියහැකි ලිපිනය </string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">සේවාදායකයෙකු ලෙස firewall පිටුපස සිට සිමාකාරී පිළිවෙත් සමග ක්‍රියාකරන්න</string>
-  <string name="reachable_ports">සේන්දු වියහැකි පෝටයන්</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">සිමාකාරී firewall පිටුපස සේන්දුවිය හැකි පෝටයන්</string>
-  <string name="enter_ports">පෝටයන් ඇතුළු කරන්න </string>
-  <string name="enable_hidden_services">සැගවුණු සේවා සත්කාර කරමින් </string>
-  <string name="run_servers_accessible_via_the_tor_network">උපාංග මත දිවෙන සේවාදායකයාට Tor ජාලයට ප්‍රවේශවීමට ඉඩදෙන්න</string>
-  <string name="enter_localhost_ports_for_hidden_services">සැගවුණු සේවා සදහා ඇති localhost පෝටයන් ඇතුළු කරන්න </string>
-  <string name="hidden_service_ports">සැගවුණු සේවා පෝටයන්</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">ඔබේ සැගවුණු සේවා සදහා අමතන නාමය (ස්වයංක්‍රියව ජනනය වූ)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">නිදොස් කිරීමේ ලොගය ප්‍රතිදානය සදහා සබල කරන්න (නැරඹීම සදහා adb or aLogCat භාවිතා කරන්න)</string>
-  <string name="project_home">ව්‍යාපෘති නිවහන(න්):</string>
-  <string name="the_tor_license">Tor බලපත්‍රය</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">3 වන පාර්ශව මෘදුකාංග</string>
-  <string name="hidden_service_request">යොමුවකට සැගවුණු සේවාදායක %S පෝටය Tor ජාලයට විවෘත කිරීමට උවමනාය. මෙය සුරක්ෂිතවන්නේ ඔබ මෙම යොමුව විශ්වාස කරනවා නම්  පමණි.</string>
-  <string name="found_existing_tor_process">පවතින Tor ක්‍රියාවලි හමුවිය...</string>
-  <string name="something_bad_happened">යම් නොමනා දෙයක් සිදුවිය. ලොගය පරික්ෂා කර බලන්න </string>
-  <string name="hidden_service_on">සැගවුණු සේවා පිහිටන්නේ:</string>
-  <string name="unable_to_read_hidden_service_name">සැගවුණු සේවා නාමය කියවීමට නොහැකිය </string>
-  <string name="unable_to_start_tor">Tor ආරම්භ කිරීමට නොහැකිය:</string>
-  <string name="pref_use_sys_iptables_title">පෙරනිමි IP වගුව භාවිතා කරන්න </string>
-  <string name="pref_use_sys_iptables_summary">Orbot හී ද්විමය ip වගු වෙනුවට උපාංගයේ පිහිටි ද්විමය ip වගු භාවිතා කරන්න </string>
-  <string name="error_installing_binares">Tor දිවිමයන් ස්ථාපනයට හෝ උත්ශ්‍රේණි කිරීමට නොහැකි විය.</string>
-  <string name="pref_use_persistent_notifications">Orbot සම්බන්ධ වී ඇති සැමවිටම විට මෙවලම් තීරුවේ නිරූපකය තබාගන්න</string>
-  <string name="pref_use_persistent_notifications_title">නිවේදන ලැබීමට සලස්වන්න </string>
-  <string name="notification_using_bridges">සේතු සබල කර ඇත!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Orbot සදහා පෙදෙසිය සහ භාෂාව තෝරන්න </string>
-  <string name="wizard_locale_title">භාෂාව තෝරන්න </string>
-  <string name="wizard_locale_msg">සම්මතය අතහැර වර්තමාන භාෂාවට මාරුවෙන්න </string>
-  <string name="btn_save_settings">සිටුවම් සුරැකින්න</string>
-</resources>
diff --git a/res/values-sk-rSK/strings.xml b/res/values-sk-rSK/strings.xml
deleted file mode 100644
index 5427758..0000000
--- a/res/values-sk-rSK/strings.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_info">Pomocník</string>
-  <string name="button_help">Pomocník</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">Nastavenia proxy</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
deleted file mode 100644
index 3943b13..0000000
--- a/res/values-sk/strings.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">štart a stop Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot štartuje…</string>
-  <string name="status_activated">Pripojený do Tor siete</string>
-  <string name="status_disabled">Orbot je deaktivovaný</string>
-  <string name="tor_process_starting">Štartujem Tor klienta...</string>
-  <string name="tor_process_complete">hotovo.</string>
-  <string name="tor_process_waiting">čakám.</string>
-  <string name="not_anonymous_yet">VAROVANIE: Váš prenos nie je ešte anonymný! Prosím, nakonfigurujte aplikácie aby používali HTTP proxy 127.0.0.1:8118 alebo SOCKS4A alebo SOCKS5 proxy server 127.0.0.1:9050</string>
-  <string name="menu_home">Domov</string>
-  <string name="menu_browse">Prehliadať</string>
-  <string name="menu_settings">Nastavenia</string>
-  <string name="menu_info">Pomocník</string>
-  <string name="menu_about">O aplikácií</string>
-  <string name="button_help">Pomocník</string>
-  <string name="button_close">Zatvoriť</string>
-  <string name="button_about">O aplikácií</string>
-  <string name="menu_verify">Skontrolovať</string>
-  <string name="menu_exit">Ukončiť</string>
-  <string name="btn_back">Späť</string>
-  <string name="btn_cancel">Zrušiť</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">Nastavenie proxy</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">Všeobecné</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Varovanie</string>
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_none">Žiadny</string>
-  <string name="status">Stav</string>
-  <string name="error">Chyba</string>
-  <string name="default_bridges"></string>
-  <string name="btn_save_settings">Uložiť nastavenie</string>
-</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
deleted file mode 100644
index 58da686..0000000
--- a/res/values-sl/strings.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org/?lang=sl</string>
-  <string name="secure_default_web_url">https://check.torproject.org/?lang=sl</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">začni in ustavi Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot se zaganja...</string>
-  <string name="status_activated">Povezan v omrežje Tor</string>
-  <string name="status_disabled">Orbot ni aktiviran</string>
-  <string name="tor_process_starting">Zagon Tor klijenta...</string>
-  <string name="tor_process_complete">končano.</string>
-  <string name="tor_process_waiting">čakam.</string>
-  <string name="not_anonymous_yet">POZOR: Vaš promet še ni anonimen! Prosimo, nastavite vaše aplikacije da uporabijo HTTP posredniški strežnik 127.0.0.1:8118 ali SOCKS4A ali SOCKS5 posredniški strežnik 127.0.0.1:9050</string>
-  <string name="menu_home">Glavni meni</string>
-  <string name="menu_browse">Brskaj</string>
-  <string name="menu_settings">Nastavitve</string>
-  <string name="menu_log">Dnevnik</string>
-  <string name="menu_info">Pomoč</string>
-  <string name="menu_start">Začni</string>
-  <string name="menu_stop">Ustavi</string>
-  <string name="menu_about">O programu</string>
-  <string name="main_layout_download">Prenesi</string>
-  <string name="main_layout_upload">Naloži</string>
-  <string name="button_help">Pomoč</string>
-  <string name="button_close">Zapri</string>
-  <string name="button_about">O programu</string>
-  <string name="button_clear_log">Počisti dnevnik</string>
-  <string name="menu_verify">Preveri</string>
-  <string name="menu_exit">Izhod</string>
-  <string name="press_to_start">- dolg pritisk za začetek -</string>
-  <string name="pref_trans_proxy_group">Transparentno delovanje prek posredniškega strežnika (potrebuje root)</string>
-  <string name="pref_trans_proxy_title">Transparentno delovanje prek posredniškega strežnika</string>
-  <string name="pref_trans_proxy_summary">Samodejno preusmerjanje aplikacij preko Tor</string>
-  <string name="pref_transparent_all_title">Tor karkoli</string>
-  <string name="pref_transparent_all_summary">Posredovanje prometa za vse aplikacije preko Tor</string>
-  <string name="pref_transparent_port_fallback_title">Nadomestna posredniška vrata</string>
-  <string name="pref_transparent_port_fallback_summary">OPOZORILO: Obide skupne porte (80, 443, itd.) * UPORABI LE * v primeru če  \"Vsi\" ali \"App\" način ne deluje.</string>
-  <string name="pref_transparent_port_title">Seznam vrat</string>
-  <string name="pref_transparent_port_summary">Seznam portov za posredniški strežnik. * UPORABI LE * v primeru če \"Vsi\" ali \"App\" način ne deluje</string>
-  <string name="pref_transparent_port_dialog">Vnesi vrata za posredniški strežnik</string>
-  <string name="pref_has_root">Zahtevaj korenski dostop</string>
-  <string name="pref_has_root_summary">Zahtevaj korenski dostop za transparentno posredovanje</string>
-  <string name="status_install_success">Tor binarne datoteke so uspešno nameščene!</string>
-  <string name="status_install_fail">Ni bilo možno namestiti Tor binarnih datotek. Prosimo preverite log in obvestite tor-assistants at torproject.org</string>
-  <string name="title_error">Napaka v programu</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">O programu Orbot</string>
-  <string name="btn_next">Naprej</string>
-  <string name="btn_back">Nazaj</string>
-  <string name="btn_finish">Zaključi</string>
-  <string name="btn_okay">Potrdi</string>
-  <string name="btn_cancel">Prekini</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Nekaj podrobnosti o Orbot-u</string>
-  <string name="wizard_permissions_root">Dovoljenje dodeljeno</string>
-  <string name="wizard_permissions_stock">Orbot dovoljenja</string>
-  <string name="wizard_premissions_msg_root">Odlično! Ugotovili smo, da imate omogočeno root dovoljenje za Orbot. To moč bomo modro uporabili.</string>
-  <string name="wizard_permissions_msg_stock">Čeprav to ni potrebno, lahko Orbot postane bolj zmogljivo orodje, če ima vaša naprava korenski dostop. Uporabite spodnji gumb za odobritev Orbot velesile!</string>
-  <string name="wizard_permissions_no_root">Če nimate korenski dostop ali nimate pojma o čem je beseda, se le prepričajte, da uporabljate aplikacije, narejene za delo z Orbot.</string>
-  <string name="wizard_permissions_consent">Razumem in želim nadaljevati kot Superuporabnik.</string>
-  <string name="wizard_permission_enable_root">Dodeli Root za Orbot</string>
-  <string name="wizard_proxy_help_info">Nastavitve posredniškega (proxy) strežnika</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">Splošno</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Opozorilo</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Dovoljenja</string>
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="status">Stanje</string>
-  <string name="default_bridges"></string>
-  <string name="btn_save_settings">Shrani nastavitve</string>
-</resources>
diff --git a/res/values-sn/strings.xml b/res/values-sn/strings.xml
deleted file mode 100644
index fdb4e7d..0000000
--- a/res/values-sn/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="menu_settings">Zvamada</string>
-  <string name="menu_about">Maererano</string>
-  <string name="button_about">Maererano</string>
-  <string name="menu_exit">Buda</string>
-  <string name="wizard_btn_tell_me_more">Maererano Orbot</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">Proxy Zvamada</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
deleted file mode 100644
index 19f4a4c..0000000
--- a/res/values-sq/strings.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_home">Shpi</string>
-  <string name="menu_browse">Lundro</string>
-  <string name="menu_settings">Zgjedhjet</string>
-  <string name="menu_info">Ndihmë</string>
-  <string name="menu_about">Informacione</string>
-  <string name="button_help">Ndihmë</string>
-  <string name="button_close">Mbylle</string>
-  <string name="button_about">Informacione</string>
-  <string name="menu_exit">Dil</string>
-  <string name="btn_back">Mbrapa</string>
-  <string name="btn_cancel">Anullo</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_proxy_help_info">Konfigurimi i Proxy</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">Të Përgjithshme</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Warning</string>
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_none">Asnjë</string>
-  <string name="status">Gjëndja</string>
-  <string name="error">Gabim</string>
-  <string name="default_bridges"></string>
-  <string name="btn_save_settings">Shpëto Konfigurmin</string>
-</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
deleted file mode 100644
index d05db8c..0000000
--- a/res/values-sr/strings.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Орбот</string>
-  <string name="app_description">Орбот је бесплатна прокси апликација која даје моћ другим апликацијама да безбедније користе интернет. Орбот користи Тор за шифровање вашег интернет саобраћаја и онда га скрива слањем кроз низ рачунара широм света. Тор је слободан софтвер и отворена мрежа која помаже да се одбраните од разних облика надзора мрежа који угрожавају личну слободу и приватност, поверљиве пословне активности и личне односе и државне безбедности познате као анализа саобраћаја.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">покрени и заустави Tor</string>
-  <string name="tor_proxy_service_process">Тор прокси услуга</string>
-  <string name="status_starting_up">Орбот се покреће...</string>
-  <string name="status_activated">Повезан са Тор мрежом</string>
-  <string name="status_disabled">Орбот је деактивиран</string>
-  <string name="tor_process_starting">Покреће се Тор клијент...</string>
-  <string name="tor_process_complete">завршено.</string>
-  <string name="tor_process_waiting">чекам.</string>
-  <string name="not_anonymous_yet">УПОЗОРЕЊЕ: Ваш промет још није анониман! Молимо вас да подесите Ваше апликације да користе HTTP прокси 127.0.0.1:8118 или SOCKS4A или SOCKS5 прокси 127.0.0.1:9050</string>
-  <string name="menu_home">Почетна</string>
-  <string name="menu_browse">Разгледање</string>
-  <string name="menu_settings">Подешавања</string>
-  <string name="menu_log">Логови</string>
-  <string name="menu_info">Помоћ</string>
-  <string name="menu_apps">ВПН</string>
-  <string name="menu_start">Крени</string>
-  <string name="menu_stop">Заустави</string>
-  <string name="menu_about">О нама</string>
-  <string name="main_layout_download">Преузимање</string>
-  <string name="main_layout_upload">Отпремање</string>
-  <string name="button_help">Помоћ</string>
-  <string name="button_close">Затвори</string>
-  <string name="button_about">О нама</string>
-  <string name="button_clear_log">Очисти логове</string>
-  <string name="menu_verify">Провери</string>
-  <string name="menu_exit">Излаз</string>
-  <string name="press_to_start">- задржите дужи притисак  за почетак -</string>
-  <string name="pref_trans_proxy_group">Транспарентно проксирање (захтева root приступ)</string>
-  <string name="pref_trans_proxy_title">Транспарентно слање кроз прокси</string>
-  <string name="pref_trans_proxy_summary">Аутоматско торифицирање апликација</string>
-  <string name="pref_transparent_all_title">Торофикуј све</string>
-  <string name="pref_transparent_all_summary">Проследи промет од свих апликација кроз Тор</string>
-  <string name="pref_transparent_port_fallback_title">Резерван порт проксија</string>
-  <string name="pref_transparent_port_fallback_summary">УПОЗОРЕЊЕ: Заобилажење честих портова (80, 443 итд). КОРИСТИТЕ САМО ако подешавања на \"Све\" или \"Апликација\" не раде.</string>
-  <string name="pref_transparent_port_title">Листа портова</string>
-  <string name="pref_transparent_port_summary">Листа портова за прокси. Користити САМО ако опције \"Све\" или \"Апликације\" не раде.</string>
-  <string name="pref_transparent_port_dialog">Упишите портове за прослеђивање на прокси</string>
-  <string name="pref_has_root">Затражи root приступ</string>
-  <string name="pref_has_root_summary">Затражи root приступ за транспарентно проксирање</string>
-  <string name="status_install_success">Тор бинари успешно инсталирани!</string>
-  <string name="status_install_fail">Бинарне Тор датотеке нису успешно инсталиране. Молимо прегледајте логове и обавестите нас на tor-assistants at torproject.org</string>
-  <string name="title_error">Грешка у апликацији</string>
-  <string name="wizard_title">Орбот</string>
-  <string name="wizard_btn_tell_me_more">Информације о Орботу</string>
-  <string name="btn_next">Следеће</string>
-  <string name="btn_back">Назад</string>
-  <string name="btn_finish">Заврши</string>
-  <string name="btn_okay">У реду</string>
-  <string name="btn_cancel">Откажи</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Детаљи о Орботу</string>
-  <string name="wizard_details_msg">Orbot je otvorena aplikacija koja sadrzi Tor, LibEvent i Polipo. Obezbeđuje lokalni HTTP proksi (8118) i SOCKS proksi (9050) u Tor mrežu. Takođe poseduje sposobnost, da kroz Tor, šalje sav internet saobraćaj sa rutovanih uređaja.</string>
-  <string name="wizard_permissions_root">Дозвола одобрена</string>
-  <string name="wizard_permissions_stock">Орбот дозволе</string>
-  <string name="wizard_premissions_msg_root">Одлично! Детектовали смо да имате root дозволе за Орбот. Мудро ћемо искрористити ову моћ.</string>
-  <string name="wizard_permissions_msg_stock">Иако није захтевано, Орбот постаје много јачи алат ако Ваш уређај има root приступ. Користите дугме испод да бисте омогућили Орботу супер моћи.</string>
-  <string name="wizard_permissions_no_root">Ако немате root приступ или немате појма о чему причамо, само се побрините да користите апликације које су направљене да функционишу са Орботом.</string>
-  <string name="wizard_permissions_consent">Разумем и желео бих да наставим без root приступа</string>
-  <string name="wizard_permission_enable_root">Дозволи root за Орбот</string>
-  <string name="wizard_configure">Подеси торификацију</string>
-  <string name="wizard_configure_msg">Орбот Вам даје опцију да проследите сав промет од стране свих апликација или да изаберете посебно апликације које желите да проследите кроз Тор мрежу.</string>
-  <string name="wizard_configure_all">Пошаљи промет од свих апликација кроз Тор</string>
-  <string name="wizard_configure_select_apps">Означи посебно апликације чији ће се промет проследити кроз Тор</string>
-  <string name="wizard_tips_tricks">Орбот-омогућене Апликације</string>
-  <string name="wizard_tips_msg">Апликације наведене испод су развијене да би радиле са Орботом. Кликните свако дугме које желите сада да инсталирате, а у супротном их можете пронаћи и у Google Play продавници, на GuardianProject.info веб страници или преко F-Droid.org.</string>
-  <string name="wizard_tips_proxy">Прокси поставке - Научите како да подесите апликације да раде са Орботом</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo апликација за претраживање интернета</string>
-  <string name="wizard_tips_twitter">Подесите Твитер да користи порт 8118 на локалном хосту.</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Прокси подешавања</string>
-  <string name="wizard_final">Орбот је спреман!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Ово ће отворити Ваш веб претраживач и посетити страницу https://check.torproject.org да би проверили да ли је Орбот правилно подешен и да ли сте спојени са Тор мрежом.</string>
-  <string name="pref_hs_group">Хостинг на скривеном сервису</string>
-  <string name="pref_general_group">Опште</string>
-  <string name="pref_start_boot_title">Покрени Орбот при покретању уређаја</string>
-  <string name="pref_start_boot_summary">Аутоматски покрените Орбот и конектујте се са Тор мрежом када се упали Ваш Андроид уређај.</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Упозорење</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Дозволе</string>
-  <string name="wizard_permissions_root_msg1">Можете опционално дозволити Орботу приступ као \"Супер корисник\" да би омогућили напредне функције као што је транспарентно слање кроз прокси.</string>
-  <string name="wizard_permissions_root_msg2">Ако не желите ово да урадите, молимо Вас да се уверите да користите апликације које су подешене да раде са Орботом.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Апликације са омогућеним Орботом.</string>
-  <string name="wizard_tips_play">Пронађите све Guardian Project апликације на Google Play сервису</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Транспарентно слање кроз прокси</string>
-  <string name="wizard_transproxy_msg">Ово омогућава Вашим апликацијама да аутоматски преусмеравају промет кроз Тор мрежу без икакве конфигурације.</string>
-  <string name="wizard_transproxy_hint">(Означите овај квадратић ако немате појма о чему причамо)</string>
-  <string name="wizard_transproxy_none">Ниједан</string>
-  <string name="pref_transparent_tethering_title">Привезивање тора</string>
-  <string name="pref_transparent_tethering_summary">Омогућава Торово транспарентно слање кроз прокси за бежичне и УСБ повезивајуће уређаје (захтева рестартовање)</string>
-  <string name="button_grant_superuser">Затражи приступ као \'Superuser\'</string>
-  <string name="pref_select_apps">Изаберите апликације</string>
-  <string name="pref_select_apps_summary">Изаберите апликације чији промет ћете проследити кроз Тор</string>
-  <string name="pref_node_configuration">Конфигурација чворова</string>
-  <string name="pref_node_configuration_summary">Ово су напредне поставке које могу да смање Вашу анонимност</string>
-  <string name="pref_entrance_node">Почетни чворови</string>
-  <string name="pref_entrance_node_summary">Отисци прстију, надимци, државе и адресе првог скока</string>
-  <string name="pref_entrance_node_dialog">Унесите почетне чворове</string>
-  <string name="pref_proxy_title">Мрежни прокси за одлазећи промет (Необавезно)</string>
-  <string name="pref_proxy_type_title">Тип проксија за одлазећи промет</string>
-  <string name="pref_proxy_type_summary">Протокол који ће се користити за прокси сервер: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Унесите тип проксија</string>
-  <string name="pref_proxy_host_title">Хост проксија за одлазећи промет</string>
-  <string name="pref_proxy_host_summary">Име хоста за прокси сервер</string>
-  <string name="pref_proxy_host_dialog">Унесите хост од проксија</string>
-  <string name="pref_proxy_port_title">Порт проксија за одлазећи промет</string>
-  <string name="pref_proxy_port_summary">Порт прокси сервера</string>
-  <string name="pref_proxy_port_dialog">Унесите порт проксија</string>
-  <string name="pref_proxy_username_title">Корисничко име на проксију за одлазећи промет</string>
-  <string name="pref_proxy_username_summary">Име проксија (Необавезно)</string>
-  <string name="pref_proxy_username_dialog">Унесите корисничко име Проксија  </string>
-  <string name="pref_proxy_password_title">Шифра на проксију за одлазећи промет</string>
-  <string name="pref_proxy_password_summary">Шифра проксија (необавезно)</string>
-  <string name="pref_proxy_password_dialog">Унесите шифру проксија</string>
-  <string name="status">Статус</string>
-  <string name="setting_up_full_transparent_proxying_">Постављање потпуно трапспарентног слања кроз прокси</string>
-  <string name="setting_up_app_based_transparent_proxying_">Подешавање трапспарентног проксија од стране апликације</string>
-  <string name="transparent_proxying_enabled">Транспарентно слање кроз прокси је ОМОГУЋЕНО</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy је омогућен за привезивање</string>
-  <string name="warning_error_starting_transparent_proxying_">УПОЗОРЕЊЕ: грешка при стартовању транспарентног слања кроз прокси!</string>
-  <string name="transproxy_rules_cleared">TransProxy правила очишћена</string>
-  <string name="couldn_t_start_tor_process_">Није могуће покренути Тор процес:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Подешавање транспарентног проксирања од стране порта...</string>
-  <string name="bridge_error">Грешка у мосту</string>
-  <string name="bridge_requires_ip">Да бисте користили bridge могућност, морате унети бар једну bridge IP адресу.</string>
-  <string name="send_email_for_bridges">Пошаљите мејл на bridges at torproject.org са речима \"get bridges\" у тексту поруке мејла са gmail корисничког рачуна.</string>
-  <string name="error">Грешка</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Ваше ReachableAddresses поставке су изазвале изузетак!</string>
-  <string name="your_relay_settings_caused_an_exception_">Ваше поставке релеја су изазвале изузетак!</string>
-  <string name="exit_nodes">Излазни чворови</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Отисци, надимци, државе и адресе задњег скока</string>
-  <string name="enter_exit_nodes">Унесите излазне чворове</string>
-  <string name="exclude_nodes">Одстраните чворове</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Отисци, надимци, државе и адресе за одстрањење</string>
-  <string name="enter_exclude_nodes">Унесите чворове за одстрањење</string>
-  <string name="strict_nodes">Стриктни чворови</string>
-  <string name="use_only_these_specified_nodes">Користи САМО ове наведене чворове</string>
-  <string name="bridges">Мостови</string>
-  <string name="use_bridges">Користи bridge</string>
-  <string name="bridges_obfuscated">Мостови са bridges</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Омогући алтернативне чворове за улаз у Тор мрежу</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Омогућити ако су конфигурисани мостови мостови са баговима</string>
-  <string name="ip_address_and_port_of_bridges">IP адреса и порт bridge-а</string>
-  <string name="enter_bridge_addresses">Унесите bridge адресу </string>
-  <string name="relays">Релеји</string>
-  <string name="relaying">Релејирање</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Омогућите вашем уређају да буде релеј без излаза</string>
-  <string name="relay_port">Порт за релеј</string>
-  <string name="listening_port_for_your_tor_relay">Порт за слушање за твој Тор релеј</string>
-  <string name="enter_or_port">Укуцајте ИЛИ порт</string>
-  <string name="relay_nickname">Надимак релеја</string>
-  <string name="the_nickname_for_your_tor_relay">Надимак вашег Тор релеја</string>
-  <string name="enter_a_custom_relay_nickname">Унесите по избору надимак за релеј</string>
-  <string name="reachable_addresses">Доступне адресе</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Покрените као клијента иза firewall-а који је рестриктивно подешен</string>
-  <string name="reachable_ports">Доступни портови</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Портови доступни иза рестриктивног firewall-а</string>
-  <string name="enter_ports">Унесите портове</string>
-  <string name="enable_hidden_services">Хостинг на скривеном сервису</string>
-  <string name="run_servers_accessible_via_the_tor_network">дозволите серверу на уређају да буде доступан преко Тор мреже</string>
-  <string name="enter_localhost_ports_for_hidden_services">унесите localhost портове за скривене сервисе</string>
-  <string name="hidden_service_ports">Портови на скривеном сервису</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">адресабилно име за Ваш скривени сервис (генерише се аутоматско)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">омогућите debug логовоање (мора се користити adb или aLogCat да би се прегледали)</string>
-  <string name="project_home">Почетна за пројекте:</string>
-  <string name="the_tor_license">Тор лиценца</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Софтвер од стране неслужбених издавача:</string>
-  <string name="hidden_service_request">Апликација жели да отвори сакривен порт %S на серверу за Тор мрежу. Ово је сигуран потез уколико верујете апликацији.</string>
-  <string name="found_existing_tor_process">нађен покренути Тор процес...</string>
-  <string name="something_bad_happened">Нешто лоше се догодило. Прегледајте логове</string>
-  <string name="hidden_service_on">сакривен сервис на:</string>
-  <string name="unable_to_read_hidden_service_name">нисам у могућности да прочитам име сакривеног сервиса</string>
-  <string name="unable_to_start_tor">Тор није у могућности да се покрене:</string>
-  <string name="pref_use_sys_iptables_title">Користити уобичајене Иптабеле</string>
-  <string name="pref_use_sys_iptables_summary">користи уграђене ИПтабеле уместо оних које долазе са Орботом</string>
-  <string name="error_installing_binares">Тор бинари нису у могућности да се инсталирају или надограде.</string>
-  <string name="pref_use_persistent_notifications">Увек прикажи икону у тулбару када је Орбот конектован</string>
-  <string name="pref_use_persistent_notifications_title">Стално укључене нотификације</string>
-  <string name="notification_using_bridges">Мостови омогућени!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Изаберите локална и језичка подешавања за Орбот</string>
-  <string name="wizard_locale_title">Изаберите језик</string>
-  <string name="wizard_locale_msg">Користи подразумевајући или пребаци на тренутни језик</string>
-  <string name="btn_save_settings">Сачувај подешавања</string>
-  <string name="menu_vpn">ВПН</string>
-</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
deleted file mode 100644
index a4712da..0000000
--- a/res/values-sv/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot är en gratis proxyapp som möjliggör andra appar att använda internet mer säkert. Orbot använder Tor för att kryptera din internettrafik och döljer den genom att den studsar genom ett antal datorer världen över. Tor är fri programvara och ett öppet nätverk som hjälper dig att skydda dig mot en form av nätverksövervakning som hotar personlig integritet och frihet, hemliga affärsaktiviteter och relationer, och skyddar mot statlig övervakning även kallad trafikanalys.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">start and stop Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot startar...</string>
-  <string name="status_activated">Uppkopplad till Tor nätverket</string>
-  <string name="status_disabled">Orbot är inaktiverad</string>
-  <string name="status_shutting_down">TorService avslutas</string>
-  <string name="tor_process_starting">Startar Tor klient...</string>
-  <string name="tor_process_complete">färdig.</string>
-  <string name="tor_process_waiting">väntar.</string>
-  <string name="not_anonymous_yet">VARNING: Din trafik är inte anonym än! Vänligen konfigurera dina appar att använda HTTP proxy 127.0.0.1:8118 eller SOCKS4A/5 proxy 127.0.0.1:9050</string>
-  <string name="menu_home">Hem</string>
-  <string name="menu_browse">Bläddra</string>
-  <string name="menu_settings">Inställningar</string>
-  <string name="menu_log">Logg</string>
-  <string name="menu_info">Hjälp</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Start</string>
-  <string name="menu_stop">Stopp</string>
-  <string name="menu_about">Om</string>
-  <string name="menu_promo_apps">Skaffa appar...</string>
-  <string name="main_layout_download">Ladda Ner</string>
-  <string name="main_layout_upload">Ladda Upp</string>
-  <string name="button_help">Hjälp</string>
-  <string name="button_close">Stäng</string>
-  <string name="button_about">Om</string>
-  <string name="button_clear_log">Rensa logg</string>
-  <string name="menu_verify">Kontrollera</string>
-  <string name="menu_exit">Avsluta</string>
-  <string name="menu_scan">Skanna BridgeQR</string>
-  <string name="menu_share_bridge">Dela BridgeQR</string>
-  <string name="press_to_start">- tryck länge för att starta -</string>
-  <string name="pref_trans_proxy_group">Transparent proxy (kräver root)</string>
-  <string name="pref_trans_proxy_title">Transparent proxy</string>
-  <string name="pref_trans_proxy_summary">Automatisk torifiering av appar</string>
-  <string name="pref_transparent_all_title">Tor:a Allt</string>
-  <string name="pref_transparent_all_summary">Proxy trafik för alla appar genom Tor</string>
-  <string name="pref_transparent_port_fallback_title">Port Proxy Fallback</string>
-  <string name="pref_transparent_port_fallback_summary">VARNING: Kringgår vanliga portar (80, 443, etc). *ANVÄND ENDAST* om \'Alla\' eller \'App\'-läge inte fungerar.</string>
-  <string name="pref_transparent_port_title">Port-lista</string>
-  <string name="pref_transparent_port_summary">Lista över portar att köra genom proxy. *ANVÄND ENDAST* om \'Alla\' eller \'App\'-läge inte fungerar</string>
-  <string name="pref_transparent_port_dialog">Skriv in portar till proxy</string>
-  <string name="pref_has_root">Begär root-åtkomst</string>
-  <string name="pref_has_root_summary">Begär root-åtkomst för transparent proxy</string>
-  <string name="status_install_success">Tor-filerna installerades utan problem!</string>
-  <string name="status_install_fail">De körbara Tor-filerna kunde inte installeras. Kontrollera loggen och underrätta tor-assistants at torproject.org</string>
-  <string name="title_error">Applikationsfel</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Om Orbot</string>
-  <string name="btn_next">Nästa</string>
-  <string name="btn_back">Tillbaka</string>
-  <string name="btn_finish">Slutför</string>
-  <string name="btn_okay">Okej</string>
-  <string name="btn_cancel">Avbryt</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Orbot-information</string>
-  <string name="wizard_details_msg">Orbot är en mjukvara med öppen källkod som använder sig av Tor, LibEvent och Polipo. Den tillhandahåller en lokal HTTP-proxy (8118) och en SOCKS-proxy (9050) till Tor-nätverket. Orbot har också möjligheten att, på rootade enheter, skicka all trafik genom Tor.</string>
-  <string name="wizard_permissions_root">Tillstånd givet</string>
-  <string name="wizard_permissions_stock">Orbot rättigheter</string>
-  <string name="wizard_premissions_msg_root">Utmärkt! Vi har upptäckt att du har root tillstånd aktiverat för Orbot. Vi kommer använda denna makt ansvarsfullt.</string>
-  <string name="wizard_permissions_msg_stock">Det är inte nödvändigt, men Orbot kan bli ett kraftfullare verktyg om din enhet har root tillgång. Använd knappen nedan för att ge Orbot superkrafter!</string>
-  <string name="wizard_permissions_no_root">Om du inte har root tillgång eller inte har en aning om vad vi pratar om, använd bara appar som är gjorda att fungera med Orbot.</string>
-  <string name="wizard_permissions_consent">Jag förstår och vill fortsätta utan Superuser.</string>
-  <string name="wizard_permission_enable_root">Ge Orbot root tillgång</string>
-  <string name="wizard_configure">Konfigurera torifikation</string>
-  <string name="wizard_configure_msg">Orbot ger dig möjligheten att skicka all applikationstrafik genom Tor ELLER att själv välja applikationer individuellt.</string>
-  <string name="wizard_configure_all">Proxy alla appar genom Tor</string>
-  <string name="wizard_configure_select_apps">Välj enskilda appar för Tor</string>
-  <string name="wizard_tips_tricks">Orbot-anpassade appar</string>
-  <string name="wizard_tips_msg">Apparna nedanför var utvecklade att fungera med Orbot. Klicka varje knapp för att installera nu, eller hitta dom senare på Google Play, på GuardianProject.info, eller via F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Säker chattklient för Android</string>
-  <string name="wizard_tips_proxy">Proxy-inställningar - Lär dig hur du konfigurerar appar att fungera med Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo Sökmotor App</string>
-  <string name="wizard_tips_twitter">Ställ in Twitter proxy till värd \"localhost\" och port 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Skapa en story och ge den till Tor för säkerhet!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proxy-inställningar</string>
-  <string name="wizard_proxy_help_msg">Om Android-appen du använder har stöd för en HTTP- eller SOCKS-proxy, så kan du konfigurera den at ansluta till Orbot och använda Tor.\n\n\nInställningen för värdnamn är 127.0.0.1 eller \"localhost\". För HTTP är portinställningen 8118. För SOCKS är porten 9050. Du bör använda SOCKS4A eller SOCKS5 om möjligt.\n\n\n\nDu kan lära dig mer om proxy på Android via FAQ på: http://tinyurl.com/proxyandroid\n</string>
-  <string name="wizard_final">Orbot är redo!</string>
-  <string name="wizard_final_msg">Miljoner människor världen över använder sig av Tor av flera olika orsaker.\n\nJournalister och bloggare, människorättsförsvarare, brottsbekämpare, soldater, företag, innevånare i repressiva regimer, och bara vanliga innevånare... och nu är du redo också!</string>
-  <string name="wizard_exit_at_first_screen_toast">Vänligen konfigurera Orbot innan du kan använda den!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Du har anslutit till Tor-nätverket - men detta betyder INTE att din enhet är säker. Du kan använda knappen \'Webbläsare\' för att testa din anslutning. \n\nBesök oss på https://guardianproject.info/apps/orbot eller skicka e-post till help at guardianproject.info för mer information.</string>
-  <string name="tor_check">Det här kommer att öppna din webbläsare mot https://check.torproject.org för att se om Orbot är rätt konfigurerad och du är uppkopplad mot Tor.</string>
-  <string name="pref_hs_group">Gömd Service Hosting</string>
-  <string name="pref_general_group">Allmänt</string>
-  <string name="pref_start_boot_title">Starta Orbot vid Uppstart</string>
-  <string name="pref_start_boot_summary">Starta Orbot automatiskt och anslut till Tor när din Android enhet startar upp</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot tar Tor till Android!\n\nTor hjälper dig att skydda dig från innehållsfiltrering, trafikanalys och nätverksövervakning som hotar integritet, hemlig information och personliga relationer.\n\nDen här guiden hjälper dig att konfigurera Orbot och Tor på din enhet.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Varning</string>
-  <string name="wizard_warning_msg">Bara genom att installera Orbot anonymiseras inte din mobiltrafik.\n\nDu måste ställa in Orbot, din enhet och andra appar för att använda Tor.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Rättigheter</string>
-  <string name="wizard_permissions_root_msg1">Du kan alternativt ge Orbot \'Superuser\' tillgång för att aktivera avancerade inställningar, som till exempel Transparent Proxy.</string>
-  <string name="wizard_permissions_root_msg2">Om du inte vill göra detta, se till att bara använda appar som anpassats till Orbot.</string>
-  <string name="wizard_permissions_no_root_msg">Din enhet verkar inte vara rootad eller ge root eller \'Superuser\'-åtkomst.\n\nVänligen försök använda \'Appar\'-läget i huvudmenyn istället.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-Anpassade Appar</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Säkert chatt app med Off-the-Record kryptering</string>
-  <string name="wizard_tips_orweb">Orfox: Integritetsförbättrad webbläsare som går genom Tor</string>
-  <string name="wizard_tips_play">Hitta alla Guardian Project appar på Google Play</string>
-  <string name="wizard_tips_fdroid">Hitta alla Guardian Project-appar i F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Hitta alla Guardian Project-appar på https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transparent Proxy</string>
-  <string name="wizard_transproxy_msg">Detta tillåter dina appar att automatiskt köra genom Tor nätverket utan någon konfiguration.</string>
-  <string name="wizard_transproxy_hint">(Markera denna om du inte har någon aning om vad vi pratar om)</string>
-  <string name="wizard_transproxy_none">Ingen</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Aktivera Tor Transparent Proxy för Wifi och USB Thetered Enheter (omstart krävs)</string>
-  <string name="button_grant_superuser">Begär Superuser Tillgång</string>
-  <string name="pref_select_apps">Välj Appar</string>
-  <string name="pref_select_apps_summary">Välj Appar att Leda Genom Tor</string>
-  <string name="pref_node_configuration">Nod Konfiguration</string>
-  <string name="pref_node_configuration_summary">Det här är avancerade inställningar som kan minska din anonymitet</string>
-  <string name="pref_entrance_node">Ingångsnoder</string>
-  <string name="pref_entrance_node_summary">Fingeravtryck, nicks, länder, och adresser för första hoppet</string>
-  <string name="pref_entrance_node_dialog">Skriv in Ingångs Noder</string>
-  <string name="pref_allow_background_starts_title">Tillåt start i bakgrunden</string>
-  <string name="pref_allow_background_starts_summary">Låt alla appar säga åt Orbot att starta Tor och relaterade tjänster</string>
-  <string name="button_proxy_all">Allt genom proxy</string>
-  <string name="button_proxy_none">Inget genom proxy</string>
-  <string name="button_invert_selection">Invertera val</string>
-  <string name="pref_proxy_title">Utgående nätverksproxy (Valfri)</string>
-  <string name="pref_proxy_type_title">Proxy-typ</string>
-  <string name="pref_proxy_type_summary">Protokoll att använda för proxyserver: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Skriv in Proxy Typ</string>
-  <string name="pref_proxy_host_title">Proxy-värd</string>
-  <string name="pref_proxy_host_summary">Proxyserverns värdnamn</string>
-  <string name="pref_proxy_host_dialog">Skriv in Proxy Värd</string>
-  <string name="pref_proxy_port_title">Utgående Proxy Port</string>
-  <string name="pref_proxy_port_summary">Proxyserverns port</string>
-  <string name="pref_proxy_port_dialog">Skriv in Proxy port</string>
-  <string name="pref_proxy_username_title">Utgående proxy användarnamn</string>
-  <string name="pref_proxy_username_summary">Proxyanvändarnamn (Valfri)</string>
-  <string name="pref_proxy_username_dialog">Ange proxyanvändarnamn</string>
-  <string name="pref_proxy_password_title">Utgående proxy lösenord</string>
-  <string name="pref_proxy_password_summary">Proxylösenord (Valfri)</string>
-  <string name="pref_proxy_password_dialog">Ange proxylösenord</string>
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Ställer in full transparent proxyfiering...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Ställer in app-baserad transparent proxyfiering...</string>
-  <string name="transparent_proxying_enabled">Transparent proxy AKTIVERAD</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy aktiverad för Tethering!</string>
-  <string name="warning_error_starting_transparent_proxying_">VARNING: kunde ej starta transparent proxy!</string>
-  <string name="transproxy_rules_cleared">TransProxy regler rensade</string>
-  <string name="couldn_t_start_tor_process_">Kunde inte starta Tor-process:</string>
-  <string name="privoxy_is_running_on_port_">Polipo körs på port:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Ställer in port-baserad transparent proxyfiering...</string>
-  <string name="bridge_error">Bro Error</string>
-  <string name="bridge_requires_ip">För att använda bro funktionen måste du skriva in minst en bro IP adress.</string>
-  <string name="send_email_for_bridges">Skicka ett email till bridges at torproject.org med linjen \"get bridges\" ensamt som meddelande från ett gmail konto.</string>
-  <string name="error">Fel</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Din NåbaraAdresser inställning orsakade ett undantag!</string>
-  <string name="your_relay_settings_caused_an_exception_">Din relä inställning orsakade ett undantag!</string>
-  <string name="exit_nodes">Utgångsnoder</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingeravtryck, nicks, länder, och adresser för sista hoppet</string>
-  <string name="enter_exit_nodes">Skriv in Exit Noder</string>
-  <string name="exclude_nodes">Exkludera Noder</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingeravtryck, nicks, länder och adresser att exkludera</string>
-  <string name="enter_exclude_nodes">Skriv in Exkluderade Noder</string>
-  <string name="strict_nodes">Strikta Noder</string>
-  <string name="use_only_these_specified_nodes">Använd *enbart* dessa specificerade noder</string>
-  <string name="bridges">Broar</string>
-  <string name="use_bridges">Använd Broar</string>
-  <string name="bridges_obfuscated">Förvillande Broar</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Aktivera alternativa ingångsnoder till Tor nätverket</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Aktivera om konfigurerade broar är förvillande broar</string>
-  <string name="ip_address_and_port_of_bridges">IP adress och port för broar</string>
-  <string name="enter_bridge_addresses">Skriv in Bro Adresser</string>
-  <string name="relays">Reläer</string>
-  <string name="relaying">Överföring</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Aktivera din enhet till att vara ett icke-utgångsrelä</string>
-  <string name="relay_port">Relä Port</string>
-  <string name="listening_port_for_your_tor_relay">Lyssningsport för din Tor relä</string>
-  <string name="enter_or_port">Allmänt</string>
-  <string name="relay_nickname">Relä namn</string>
-  <string name="the_nickname_for_your_tor_relay">Namnet för din Tor relä</string>
-  <string name="enter_a_custom_relay_nickname">Skriv in ett anpassat relä namn</string>
-  <string name="reachable_addresses">Nåbara Adresser</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Kör som klient bakom en brandvägg med restriktiva policys</string>
-  <string name="reachable_ports">Nåbara portar</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Portar nåbara bakom en restriktiv brandvägg</string>
-  <string name="enter_ports">Skriv in portar</string>
-  <string name="enable_hidden_services">Gömd Tjänstehosting</string>
-  <string name="run_servers_accessible_via_the_tor_network">Tillåt server på enheten att vara tillgänglig via Tor nätverket</string>
-  <string name="enter_localhost_ports_for_hidden_services">Skriv in localhost portar för gömda tjänster</string>
-  <string name="hidden_service_ports">Gömda Tjänsteportar</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">det adresserade namnet för din gömda tjänst (genereras automatiskt)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Aktivera debug loggen för output (måste använda adb eller aLogCat för att se)</string>
-  <string name="project_home">Projektets hemsidor:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Tor-licensen</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Tredjepartsprogramvara:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">En app vill öppna gömd tjänsteport %S till Tor nätverket. Detta är säkert om du litar på appen.</string>
-  <string name="found_existing_tor_process">hittade existerande Tor process...</string>
-  <string name="something_bad_happened">Något dåligt hände. Kolla loggen.</string>
-  <string name="hidden_service_on">gömd tjänst på:</string>
-  <string name="unable_to_read_hidden_service_name">kan inte läsa gömda tjänstens namn</string>
-  <string name="unable_to_start_tor">Kan inte starta Tor:</string>
-  <string name="unable_to_reset_tor">Starta om din enhet, kunde inte återställa Tor!</string>
-  <string name="pref_use_sys_iptables_title">Använd standard Iptables</string>
-  <string name="pref_use_sys_iptables_summary">Använd den inbyggda iptables binären istället för den som kommer med Orbot</string>
-  <string name="error_installing_binares">Tor binärerna kunde inte installeras eller uppgraderas.</string>
-  <string name="pref_use_persistent_notifications">Behåll alltid ikonen i verktygsfältet när Orbot är ansluten</string>
-  <string name="pref_use_persistent_notifications_title">Alltid-På Notifikationer</string>
-  <string name="pref_use_expanded_notifications">Visa utökad notis med Tors utgångsland och IP</string>
-  <string name="pref_use_expanded_notifications_title">Utökade notiser</string>
-  <string name="notification_using_bridges">Broar aktiverade!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Språk</string>
-  <string name="set_locale_summary">Välj plats och språk för Orbot</string>
-  <string name="wizard_locale_title">Välj språk</string>
-  <string name="wizard_locale_msg">Lämna standard eller byt nuvarande språk</string>
-  <string name="powered_by">drivs av Tor</string>
-  <string name="btn_save_settings">Spara Inställningar</string>
-  <string name="no_internet_connection_tor">Ingen internetanslutning; Tor är i standby-läge...</string>
-  <string name="bandwidth_">Bandbredd:</string>
-  <string name="down">nere</string>
-  <string name="up">uppe</string>
-  <string name="pref_disable_network_title">Ingen auto-sömn för nätverket</string>
-  <string name="pref_disable_network_summary">Låt Tor sova när inget internet finns tillgängligt</string>
-  <string name="newnym">Du har bytt till en ny Tor identitet!</string>
-  <string name="menu_verify_browser">Webbläsare</string>
-  <string name="menu_use_chatsecure">Använd ChatSecure</string>
-  <string name="permission_manage_tor_label">Hantera Tor</string>
-  <string name="permission_manage_tor_description">Låt denna app kontrollera Tor-servicen</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Det verkar inte som att du har Orfox installerad. Vill du ha hjälp med det, eller ska vi bara öppna webbläsaren?</string>
-  <string name="install_apps_">Installera appar?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Ingen nätverksanslutning. Försätter Tor i dvala...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Nätverksanslutningen fungerar. Väcker Tor...</string>
-  <string name="updating_settings_in_tor_service">uppdaterar inställningar i Tor-tjänsten</string>
-  <string name="pref_socks_title">Tor-SOCKS</string>
-  <string name="pref_socks_summary">Port som Tor erbjuder sin SOCKS-proxy på (standard: 9050 eller 0 för att inaktivera)</string>
-  <string name="pref_socks_dialog">SOCKS-port-inställningar</string>
-  <string name="pref_transport_title">Tor TransProxy-port</string>
-  <string name="pref_transport_summary">Port som Tor erbjuder sin transparenta proxy på (standard: 9040 eller 0 för att inaktivera)</string>
-  <string name="pref_transport_dialog">TransProxy-port-inställningar</string>
-  <string name="pref_dnsport_title">Tor DNS-port</string>
-  <string name="pref_dnsport_summary">Port som Tor erbjuder sin DNS på (standard: 5400 eller 0 för att inaktivera)</string>
-  <string name="pref_dnsport_dialog">DNS-port-inställningar</string>
-  <string name="pref_torrc_title">Torrc anpassad konfiguration</string>
-  <string name="pref_torrc_summary">ENDAST EXPERTER: ange torrc konfiguration direkt</string>
-  <string name="pref_torrc_dialog">Anpassad Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - Benetech Human Rights Documentation App</string>
-  <string name="your_tor_public_ips_">Ditt publika IP via Tor:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Vänligen inaktivera den här appen i Android->Inställningar->Appar om du har problem med Orbot:</string>
-  <string name="app_conflict">Appkonflikt</string>
-  <string name="pref_transproxy_refresh_title">Transproxy auto-uppdatering</string>
-  <string name="pref_transproxy_refresh_summary">Sätt Transproxy regler igen när nätverksstatus ändras</string>
-  <string name="pref_transproxy_flush_title">Transproxy TVINGA BORTTAGNING</string>
-  <string name="pref_transproxy_flush_summary">Klicka här för att rensa alla transproxy nätverksregler NU</string>
-  <string name="transparent_proxy_rules_flushed_">Regler för transparent proxy rensade!</string>
-  <string name="you_do_not_have_root_access_enabled">Du har inte root-åtkomst aktiverad</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Du kan behöva stänga av och starta Orbot för att ändringar i inställningar ska slå igenom.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kb/s</string>
-  <string name="mbps">mb/s</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Bryggor uppdaterade</string>
-  <string name="restart_orbot_to_use_this_bridge_">Vänligen starta om Orbot för att aktivera ändringarna</string>
-  <string name="menu_qr">QR-koder</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Om ditt mobilnätverk aktivt blockerar Tor så kan du använda en brygga för att komma åt nätverket. VÄLJ en typ av brygga ovan för att aktivera bryggor.</string>
-  <string name="bridge_mode">Bryggläge</string>
-  <string name="get_bridges_email">E-post</string>
-  <string name="get_bridges_web">Webb</string>
-  <string name="activate">Aktivera</string>
-  <string name="apps_mode">Appars VPN-läge</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Du kan få alla appar på din enhet att köra via Tor-nätverket genom att använda VPN-funktionen i Android.\n\n*VARNING* Det här är en ny, experimentell funktion och kanske i vissa fall inte startas automatiskt, eller avslutas. Det bör INTE användas för anonymitet, tan BARA för att ta sig genom brandväggar och filter.</string>
-  <string name="send_email">Skicka e-post</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Du kan få en brygg-adress via e-post, via webben eller genom att skanna en QR-kod för en brygga. Välj \'E-post\' eller \'Webb\' nedan för att begära en brygg-adress.\n\nNär du väl har en adress, kopiera & klistra in den i inställningen för \"Bryggor\" i Orbot och starta om.</string>
-  <string name="install_orweb">Installera Orfox</string>
-  <string name="standard_browser">Standard-webbläsare</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOTERA: Endast vanliga Tor-bryggor fungerar på Intel X86/ATOM-enheter</string>
-  <string name="vpn_default_world">Världen</string>
-</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
deleted file mode 100644
index 58a7c65..0000000
--- a/res/values-ta/strings.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">ஆர்பாட் </string>
-  <string name="app_description">ஆர்பாட், இன்னும பாதுகாப்பான முறையில் இணைய பயன்படுத்த மற்ற பயன்பாடுகள் பலப்படுத்துகிறார் என்று ஒரு இலவச ப்ராக்ஸி பயன்பாடு ஆகும். ஆர்பாட் உங்கள் இணைய போக்குவரத்து குறியாக்க தோர் பயன்படுத்துகிறது மற்றும் அதன் பின்னர் உலகம் முழுவதும் கணினிகள் ஒரு தொடர் மூலம் எதிர்க்கிறது அதை மறுத்தவர். தோர் இலவச மென்பொருள் மற்றும் நீங்கள் போக்குவரத்து பகுப்பாய்வு
  என்ற தனிப்பட்ட சுதந்திரம் மற்றும் தனியுரிமை, ரகசிய வணிக நடவடிக்கைகள் மற்றும் உறவுகள், மற்றும் மாநில பாதுகாப்பை அச்சுறுத்தும் நெட்வொர்க் கண்காணிப்பு வடிவ எதிராக பாதுகாக்க உதவுகிறது என்று ஒரு திறந்த நெட்வொர்க் ஆகும்.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">தோர் துவக்க மற்றும் நிறுத்த</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">ஆர்பாட் துவங்குகிறது...</string>
-  <string name="status_activated">தோர் நெட்வொர்க் இணைக்கப்பட்ட</string>
-  <string name="status_disabled">ஆர்பாட் நிறுத்தப்பட்டது</string>
-  <string name="tor_process_starting">தோர் துவங்கப்படுகிறது...</string>
-  <string name="tor_process_complete">முடிந்தது.</string>
-  <string name="tor_process_waiting">காத்திருக்கிறது</string>
-  <string name="not_anonymous_yet">எச்சரிக்கை: உங்கள் போக்குவரத்து இன்னும் அநாமதேய அல்ல! HTTP பதிலாள் 127.0.0.1:8118 அல்லது SOCKS4A அல்லது SOCKS5 ப்ராக்ஸி 127.0.0.1:9050 பயன்படுத்த உங்கள் பயன்பாடுகள் கட்டமைக்க கொள்ளவும்</string>
-  <string name="menu_home">ஹோம்</string>
-  <string name="menu_browse">உலவிடு</string>
-  <string name="menu_settings">அமைப்புகள்</string>
-  <string name="menu_log">பதிவுகள்</string>
-  <string name="menu_info">உதவி</string>
-  <string name="menu_start">துவங்கு</string>
-  <string name="menu_stop">நிறுத்து</string>
-  <string name="menu_about">ஆர்பாட் பற்றி</string>
-  <string name="main_layout_download">பதிவிறக்கு</string>
-  <string name="main_layout_upload">பதிவேற்று</string>
-  <string name="button_help">உதவி</string>
-  <string name="button_close">மூடு</string>
-  <string name="button_about">ஆர்பாட் பற்றி </string>
-  <string name="button_clear_log">பதிவுகளை நீக்கு</string>
-  <string name="menu_verify">சரி பார்த்தல்</string>
-  <string name="menu_exit">வெளியேறு</string>
-  <string name="menu_scan">ஸ்கேன் BridgeQR</string>
-  <string name="menu_share_bridge">BridgeQR பகிர்ந்திடு</string>
-  <string name="press_to_start">- தொடங்க தொடர்ந்து அழுத்துக -</string>
-  <string name="pref_transparent_port_fallback_summary">எச்சரிக்கை: பொதுவான துறைகளை (80, 443, போன்றவை) circumvents. * பயன்படுத்த மட்டுமே * \'அனைத்து\' அல்லது \'ஆப்\' முறையில் வேலை இல்லை என்றால்.</string>
-  <string name="wizard_title">ஆர்பாட் </string>
-  <string name="wizard_btn_tell_me_more">ஆர்பாட் பற்றி</string>
-  <string name="btn_next">அடுத்து</string>
-  <string name="btn_back">பின் செல்</string>
-  <string name="btn_finish">முடித்திடு</string>
-  <string name="btn_okay">சரி</string>
-  <string name="btn_cancel">ரத்து செய்</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">ஆர்பாட் பற்றிய தகவல்</string>
-  <string name="wizard_details_msg">Orbot தோர், LibEvent மற்றும் Polipo கொண்டுள்ளது என்று ஒரு திறந்த மூல பயன்பாடு ஆகும். இது ஒரு local HTTP பதிலாள் (8118) மற்றும் தோர் நெட்வொர்க் ஒரு SOCKS ப்ராக்ஸி (9050) வழங்குகிறது. Orbot மேலும் தோர் மூலம் அனைத்து இணைய போக்குவரத்து அனுப்பும் திறனை, ROOTED சாதனத்தில் கொண்டிருக்கிறது.</string>
-  <string name="wizard_permissions_root">அனுமதி வழங்கப்பட்டது</string>
-  <string name="wizard_tips_duckgo">டக் டக் கோ தேடுபொறி செயலி</string>
-  <string name="wizard_proxy_help_info">பதிலாள் அமைப்புகள்</string>
-  <string name="wizard_final">ஆர்பாட் தயாராக உள்ளது!</string>
-  <string name="wizard_exit_at_first_screen_toast">தயவு செய்து, ஆர்பாடை கட்மைத்த பின் பயன்படுத்தவும்</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">எச்சரிக்கை</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">அனுமதிகள்</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">ஆர்பாடுடன் செயல்படும் செயலிகள்</string>
-  <!--Transparent Proxy screen-->
-  <string name="pref_select_apps">செயலிகளை தேர்ந்தெடு</string>
-  <string name="pref_proxy_password_summary">பதிலாள் கடவுச்சொல் (கட்டாயமற்ற)</string>
-  <string name="pref_proxy_password_dialog">பதிலாள் கடவுச்சொல்லை உள்ளிடவும்</string>
-  <string name="status">நிலை</string>
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
deleted file mode 100644
index efe4d5d..0000000
--- a/res/values-th/strings.xml
+++ /dev/null
@@ -1,169 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">เริ่มและหยุด Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_activated">เชื่อมต่อกับเครือข่าย Tor</string>
-  <string name="tor_process_complete">เสร็จ</string>
-  <string name="tor_process_waiting">กำลังรอ</string>
-  <string name="not_anonymous_yet">คำเตือน: ข้อมูลจราจรของคุณยังไม่เป็นนิรนาม! กรุณาตั้งค่าโปรแกรมของคุณให้ใช้ HTTP พร็อกซีที่ 127.0.0.1:8118 หรือใช้ SOCKS4A หรือ SOCKS5 พร็อกซีที่ 127.0.0.1:9050</string>
-  <string name="menu_home">หน้าหลัก</string>
-  <string name="menu_browse">เลือก</string>
-  <string name="menu_settings">ตั้งค่า</string>
-  <string name="menu_log">ปูม</string>
-  <string name="menu_info">ช่วยเหลือ</string>
-  <string name="menu_start">เริ่ม</string>
-  <string name="menu_stop">หยุด</string>
-  <string name="menu_about">เกี่ยวกับ</string>
-  <string name="button_help">ช่วยเหลือ</string>
-  <string name="button_close">ปิด</string>
-  <string name="button_about">เกี่ยวกับ</string>
-  <string name="button_clear_log">ล้างปูม</string>
-  <string name="menu_verify">ตรวจสอบ</string>
-  <string name="menu_exit">ออก</string>
-  <string name="press_to_start">- แตะค้างเพื่อเริ่ม -</string>
-  <string name="pref_trans_proxy_group">พร็อกซีล่องหน (ต้องการสิทธิ์ Root)</string>
-  <string name="pref_trans_proxy_title">พร็อกซีล่องหน</string>
-  <string name="pref_trans_proxy_summary">ให้โปรแกรมใช้งาน Tor โดยอัตโนมัติ</string>
-  <string name="pref_transparent_all_title">ใช้ Tor กับทุกอย่าง</string>
-  <string name="pref_transparent_all_summary">ให้การจราจรของทุกโปรแกรมผ่านพร็อกซีของ Tor</string>
-  <string name="pref_transparent_port_fallback_summary">คำเตือน: หลีกเลี่ยงพอร์ตทั่วไป (เช่น 80, 443) *ใช้ก็ต่อเมื่อ* โหมด \'ทั้งหมด\' หรือ \'โปรแกรม\' ใช้งานไม่ได้</string>
-  <string name="pref_transparent_port_title">รายการพอร์ต</string>
-  <string name="pref_transparent_port_summary">รายการพอร์ตที่ผ่านพร็อกซี *ใช้ก็ต่อเมื่อ* โหลด \'ทั้งหมด\' หรือ \'โปรแกรม\' ใช้งานไม่ได้</string>
-  <string name="pref_transparent_port_dialog">ระบุพอร์ตที่จะให้ผ่านพร็อกซี</string>
-  <string name="pref_has_root">ต้องการสิทธิ์ root</string>
-  <string name="pref_has_root_summary">ต้องการสิทธิ์ root เพื่อใช้งานพร็อกซีล่องหน</string>
-  <string name="status_install_success">ติดตั้งไบนารีของ Tor สำเร็จแล้ว</string>
-  <string name="status_install_fail">ไม่สามารถติดตั้งไบนารีของ Tor ได้ โปรดตรวจสอบปูมและแจ้งปัญหาที่ tor-assistants at torproject.org</string>
-  <string name="title_error">โปรแกรมทำงานผิดพลาด</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">เกี่ยวกับ Orbot</string>
-  <string name="btn_next">ต่อไป</string>
-  <string name="btn_back">ถอยหลัง</string>
-  <string name="btn_finish">เสร็จ</string>
-  <string name="btn_okay">ตกลง</string>
-  <string name="btn_cancel">ยกเลิก</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">รายละเอียดเกี่ยวกับ Orbot</string>
-  <string name="wizard_permissions_root">ให้สิทธิ์แล้ว</string>
-  <string name="wizard_permissions_stock">สิทธิ์ของ Orbot</string>
-  <string name="wizard_premissions_msg_root">ยอดเยี่ยม! เราพบว่าคุณให้สิทธิ์ root กับ Orbot เราจะใช้สิทธิ์นี้อย่างชาญฉลาด</string>
-  <string name="wizard_permissions_msg_stock">ถึงจะไม่ใช่เรื่องจำเป็น แต่ถ้าหาก Orbot จะทำงานได้อย่างมีประสิทธิภาพมากขึ้นถ้าได้รับสิทธิ์ root ใช้ปุ่มด้านล่างเพื่อมอบพลังนี้ให้ Orbot!</string>
-  <string name="wizard_permissions_no_root">ถ้าคุณไม่มีสิทธิ์ root หรือไม่เข้าใจว่าเรากำลังพูดถึงอะไรอยู่ ให้ใช้เฉพาะโปรแกรมที่สร้างมาเพื่อใช้กับ Orbot เท่านั้น</string>
-  <string name="wizard_permissions_consent">ฉันเข้าใจและต้องการทำต่อโดยไม่ใช้สิทธิ์ Superuser</string>
-  <string name="wizard_permission_enable_root">ให้สิทธิ์ root แก่ Orbot</string>
-  <string name="wizard_configure">ตั้งค่าการใช้งานผ่าน Tor</string>
-  <string name="wizard_configure_msg">Orbot มีตัวเลือกให้คุณส่งข้อมูลการจราจรของทุกโปรแกรมผ่าน Tor หรือเลือกใช้งานเฉพาะโปรแกรมก็ได้</string>
-  <string name="wizard_configure_all">ให้ทุกโปรแกรมผ่านพร็อกซีของ Tor</string>
-  <string name="wizard_configure_select_apps">เลือกโปรแกรมที่จะให้ใช้ Tor</string>
-  <string name="wizard_tips_tricks">โปรแกรมที่ใช้ได้กับ Orbot</string>
-  <string name="wizard_tips_proxy">การตั้งค่าพร็อกซี - เรียนรู้การตั้งค่าโปรแกรมให้ทำงานกับ Orbot ได้</string>
-  <string name="wizard_proxy_help_info">ตั้งค่าพร็อกซี</string>
-  <string name="wizard_final">Orbot พร้อมใช้งานแล้ว!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">จะใช้เว็บเบราว์เซอร์ของคุณเปิดหน้า https://check.torproject.org เพื่อตรวจสอบว่าการตั้งค่าของ Orbot ถูกต้องหรือไม่ และคุณได้เชื่อมต่อกับ Tor หรือไม่</string>
-  <string name="pref_general_group">ทั่วไป</string>
-  <string name="pref_start_boot_title">เริ่ม Orbot เมื่อเปิดระบบ</string>
-  <string name="pref_start_boot_summary">เริ่ม Orbot โดยอัตโนมัติและให้เชื่อมต่อกับ Tor เมื่ออุปกรณ์แอนดรอยด์ของคุณเริ่มทำงาน</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">คำเตือน</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">สิทธิ์</string>
-  <string name="wizard_permissions_root_msg1">คุณสามารถเลือกให้สิทธิ์ Superuser แก่ Orbot เพื่อเปิดใช้งานคุณสมบัติขั้นสูง เช่น พร็อกซีล่องหนได้</string>
-  <string name="wizard_permissions_root_msg2">ถ้าคุณไม่ต้องการ โปรดแน่ใจว่าคุณใช้โปรแกรมที่สร้างมาเพื่อใช้กับ Orbot</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">โปรแกรมที่ใช้ได้กับ Orbot</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">พร็อกซีล่อง</string>
-  <string name="wizard_transproxy_msg">จะอนุญาตให้โปรแกรมของคุณทำงานผ่านเครือข่าย Tor อัตโนมัติโดยไม่ต้องตั้งค่าใดๆ</string>
-  <string name="wizard_transproxy_hint">(ติ๊กตัวเลือกนี้ถ้าคุณไม่เข้าใจเรื่องที่เรากำลังอธิบาย)</string>
-  <string name="wizard_transproxy_none">ไม่มี</string>
-  <string name="pref_transparent_tethering_title">การเชื่อมต่อพ่วงผ่าน Tor</string>
-  <string name="pref_transparent_tethering_summary">เปิดใช้งานพร็อกซีล่องหนของ Tor ให้อุปกรณ์อื่นที่เชื่อมผ่าน Wifi และ USB (ต้องเริ่มใหม่)</string>
-  <string name="button_grant_superuser">ร้องขอการเข้าถึงสิทธิ์ Superuser</string>
-  <string name="pref_select_apps">เลือกโปรแกรม</string>
-  <string name="pref_select_apps_summary">เลือกโปรแกรมที่จะให้เชื่อมต่อผ่าน Tor</string>
-  <string name="pref_node_configuration">การตั้งค่าโหนด</string>
-  <string name="pref_node_configuration_summary">การตั้งค่าขั้นสูงเหล่านี้ทำให้ความเป็นนิรนามของคุณลดลงได้</string>
-  <string name="pref_entrance_node">โหนดทางเข้า</string>
-  <string name="pref_entrance_node_summary">ลายนิ้วมือ, ชื่อเล่น, ประเทศ และที่อยู่ของฮอพแรก</string>
-  <string name="pref_entrance_node_dialog">ระบุโหนดทางเข้า</string>
-  <string name="pref_proxy_type_summary">โพรโทคอลที่ใช้สำหรับเซิร์ฟเวอร์พร็อกซี: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">ระบุชนิดของพร็อกซี</string>
-  <string name="pref_proxy_host_dialog">ระบุเครื่องพร็อกซี</string>
-  <string name="pref_proxy_port_dialog">ระบุพอร์ตของพร็อกซี</string>
-  <string name="status">สถานะ</string>
-  <string name="setting_up_full_transparent_proxying_">กำลังติดตั้งพร็อกซีล่องหนแบบเต็ม…</string>
-  <string name="setting_up_app_based_transparent_proxying_">กำลังติดตั้งพร็อกซีล่องหนแบบระบุโปรแกรม…</string>
-  <string name="transparent_proxying_enabled">พร็อกซีล่องหนถูกเปิดใช้งาน</string>
-  <string name="transproxy_enabled_for_tethering_">พร็อกซีล่องหนถูกเปิดใช้สำหรับการเชื่อมต่อพ่วง!</string>
-  <string name="warning_error_starting_transparent_proxying_">คำเตือน: เกิดข้อผิดพลาดขณะที่พร็อกซีล่องหนเริ่มทำงาน</string>
-  <string name="transproxy_rules_cleared">กฎของพร็อกซีล่องหนถูกล้าง</string>
-  <string name="couldn_t_start_tor_process_">ไม่สามารถเริ่มโพรเซสของ Tor</string>
-  <string name="setting_up_port_based_transparent_proxying_">กำลังติดตั้งพร็อกซีล่องหนแบบระบุพอร์ต…</string>
-  <string name="bridge_error">สะพานขัดข้อง</string>
-  <string name="bridge_requires_ip">ในการใช้งานคุณสมบัติสะพาน คุณต้องระบุที่อยู่ไอพีของสะพานอย่างน้อย 1 ไอพี </string>
-  <string name="send_email_for_bridges">ส่งอีเมลไปที่ bridges at torproject.org โดยระบุแค่ \"get bridges\" ในเนื้อความอีเมล แล้วส่งโดยใช้บัญชีผู้ใช้ gmail</string>
-  <string name="error">ผิดพลาด</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">การตั้งค่า ReachableAddresses ของคุณทำให้เกิดข้อผิดพลาด</string>
-  <string name="your_relay_settings_caused_an_exception_">การตั้งค่ารีเลย์ของคุณทำให้เกิดข้อผิดพลาด</string>
-  <string name="exit_nodes">โหนดทางออก</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">ลายนิ้วมือ, ชื่อเล่น, ประเทศ และที่อยู่ของฮอพสุดท้าย</string>
-  <string name="enter_exit_nodes">ระบุโหนดทางออก</string>
-  <string name="exclude_nodes">โหนดยกเว้น</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">ลายนิ้วมือ, ชื่อเล่น, ประเทศ และที่อยู่ที่ละเว้น</string>
-  <string name="enter_exclude_nodes">ระบุโหนดยกเว้น</string>
-  <string name="strict_nodes">โหนดเข้มงวด</string>
-  <string name="use_only_these_specified_nodes">ใช้ *เฉพาะ* โหนดที่ระบุเหล่านี้เท่านั้น</string>
-  <string name="bridges">สะพาน</string>
-  <string name="use_bridges">ใช้งานสะพาน</string>
-  <string name="bridges_obfuscated">สะพานที่ถูกอำพราง</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">เปิดใช้งานโหนดทางเข้าอื่นเข้าสู่เครือข่าย Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">เปิดใช้งานถ้าสะพานที่ถูกตั้งค่าเป็นสะพานอำพราง</string>
-  <string name="ip_address_and_port_of_bridges">ที่อยู่ไอพีและพอร์ตของสะพาน</string>
-  <string name="enter_bridge_addresses">ระบุที่อยู่ของสะพาน</string>
-  <string name="relays">รีเลย์</string>
-  <string name="relaying">การรีเลย์</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">ทำให้อุปกรณ์ของคุณทำงานเป็นรีเลย์แบบไม่ใช่ทางออก</string>
-  <string name="relay_port">พอร์ตรีเลย์</string>
-  <string name="listening_port_for_your_tor_relay">พอร์ตที่ให้รีเลย์ของ Tor ทำงาน</string>
-  <string name="enter_or_port">ระบุพอร์ตของ OR</string>
-  <string name="relay_nickname">ชื่อเล่นของรีเลย์</string>
-  <string name="the_nickname_for_your_tor_relay">ชื่อเล่นสำหรับรีเลย์ของ Tor ของคุณ</string>
-  <string name="enter_a_custom_relay_nickname">ระบุชื่อเล่นของรีเลย์โดยกำหนดเอง</string>
-  <string name="reachable_addresses">ที่อยู่ซึ่งเข้าถึงได้</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">ทำงานเป็นเครื่องลูกข่ายหลังไฟร์วอลล์ด้วยนโยบายแบบเข้มงวด</string>
-  <string name="reachable_ports">พอร์ตที่เข้าถึงได้</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">พอร์ตที่เข้าถึงได้หลังไฟร์วอลล์แบบเข้มงวด</string>
-  <string name="enter_ports">ระบุพอร์ต</string>
-  <string name="enter_localhost_ports_for_hidden_services">ระบุพอร์ตของ localhost สำหรับให้บริการไม่เปิดเผยทำงาน </string>
-  <string name="hidden_service_ports">พอร์ตของบริการไม่เปิดเผย</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">ชื่อที่ใช้ระบุสำหรับบริการไม่เปิดเผยของคุณ (สร้างโดยอัตโนมัติ)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">เปิดให้ปูมดีบั๊กแสดงผล (ต้องใช้ adb หรือ aLogCat เพื่อดู)</string>
-  <string name="project_home">ที่อยู่โครงการ:</string>
-  <string name="the_tor_license">สัญญาอนุญาตของ Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">ซอฟต์แวร์โดยผู้ผลิตอื่น:</string>
-  <string name="hidden_service_request">โปรแกรมต้องการเปิดพอร์ต %S ที่ซ่อนอยู่ของเซิร์ฟเวอร์ให้เชื่อมกับเครือข่าย Tor การกระทำนี้ปลอดภัยถ้าคุณเชื่อถือโปรแกรมนั้น</string>
-  <string name="something_bad_happened">เกิดอะไรไม่ดีสักอย่าง ให้ตรวจดูจากปูม</string>
-  <string name="hidden_service_on">บริการไม่เปิดเผยอยู่บน:</string>
-  <string name="unable_to_read_hidden_service_name">ไม่สามารถอ่านชื่อของบริการไม่เปิดเผย</string>
-  <string name="unable_to_start_tor">ไม่สามารถเริ่ม Tor</string>
-  <string name="pref_use_sys_iptables_title">ใช้ Iptables ปริยาย</string>
-  <string name="pref_use_sys_iptables_summary">ใช้ไบนารีของ iptables ที่มีอยู่แล้วแทนตัวที่แถมมากับ Orbot</string>
-  <string name="error_installing_binares">ไม่สามารถติดตั้งหรือปรับรุ่นไบนารีของ Tor</string>
-  <string name="pref_use_persistent_notifications">แสดงไอคอนในทูลบาร์เสมอเมื่อ Orbot เชื่อมต่ออยู่</string>
-  <string name="pref_use_persistent_notifications_title">การแจ้งเตือนแบบตลอดเวลา</string>
-  <string name="notification_using_bridges">เปิดใช้งานสะพานแล้ว!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">เลือกโลแคลและภาษาสำหรับ Orbot</string>
-  <string name="wizard_locale_title">เลือกภาษา</string>
-  <string name="wizard_locale_msg">ใช้ค่าปริยายหรือเลือกภาษาปัจจุบัน</string>
-  <string name="btn_save_settings">บันทึกการตั้งค่า</string>
-</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
deleted file mode 100644
index 12d2dab..0000000
--- a/res/values-tl/strings.xml
+++ /dev/null
@@ -1,249 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">simulan at ihinto ang Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Nagsisimula na ang Orbot…</string>
-  <string name="status_activated">Konektado sa Tor network</string>
-  <string name="status_disabled">Naka-deactivate ang Orbot</string>
-  <string name="tor_process_starting">Binubuksan ang Tor client…</string>
-  <string name="tor_process_complete">kumpleto na.</string>
-  <string name="tor_process_waiting">nag-hihintay</string>
-  <string name="not_anonymous_yet">BABALA: Ang iyong traffic ay hindi pa anonimo! Kung maaari sana ay ikompigura muna ang iyong applications na gumamit ng HTTP proxy 127.0.0.1:8118 o kaya ay SOCKS4A o kaya ay SOCKS5 proxy 127.0.0.1:9050</string>
-  <string name="menu_home">Tahanan</string>
-  <string name="menu_browse">Mag-browse</string>
-  <string name="menu_settings">Settings</string>
-  <string name="menu_log">Tala</string>
-  <string name="menu_info">Tulong</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Simulan</string>
-  <string name="menu_stop">Ihinto</string>
-  <string name="menu_about">Tungkol</string>
-  <string name="main_layout_download">Download</string>
-  <string name="main_layout_upload">Upload</string>
-  <string name="button_help">Tulong</string>
-  <string name="button_close">Isara</string>
-  <string name="button_about">Tungkol</string>
-  <string name="button_clear_log">Linisin ang tala</string>
-  <string name="menu_verify">Tiyakin</string>
-  <string name="menu_exit">Labasan</string>
-  <string name="menu_share_bridge">Ipamahagi ang BridgeQR</string>
-  <string name="press_to_start">- pindutin ng matagal para mag umpisa -</string>
-  <string name="pref_trans_proxy_group">Nanganganinag na pag Po-proxy (Kailangan ang Root)</string>
-  <string name="pref_trans_proxy_title">Nanganganinag na pag Po-proxy </string>
-  <string name="pref_trans_proxy_summary">Kusang pag Torifying ng mga Apps</string>
-  <string name="pref_transparent_all_title">Tor lahat</string>
-  <string name="pref_transparent_all_summary">I-proxy ang traffic ng lahat ng apps gamit ang Tor</string>
-  <string name="pref_transparent_port_fallback_title">Port Proxy Fallback</string>
-  <string name="pref_transparent_port_fallback_summary">BABALA: Dayain ang mga karaniwang ports (80, 443, etc). *GAMITIN LAMANG* kung \'Lahat\' o kaya ang \'App\' na paraan ay hindi gumagana.</string>
-  <string name="pref_transparent_port_title">Lisatahan ng Port</string>
-  <string name="pref_transparent_port_summary">Lisatahan ng mga ports sa proxy. *GAMITIN LAMANG* kung \'Lahat\' o kaya ang \'App\' na paraan ay hindi gumagana.</string>
-  <string name="pref_transparent_port_dialog">Ipasok ang ports sa proxy</string>
-  <string name="pref_has_root">Humiling ng daanan sa Root</string>
-  <string name="pref_has_root_summary">Humiling ng daanan sa Root para sa nanganganinag na pag Po-proxy</string>
-  <string name="status_install_success">Ang Tor binaries ay matagumpay na i-install.</string>
-  <string name="status_install_fail">Ang Tor binary files ay hindi na install. Paki tignan ang tala at magbigay alam sa tor-assistants at torproject.org</string>
-  <string name="title_error">May mali sa Application</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Tungkol sa Orbot</string>
-  <string name="btn_next">Susunod</string>
-  <string name="btn_back">Balik</string>
-  <string name="btn_finish">Wakas</string>
-  <string name="btn_okay">Okay</string>
-  <string name="btn_cancel">Kanselahin</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Ilang detalye sa Orbot</string>
-  <string name="wizard_details_msg">Ang Orbot ay isang open-source application na naglalaman ng Tor, LibEvent at Polipo. Ito ay nagbibigay ng local HTTP proxy (8118) at SOCKS proxy (9050) sa Tor network. Ang Orbot ay nagbibigay din ng kakayahan, sa mga rooted device, na ipadala ang lahat ng trapiko sa internet sa pamamagitan  ng Tor.</string>
-  <string name="wizard_permissions_root">Napahintulotan na</string>
-  <string name="wizard_permissions_stock">Pahintulot ng Orbot</string>
-  <string name="wizard_premissions_msg_root">Mahusay! Natuklasan namin na mayroon pahintulot ang Orbot para sa root. Gagamitin namin ito ng mabuti.</string>
-  <string name="wizard_permissions_msg_stock">Ito ay hindi kinakailangan, ngunit mas mapapalawig ang kakayahan ng Orbot kung ang iyong device ay meron access sa root. Gamitin ang pindutan sa ibaba para bigyan ng superpowers ang Orbot!</string>
-  <string name="wizard_permissions_no_root">Kung wala kang access sa root o wala kang alam sa sinasabi namin, siguraduhin mu nalamang na gagamit ka ng mga apps na ginawa para sa Orbot.</string>
-  <string name="wizard_permissions_consent">Nauunawaan ko at mag-papatuloy ng walang Superuser</string>
-  <string name="wizard_permission_enable_root">Pahintulutan ang Orbot para sa Root</string>
-  <string name="wizard_configure">Kompigurahin ang Torification</string>
-  <string name="wizard_configure_msg">Binibigyan ka ng Orbot ng pagpipilian na i-route lahat ng application traffic gamit ang Tor o piliin ang application isa-isa.</string>
-  <string name="wizard_configure_all">I-proxy lahat ng Apps gamit ang Tor</string>
-  <string name="wizard_configure_select_apps">Pumili ng isa-isang apps para sa Tor</string>
-  <string name="wizard_tips_tricks">Orbot-enabled Apps</string>
-  <string name="wizard_tips_msg">Ang mga apps sa ibaba ay dinevelop upang gumana sa Orbot. I-click ang button para i-install, o sila ay mahahanap sa Google Play, sa GuardianProject.info website o sa F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Isang Secure instant messaging client para sa Android</string>
-  <string name="wizard_tips_proxy">Proxy Settings - Alamin paano magkompigura ng apps para gumana sa Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo Search Engine app</string>
-  <string name="wizard_tips_twitter">I-set ang Twitter proxy sa host \"localhost\" at port 8118</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proxy Settings</string>
-  <string name="wizard_proxy_help_msg">Kung ang ginagamit na Android app ay gumagamit ng HTTP o SOCKS proxy, ibig sabihin lang noon ay pwede mong isaayos para kumunekta sa Orbot sa paggamit ng Tor.\n\n\n Ang host settings ay 127.0.0.1 o \"localhost\". Para naan sa HTTP, ang port setting ay 8118. Para naman sa SOCKS, ang proxy ay 9050. Kailangan mong gamitin ang SOCKS4A o SOCKS5 kung posible.\n \n\n\n Mas marami kang matututunan sa proxying sa Android sa pamamagitan ng FAQ sa: http://tinyurl.com/proxyandroid .\n </string>
-  <string name="wizard_final">Handa na ang Orbot!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Bubuksan nito ang iyong browser sa https://check.torproject.org para matignan kung ang Orbot ay na-kompigura at konektado ka sa Tor.</string>
-  <string name="pref_hs_group">Tagong Service Hosting</string>
-  <string name="pref_general_group">Pangkalahatan</string>
-  <string name="pref_start_boot_title">Umpisahan ang Orboot sa Boot</string>
-  <string name="pref_start_boot_summary">Kusang umpisahan ang Orbot at kumonekta sa Tor sa pag bukas ng iyong Android Device</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Ang Orbot ang nagdala ng Tor sa Android!\n\nAng Tor ay tumutulong sa iyo na sanggain ang pagsala ng nilalaman, pag-analisa ng trapiko at pangmamatyag sa network na mapanganib sa iyong privacy, conpidensyal na impormasyon at personal na relasyon.\n\nAng wizard ang makakatulong sa iyo para isaayos ang Orbot at Tor sa iyong device.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Babala</string>
-  <string name="wizard_warning_msg">Sa pag-install nang Orbot, hindi nito awtomatikong ina-anonymize ang iyong trapiko sa iyong mobile.\n\nKailangan mong isaayos ng tama ang Orbot, sa iyong device at sa iba pang apps para matagumpay na magamit ang Tor.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Mga Pahintulot</string>
-  <string name="wizard_permissions_root_msg1">Maari mong piliin bigyan ng pahintulot ang Orbot ng \'Superuser\' access para ma-enable ang mga advanced features tulad ng Transparent Proxying.</string>
-  <string name="wizard_permissions_root_msg2">Kapag ayaw mo itong gawin, siguraduhing gumamit ng apps na ginawa upang gumana kasama ang Orbot.</string>
-  <string name="wizard_permissions_no_root_msg">Mukang ang iyong device ay hindi pa rooted o hindi nagbibigay ng daan sa root o \'Superuser\'.\n\nPakiusap, o hindi kaya subukan ang paraan ng \'Apps\' sa pangunahing screen.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-Enabled Apps</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Isang secure chat app na may Off-the-Record Encryption</string>
-  <string name="wizard_tips_orweb">Orfox: Privacy-enhanced browser na gumagana sa pamamagitan ng Tor.</string>
-  <string name="wizard_tips_play">Hanapin ang lahat ng Guardian Project apps sa Google Play</string>
-  <string name="wizard_tips_fdroid">Hanapin ang lahat ng Guardian Project apps sa F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Hanapin ang lahat ng Guardian Project apps sa https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transparent Proxying</string>
-  <string name="wizard_transproxy_msg">Ito ay bibigyan ng pahintulot ang iyong mga apps na kusang mag-run sa Tor network kahit walang pag-kompigura na ginawa.</string>
-  <string name="wizard_transproxy_hint">(Lagyan ng check ang box na ito kung wala kang alam sa sinasabi namin)</string>
-  <string name="wizard_transproxy_none">Wala</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">I-enable ang Tor Transparent Proxying para sa Wifi at USB Tethered Devices (kailangan mag restart)</string>
-  <string name="button_grant_superuser">Humiling ng Superuser Access</string>
-  <string name="pref_select_apps">Pumili ng Apps</string>
-  <string name="pref_select_apps_summary">Pumili ng Apps para i-route sa Tor</string>
-  <string name="pref_node_configuration">Pagkompigura ng Node</string>
-  <string name="pref_node_configuration_summary">Ang mga ito ay advanced settings na maaring bawasan ang iyong anonymity</string>
-  <string name="pref_entrance_node">Entrance Nodes</string>
-  <string name="pref_entrance_node_summary">Fingerprints, nicks, mga bansa at mga address para sa unang lukso</string>
-  <string name="pref_entrance_node_dialog">Pumasok sa Entrance Nodes</string>
-  <string name="pref_allow_background_starts_title">Pahintulutan na magsimula sa background</string>
-  <string name="pref_allow_background_starts_summary">Hayaan ang kahit anong app na sabihin kay Orbot na magsimula ng Tor at anumang malapit na serbisyo.</string>
-  <string name="button_proxy_all">Proxy All</string>
-  <string name="button_proxy_none">Proxy None</string>
-  <string name="button_invert_selection">Baliktarin ang napili</string>
-  <string name="pref_proxy_title">Outbound Network Proxy (Optional)</string>
-  <string name="pref_proxy_type_title">Outbound Proxy Type</string>
-  <string name="pref_proxy_type_summary">Mga protocol na gagamitin para sa proxy server: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Ilagay ang Proxy Type</string>
-  <string name="pref_proxy_host_title">Outbound Proxy Host</string>
-  <string name="pref_proxy_host_summary">Proxy Server hostname</string>
-  <string name="pref_proxy_host_dialog">Ilagay ang Proxy Host</string>
-  <string name="pref_proxy_port_title">Outbound Proxy</string>
-  <string name="pref_proxy_port_summary">Proxy Server Port</string>
-  <string name="pref_proxy_port_dialog">Ilagay ang Proxy port</string>
-  <string name="pref_proxy_username_title">Outbound Proxy Username</string>
-  <string name="pref_proxy_username_summary">Proxy Username (Optional)</string>
-  <string name="pref_proxy_username_dialog">Ilagay ang Proxy Username</string>
-  <string name="pref_proxy_password_title">Outbound Proxy Password</string>
-  <string name="pref_proxy_password_summary">Proxy Password (Optional)</string>
-  <string name="pref_proxy_password_dialog">Ilagay ang Proxy Password</string>
-  <string name="status">Katayuan</string>
-  <string name="setting_up_full_transparent_proxying_">Isinasaayos ang kabuuang transparent proxying...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Isinasaayos ang app-based transparent proxying...</string>
-  <string name="transparent_proxying_enabled">Na i-enable na ang Transparent proxying</string>
-  <string name="transproxy_enabled_for_tethering_">Na i-enable na ang TransProxy para sa Thethering!</string>
-  <string name="warning_error_starting_transparent_proxying_">BABALA: error sa pag start ng transparent proxying!</string>
-  <string name="transproxy_rules_cleared">Nalinis na ang mga batas ng TransProxy</string>
-  <string name="couldn_t_start_tor_process_">Hindi ma umpisahan ang proseso ng Tor:</string>
-  <string name="privoxy_is_running_on_port_">Ang Polipo ay gumagana ngayon sa port:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Isinasaayos ang port-based transpaprent proxying...</string>
-  <string name="bridge_error">Error sa Bridge</string>
-  <string name="bridge_requires_ip">Para magamit ang feature ng bridge, kailangan mong mag lagay ng kahit isang bridge IP address.</string>
-  <string name="send_email_for_bridges">Magpadala ng email sa bridges at torproject.org na mayroong linyang  \"get bridges\" at wala ng iba pang kasama sa katawa ng email gamit ang isang gmail account.</string>
-  <string name="error">Error</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Ang iyong ReachableAddresses settings ay nag sanhi ng exception!</string>
-  <string name="your_relay_settings_caused_an_exception_">Ang iyong relay settings ay nag sanhi ng exception!</string>
-  <string name="exit_nodes">Exit Nodes</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingerprints, nicks, mga bansa at address para sa huling talon</string>
-  <string name="enter_exit_nodes">Enter Exit Nodes</string>
-  <string name="exclude_nodes">Hindi kasama ang Nodes</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingerprints, nicks, mga bansa at mga address na hindi isasama</string>
-  <string name="enter_exclude_nodes">Enter Exclude Nodes</string>
-  <string name="strict_nodes">Strict Nodes</string>
-  <string name="use_only_these_specified_nodes">Gumamit ng *only* sa mga ispesipikong nodes </string>
-  <string name="bridges">Bridges</string>
-  <string name="use_bridges">Gumamit ng Bridges</string>
-  <string name="bridges_obfuscated">Obfuscated Bridges</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">I-enable ang kahaliling entrance nodes sa Tor Network</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">I-enable kung ang naisaayos na bridges ay obfuscated bridges</string>
-  <string name="ip_address_and_port_of_bridges">IP address at port ng bridges</string>
-  <string name="enter_bridge_addresses">Ilagay ang Bridge Addresses</string>
-  <string name="relays">Relays</string>
-  <string name="relaying">Relaying</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">I-enable ang iyong device na non-exit relay</string>
-  <string name="relay_port">Relay Port</string>
-  <string name="listening_port_for_your_tor_relay">Pinapakinggan ang port para sa iyong Tor relay</string>
-  <string name="enter_or_port">I-lagay ang OR port</string>
-  <string name="relay_nickname">Relay nickname</string>
-  <string name="the_nickname_for_your_tor_relay">Ang nickname para sa iyong Tor relay</string>
-  <string name="enter_a_custom_relay_nickname">I-lagay ang pasadyang relay nickname</string>
-  <string name="reachable_addresses">Reachable Addresses</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Patakbuhin bilang kliente sa likod ng firewall na may istriktong polisiya</string>
-  <string name="reachable_ports">Reachable Ports</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Ports reachable sa likod ng istriktong firewall</string>
-  <string name="enter_ports">I-lagay ang ports</string>
-  <string name="enable_hidden_services">Nakatagong Service Hosting</string>
-  <string name="run_servers_accessible_via_the_tor_network">pahintulutan sa on-device server na maging malalapitan sa pamamagitan ng Tor network</string>
-  <string name="enter_localhost_ports_for_hidden_services">I-lagay ang localhost ports para sa nakatagong serbisyo</string>
-  <string name="hidden_service_ports">Tagong Service Ports</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">ang addressable na pangalan sa iyong tagong serbisyo (awtomatikong nabuo)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">paganahiin ang debug log para sa output (kailangang gamitin ang adb o aLogCat para makita)</string>
-  <string name="project_home">Project Home(s):</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/
-</string>
-  <string name="the_tor_license">Ang Tor License</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">3rd-Party-Software:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">May app na gustong buksan ang nakatagong server port %S sa Tor network. Ito ay ligtas kung pinagkakatiwalaan ang app.</string>
-  <string name="found_existing_tor_process"> nakakita ng umiiral na Tor process...</string>
-  <string name="something_bad_happened">May nangyaring masama. Tingnan ang log</string>
-  <string name="hidden_service_on">nakatagong serbisyo sa:</string>
-  <string name="unable_to_read_hidden_service_name">hindi mabasa ang pangalan ng tagong serbisyo</string>
-  <string name="unable_to_start_tor">Hindi masimulan ang Tor:</string>
-  <string name="unable_to_reset_tor">I-reboot ang iyong device, hindi ma-reset ang Tor!</string>
-  <string name="pref_use_sys_iptables_title">Gumamit ng Default na Iptables</string>
-  <string name="pref_use_sys_iptables_summary">gamitin ang built-in iptables binary kaysa sa isang nabigkis kasama ng Orbot</string>
-  <string name="error_installing_binares">Ang Tor binaries ay hindi ma-install o ma-upgrade.</string>
-  <string name="pref_use_persistent_notifications">Palaging panatilihin ang icon sa toolbar kapag ang Orbot ay naka-connect</string>
-  <string name="pref_use_persistent_notifications_title">Palaging i-On ang Notifications</string>
-  <string name="pref_use_expanded_notifications">Ipakita ang pinalaking notification kasama ng Tor exit country at IP</string>
-  <string name="pref_use_expanded_notifications_title">Pinalawak na Notifications</string>
-  <string name="notification_using_bridges">Bridges enabled!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Wika</string>
-  <string name="set_locale_summary">Pumili ng locale at wika para sa Orbot</string>
-  <string name="wizard_locale_title">Pumili ng Wika</string>
-  <string name="wizard_locale_msg">Iwanang default o palitan ang kasalukuyang wika</string>
-  <string name="powered_by">powered by Tor</string>
-  <string name="btn_save_settings">I-Save ang Settings</string>
-  <string name="no_internet_connection_tor">Walang connection sa internet; Ang Tor ay naka-standby mode...</string>
-  <string name="bandwidth_">Bandwidth:</string>
-  <string name="down">baba</string>
-  <string name="up">taas</string>
-  <string name="pref_disable_network_title">Walang Auto-Sleep sa Network</string>
-  <string name="pref_disable_network_summary">Ilagay ang Tor sa sleep kapag walang internet na pwede</string>
-  <string name="newnym">Ikaw ay nagpalit ng bagong pagkakakilanlan sa Tor!</string>
-  <string name="menu_verify_browser">Browser</string>
-  <string name="menu_use_chatsecure">Gamitin ang ChatSecure</string>
-  <string name="permission_manage_tor_label">Manage Tor</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Activate</string>
-  <string name="apps_mode">Apps VPN Mode</string>
-  <string name="send_email">Send Email</string>
-  <string name="install_orweb">I-install ang Orfox</string>
-  <string name="standard_browser">Standard Browser</string>
-  <string name="vpn_default_world">Mundo</string>
-</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
deleted file mode 100644
index 8958de8..0000000
--- a/res/values-tr/strings.xml
+++ /dev/null
@@ -1,282 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot başka uygulamaların interneti daha güvenli olarak kullanmasını sağlayan ücretsiz bir proxy uygulamasıdır. Orbot Tor\'u kullanarak internet trafiğinizi şifreler ve dünya üzerindeki pek çok farklı bilgisayardan geçirerek gizler. Tor sizin kişisel özgürlüğünüzü ve mahremiyetinizi, gizli ticari aktivitelerinizi ve bağlantılarınızı koruma altına alan bir yazılım ve açık ağdır.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">https://check.torproject.org/?lang=tr</string>
-  <string name="secure_default_web_url">https://check.torproject.org/?lang=tr</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">Tor\'u başlat ve durdur</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot başlatılıyor...</string>
-  <string name="status_activated">Tor ağına bağlandı</string>
-  <string name="status_disabled">Orbot devre dışı bırakıldı</string>
-  <string name="status_shutting_down">Tor hizmeti kapatılıyor</string>
-  <string name="tor_process_starting">Tor kullanımı başlatılıyor...</string>
-  <string name="tor_process_complete">tamamlandı.</string>
-  <string name="tor_process_waiting">bekliyor.</string>
-  <string name="not_anonymous_yet">UYARI: Bağlantınız henüz anonim değildir! Lütfen uygulamalarınızı HTTP 127.0.0.1:8118  veya SOCKS4A / SOCKS5 127.0.0.1:9050 vekil sunucusu kullanacak şekilde yapılandırınız.</string>
-  <string name="menu_home">Başlangıç</string>
-  <string name="menu_browse">Göz At</string>
-  <string name="menu_settings">Ayarlar</string>
-  <string name="menu_log">Günlük</string>
-  <string name="menu_info">Yardım</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Başlat</string>
-  <string name="menu_stop">Durdur</string>
-  <string name="menu_about">Hakkında</string>
-  <string name="menu_promo_apps">Uygulamaları alın... </string>
-  <string name="main_layout_download">İndir</string>
-  <string name="main_layout_upload">Yükle</string>
-  <string name="button_help">Yardım</string>
-  <string name="button_close">Kapat</string>
-  <string name="button_about">Hakkında</string>
-  <string name="button_clear_log">Günlüğü Temizle</string>
-  <string name="menu_verify">Kontrol Et</string>
-  <string name="menu_exit">Çıkış</string>
-  <string name="menu_scan">QR kodu tarama</string>
-  <string name="menu_share_bridge">QR kodu paylaş</string>
-  <string name="press_to_start">- başlatmak için uzun basın -</string>
-  <string name="pref_trans_proxy_group">Şeffaf Vekillendirme (Yeniden Başlatma Gerektirir)</string>
-  <string name="pref_trans_proxy_title">Şeffaf Vekillendirme</string>
-  <string name="pref_trans_proxy_summary">Uygulamalar için Otomatik Tor Uyarlaması</string>
-  <string name="pref_transparent_all_title">Herşeyi Tor ile Uyarla</string>
-  <string name="pref_transparent_all_summary">Tor\'a uyarlanmış uygulamaların vekil sunucu bağlantıları</string>
-  <string name="pref_transparent_port_fallback_title">Vekil Sunucu Yanıtsız Kalma Bildirim Portu</string>
-  <string name="pref_transparent_port_fallback_summary">UYARI: Genel portlardan (80,443, v.b.) kaçınınız. SADECE \'Hepsi\' veya \'Uygulama\' modu çalışmadığında kullanınız.</string>
-  <string name="pref_transparent_port_title">Port Listesi</string>
-  <string name="pref_transparent_port_summary">Vekil sunucu port listesi. *SADECE* \'Hepsi\' veya \'Uygulama\' modu çalışmadığında kullanınız.</string>
-  <string name="pref_transparent_port_dialog">Vekil sunucu portlarını giriniz</string>
-  <string name="pref_has_root">Yönetici Erişimi Talebi</string>
-  <string name="pref_has_root_summary">Şeffaf Vekillendirme için Yönetici Erişimi Talebi</string>
-  <string name="status_install_success">Tor binarileri başarıyla yüklendi!</string>
-  <string name="status_install_fail">Tor binary dosyaları yüklenemedi. Lütfen günlüğü kontrol ediniz ve tor-assistants at torproject.org adresini kullanarak bilgilendirme yapınız.</string>
-  <string name="title_error">Uygulama Hatası</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Orbot Hakkında</string>
-  <string name="btn_next">İleri</string>
-  <string name="btn_back">Geri</string>
-  <string name="btn_finish">Bitir</string>
-  <string name="btn_okay">Tamam</string>
-  <string name="btn_cancel">İptal
-            </string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Bazı Orbot detayları</string>
-  <string name="wizard_details_msg">Orbot; Tor, Libevent ve Polipo içeren bir açık kaynak uygulamadır. Yerel bir HTTP proxy (8118) ve Tor ağı içine SOCKS proxy (9050) sağlamaktadır. Orbot ayrıca rootlu cihazlar için tüm internet trafiğini Tor üzerinden gönderme yeteneğine sahiptir. </string>
-  <string name="wizard_permissions_root">İzin Verildi</string>
-  <string name="wizard_permissions_stock">Orbot İzinleri</string>
-  <string name="wizard_premissions_msg_root">Mükemmel! Root izinlerinizin Orbot için aktif olduğunu saptadık. Bu gücü akıllıca kullanacağız.</string>
-  <string name="wizard_permissions_msg_stock">Gerekli olmamakla birlikte, eğer cihazınızın root erişimi varsa Orbot daha güçlü bir araç olabilir. Orbot\'a süper güçlerini vermek için aşağıdaki butonu kullanın!</string>
-  <string name="wizard_permissions_no_root">Root(superuser) erişiminiz ya da neden bahsettiğimiz hakkında bir fikriniz yoksa sadece eklentilerin Orbot\'la birlikte çalışabilmeleri için yapıldığından emin olun.</string>
-  <string name="wizard_permissions_consent">Anlıyorum ve Superuser olmadan devam etmek istiyorum</string>
-  <string name="wizard_permission_enable_root">Orbot\'a root erişimi ver</string>
-  <string name="wizard_configure">Tor Bildirimlerini Ayarla</string>
-  <string name="wizard_configure_msg">Orbot, tüm uygulamaların veya seçtiğiniz uygulamaların trafiğini Tor üzerinden yönlendirme seçeneği sunar.</string>
-  <string name="wizard_configure_all">Tüm Uygulamaları Tor Üzerinden Vekillendir</string>
-  <string name="wizard_configure_select_apps">Tor için ayrı ayrı uygulamalar seç.</string>
-  <string name="wizard_tips_tricks">Orbot\'un Etkin Olduğu Eklentiler</string>
-  <string name="wizard_tips_msg">Aşağıdaki uygulamalar Orbot ile birlikte çalışmak üzere geliştirilmiştir. Uygulamaları hemen kurmak için ilgili düğmelere tıklayabilir veya uygulamalara daha sonra Google Play, GuardianProject.info web adresi veya F-Droid.org üzerinden erişebilirsiniz.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Android için güvenli anında mesajlaşma istemcisi</string>
-  <string name="wizard_tips_proxy">Vekil Ayarları - Uygulamaların, Orbot ile birlikte çalışmalarını nasıl ayarlayacağınızı öğrenin.</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo Arama Motoru uygulaması</string>
-  <string name="wizard_tips_twitter">Twitter proxy sunucusunu \"localhost\" ve bağlantı noktası 8118 olarak ayarlayın</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Bir öykü yarat ve güvenliği tor\'a bırak!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proxy Ayarları</string>
-  <string name="wizard_final">Orbot hazır!</string>
-  <string name="wizard_exit_at_first_screen_toast">Lütfen kullanmadan önce Orbot\'u yapılandırın!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Bu, Orbot\'un ayarlanıp ayarlanmadığını ve Tor\'a bağlanıp bağlanmadığınızı anlamanız amacıyla tarayıcınızda https://check.torproject.org adresini açacak.</string>
-  <string name="pref_hs_group">Gizlenmiş servis sunucusu</string>
-  <string name="pref_general_group">Genel</string>
-  <string name="pref_start_boot_title">Orbot\'u Telefonla Birlikte Başlat</string>
-  <string name="pref_start_boot_summary">Android cihaz açıldığında otomatik olarak Orbot\'u başlat ve Tor\'a bağlan.</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Uyarı</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">İzinler</string>
-  <string name="wizard_permissions_root_msg1">İsterseniz Orbot\'a \'Superuser\' erişimi vererek saydam proxy gibi gelişmiş ayarları aktif hale getirebilirsiniz.</string>
-  <string name="wizard_permissions_root_msg2">Bunu yapmak istemiyorsanız, lütfen Orbot ile çalışmak üzere yapılmış uygulamalar kullandığınızdan emin olun</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot\'un aktif olduğu eklentiler</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Güvenli Kayıt-dışı Şifreleme yapabilen sohbet uygulaması</string>
-  <string name="wizard_tips_orweb">Orfox: Gizliliği geliştirilmiş bir tarayıcı Tor üzerinden çalışır</string>
-  <string name="wizard_tips_play">Google Play\'deki tüm Guardian Projesi uygulamalarına bakın</string>
-  <string name="wizard_tips_fdroid">Tüm Guardian Project uygulamalarını F-Droid vasıtasıyla bulun</string>
-  <string name="wizard_tips_fdroid_org">Tüm Guardian Project uygulamalarına bu adresten erişin https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Şeffaf Vekillendirme</string>
-  <string name="wizard_transproxy_msg">Bu, uygulamalarınızı Tor üzerinden, herhangi bir ayar yapmadan çalıştırmanıza olanak sağlar.</string>
-  <string name="wizard_transproxy_hint">(Neden bahsettiğimiz hakkında bir fikriniz yoksa bu kutucuğu işaretleyin)</string>
-  <string name="wizard_transproxy_none">Hiçbiri</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Kablosuz ağlar için Tor açık proxy ve USB Tethering\'e izin ver (yeniden başlatmayı gerektirir)</string>
-  <string name="button_grant_superuser">Superuser Erişimi Talebi</string>
-  <string name="pref_select_apps">Uygulamaları Seç</string>
-  <string name="pref_select_apps_summary">Tor Üzerinden Yönlendirilecek Uygulamaları Seç</string>
-  <string name="pref_node_configuration">Düğüm Ayarları</string>
-  <string name="pref_node_configuration_summary">Bu ayarlar bağlantınızın anonimliğini azaltabilecek gelişmiş ayarlardır.</string>
-  <string name="pref_entrance_node">Giriş Noktaları</string>
-  <string name="pref_entrance_node_summary">İlk düğüm için parmak izleri, rumuzlar, ülkeler, adresler</string>
-  <string name="pref_entrance_node_dialog">Giriş Düğümlerini Girin</string>
-  <string name="pref_allow_background_starts_title">Arka planda çalışmaya izin ver</string>
-  <string name="pref_allow_background_starts_summary">Herhangi bir uygulamanın Orbot aracılığıyla Tor ve ilgili hizmetleri başlatması için izin ver</string>
-  <string name="button_proxy_all">Tüm bağlantılar için Vekil Sunucu kullan</string>
-  <string name="button_proxy_none">Vekil Sunucu kullanma</string>
-  <string name="button_invert_selection">Ters seçim</string>
-  <string name="pref_proxy_title">Giden Ağ Sunucusu (tercihe bağlı)</string>
-  <string name="pref_proxy_type_title">Giden proxy tipi</string>
-  <string name="pref_proxy_type_summary">Proxy sunucusunu kullanmak için protokoller: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Proxy tipini girin</string>
-  <string name="pref_proxy_host_title">Giden proxy sunucusu</string>
-  <string name="pref_proxy_host_summary">Vekil Sunucusu adı</string>
-  <string name="pref_proxy_host_dialog">Vekil Host\'u girin</string>
-  <string name="pref_proxy_port_title">Giden vekil bağlantı noktası</string>
-  <string name="pref_proxy_port_summary">Vekil Sunucusu bağlantı noktası</string>
-  <string name="pref_proxy_port_dialog">Vekil bağlantı noktasını girin</string>
-  <string name="pref_proxy_username_title">Giden Vekil Kullanıcı Adı</string>
-  <string name="pref_proxy_username_summary">Vekil Kullanıcı Adı (tercihe bağlı)</string>
-  <string name="pref_proxy_username_dialog">Vekil Kullanıcı Adı girin</string>
-  <string name="pref_proxy_password_title">Giden Vekil Parolası</string>
-  <string name="pref_proxy_password_summary">Vekil parolası (tercihe bağlı)</string>
-  <string name="pref_proxy_password_dialog">Vekil Parolası girin</string>
-  <string name="status">Durum</string>
-  <string name="setting_up_full_transparent_proxying_">Tamamen saydam vekil kuruluyor...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Uygulamaya özel saydam proxy kuruluyor...</string>
-  <string name="transparent_proxying_enabled">Saydam vekil AKTİF</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy Tethering\'e açıldı!</string>
-  <string name="warning_error_starting_transparent_proxying_">UYARI: şeffaf proxy başlatılırken hata oluştu</string>
-  <string name="transproxy_rules_cleared">TransProxy kuralları temizlendi</string>
-  <string name="couldn_t_start_tor_process_">Tor işlemi başlatılamadı</string>
-  <string name="privoxy_is_running_on_port_">Polipo bu port üzerinde çalışıyor:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Port tabanlı şeffaf vekillendirme ayarlanıyor...</string>
-  <string name="bridge_error">Köprü hatası</string>
-  <string name="bridge_requires_ip">Köprü özelliğini kullanmak adına, en az bir tane köprü IP adresi girmelisiniz.</string>
-  <string name="send_email_for_bridges">Gmail hesabınızdan bridges at torproject.org adresine içinde sadece \"get bridges\" yazılı bir eposta gönderin.</string>
-  <string name="error">Hata</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">ErişilebilirAdresleriniz ayarlarınız bir istisnaya yol açtı!</string>
-  <string name="your_relay_settings_caused_an_exception_">Tor aktarıcı ayarlarınız bir istisnaya yol açtı!</string>
-  <string name="exit_nodes">Çıkış Düğümleri</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Son düğüm için parmak izleri, rumuzlar, ülkeler, adresler</string>
-  <string name="enter_exit_nodes">Çıkış bağlantılarını girin</string>
-  <string name="exclude_nodes">Şu bağlantıları dahil etmeyin</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Dahil edilmeyecek parmak izleri, takma adlar, ülkeler ve adresler</string>
-  <string name="enter_exclude_nodes">Giriş bağlantılarını girin</string>
-  <string name="strict_nodes">Değişmeyen bağlantılar</string>
-  <string name="use_only_these_specified_nodes">*Sadece* bu bağlantıları kullan</string>
-  <string name="bridges">Köprüler</string>
-  <string name="use_bridges">Köprü kullan</string>
-  <string name="bridges_obfuscated">Gizlenmiş köprüler</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Tor ağına başka giriş bağlantılarına izin ver</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Yapılandırılan köprüler gizlenmiş ise izin ver</string>
-  <string name="ip_address_and_port_of_bridges">Köprülerin IP adresleri ve bağlantı noktaları</string>
-  <string name="enter_bridge_addresses">Köprü Adresleri Gir</string>
-  <string name="relays">Aktarıcılar</string>
-  <string name="relaying">Aktarmak</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Cihazınızı çıkış yapmayan aktarıcı olması için aktif edin</string>
-  <string name="relay_port">Aktarıcı Portu</string>
-  <string name="listening_port_for_your_tor_relay">Tor aktarıcınız için dinleme port\'u</string>
-  <string name="enter_or_port">OR port\'u gir</string>
-  <string name="relay_nickname">Aktarıcı rumuzu</string>
-  <string name="the_nickname_for_your_tor_relay">Tor aktarıcınız için rumuz</string>
-  <string name="enter_a_custom_relay_nickname">Özel aktarıcı rumuzu girin</string>
-  <string name="reachable_addresses">Ulaşılabilir adresler</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Bir güvenlik duvarı arkasındaki sınırlı kullanıcı olarak bağlan</string>
-  <string name="reachable_ports">Ulaşılabilir bağlantı noktaları</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Sınırlayıcı güvenlik duvarı ardındaki ulaşılabilir bağlantı noktaları</string>
-  <string name="enter_ports">Bağlantı noktaları gir</string>
-  <string name="enable_hidden_services">Gizlenmiş Servis Sunucusu</string>
-  <string name="run_servers_accessible_via_the_tor_network">cihazdaki sunucunun Tor ağından ulaşılmasına izin ver</string>
-  <string name="enter_localhost_ports_for_hidden_services">gizlenmiş servis sunucuları için localhost bağlantı noktası gir</string>
-  <string name="hidden_service_ports">Gizlenmiş Servis Bağlantı Noktaları</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Gizlenmiş servisiniz için adreslenebilir ad (otomatik olarak verilmiştir)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">hata giderme kaydını tut (görüntülemek için adb veya aLogCat gerekir)</string>
-  <string name="project_home">Proje adres(ler)i:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Tor Lisansı</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Üçüncü Parti Yazılım:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Bir uygulama Tor ağında gizlenmiş sunucu bağlantı noktası %S açmak istiyor. Eğer uygulamaya güveniyorsanız bu güvenlidir.</string>
-  <string name="found_existing_tor_process">varolan bir Tor işlemi bulundu...</string>
-  <string name="something_bad_happened">Kötü bir şey oldu. Kayıtlara bakınız</string>
-  <string name="hidden_service_on">gizlenmiş servis:</string>
-  <string name="unable_to_read_hidden_service_name">gizli hizmet adı okunamıyor</string>
-  <string name="unable_to_start_tor">Tor başlatılamadı:</string>
-  <string name="unable_to_reset_tor">Cihazınızı yeniden başlatın, Tor\'u sıfırlamak mümkün değil! </string>
-  <string name="pref_use_sys_iptables_title">Varsayılan Ip tablolarını kullan</string>
-  <string name="pref_use_sys_iptables_summary">Orbot ile birlikte gelenler yerine kurulu iptables binary kullan</string>
-  <string name="error_installing_binares">Tor binary kurulumu veya yükseltilmesi mümkün değil.</string>
-  <string name="pref_use_persistent_notifications">Orbot bağlı olduğu sürece simgeyi araç çubuğunda tut</string>
-  <string name="pref_use_persistent_notifications_title">Bildirimler her zaman açık</string>
-  <string name="pref_use_expanded_notifications">Tor çıkış ülkesi ve IP için genişletilmiş bildirim göster</string>
-  <string name="pref_use_expanded_notifications_title">Genişletilmiş Bildirimler</string>
-  <string name="notification_using_bridges">Köprüler etkinleştirildi!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Dil</string>
-  <string name="set_locale_summary">Orbot için yerel ayarları ve dili seç</string>
-  <string name="wizard_locale_title">Dili seçin</string>
-  <string name="wizard_locale_msg">Varsayılanda bırak veya geçerli dile geç</string>
-  <string name="powered_by">Tor tarafından desteklenmektedir</string>
-  <string name="btn_save_settings">Ayarları kaydet</string>
-  <string name="no_internet_connection_tor">İnternet bağlantısı yok; Tor bekleme modunda...</string>
-  <string name="bandwidth_">Bant genişliği:</string>
-  <string name="down">aşağı</string>
-  <string name="up">yukarı</string>
-  <string name="pref_disable_network_title">Bağlantı yokken Otomatik Uykuya Geç</string>
-  <string name="pref_disable_network_summary">İnternet olmadığında Tor\'u uykuya al</string>
-  <string name="newnym">Yeni bir Tor kimliğine geçiş yaptınız!</string>
-  <string name="menu_verify_browser">Tarayıcı</string>
-  <string name="menu_use_chatsecure">ChatSecure Kullan</string>
-  <string name="permission_manage_tor_label">Tor\'u Yönet</string>
-  <string name="permission_manage_tor_description">Tor servisini kontrol etmek için bu uygulamayı etkinleştir</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Orfox yüklü gibi görünmüyor. Bu konuyla alakalı yardım istiyor musun, ya da sadece tarayıcı mı açılsın?</string>
-  <string name="install_apps_">Uygulamalar kurulsun mu?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Hiçbir ağ bağlantısı yok. Tor uyku moduna alınıyor...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Ağ bağlantısı iyi. Tor uyandırılıyor... </string>
-  <string name="updating_settings_in_tor_service">Tor hizmet ayarları güncellemesi</string>
-  <string name="pref_socks_title">SOCKS için Tor kullan</string>
-  <string name="pref_socks_dialog">SOCKS Port Yapılandırma</string>
-  <string name="pref_transport_title">Tor TransProxy Port</string>
-  <string name="pref_transport_summary">Tor Şeffaf Vekil Proxy Port\'u için (varsayılan olarak: 9040 veya devre dışı bırakmak için 0) değerlerini öneriyor</string>
-  <string name="pref_transport_dialog">TransProxy Port Yapılandırma</string>
-  <string name="pref_dnsport_title">Tor DNS Port</string>
-  <string name="pref_dnsport_dialog">DNS Port Yapılandırma</string>
-  <string name="pref_torrc_title">Torrc Özel Yapılandırma</string>
-  <string name="pref_torrc_summary">SADECE UZMANLAR: Doğrudan torrc yapılandırma satırları girin</string>
-  <string name="pref_torrc_dialog">Torrc yapılandırma</string>
-  <string name="wizard_tips_martus">Mobil Martus - Benetech İnsan Hakları Belgeleri Uygulaması</string>
-  <string name="your_tor_public_ips_">Umumi Tor IP adresiniz:</string>
-  <string name="app_conflict">Uygulama çatışması</string>
-  <string name="pref_transproxy_refresh_title">TransProxy Otomatik Yenileme</string>
-  <string name="pref_transproxy_refresh_summary">Ağ durumu değiştiğinde TransProxy kurallarını yeniden uygula</string>
-  <string name="pref_transproxy_flush_title">TransProxy Kurallarını KALDIR</string>
-  <string name="pref_transproxy_flush_summary">Tüm TransProxy ağ kurallarını temizlemek için buraya dokunun</string>
-  <string name="transparent_proxy_rules_flushed_">Şeffaf vekil kuralları silindi!</string>
-  <string name="you_do_not_have_root_access_enabled">ROOT erişim izniniz yok</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Ayarların etkin olması için Orbot\'u durdurup yeniden başlatmak gerekebilir.</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Köprüler Güncellendi</string>
-  <string name="restart_orbot_to_use_this_bridge_">Değişiklikleri etkinleştirmek için lütfen Orbot\'u yeniden başlatın</string>
-  <string name="menu_qr">QR Kodları</string>
-  <string name="bridge_mode">Köprü Modu</string>
-  <string name="get_bridges_email">Eposta</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Etkinleştirin</string>
-  <string name="apps_mode">Uygulamalar için VPN Modu</string>
-  <string name="send_email">Eposta Gönder</string>
-  <string name="install_orweb">Orfox yükle</string>
-  <string name="standard_browser">Standart Tarayıcı</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOT: Sadece standart Tor köprüleri Intel X86/ATOM cihazlarda çalışır</string>
-  <string name="vpn_default_world">Dünya</string>
-</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
deleted file mode 100644
index a57001d..0000000
--- a/res/values-uk/strings.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot — це вільна програма для проксі-з\'єднань, яка дозволяє іншим додаткам безпечніше використовувати інтернет-з\'єднання. Orbot використовує Tor для шифрування інтернет-трафіку, який далі приховується під час пересилання через кілька комп\'ютерів у різних частинах планети. Tor є вільним програмним забезпеченням, а також відкритою мережею, що допомагає захиститися від мережевого стеження, яке загрожує особистій свободі та приватному життю, конфіденційній бізнес-діяльності і контактам, а також державної програми безпеки, що в
 ідома як аналіз трафіку.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">запуск і зупинка Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Запуск Orbot...</string>
-  <string name="status_activated">Під\'єднаний до мережі Tor</string>
-  <string name="status_disabled">«Orbot» від\'єднаний</string>
-  <string name="tor_process_starting">Запускається клієнт Tor...</string>
-  <string name="tor_process_complete">завершено.</string>
-  <string name="tor_process_waiting">очікування...</string>
-  <string name="not_anonymous_yet">Попередження: Ваш трафік ще не анонімний! Будь ласка, налаштуйте свої додатки для використання HTTP проксі 127.0.0.1:8118 або ж SOCKS4A або SOCKS5 проксі 127.0.0.1:9050</string>
-  <string name="menu_home">Домівка</string>
-  <string name="menu_browse">Перегляд</string>
-  <string name="menu_settings">Налаштування</string>
-  <string name="menu_log">Журнал</string>
-  <string name="menu_info">Довідка</string>
-  <string name="menu_start">Запустити</string>
-  <string name="menu_stop">Зупинити</string>
-  <string name="menu_about">Про програму</string>
-  <string name="main_layout_download">Завантажити</string>
-  <string name="main_layout_upload">Завантажити</string>
-  <string name="button_help">Довідка</string>
-  <string name="button_close">Закрити</string>
-  <string name="button_about">Про програму</string>
-  <string name="button_clear_log">Очистити журнал</string>
-  <string name="menu_verify">Перевірка</string>
-  <string name="menu_exit">Вихід</string>
-  <string name="menu_scan">Сканувати BridgeQR</string>
-  <string name="menu_share_bridge">Поділитися BridgeQR</string>
-  <string name="press_to_start">- довге натиснення для запуску -</string>
-  <string name="pref_trans_proxy_group">Прозорий проксі (Потрібен root)</string>
-  <string name="pref_trans_proxy_title">Прозорий проксі</string>
-  <string name="pref_trans_proxy_summary">Автоматична торифікація додатків</string>
-  <string name="pref_transparent_all_title">Направляти все через Tor</string>
-  <string name="pref_transparent_all_summary">Направляти трафік всіх додатків через Tor</string>
-  <string name="pref_transparent_port_fallback_title">Резервний проксі порт</string>
-  <string name="pref_transparent_port_fallback_summary">ПОПЕРЕДЖЕННЯ: Обходить загальні порти (80, 443, і т.д.). *ВИКОРИСТУВУВАТИ ТІЛЬКИ* якщо режими «Все» або «Додатки» не працюють.</string>
-  <string name="pref_transparent_port_title">Список Портів</string>
-  <string name="pref_transparent_port_summary">Список портів для проксифікації. *ВИКОРИСТОВУВАТИ ТІЛЬКИ* якщо режими «Все» або «Додатки» не працюють.</string>
-  <string name="pref_transparent_port_dialog">Введіть порти для проксифікації</string>
-  <string name="pref_has_root">Запитати root доступ</string>
-  <string name="pref_has_root_summary">Запитати root доступ для прозорої проксифікації</string>
-  <string name="status_install_success">Додаток Tor успішно встановленей!</string>
-  <string name="status_install_fail">Не вдалося встановити додаток Tor. Будь ласка, перевірте системний журнал і повідомте нам: tor-assistants at torproject.org</string>
-  <string name="title_error">Помилка додатку</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Про Orbot</string>
-  <string name="btn_next">Вперед</string>
-  <string name="btn_back">Назад</string>
-  <string name="btn_finish">Завершити</string>
-  <string name="btn_okay">OK</string>
-  <string name="btn_cancel">Відміна</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Деякі відомості про програму Orbot</string>
-  <string name="wizard_details_msg">Orbot — це програма з відкритим кодом, яка містить Tor, LibEvent та Polipo. Він надає локальний HTTP-проксі (8118) і SOCKS-проксі (9050) у мережу Tor. Orbot також дозволяє на пристроях з правами root пересилати весь інтернет-трафік через Tor.</string>
-  <string name="wizard_permissions_root">Дозвіл отримано</string>
-  <string name="wizard_permissions_stock">Дозволи Orbot</string>
-  <string name="wizard_premissions_msg_root">Чудово! Ми визначили, що ви надалили root права для Orbot. Ми будемо використовувати цю можливість з розумом.</string>
-  <string name="wizard_permissions_msg_stock"> Хоча це й не вимагається, Orbot може бути потужнішим інструментом, якщо ваш пристрій має права root. Натисніть на кнопку нижче і надайте Orbot суперсилу! </string>
-  <string name="wizard_permissions_no_root">Якщо у вас немає root прав або ви не розумієте про що говоримо, просто впевніться, що використовуєте додатки, розроблені для Orbot.</string>
-  <string name="wizard_permissions_consent">Я розумію і хочу продовжити без прав суперкористувача</string>
-  <string name="wizard_permission_enable_root">Надати root права Orbot</string>
-  <string name="wizard_configure">Налаштувати Tor-ифікацію</string>
-  <string name="wizard_configure_msg">Програма Orbot дає вам можливість маршрутизувати трафік всіх додатків через Tor АБО вибрати додатки для маршрутизації самостійно.</string>
-  <string name="wizard_configure_all">Маршрутизувати всі додатки через Tor</string>
-  <string name="wizard_configure_select_apps">Виберіть додатки для маршрутизації через Tor</string>
-  <string name="wizard_tips_tricks">Orbot-задіяні додатки</string>
-  <string name="wizard_tips_msg">Ми радимо вам завантажити і використовувати додатки, які вміють працювати напряму через Orbot. Натисніть на кнопки нижче, щоб запустити процес встановлення.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Захищений обмін повідомленнями в Android</string>
-  <string name="wizard_tips_proxy">Налаштування проксі — дізнайтесь як налаштувати додатки для роботи з Orbot</string>
-  <string name="wizard_tips_duckgo">Додаток пошукової системи DuckDuckGo</string>
-  <string name="wizard_tips_twitter">Twitter підтримує http проксі «localhost:8118»</string>
-  <string name="wizard_tips_story_maker">StoryMaker — Запишіть історію і залиште її Tor\'у для безпеки!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Налаштування Проксі</string>
-  <string name="wizard_proxy_help_msg">Якщо програмка для Android, яку Ви використовуєте, підтримує HTTP або SOCKS проксі, то Ви можете налаштувати її на під\'єднання до Orbot і використання Tor.\n\n\n Значення хоста — 127.0.0.1 або «localhost». Для HTTP, номер порту — 8118. Для SOCKS проксі — 9050. По можливості, використовуйте SOCKS4A або SOCKS5.\n \n\n\n Ви можете дізнатись більше про роботу через проксі на Android, прочитавши цей FAQ: http://tinyurl.com/proxyandroid\n</string>
-  <string name="wizard_final">Програма Orbot готова до використання!</string>
-  <string name="wizard_final_msg">Мільйони людей у всьому світі використовують Tor з різних причин.\n\nЖурналісти і блогери, активісти захисту прав людини, судові виконавці, солдати, корпорації, громадяни країн з репресивним режимом, і прості люди… а тепер готові і Ви!</string>
-  <string name="wizard_exit_at_first_screen_toast">Будь ласка, налаштуйте Orbot, перш ніж почнете ним користуватись!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="tor_check">Це призведе до запуску веб-браузера, вибраного на вашому пристрої за замовчуванням, і підключення до сайту https://check.torproject.org, з метою перевірки правильності роботи Orbot і визначення, чи під\'єднані ви до мережі Tor.</string>
-  <string name="pref_hs_group">Приховані сервіси</string>
-  <string name="pref_general_group">Основні</string>
-  <string name="pref_start_boot_title">Запуск Orbot при ввімкненні</string>
-  <string name="pref_start_boot_summary">Автоматичний запуск Orbot та з\'єднання Tor під час запуску вашого пристрою</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot дозволяє використовувати Tor на Android!\n\nTor дозволяє Вам захиститися від фільтрації вмісту, аналізу трафіку і спостереження за мережею, які ставлять під загрозу приватність, конфіденційну інформацію та особисті стосунки.\n\nЦей майстер допоможе Вам налаштувати Orbot і Tor на Вашому пристрої.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Попередження</string>
-  <string name="wizard_warning_msg">Просте встановлення Orbot не зробить автоматично Ваш мобільний трафік анонімним.\n\nВи повинні правильно налаштувати Orbot, Ваш пристрій та інші додатки, щоб успішно використовувати Tor.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Дозволи</string>
-  <string name="wizard_permissions_root_msg1">Ви також можете за бажанням надати Orbot права «Суперкористувача» для доступу до просунутих можливостей, типу \"Прозора Проксифікація\".</string>
-  <string name="wizard_permissions_root_msg2">Якщо ви не хочете робити це, тоді будь ласка, впевніться, що використовуєте додатки створені для роботи з Orbot.</string>
-  <string name="wizard_permissions_no_root_msg">Схоже, ваш пристрій не має root-прав або не надає доступу до «Суперкористувача».\n\nБудь ласка, спробуйте натомість режим «Додатки» на головному екрані.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Додатки, що працюють з Orbot:</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: додаток для спілкування з підтримкою Off-the-Record шифрування</string>
-  <string name="wizard_tips_play">Знайти всі додатки Guardian Project на Google Play</string>
-  <string name="wizard_tips_fdroid">Знайти всі додатки Guardian Project на F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Знайти всі додатки Guardian Project на https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Прозоре Проксування</string>
-  <string name="wizard_transproxy_msg">Це дозволить вашим додаткам автоматично працювати в мережі Tor без будь-якої конфігурації.</string>
-  <string name="wizard_transproxy_hint">(Позначте даний пункт, якщо ви не знаєте про що йде мова)</string>
-  <string name="wizard_transproxy_none">Ні</string>
-  <string name="pref_transparent_tethering_title">Роздача Tor</string>
-  <string name="pref_transparent_tethering_summary">Ввімкнути Прозору Проксифікацію Tor для пристроїв з роздачею по Wi-Fi і USB (потрібен перезапуск)</string>
-  <string name="button_grant_superuser">Запитати Доступ Суперкористувача</string>
-  <string name="pref_select_apps">Вибрані додатки</string>
-  <string name="pref_select_apps_summary">Вибрати додатки для направлення через Tor</string>
-  <string name="pref_node_configuration">Конфігурація вузла</string>
-  <string name="pref_node_configuration_summary">Це додаткові налаштування, які можуть знизити вашу анонімність</string>
-  <string name="pref_entrance_node">Вхідні вузли</string>
-  <string name="pref_entrance_node_summary">Відбитки, ніки, країни та адреси для першого стрибка</string>
-  <string name="pref_entrance_node_dialog">Введіть вхідні вузли</string>
-  <string name="button_proxy_all">Усі через проксі</string>
-  <string name="button_proxy_none">Жоден через проксі</string>
-  <string name="button_invert_selection">Інвертувати виділення</string>
-  <string name="pref_proxy_title">Вихідна проксі мережа</string>
-  <string name="pref_proxy_type_title">Тип Проксі</string>
-  <string name="pref_proxy_type_summary">Протокол для використання проксі-сервером: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Введіть Тип Проксі</string>
-  <string name="pref_proxy_host_title">Хост Проксі</string>
-  <string name="pref_proxy_host_summary">Ім\'я хоста проксі-сервера</string>
-  <string name="pref_proxy_host_dialog">Введіть Хост Проксі</string>
-  <string name="pref_proxy_port_title">Порт Проксі</string>
-  <string name="pref_proxy_port_summary">Порт проксі-сервера</string>
-  <string name="pref_proxy_port_dialog">Введіть порт Проксі</string>
-  <string name="pref_proxy_username_title">Ім\'я користувача для вихідного проксі-з\'єднання</string>
-  <string name="pref_proxy_username_summary">Ім\'я користувача для проксі-з\'єднання (вказувати не обов\'язково)</string>
-  <string name="pref_proxy_username_dialog">Введіть Ім\'я користувача проксі-з\'єднання</string>
-  <string name="pref_proxy_password_title">Пароль вихідного проксі-з\'єднання</string>
-  <string name="pref_proxy_password_summary">Пароль проксі-з\'єднання (вказувати не обов\'язково)</string>
-  <string name="pref_proxy_password_dialog">Введіть пароль проксі-з\'єднання</string>
-  <string name="status">Статус</string>
-  <string name="setting_up_full_transparent_proxying_">Встановлення загальної прозорої проксифікації...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Встановлення заснованої на додатках прозорої проксифікації...</string>
-  <string name="transparent_proxying_enabled">Прозора проксифікація ВВІМКНЕНА</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy підтримує Роздачу!</string>
-  <string name="warning_error_starting_transparent_proxying_">УВАГА: помилка запуску прозорої проксифікації!</string>
-  <string name="transproxy_rules_cleared">Правила TransProxy видалені</string>
-  <string name="couldn_t_start_tor_process_">Неможливо запустити Tor: </string>
-  <string name="privoxy_is_running_on_port_">Polipo працює на порті: </string>
-  <string name="setting_up_port_based_transparent_proxying_">Встановлення засноване на портах прозорої проксифікації...</string>
-  <string name="bridge_error">Помилка Мосту</string>
-  <string name="bridge_requires_ip">Для використання мосту, необхідно задати IP адресу як мінімум одного мосту.</string>
-  <string name="send_email_for_bridges">Відправте email на адресу bridges at torproject.org з рядком «get bridges» в тілі повідомлення із облікового запису gmail.</string>
-  <string name="error">Помилка</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Ваші налаштування Доступних Адрес викликали виключення!</string>
-  <string name="your_relay_settings_caused_an_exception_">Налаштування вашого ретранслятора викликали виключення!</string>
-  <string name="exit_nodes">Вихідні Вузли</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Відбитки, ніки, країни та адреси для останнього стрибка</string>
-  <string name="enter_exit_nodes">Введіть Вихідні Вузли</string>
-  <string name="exclude_nodes">Виключені Вузли</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Відбитки, ніки, країни та адреси на виключення</string>
-  <string name="enter_exclude_nodes">Введіть Виключені Вузли</string>
-  <string name="strict_nodes">Точні Вузли</string>
-  <string name="use_only_these_specified_nodes">Використовувати *тільки* ці задані вузли</string>
-  <string name="bridges">Мости</string>
-  <string name="use_bridges">Використрвувати Мости</string>
-  <string name="bridges_obfuscated">Обфусковані Мости</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Включити альтернативні вхідні вузли в мережу Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Задані мости обфусковані</string>
-  <string name="ip_address_and_port_of_bridges">IP адреси і порти мостів</string>
-  <string name="enter_bridge_addresses">Введіть Адреси Мостів</string>
-  <string name="relays">Ретранслятори</string>
-  <string name="relaying">Ретрансляція</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Дозволити вашому пристрою бути невихідним ретранслятором</string>
-  <string name="relay_port">Порт ретранслятора</string>
-  <string name="listening_port_for_your_tor_relay">Слухаючий порт для вашого ретранслятора Tor</string>
-  <string name="enter_or_port">Введіть порт OR</string>
-  <string name="relay_nickname">Ім\'я ретранслятора</string>
-  <string name="the_nickname_for_your_tor_relay">Ім\'я для вашого ретранслятора Tor</string>
-  <string name="enter_a_custom_relay_nickname">Введіть користувацьке ім\'я ретранслятора</string>
-  <string name="reachable_addresses">Доступні Адреси</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Запускати як клієнт за брандмауером з обмежуючими політиками</string>
-  <string name="reachable_ports">Доступні порти</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Порти доступні із обмежуваного брандмауера</string>
-  <string name="enter_ports">Введіть порти</string>
-  <string name="enable_hidden_services">Ввімкнути Приховані Служби</string>
-  <string name="run_servers_accessible_via_the_tor_network">запустити сервери доступні через мережу Tor</string>
-  <string name="enter_localhost_ports_for_hidden_services">введіть локальні порти для прихованих служб</string>
-  <string name="hidden_service_ports">Порти Прихованої Служби</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">адресоване ім\'я для вашої прихованої служби (сгенеровано автоматично)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">ввімкнути вивід логу налогодження (потрібно використовувати adb або aLogCat для перегляду)</string>
-  <string name="project_home">Домашня сторінка(и) проекту: </string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Ліцензія Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Програми сторонніх розробників: </string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="hidden_service_request">Додаток хоче відкрити прихований порт сервера %S мережі Tor. Це безпечно, якщо ви довіряєте цьому додатку.</string>
-  <string name="found_existing_tor_process">знайдено існуючий процес Tor...</string>
-  <string name="something_bad_happened">Виникла якась помилка. Перевірте лог</string>
-  <string name="hidden_service_on">прихована служба на:</string>
-  <string name="unable_to_read_hidden_service_name">неможливо прочитати ім\'я прихованої служби</string>
-  <string name="unable_to_start_tor">Неможливо запустити Tor:</string>
-  <string name="unable_to_reset_tor">Перезавантажте свій пристрій, не вдається перезапустити Tor!</string>
-  <string name="pref_use_sys_iptables_title">Використовувати Iptables за замовчуванням</string>
-  <string name="pref_use_sys_iptables_summary">використовувати вбудований бінарник iptables замість того що надається з Orbot</string>
-  <string name="error_installing_binares">Бінарні файли Tor не змогли встановитися або оновитися.</string>
-  <string name="pref_use_persistent_notifications">Завжди показувати іконку в панелі завдань коли Orbot підключений</string>
-  <string name="pref_use_persistent_notifications_title">Сповіщення про постійну роботу</string>
-  <string name="pref_use_expanded_notifications">Показати розширене сповіщення з країною виходу Tor та IP</string>
-  <string name="pref_use_expanded_notifications_title">Розширені сповіщення</string>
-  <string name="notification_using_bridges">Мости ввімкнуті!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Мова</string>
-  <string name="set_locale_summary">Вибрати локаль і мову для Orbot</string>
-  <string name="wizard_locale_title">Вибрати Мову</string>
-  <string name="wizard_locale_msg">Залишити за замовчуванням або переключити поточну мову</string>
-  <string name="powered_by">від Tor</string>
-  <string name="btn_save_settings">Зберегти Налаштування</string>
-  <string name="no_internet_connection_tor">Немає інтернет-з\'єднання; Tor в режимі очікування…</string>
-  <string name="bandwidth_">Канал:</string>
-  <string name="down">вх</string>
-  <string name="up">вих</string>
-  <string name="pref_disable_network_title">Не використовувати режим сну</string>
-  <string name="pref_disable_network_summary">Переводити в режим сну при відсутності інтернет-з\'єднання</string>
-  <string name="newnym">Ви перемкнулись на новий ідентифікатор Tor!</string>
-  <string name="menu_use_chatsecure">Використовувати ChatSecure</string>
-  <string name="permission_manage_tor_label">Керування Tor</string>
-  <string name="permission_manage_tor_description">Дозволити додатку керувати сервісом Tor</string>
-  <string name="install_apps_">Встановити додатки?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Немає доступу до мережі інтернет. Tor переходить в режим сну…</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Доступ до мережі хороший. Tor виходить з режиму сну…</string>
-  <string name="updating_settings_in_tor_service">оновлення налаштувань у сервісі Tor</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Порт, який Tor надає своєму SOCKS-проксі (за замовчуванням: 9050 або 0 для вимкнення)</string>
-  <string name="pref_socks_dialog">Налаштування порту SOCKS</string>
-  <string name="pref_transport_title">Порт Tor TransProxy</string>
-  <string name="pref_transport_summary">Порт, який Tor надає своєму відкритому проксі (за замовчуванням: 9040 або 0 для вимкнення)</string>
-  <string name="pref_transport_dialog">Налаштування порту Tor TransProxy</string>
-  <string name="pref_dnsport_title">Порт Tor DNS</string>
-  <string name="pref_dnsport_summary">Порт, який Tor надає своєму DNS (за замовчуванням: 5400 або 0 для вимкнення)</string>
-  <string name="pref_dnsport_dialog">Налаштування порту DNS</string>
-  <string name="pref_torrc_title">Додаткові налаштування Torrc</string>
-  <string name="pref_torrc_summary">ЛИШЕ ДЛЯ ЕКСПЕРТІВ: введіть безпосередні рядки налаштувань torrc</string>
-  <string name="pref_torrc_dialog">Додаткове у Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus — програма Benetech Human Rights Documentation </string>
-  <string name="your_tor_public_ips_">Ваші публічні Tor IP:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Будь ласка, вимкніть цей додаток у Android->Налаштування->Програми, якщо у Вас виникають проблеми з Orbot: </string>
-  <string name="app_conflict">Конфлікт програм</string>
-  <string name="pref_transproxy_refresh_title">Автоперезапуск Transproxy</string>
-  <string name="pref_transproxy_refresh_summary">Повторно застосувати правила Transproxy, коли зміниться стан мережі</string>
-  <string name="pref_transproxy_flush_title">ПРИМУСОВЕ ВИЛУЧЕННЯ Transproxy</string>
-  <string name="pref_transproxy_flush_summary">Натисніть тут, щоб зрівняти усі правила мережі transproxy ЗАРАЗ</string>
-  <string name="transparent_proxy_rules_flushed_">Правила прозорого проксі зрівняно!</string>
-  <string name="you_do_not_have_root_access_enabled">У Вас не ввімкнено ROOT-доступ</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Вам може бути потрібно зупинити і запустити Orbot, щоб зміни налаштувань вступили в дію.</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Мости оновлено</string>
-  <string name="restart_orbot_to_use_this_bridge_">Будь ласка, перезапустіть Orbot, щоб зміни ввійшли в силу</string>
-  <string name="menu_qr">QR-коди</string>
-  <string name="bridge_mode">Режим мосту</string>
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Веб</string>
-  <string name="activate">Активувати</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Ви можете увімкнути пропускання трафіку усіх програм на Вашому прострої через мережу Tor, скориставшись функцією VPN в Android.\n\n*УВАГА* Це нова, експериментальна функція і в деяких випадках може не запуститися автоматично або зупинитись. Її НЕ варто використовувати для анонімності і ЛИШЕ для обходу фаєрволів та фільтрів.</string>
-  <string name="send_email">Надіслати листа</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Ви можете отримати адресу мосту через електронну пошту, веб або відсканувавши QR-код мосту. Оберіть «Email» чи «Веб» унизу, щоб подати запит на адресу мосту.\n\nКоли у Вас буде адреса, скопіюйте і вставте її у розділі «Мости» налаштувань Orbot і перезапустіть його.</string>
-  <string name="standard_browser">Стандартний браузер</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">ПРИМІТКА: Лише стандартні мости Tor працюють на пристроях з Intel X86/Atom</string>
-</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
deleted file mode 100644
index e2b496b..0000000
--- a/res/values-ur/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="menu_browse">براؤز کیجیے</string>
-  <string name="menu_info">مدد</string>
-  <string name="button_help">مدد</string>
-  <string name="button_close">بند کیجیے</string>
-  <string name="btn_back">پیچھے</string>
-  <string name="btn_cancel">تنسیخ کیجیے</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <!--END Welcome Wizard strings (DJH)-->
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="default_bridges"></string>
-</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
deleted file mode 100644
index f722c7a..0000000
--- a/res/values-uz/strings.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="status_starting_up">Orbot ishga tushirilmoqda…</string>
-  <string name="status_activated">Tor tarmog\'iga ulangan</string>
-  <string name="menu_home">Uy</string>
-  <string name="menu_settings">Moslamalar</string>
-  <string name="menu_info">Yordam</string>
-  <string name="menu_about">Dastur haqida</string>
-  <string name="main_layout_download">Yuklab olish</string>
-  <string name="main_layout_upload">Yuklash</string>
-  <string name="button_help">Yordam</string>
-  <string name="button_close">Yopish</string>
-  <string name="button_about">Dasur haqida</string>
-  <string name="menu_verify">Tekshirish</string>
-  <string name="menu_exit">Chiqish</string>
-  <string name="title_error">Dastur xatosi</string>
-  <string name="wizard_title">Orbot</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proksi moslamalari</string>
-  <string name="wizard_final">Orbot tayyor!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">Umumiy</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <!--Permissions screen-->
-  <!--TipsAndTricks screen-->
-  <!--Transparent Proxy screen-->
-  <string name="pref_proxy_type_dialog">Proksi turini kiriting</string>
-  <string name="pref_proxy_password_summary">Proksi maxfiy so\'zi (Qo\'shimcha)</string>
-  <string name="pref_proxy_password_dialog">Proksi maxfiy so\'zini kiriting</string>
-  <string name="status">Holati</string>
-  <string name="error">Xato</string>
-  <string name="the_tor_license">Tor litsenziyasi</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="found_existing_tor_process">Mavjud bo\'lgan Tor jarayoni topildi...</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_summary">Orbot uchun lokal va tilni tanlash</string>
-  <string name="wizard_locale_title">Tilni tanlansh</string>
-  <string name="btn_save_settings">Moslamalarni saqlash</string>
-</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
deleted file mode 100644
index c56e82d..0000000
--- a/res/values-vi/strings.xml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot là một ứng dụng proxy miễn phí, được thiết kế để làm cho các ứng dụng khác kết nối với Internet một cách an toàn. Orbot sử dụng Tor để mã hóa các kết nối Internet rồi ẩn danh nó thông qua một loạt các nút trong mạng Tor. Tor là phần mềm miễn phí và là một mạng lưới mở giúp bạn chống lại sự giám sát mạng, vốn đe dọa riêng tư trực tuyến, hay các hoạt động bí mật...</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">khởi động và ngừng Tor</string>
-  <string name="tor_proxy_service_process">dịch vụ tor proxy</string>
-  <string name="status_starting_up">Ortbot đang khởi động...</string>
-  <string name="status_activated">Đã kết nối với mạng Tor</string>
-  <string name="status_disabled">Orbot đã được vô hiệu hóa</string>
-  <string name="status_shutting_down">Đang tắt dịch vụ Tor</string>
-  <string name="tor_process_starting">Bắt đầu Tor</string>
-  <string name="tor_process_complete">hoàn thành.</string>
-  <string name="tor_process_waiting">đang chờ.</string>
-  <string name="not_anonymous_yet">Chú ý: Kết nối của bạn chưa phải là ẩn danh! Hãy cài đặt các ứng dụng của bạn để sử dụng HTTP Proxy 127.0.0.1:8118, Proxy SOCKS4A hoặc proxy SOCKS5 127.0.0.1:9050</string>
-  <string name="menu_home">Trang chủ</string>
-  <string name="menu_browse">Trình duyệt</string>
-  <string name="menu_settings">Thiết lập</string>
-  <string name="menu_log">Nhật ký</string>
-  <string name="menu_info">Giúp đỡ</string>
-  <string name="menu_apps">Mạng riêng ảo</string>
-  <string name="menu_start">Bắt đầu</string>
-  <string name="menu_stop">Ngừng</string>
-  <string name="menu_about">Về</string>
-  <string name="menu_promo_apps">Các ứng dụng khác...</string>
-  <string name="main_layout_download">Tải về</string>
-  <string name="main_layout_upload">Tải lên</string>
-  <string name="button_help">Giúp đỡ</string>
-  <string name="button_close">Đóng</string>
-  <string name="button_about">Giới thiệu</string>
-  <string name="button_clear_log">Xóa nhật ký</string>
-  <string name="menu_verify">Kiểm tra</string>
-  <string name="menu_exit">Thoát</string>
-  <string name="menu_scan">Quét mã BridgeQR</string>
-  <string name="menu_share_bridge">Xuất mã BridgeQR</string>
-  <string name="press_to_start">- nhấn giữ để khởi động -</string>
-  <string name="pref_trans_proxy_group">Proxy trong suốt (Yêu cầu root)</string>
-  <string name="pref_trans_proxy_title">Proxy trong suốt</string>
-  <string name="pref_trans_proxy_summary">Tự động áp dụng Tor cho ứng dụng</string>
-  <string name="pref_transparent_all_title">Áp dụng Tor cho tất cả ứng dụng</string>
-  <string name="pref_transparent_all_summary">Chuyển tất cả các kết nối của các ứng dụng qua Tor</string>
-  <string name="pref_transparent_port_fallback_title">Cổng Proxy dự phòng</string>
-  <string name="pref_transparent_port_fallback_summary">CHÚ Ý: Tránh dùng các cổng thông dụng (80, 443, v.v...). *CHỈ* dùng nếu chế độ \"áp dụng Tor cho tất cả\" hoặc \"chọn ứng dụng\" không dùng được.</string>
-  <string name="pref_transparent_port_title">Danh sách cổng</string>
-  <string name="pref_transparent_port_summary">Liệt kê các cổng để áp dụng proxy. *CHỈ* dùng nếu chế độ \"áp dụng Tor cho tất cả\" hoặc \"chọn ứng dụng\" không dùng được.</string>
-  <string name="pref_transparent_port_dialog">Điền số cổng để áp dụng proxy</string>
-  <string name="pref_has_root">Yêu cầu root</string>
-  <string name="pref_has_root_summary">Yêu cầu root để kích hoạt proxy trong suốt</string>
-  <string name="status_install_success">Tập nhị phân của Tor đã được cài đặt!</string>
-  <string name="status_install_fail">Tập nhị phân của Tor bị lỗi khi cài đặt. Xin hãy kiểm tra nhật ký và thông báo cho tor-assistants at torproject.org</string>
-  <string name="title_error">Ứng dụng bị lỗi</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">Về Orbot</string>
-  <string name="btn_next">Tiếp</string>
-  <string name="btn_back">Trở về</string>
-  <string name="btn_finish">Kết thúc</string>
-  <string name="btn_okay">Đồng ý</string>
-  <string name="btn_cancel">Hủy</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Vài chi tiết về Orbot</string>
-  <string name="wizard_details_msg">Orbot là một ứng dụng mã nguồn mở có chứa Tor, LibEvent và Polipo. Nó cung cấp một proxy HTTP nội bộ (8118) và một proxy SOCKS (9050) tới mạng Tor. Orbot cũng có khả năng chuyển tất cả các kết nối Internet thông qua Tor trên các thiết bị đã root.</string>
-  <string name="wizard_permissions_root">Đã cho phép quyền</string>
-  <string name="wizard_permissions_stock">Quyền truy cập của Orbot</string>
-  <string name="wizard_premissions_msg_root">Tuyệt! Chúng tôi đã nhận ra máy bạn có root được kích hoạt cho Orbot. Chúng tôi sẽ tận dụng điều này.</string>
-  <string name="wizard_permissions_msg_stock">Mặc dù không cần thiết, nhưng Orbot có thể trở thành một công cụ mạnh mẽ hơn nếu thiết bị của bạn có root. Hãy ấn nút dưới đây để cho phép Orbot có \"siêu năng lực\"!</string>
-  <string name="wizard_permissions_no_root">Nếu bạn không root hoặc không rành về những gì chúng tôi trình bày, xin chỉ dùng những ứng dụng đã được tạo ra để dùng kết hợp với Orbot.</string>
-  <string name="wizard_permissions_consent">Tôi hiểu rõ và sẽ tiếp tục dùng mà không cần root</string>
-  <string name="wizard_permission_enable_root">Cho phép Orbot truy cập root</string>
-  <string name="wizard_configure">Cài đặt thông báo cho Tor</string>
-  <string name="wizard_configure_msg">Orbot cho phép chuyển tất cả các kết nối của các ứng dụng qua Tor HOẶC áp dụng cho từng ứng dụng riêng lẻ.</string>
-  <string name="wizard_configure_all">Áp dụng proxy Tor cho tất cả các ứng dụng</string>
-  <string name="wizard_configure_select_apps">Lựa chọn từng ứng dụng để áp dụng Tor</string>
-  <string name="wizard_tips_tricks">Các ứng dụng đã được áp dụng Tor</string>
-  <string name="wizard_tips_msg">Những ứng dụng sau đây đã được thiết lập để dùng với Orbot. Nhấn ứng dụng bất kỳ để cài đặt ngay bây giờ, hoặc bạn có thể tìm những ứng dụng này trên Google Play, tại trang GuardianProject.info hoặc qua F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Ứng dụng IM (tin nhắn tức thời) bảo mật cho Android</string>
-  <string name="wizard_tips_proxy">Cài đặt Proxy - Tìm hiểu cách thiết lập ứng dụng để dùng với Orbot</string>
-  <string name="wizard_tips_duckgo">Ứng dụng tìm kiếm DuckDuckGo</string>
-  <string name="wizard_tips_twitter">Cài proxy của Twitter với host là \"localhost\" và cổng là 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Viết một câu chuyện rồi để nó cho Tor để bảo mật!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Cài đặt proxy</string>
-  <string name="wizard_proxy_help_msg">Nếu ứng dụng Android mà bạn đang dùng hỗ trợ giao thức proxy HTTP hay SOCKS, thì bạn có thể cấu hình nó kết nối tới Orbot và sử dụng Tor.\n\n\n Cài đặt host mặc định là 127.0.0.1 hoặc \"localhost\". Với HTTP, cổng là 8118, còn SOCKS là 9050. Bạn nên dùng SOCKS4A hoặc SOCKS5 nếu có thể.\n \n\n\n Bạn có thể tìm hiểu thêm về cấu hình proxy trên Android qua mục FAQ tại: http://tinyurl.com/proxyandroid</string>
-  <string name="wizard_final">Orbot đã sẵn sàng!</string>
-  <string name="wizard_final_msg">Hàng trăm ngàn người trên toàn thế giới dùng Tor với nhiều lý do. Những nhà báo, blogger, các nhà hoạt động nhân quyền, an ninh, quân đội, tổ chức, công dân của những nước bị đang bị đàn áp, hoặc chỉ là những người dân bình thường... và bây giờ là bạn cũng đang chuẩn bị là một trong số họ!</string>
-  <string name="wizard_exit_at_first_screen_toast">Vui lòng thiết lập Orbot trước khi bạn sử dụng nó!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">Bạn đã kết nối thành công tới mạng Tor - nhưng điều đó KHÔNG có nghĩa là thiết bị của bạn đã hoàn toàn an toàn. Bạn có thể kiểm tra kết nối của bạn qua nút \"Trình duyệt\". \n\nTruy cập ttps://guardianproject.info/apps/orbot hoặc gửi email tới help at guardianproject.info để biết thêm chi tiết.</string>
-  <string name="tor_check">Sẽ mở trang web https://check.torproject.org để kiểm tra xem Orbot đã được cài đặt đúng chưa và bạn có đang kết nối qua Tor hay không.</string>
-  <string name="pref_hs_group">Dịch vụ web hosting ẩn</string>
-  <string name="pref_general_group">Tổng quát</string>
-  <string name="pref_start_boot_title">Chạy Orbot khi khởi động thiết bị</string>
-  <string name="pref_start_boot_summary">Tự khởi động Orbot và kết nối vào mạng Tor sau khi thiết bị Android của bạn khởi động</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot mang Tor đến Android! \n\nTor giúp bạn chống lại bộ lọc nội dung mạng, các hoạt động phân tích kết nối mạng và theo dõi mạng, vốn đe dọa tới sự riêng tư, các thông tin bí mật và các mối quan hệ cá nhân trên mạng. \n\nHướng dẫn này sẽ giúp bạn thiết lập Orbot và Tor trên thiết bị của bạn.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Cảnh báo</string>
-  <string name="wizard_warning_msg">Chỉ đơn thuần cài đặt Orbot sẽ không tự động ẩn danh các kết nối mạng di động của bạn.\n\nBạn bắt buộc phải thiết lập Orbot đúng cách, để thiết bị của bạn và các ứng dụng khác sử dụng Tor.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Quyền ứng dụng</string>
-  <string name="wizard_permissions_root_msg1">Bạn có thể tuỳ ý cho phép Orbot có truy cập root để kích hoạt những tính năng nâng cao, như dùng proxy trong suốt chẳng hạn.</string>
-  <string name="wizard_permissions_root_msg2">Nếu bạn không muốn làm điều này, xin hãy dùng những ứng dụng được tạo để dùng với Orbot.</string>
-  <string name="wizard_permissions_no_root_msg">Thiết bị của bạn hình như chưa root hoặc đã cấp quyền root hoặc truy cập root.\n\nVui lòng chọn chế độ \"VPN\" trên màn hình chính để thay thế.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Các ứng dụng đã được áp dụng Orbot</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: ứng dụng chat an toàn với mã hóa không-theo-dõi</string>
-  <string name="wizard_tips_orweb">Orfox: Trình duyệt với tính năng bảo mật nâng cao, hoạt động thông qua Tor</string>
-  <string name="wizard_tips_play">Tìm những ứng dụng của Guardian Project trên Google Play</string>
-  <string name="wizard_tips_fdroid">Tìm những ứng dụng của Guardian Project trên F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Tìm những ứng dụng của Guardian Project trên https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Proxy trong suốt</string>
-  <string name="wizard_transproxy_msg">Cài đặt này cho phép các ứng dụng của bạn tự động kết nối qua mạng Tor mà không cần thiết lập.</string>
-  <string name="wizard_transproxy_hint">(Hãy chọn ô này nếu bạn không hiểu những gì chúng tôi đang nói)</string>
-  <string name="wizard_transproxy_none">Không có</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Kích hoạt proxy Tor trong suốt để dùng cho WiFi/USB Tethering (cần khởi động lại)</string>
-  <string name="button_grant_superuser">Yều cầu truy cập root</string>
-  <string name="pref_select_apps">Chọn ứng dụng</string>
-  <string name="pref_select_apps_summary">Chọn những ứng dụng mà bạn muốn kết nối qua Tor</string>
-  <string name="pref_node_configuration">Cấu hình nút</string>
-  <string name="pref_node_configuration_summary">Những cài đặt nâng cao này có thể giảm sự ẩn danh của bạn</string>
-  <string name="pref_entrance_node">Nút vào (Entrace Nodes)</string>
-  <string name="pref_entrance_node_summary">Dấu theo dõi (Fingerprint), biệt hiệu, quốc gia và địa chỉ cho nút đầu tiên</string>
-  <string name="pref_entrance_node_dialog">Nhập thông tin nút vào</string>
-  <string name="pref_allow_background_starts_title">Cho phép khởi động ngầm</string>
-  <string name="pref_allow_background_starts_summary">Cho phép ứng dụng bất kỳ yêu cầu Orbot khởi động Tor và các dịch vụ liên quan</string>
-  <string name="button_proxy_all">Proxy tất cả</string>
-  <string name="button_proxy_none">Không dùng proxy</string>
-  <string name="button_invert_selection">Đảo ngược lựa chọn</string>
-  <string name="pref_proxy_title">Proxy mạng ngõ ra (Outbound Network) (Tùy chọn)</string>
-  <string name="pref_proxy_type_title">Loại proxy ngõ ra</string>
-  <string name="pref_proxy_type_summary">Giao thức dùng cho proxy: HTTP, HTTPS, SOCKS4, SOCKS5</string>
-  <string name="pref_proxy_type_dialog">Nhập loại proxy</string>
-  <string name="pref_proxy_host_title">Host proxy ngõ ra</string>
-  <string name="pref_proxy_host_summary">Hostname của proxy</string>
-  <string name="pref_proxy_host_dialog">Nhập host của proxy</string>
-  <string name="pref_proxy_port_title">Cổng Proxy ngõ ra</string>
-  <string name="pref_proxy_port_summary">Cổng của proxy</string>
-  <string name="pref_proxy_port_dialog">Nhập cổng Proxy</string>
-  <string name="pref_proxy_username_title">Tên tài khoản proxy ngõ ra</string>
-  <string name="pref_proxy_username_summary">Tên tài khoản proxy (tùy chọn)</string>
-  <string name="pref_proxy_username_dialog">Nhập tên tài khoản proxy</string>
-  <string name="pref_proxy_password_title">Mật khẩu Proxy ngõ ra</string>
-  <string name="pref_proxy_password_summary">Mật khẩu proxy (tùy chọn)</string>
-  <string name="pref_proxy_password_dialog">Nhập mật khẩu proxy</string>
-  <string name="status">Tình trạng</string>
-  <string name="setting_up_full_transparent_proxying_">Đang cấu hình proxy trong suốt cho tất cả...</string>
-  <string name="setting_up_app_based_transparent_proxying_">Đang cấu hình proxy trong suốt cho các ứng dụng được chọn...</string>
-  <string name="transparent_proxying_enabled">Proxy trong suốt ĐƯỢC KÍCH HOẠT</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy đã được kích hoạt để dùng cho tethering!</string>
-  <string name="warning_error_starting_transparent_proxying_">CHÚ Ý: có lỗi khi khởi động proxy trong suốt!</string>
-  <string name="transproxy_rules_cleared">Quy tắc TransProxy đã được xóa</string>
-  <string name="couldn_t_start_tor_process_">Không thể khởi động tiến trình Tor:</string>
-  <string name="privoxy_is_running_on_port_">Polipo đang chạy ở cổng:</string>
-  <string name="setting_up_port_based_transparent_proxying_">Đang cài đặt proxy trong suốt theo cổng</string>
-  <string name="bridge_error">Lỗi bridge</string>
-  <string name="bridge_requires_ip">Để dùng chức năng bridge, bạn phải nhập ít nhất một địa chỉ IP dùng cho bridge.</string>
-  <string name="send_email_for_bridges">Gửi một email đến bridges at torproject.org với dòng chữ \"get bridges\" trong thư từ một tài khoản gmail.</string>
-  <string name="error">Lỗi</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Thiết lập ReachableAddresses đã gây ra một vấn đề! </string>
-  <string name="your_relay_settings_caused_an_exception_">Thiết lập relay của bạn đã gây ra một vấn đề!</string>
-  <string name="exit_nodes">Nút cuối (Exit Nodes)</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Dấu theo dõi, biệt hiệu, quốc gia và địa chỉ cho nút cuối cùng</string>
-  <string name="enter_exit_nodes">Nhập thông tin nút cuối</string>
-  <string name="exclude_nodes">Loại trừ nút</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Dấu theo dõi, biệt hiệu, quốc gia và địa chỉ để loại trừ</string>
-  <string name="enter_exclude_nodes">Nhập vào những nút để loại trừ</string>
-  <string name="strict_nodes">Nút chỉ định</string>
-  <string name="use_only_these_specified_nodes">*Chỉ* dùng những nút được liệt kê</string>
-  <string name="bridges">Bridge</string>
-  <string name="use_bridges">Dùng bridge</string>
-  <string name="bridges_obfuscated">Các bridge được che giấu</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Kích hoạt các nút vào khác để vào mạng Tor</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Kích hoạt nếu như các bridge đã được cấu hình là bridge đã được che giấu</string>
-  <string name="ip_address_and_port_of_bridges">Địa chỉ IP và cổng của bridge</string>
-  <string name="enter_bridge_addresses">Nhập địa chỉ bridge</string>
-  <string name="relays">Relay</string>
-  <string name="relaying">Chức năng relay</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Cho phép thiết bị bạn trở thành một nút relay (không phải nút cuối)</string>
-  <string name="relay_port">Cổng cho relay</string>
-  <string name="listening_port_for_your_tor_relay">Cổng tiếp nhận cho việc relay</string>
-  <string name="enter_or_port">Nhập cổng OR</string>
-  <string name="relay_nickname">Biệt hiệu nút relay</string>
-  <string name="the_nickname_for_your_tor_relay">Biệt hiệu cho nút Tor-relay của bạn</string>
-  <string name="enter_a_custom_relay_nickname">Nhập biệt hiệu tuỳ ý</string>
-  <string name="reachable_addresses">Địa chỉ truy cập được (Reachable Addresses)</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Chạy như một máy con (client) đằng sau tường lửa với các thiết lập thu hẹp</string>
-  <string name="reachable_ports">Cổng truy cập được</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Cổng truy cập được đằng sau tường lửa</string>
-  <string name="enter_ports">Nhập số cổng</string>
-  <string name="enable_hidden_services">Host web ẩn</string>
-  <string name="run_servers_accessible_via_the_tor_network">Cho phép máy chủ được thiết lập trong thiết bị của bạn có thể truy cập được qua mạng Tor.</string>
-  <string name="enter_localhost_ports_for_hidden_services">Nhập cổng localhost cho web ẩn</string>
-  <string name="hidden_service_ports">Cổng web ẩn</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">Địa chỉ hợp lệ cho web ẩn của bạn (được tự động tạo ra)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Kích hoạt nhật ký gỡ lỗi ở đầu ra (phải dùng adb hoặc aLogCat để xem)</string>
-  <string name="project_home">Các trang chủ dự án:</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Giấy phép của Tor</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">Phần mềm bên thứ 3:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">Một ứng dụng muốn mở cổng ẩn %S đến mạng Tor. Đây là điều an toàn nếu như bạn tin tưởng vào ứng dụng này.</string>
-  <string name="found_existing_tor_process">tìm ra tiến trình hiện hành của Tor...</string>
-  <string name="something_bad_happened">Có gì đó không ổn. Xin xem lại nhật ký</string>
-  <string name="hidden_service_on">web ẩn trong:</string>
-  <string name="unable_to_read_hidden_service_name">không thể đọc được tên dịch vụ ẩn</string>
-  <string name="unable_to_start_tor">Không thể khởi động Tor được: </string>
-  <string name="unable_to_reset_tor">Khởi động lại thiết bị của bạn, không thể thiết đặt lại Tor!</string>
-  <string name="pref_use_sys_iptables_title">Dùng Iptables mặc định</string>
-  <string name="pref_use_sys_iptables_summary">dùng tập nhị phân iptables của hệ thống thay vì dùng tập nhị phân được  đi kèm với Orbot</string>
-  <string name="error_installing_binares">Tập nhị phân của Tor không thể cài hoặc nâng cấp được.</string>
-  <string name="pref_use_persistent_notifications">Luôn giữ thông báo trong thanh trạng thái khi Orbot được kết nối</string>
-  <string name="pref_use_persistent_notifications_title">Thông báo thường trực</string>
-  <string name="pref_use_expanded_notifications">Hiển thị thông báo mở rộng với IP và quốc gia của nút cuối (Tor exit-node)</string>
-  <string name="pref_use_expanded_notifications_title">Thông báo mở rộng</string>
-  <string name="notification_using_bridges">Bridge đã được kích hoạt!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">Ngôn ngữ</string>
-  <string name="set_locale_summary">Chọn ngôn ngữ cho Orbot</string>
-  <string name="wizard_locale_title">Chọn ngôn ngữ</string>
-  <string name="wizard_locale_msg">Giữ cài đặt mặc định hoặc chuyển qua ngôn ngữ khác</string>
-  <string name="powered_by">được hỗ trợ bởi Tor</string>
-  <string name="btn_save_settings">Lưu thiết lập</string>
-  <string name="no_internet_connection_tor">Không có kết nối Internet; Tor đang ở chế độ chờ...</string>
-  <string name="bandwidth_">Băng thông:</string>
-  <string name="down">tải xuống</string>
-  <string name="up">tải lên</string>
-  <string name="pref_disable_network_title">Tự động \"ngủ\" khi không có mạng</string>
-  <string name="pref_disable_network_summary">Chuyển Tor sang chế độ ngủ nếu không có Internet</string>
-  <string name="newnym">Bạn đã chuyển sang một mạch Tor mới!</string>
-  <string name="menu_verify_browser">Trình duyệt</string>
-  <string name="menu_use_chatsecure">Dùng ChatSecure</string>
-  <string name="permission_manage_tor_label">Quản lý Tor</string>
-  <string name="permission_manage_tor_description">Cho phép ứng dụng này điều khiển dịch vụ Tor</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Có vẻ như bạn chưa cài Orfox. Bạn có cần giúp không, hay chỉ cần mở trình duyệt thường thôi?</string>
-  <string name="install_apps_">Cài đặt ứng dụng?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">Không có mạng. Đang chuyển Tor sang chế độ ngủ...</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">Kết nối mạng tốt. Đang \"đánh thức\" Tor...</string>
-  <string name="updating_settings_in_tor_service">đang cập nhật cài đặt dịch vụ Tor</string>
-  <string name="pref_socks_title">Cổng SOCKS</string>
-  <string name="pref_socks_summary">Cổng để Tor đặt proxy SOCKS lên (mặc định: 9050 hoặc 0 để vô hiệu hóa)</string>
-  <string name="pref_socks_dialog">Cấu hình cổng SOCKS</string>
-  <string name="pref_transport_title">Cổng proxy trong suốt của Tor</string>
-  <string name="pref_transport_summary">Cổng để Tor đặt proxy trong suốt lên (mặc định: 9040 hoặc 0 để vô hiệu hóa)</string>
-  <string name="pref_transport_dialog">Cấu hình cổng proxy trong suốt</string>
-  <string name="pref_dnsport_title">Cổng DNS Tor</string>
-  <string name="pref_dnsport_summary">Cổng để Tor đặt DNS của nó lên (mặc định: 5400 hoặc 0 để vô hiệu hóa)</string>
-  <string name="pref_dnsport_dialog">Cấu hình cổng DNS</string>
-  <string name="pref_torrc_title">Cấu hình tùy chỉnh cho Torrc</string>
-  <string name="pref_torrc_summary">CHỈ NGƯỜI DÙNG CHUYÊN MÔN: nhập các thiết lập trực tiếp cho torrc</string>
-  <string name="pref_torrc_dialog">Torrc tùy chỉnh</string>
-  <string name="wizard_tips_martus">Mobile Martus - Ứng dụng cung cấp các tài liệu về nhân quyền của Benetech</string>
-  <string name="your_tor_public_ips_">Các IP Tor công cộng của bạn là:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">Vui lòng vô hiệu hóa ứng dụng này trong Android->Settings->Apps nếu bạn đang gặp vấn đề với Orbot:</string>
-  <string name="app_conflict">Xung đột ứng dụng</string>
-  <string name="pref_transproxy_refresh_title">Tự động làm mới proxy trong suốt</string>
-  <string name="pref_transproxy_refresh_summary">Áp dụng lại các quy tắc proxy trong suốt khi trạng thái mạng thay đổi</string>
-  <string name="pref_transproxy_flush_title">ÉP BUỘC XÓA các quy tắc proxy trong suốt</string>
-  <string name="pref_transproxy_flush_summary">Chạm vào đây để xóa sạch các quy tắc proxy trong suốt NGAY BÂY GIỜ</string>
-  <string name="transparent_proxy_rules_flushed_">Quy tắc proxy trong suốt đã được xóa!</string>
-  <string name="you_do_not_have_root_access_enabled">Bạn không có quyền truy cập ROOT</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">Bạn có thể cần kết nối lại Orbot để các thay đổi được áp dụng</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">Bridge được cập nhật</string>
-  <string name="restart_orbot_to_use_this_bridge_">Vui lòng khởi động lại Orbot để áp dụng thay đổi</string>
-  <string name="menu_qr">Mã QR</string>
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Nếu như mạng di động của bạn chặn Tor, bạn có thể dùng bridge (cầu nối) để truy cập mạng Tor. CHỌN một trong những bridge ở trên để kích hoạt bridge.</string>
-  <string name="bridge_mode">Chế độ bridge</string>
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Web</string>
-  <string name="activate">Kích hoạt</string>
-  <string name="apps_mode">Chế độ ứng dụng VPN</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">Bạn có thể làm cho tất cả ứng dụng của bạn kết nối qua mạng Tor bằng cách sử dụng tính năng VPN (Mạng riêng ảo) của Android.\n\n*CHÚ Ý* Đây là một tính năng mới, đang thử nghiệm và nó có thể không tự động chạy, hoặc có thể dừng lại đột ngột. Nó KHÔNG nên được dùng cho ẩn danh, và chỉ nên dùng để vượt qua các tường lửa và bộ lọc.</string>
-  <string name="send_email">Gửi email</string>
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">Bạn có thể lấy một địa chỉ bridge qua email, web hoặc quét mã QR. Chọn \"Email\" hoặc \"Web\" bên dưới để yêu cầu một địa chỉ bridge.\n\nMột khi đã có địa chỉ, hãy sao chép nó vào thiết đặt \"Bridge\" trong cài đặt Orbot rồi khởi động lại phần mềm.</string>
-  <string name="install_orweb">Cài đặt Orfox</string>
-  <string name="standard_browser">Trình duyệt thường</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">LƯU Ý: Chỉ có bridge Tor chuẩn mới hoạt động trên các thiết bị Intel x86/Atom</string>
-  <string name="vpn_default_world">Toàn cầu</string>
-</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
deleted file mode 100644
index fdfe180..0000000
--- a/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,298 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot 是一款免费的代理应用,能够让其他应用更安全地使用互联网。通过在位于世界各地的一系列计算机之间进行跳转,Orbot 可利用 Tor 对网络通信进行加密并隐藏。Tor 是一款免费的软件,并且是一个开放的网络。它可以保护用户免受流量分析的危害,这种网络监控可对个人自由与隐私、商业机密活动和关系以及国家安全造成威胁。</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">启动和停止 Tor</string>
-  <string name="tor_proxy_service_process">Tor 代理服务</string>
-  <string name="status_starting_up">Orbot 正在启动...</string>
-  <string name="status_activated">已连接到 Tor 网络</string>
-  <string name="status_disabled">Orbot 已停用</string>
-  <string name="status_shutting_down">Tor服务 正在关闭</string>
-  <string name="tor_process_starting">正在启动 Tor 客户端...</string>
-  <string name="tor_process_complete">完成。</string>
-  <string name="tor_process_waiting">等待。</string>
-  <string name="not_anonymous_yet">警告:你的网络通讯并非匿名!请设置应用程序,使用 HTTP 代理 127.0.0.1:8118 或者 SOCKS4A、SOCKS5 代理 127.0.0.1:9050</string>
-  <string name="menu_home">首页</string>
-  <string name="menu_browse">浏览</string>
-  <string name="menu_settings">设置</string>
-  <string name="menu_log">日志</string>
-  <string name="menu_info">帮助</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">启动</string>
-  <string name="menu_stop">停止</string>
-  <string name="menu_about">关于</string>
-  <string name="menu_promo_apps">获取应用…</string>
-  <string name="main_layout_download">下载</string>
-  <string name="main_layout_upload">上传</string>
-  <string name="button_help">帮助</string>
-  <string name="button_close">关闭</string>
-  <string name="button_about">关于</string>
-  <string name="button_clear_log">清除日志</string>
-  <string name="menu_verify">检查</string>
-  <string name="menu_exit">退出</string>
-  <string name="menu_scan">扫描网桥QR码</string>
-  <string name="menu_share_bridge">分享网桥QR码</string>
-  <string name="press_to_start">- 长按启动 -</string>
-  <string name="pref_trans_proxy_group">透明代理(需要 Root 权限)</string>
-  <string name="pref_trans_proxy_title">透明代理</string>
-  <string name="pref_trans_proxy_summary">应用程序自动使用 Tor</string>
-  <string name="pref_transparent_all_title">所有应用程序使用 Tor</string>
-  <string name="pref_transparent_all_summary">所有应用程序都通过 Tor 连接网络</string>
-  <string name="pref_transparent_port_fallback_title">备用代理端口</string>
-  <string name="pref_transparent_port_fallback_summary">警告:避免使用常用端口(80、443 等)。仅在“应用程序”或“应用程序”模式无法工作时使用。</string>
-  <string name="pref_transparent_port_title">端口列表</string>
-  <string name="pref_transparent_port_summary">代理端口列表。仅在“应用程序”或“应用程序”模式无法工作时使用。</string>
-  <string name="pref_transparent_port_dialog">输入代理端口</string>
-  <string name="pref_has_root">请求 Root 访问权限</string>
-  <string name="pref_has_root_summary">为透明代理请求获取 Root 访问权限</string>
-  <string name="status_install_success">Tor 程序安装成功!</string>
-  <string name="status_install_fail">Tor 程序无法安装。请查看日志并将其发送到 tor-assistants at torproject.org</string>
-  <string name="title_error">应用程序错误</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">关于 Orbot</string>
-  <string name="btn_next">下一步</string>
-  <string name="btn_back">上一步</string>
-  <string name="btn_finish">完成</string>
-  <string name="btn_okay">确定</string>
-  <string name="btn_cancel">取消</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">更多 Orbot 信息</string>
-  <string name="wizard_details_msg">Orbot 是一个包含 Tor、LibEvent 和 Polipo 的开源应用程序。它提供了一个本地 HTTP 代理 (8118) 和一个 SOCKS 代理 (9050) 前往 Tor 网络。Orbot 也有能力在 root 过的设备上将所有互联网流量通过 Tor 发送。</string>
-  <string name="wizard_permissions_root">已获取权限</string>
-  <string name="wizard_permissions_stock">Orbot 权限</string>
-  <string name="wizard_premissions_msg_root">好极了!我们检测到 Orbot 已获取 Root 权限 。我们会谨慎地使用这一权限。</string>
-  <string name="wizard_permissions_msg_stock">虽非必须,但是具有 Root 访问权限的设备可以让 Orbot 变得更强大。请使用下面的按钮授予 Orbot 这一强大的能力!</string>
-  <string name="wizard_permissions_no_root">如果没有 Root 访问权限或不明白此处所说的内容,只需确保 Orbot 支持所用的应用即可。</string>
-  <string name="wizard_permissions_consent">我明白并愿意在未获取 Root 权限的情况下继续操作</string>
-  <string name="wizard_permission_enable_root">为 Orbot 获取 Root 权限</string>
-  <string name="wizard_configure">配置 Tor 网络</string>
-  <string name="wizard_configure_msg">Orbot 提供了选项,可指定所有应用程序使用 Tor 网络或指定某些应用通过 Tor 网络进行通讯。</string>
-  <string name="wizard_configure_all">所有应用程序都使用 Tor</string>
-  <string name="wizard_configure_select_apps">选择使用 Tor 的应用程序</string>
-  <string name="wizard_tips_tricks">Orbot 支持的应用</string>
-  <string name="wizard_tips_msg">以下应用可与 Orbot 一起使用。点击下面的按钮安装,也可以通过 Google Play 商店、GuardianProject.info 网站或 F-Droid.org 查找。</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Android 上的安全即时通讯客户端</string>
-  <string name="wizard_tips_proxy">代理设置 - 学习如何配置应用程序使用 Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo 搜索引擎应用程序</string>
-  <string name="wizard_tips_twitter">将 Twitter 代理的主机设置 localhost 并将端口设置为 8118</string>
-  <string name="wizard_tips_story_maker">故事制造者--乱说些什么,并用Tor保证您的安全!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">代理设置</string>
-  <string name="wizard_proxy_help_msg">如果 Android 应用程序支持 HTTP 或 SOCKS 代理,那么您可对它进行配置来连接到 Orbot 并使用 Tor 网络。 主机设置为 127.0.0.1 或 localhost。对于 HTTP,端口设置为 8118;对于 SOCKS,端口设置为 9050。如果可以,请尽量使用 SOCKS4A 或 SOCKS5 代理。 更多有关 Android 代理信息,请参阅 http://tinyurl.com/proxyandroid 中的常见问题</string>
-  <string name="wizard_final">Orbot 已就绪!</string>
-  <string name="wizard_final_msg">全球数以万计的人正在使用Tor,他们中有媒体记者,博客家,人权主义者,改革宣扬者,军官,公司职工,以及同您一样的普通市民!现在,您也准备好了!</string>
-  <string name="wizard_exit_at_first_screen_toast">请在您开始使用它前配置 Orbot!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">您已经成功连接到Tor网络,但不代表您的设备是安全的。您可以使用“浏览器”按钮测试您的连接。
-
-访问https://guardianproject.info/apps/orbot 或发送邮件至help at guardianproject.info 来了解更多。</string>
-  <string name="tor_check">浏览器将启动并访问:https://check.torproject.org,以便检查 Orbot 配置是否正确以及是否可连接 Tor 网络。</string>
-  <string name="pref_hs_group">隐藏服务主机</string>
-  <string name="pref_general_group">常规</string>
-  <string name="pref_start_boot_title">开机时启动 Orbot</string>
-  <string name="pref_start_boot_summary">Android 设备开机时自动启动 Orbot 并连接 Tor 网络</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot使Android支持Tor网络!
-Tor帮助你避开那些威胁到你的隐私,重要信息和社交关系的内容过滤,流量分析以及网络审查。
-这个向导将帮助你配置Orbot在你设备商以便访问Tor。</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">警告</string>
-  <string name="wizard_warning_msg">简单的安装完Orbot并不能自动的匿名你的移动流量。
-你必须适当的配置Orbot,以及你的设备及应用以成功匿名使用Tor。</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">权限</string>
-  <string name="wizard_permissions_root_msg1">可选择授予 Orbot “Superuser”访问权限,以便启用高级功能,例如透明代理。</string>
-  <string name="wizard_permissions_root_msg2">如果不愿授予 Orbot 该权限,请确保应用程序可使用 Orbot。</string>
-  <string name="wizard_permissions_no_root_msg">您的设备似乎尚未 root,或者未提供 root 或“超级用户”的访问权限。\n\n请改为尝试主屏幕的“应用”模式。</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">使用 Orbot 的应用程序</string>
-  <string name="wizard_tips_gibberbot">ChatSecure:具有 OTF 加密共的安全通讯应用</string>
-  <string name="wizard_tips_orweb">Orfox:隐私增强浏览器采用 Tor 工作</string>
-  <string name="wizard_tips_play">在 Google Play 商店查找所有 Guardian Project 的应用程序</string>
-  <string name="wizard_tips_fdroid">在 F-Droid 查找所有 Guardian Project 的应用程序</string>
-  <string name="wizard_tips_fdroid_org">在 https://f-droid.org 查找所有 Guardian Project 的应用程序</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">透明代理</string>
-  <string name="wizard_transproxy_msg">可使应用程序无需配置即可自动通过 Tor 连接网络。</string>
-  <string name="wizard_transproxy_hint">(如果不明白这里所说的问题,请选择该选项)</string>
-  <string name="wizard_transproxy_none">无</string>
-  <string name="pref_transparent_tethering_title">Tor 网络共享</string>
-  <string name="pref_transparent_tethering_summary">对 Wifi 和 USB 网络共享设备启用透明代理(需重新启动)</string>
-  <string name="button_grant_superuser">请求 Superuser 访问权限</string>
-  <string name="pref_select_apps">选择应用程序</string>
-  <string name="pref_select_apps_summary">选择通过 Tor 连接网络的应用程序</string>
-  <string name="pref_node_configuration">节点配置</string>
-  <string name="pref_node_configuration_summary">这些高级设置可降低你的匿名度</string>
-  <string name="pref_entrance_node">入口节点</string>
-  <string name="pref_entrance_node_summary">用于首次跳转的密钥指纹、昵称、国家与地址</string>
-  <string name="pref_entrance_node_dialog">输入入口节点</string>
-  <string name="pref_allow_background_starts_title">允许后台启动</string>
-  <string name="pref_allow_background_starts_summary">允许任何应用告知 Orbot 启动 Tor 及相关服务</string>
-  <string name="button_proxy_all">全部代理</string>
-  <string name="button_proxy_none">全不代理</string>
-  <string name="button_invert_selection">反选</string>
-  <string name="pref_proxy_title">出站网络代理(可选)</string>
-  <string name="pref_proxy_type_title">出站代理类型</string>
-  <string name="pref_proxy_type_summary">代理服务器使用的协议:HTTP、HTTPS、Socks4、Socks5</string>
-  <string name="pref_proxy_type_dialog">输入代理类型</string>
-  <string name="pref_proxy_host_title">出站代理主机</string>
-  <string name="pref_proxy_host_summary">代理服务器主机名</string>
-  <string name="pref_proxy_host_dialog">输入代理主机</string>
-  <string name="pref_proxy_port_title">出站代理端口</string>
-  <string name="pref_proxy_port_summary">代理服务器端口</string>
-  <string name="pref_proxy_port_dialog">输入代理端口</string>
-  <string name="pref_proxy_username_title">出站代理用户名</string>
-  <string name="pref_proxy_username_summary">代理用户名(可选)</string>
-  <string name="pref_proxy_username_dialog">请输入代理用户名</string>
-  <string name="pref_proxy_password_title">出站代理密码</string>
-  <string name="pref_proxy_password_summary">代理密码(可选)</string>
-  <string name="pref_proxy_password_dialog">请输入代理密码</string>
-  <string name="status">状态</string>
-  <string name="setting_up_full_transparent_proxying_">正在对所有应用程序进行透明代理设置...</string>
-  <string name="setting_up_app_based_transparent_proxying_">正在对所选应用程序进行透明代理设置...</string>
-  <string name="transparent_proxying_enabled">透明代理已启用</string>
-  <string name="transproxy_enabled_for_tethering_">已为网络共享激活 TransProxy !</string>
-  <string name="warning_error_starting_transparent_proxying_">警告:启动透明代理时发生错误!</string>
-  <string name="transproxy_rules_cleared">已清除 TransProxy 规则</string>
-  <string name="couldn_t_start_tor_process_">无法启动 Tor 进程:</string>
-  <string name="privoxy_is_running_on_port_">Polipo 正运行在端口:</string>
-  <string name="setting_up_port_based_transparent_proxying_">正在对基于端口的透明代理进行设置...</string>
-  <string name="bridge_error">网桥错误</string>
-  <string name="bridge_requires_ip">为了需使用网桥,必须至少输入一个网桥 IP 地址。</string>
-  <string name="send_email_for_bridges">如需获取网桥地址,请使用 gmail 发送电子邮件至 bridges at torproject.org 并在正文内填上“ get bridges”。</string>
-  <string name="error">错误</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">可访问地址设置导致异常!</string>
-  <string name="your_relay_settings_caused_an_exception_">中继设置导致异常!</string>
-  <string name="exit_nodes">出口节点</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">最后跳转的密钥指纹、昵称、国家与地址</string>
-  <string name="enter_exit_nodes">输入出口节点</string>
-  <string name="exclude_nodes">排除节点</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">排除的密钥指纹、昵称、国家与地址</string>
-  <string name="enter_exclude_nodes">输入排除节点</string>
-  <string name="strict_nodes">限制节点</string>
-  <string name="use_only_these_specified_nodes">仅使用这些指定节点</string>
-  <string name="bridges">网桥</string>
-  <string name="use_bridges">使用网桥</string>
-  <string name="bridges_obfuscated">混淆网桥</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">使用其他入口节点连接到 Tor 网络</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">已配置的网桥为混淆网桥时启用</string>
-  <string name="ip_address_and_port_of_bridges">网桥的 IP 地址和端口</string>
-  <string name="enter_bridge_addresses">输入网桥地址</string>
-  <string name="relays">中继</string>
-  <string name="relaying">中继转发</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">仅设置被设置为非出口中继</string>
-  <string name="relay_port">中继端口</string>
-  <string name="listening_port_for_your_tor_relay">Tor 中继的侦听端口</string>
-  <string name="enter_or_port">输入 OR 端口</string>
-  <string name="relay_nickname">中继昵称</string>
-  <string name="the_nickname_for_your_tor_relay">Tor 中继昵称</string>
-  <string name="enter_a_custom_relay_nickname">输入自定义中继昵称</string>
-  <string name="reachable_addresses">可访问地址</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">在具有限制策略防火墙内,作为客户端运行</string>
-  <string name="reachable_ports">可访问端口</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">防火墙限定的可访问端口</string>
-  <string name="enter_ports">输入端口</string>
-  <string name="enable_hidden_services">隐藏服务主机</string>
-  <string name="run_servers_accessible_via_the_tor_network">允许设备上的服务器可通过 Tor 网络访问</string>
-  <string name="enter_localhost_ports_for_hidden_services">输入隐藏服务的本地主机端口</string>
-  <string name="hidden_service_ports">隐藏服务端口</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">隐藏服务的地址(自动生成)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">启用调试日志输出(必须使用 adb 或 aLongCat 查看)</string>
-  <string name="project_home">项目主页(s):</string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">Tor 许可证</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">第三方软件:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">应用程序试图打开隐藏服务主机端口 %S 连接 Tor 网络。对于可信应用这是安全的。</string>
-  <string name="found_existing_tor_process">发现当前已存在 Tor 进程...</string>
-  <string name="something_bad_happened">发生错误,请检查日志</string>
-  <string name="hidden_service_on">隐藏服务位于:</string>
-  <string name="unable_to_read_hidden_service_name">无法读取隐藏服务名称</string>
-  <string name="unable_to_start_tor">无法启动 Tor:</string>
-  <string name="unable_to_reset_tor">重新启动您的设备,无法重置 Tor!</string>
-  <string name="pref_use_sys_iptables_title">使用默认 iptables </string>
-  <string name="pref_use_sys_iptables_summary">使用内置的 iptables 程序替代 Orbot 绑定的 iptables </string>
-  <string name="error_installing_binares">无法安装或更新 Tor 程序。</string>
-  <string name="pref_use_persistent_notifications">Orbot 连接后始终在通知栏显示图标</string>
-  <string name="pref_use_persistent_notifications_title">始终显示通知</string>
-  <string name="pref_use_expanded_notifications">显示扩展的通知,有关 Tor 出口的国家和 IP</string>
-  <string name="pref_use_expanded_notifications_title">扩展的通知</string>
-  <string name="notification_using_bridges">已启用网桥!</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">语言</string>
-  <string name="set_locale_summary">选择 Orbot 的区域设置与语言</string>
-  <string name="wizard_locale_title">选择语言</string>
-  <string name="wizard_locale_msg">保持默认或切换为当前所用语言</string>
-  <string name="powered_by">由 Tor 提供</string>
-  <string name="btn_save_settings">保存设置</string>
-  <string name="no_internet_connection_tor">没有互联网连接;Tor 处于待机状态…</string>
-  <string name="bandwidth_">宽带速度:</string>
-  <string name="down">下行</string>
-  <string name="up">上行</string>
-  <string name="pref_disable_network_title">无网络自动休眠</string>
-  <string name="pref_disable_network_summary">没有网络连接时,暂时停用 Tor</string>
-  <string name="newnym">已切换为新的 Tor 标识!</string>
-  <string name="menu_verify_browser">浏览器</string>
-  <string name="menu_use_chatsecure">使用 ChatSecure</string>
-  <string name="permission_manage_tor_label">管理 Tor</string>
-  <string name="permission_manage_tor_description">启用该应用可对 Tor 服务进行控制</string>
-  <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">似乎您还没有安装 Orfox。是否需要帮助,或者我们应该打开浏览器?</string>
-  <string name="install_apps_">安装应用?</string>
-  <string name="no_network_connectivity_putting_tor_to_sleep_">没有网络连接;让 Tor 进入睡眠…</string>
-  <string name="network_connectivity_is_good_waking_tor_up_">网络连接良好。正在唤醒 Tor...</string>
-  <string name="updating_settings_in_tor_service">正在更新 Tor 服务中的设置</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_socks_summary">Tor 提供其 SOCKS 代理的端口 (默认: 9050, 0 禁用)</string>
-  <string name="pref_socks_dialog">SOCKS 端口配置</string>
-  <string name="pref_transport_title">Tor 透明代理端口</string>
-  <string name="pref_transport_summary">Tor 提供透明代理的端口 (默认: 9040, 0 禁用)</string>
-  <string name="pref_transport_dialog">透明代理配置</string>
-  <string name="pref_dnsport_title">Tor DNS 端口</string>
-  <string name="pref_dnsport_summary">Tor 提供 DNS 的端口 (默认: 5400, 0 禁用)</string>
-  <string name="pref_dnsport_dialog">DNS 端口配置</string>
-  <string name="pref_torrc_title">Torrc 自定义配置</string>
-  <string name="pref_torrc_summary">仅供专家:直接输入 torrc 配置行</string>
-  <string name="pref_torrc_dialog">自定义 Torrc</string>
-  <string name="wizard_tips_martus">Mobile Martus - 美国人权文件 App</string>
-  <string name="your_tor_public_ips_">您的 Tor 公网 IP:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">如果您使用 Orbot 遇到问题,请在 Android->设置->应用 中禁用本应用:</string>
-  <string name="app_conflict">应用冲突</string>
-  <string name="pref_transproxy_refresh_title">透明代理自动刷新</string>
-  <string name="pref_transproxy_refresh_summary">在网络状态改变时重新应用透明代理规则</string>
-  <string name="pref_transproxy_flush_title">透明代理强制移除</string>
-  <string name="pref_transproxy_flush_summary">点按这里立即刷新所有透明代理的网络规则</string>
-  <string name="transparent_proxy_rules_flushed_">透明代理规则已刷新!</string>
-  <string name="you_do_not_have_root_access_enabled">您还没有 ROOT 访问权限</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">您可能需要停止并重新启动 Orbot 才能使设置更改生效。</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="bridges_updated">网桥已更新</string>
-  <string name="restart_orbot_to_use_this_bridge_">请重启 Orbot 以使变更生效</string>
-  <string name="menu_qr">QR码</string>
-  <string name="bridge_mode">网桥模式</string>
-  <string name="get_bridges_email">电子邮件</string>
-  <string name="get_bridges_web">网页</string>
-  <string name="activate">激活</string>
-  <string name="apps_mode">应用 VPN 模式</string>
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">通过开启VPN功能,您可以让您设备上全部的应用程序使用Tor网络。
-警告!!!
-这是一项实验性的功能。在某些情况下,它可能停止或不能自动启动。它不应用于保持匿名,仅用于穿透防火墙和连接过滤系统。</string>
-  <string name="send_email">发送电子邮件</string>
-  <string name="install_orweb">安装 Orfox</string>
-  <string name="standard_browser">标准版浏览器</string>
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">注意:只有标准的 Tor 网桥可以在 Intel X86/ATOM 设备上工作</string>
-  <string name="vpn_default_world">世界</string>
-</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 7f7bba1..0000000
--- a/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot是一款免費的網絡代理應用程式,用來保護其他應用程式的上網安全。
-Orbot使用Tor在全球一系列的電腦間跳躍,以便隱藏網路流量並加密。Tor是個免費軟體也是個開放網路,能幫您抵禦流量分析。它是某一種網路監控,牽涉到個人的自由與隱私、商業部分的機密關係和活動、甚至國家安全。</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">開始和停止 Tor</string>
-  <string name="tor_proxy_service_process">tor 代理服務</string>
-  <string name="status_starting_up">Orbot 正在啟動中...</string>
-  <string name="status_activated">已連線至 Tor 網路</string>
-  <string name="status_disabled">Orbot 已停用</string>
-  <string name="status_shutting_down">Tor服務 正在關閉</string>
-  <string name="tor_process_starting">啟動Tor 用戶端...</string>
-  <string name="tor_process_complete">完成。</string>
-  <string name="tor_process_waiting">等待。</string>
-  <string name="not_anonymous_yet">警告:您的網路尚未匿名!請設定您的應用程式使用HTTP 代理伺服器 127.0.0.1:8118 或 SOCKS4A 或 SOCKS5 代理伺服器 127.0.0.1:9050</string>
-  <string name="menu_home">首頁</string>
-  <string name="menu_browse">瀏覽</string>
-  <string name="menu_settings">設定</string>
-  <string name="menu_log">記錄檔</string>
-  <string name="menu_info">說明</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">開始</string>
-  <string name="menu_stop">停止</string>
-  <string name="menu_about">關於</string>
-  <string name="menu_promo_apps">取得應用程式…</string>
-  <string name="main_layout_download">下載</string>
-  <string name="main_layout_upload">上傳</string>
-  <string name="button_help">說明</string>
-  <string name="button_close">關閉</string>
-  <string name="button_about">關於</string>
-  <string name="button_clear_log">清除記錄檔</string>
-  <string name="menu_verify">檢查</string>
-  <string name="menu_exit">離開</string>
-  <string name="menu_scan">掃描連接橋QR</string>
-  <string name="menu_share_bridge">分享連接橋QR</string>
-  <string name="press_to_start">- 請長按以開始 - </string>
-  <string name="pref_trans_proxy_group">通透式代理伺服器(需要 Root)</string>
-  <string name="pref_trans_proxy_title">通透式代理伺服器</string>
-  <string name="pref_trans_proxy_summary">自動啟動 Tor於應用程式</string>
-  <string name="pref_transparent_all_title">Tor Everything</string>
-  <string name="pref_transparent_all_summary">所有應用程式皆透過Tor 代理伺服器</string>
-  <string name="pref_transparent_port_fallback_title">備用連接埠代理</string>
-  <string name="pref_transparent_port_fallback_summary">警告: 避免常用的埠口(80、443等等)。在「所有」或是「App」模式都失效的時候*才使用*。</string>
-  <string name="pref_transparent_port_title">埠清單</string>
-  <string name="pref_transparent_port_dialog">輸入代理埠</string>
-  <string name="pref_has_root">請求 Root 存取權</string>
-  <string name="pref_has_root_summary">爲通透式代理請求 Root 存取權</string>
-  <string name="status_install_success">Tor 二進制檔案安裝成功!</string>
-  <string name="title_error">應用程式錯誤</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">關於 Orbot</string>
-  <string name="btn_next">前進</string>
-  <string name="btn_back">返回</string>
-  <string name="btn_finish">結束</string>
-  <string name="btn_okay">確定</string>
-  <string name="btn_cancel">取消</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Orbot 的一些詳細資料</string>
-  <string name="wizard_details_msg">Orbot是個開源的應用程式,包含了Tor,LibEvent和Polipo。它提供了本地HTTP代理 (8118)和SOCKS代理 (9050)以進入Tor網路。Orbot也能夠在已Root的裝置上,以Tor傳送所有的網路流量。</string>
-  <string name="wizard_permissions_root">已取得權限</string>
-  <string name="wizard_permissions_stock">Orbot 權限</string>
-  <string name="wizard_configure">組態 Tor 網路</string>
-  <string name="wizard_configure_all">所有應用程式都透過 Tor 代理</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo 搜尋引擎應用程式</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">代理伺服器設定</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="pref_general_group">一般</string>
-  <string name="pref_start_boot_summary">當你的 Android  裝置啟動時自動開啟 Orbot 並連接 Tor 網路</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <!--Warning screen-->
-  <string name="wizard_warning_title">警告</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">權限</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_play">在 Google Play 尋找所有的 Guardian Project 應用程式</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">通透式代理</string>
-  <string name="wizard_transproxy_none">無</string>
-  <string name="pref_select_apps">選擇應用程式</string>
-  <string name="button_invert_selection">反向選擇</string>
-  <string name="status">狀態</string>
-  <string name="error">錯誤</string>
-  <string name="enter_ports">輸入埠</string>
-  <string name="project_home">專案首頁:</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">第三方軟體:</string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="default_bridges"></string>
-  <string name="set_locale_title">語言</string>
-  <string name="wizard_locale_title">選擇語言</string>
-  <string name="btn_save_settings">儲存設定</string>
-  <string name="menu_verify_browser">瀏覽器</string>
-  <string name="permission_manage_tor_label">管理 Tor</string>
-  <string name="install_apps_">安裝應用程式?</string>
-  <string name="pref_socks_title">Tor SOCKS</string>
-  <string name="pref_dnsport_title">Tor DNS 埠</string>
-  <string name="menu_vpn">VPN</string>
-  <string name="kbps">kbps</string>
-  <string name="mbps">mbps</string>
-  <string name="kb">KB</string>
-  <string name="mb">MB</string>
-  <string name="menu_qr">QR 碼</string>
-  <string name="send_email">寄送電子信件</string>
-  <string name="standard_browser">標準版瀏覽器</string>
-  <string name="vpn_default_world">世界</string>
-</resources>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
deleted file mode 100644
index 30d20c1..0000000
--- a/res/values/arrays.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<resources>
-
-	<string-array name="bridge_options">
-	    <item>Obfs4 (Best)</item>
-	    <item>Obfs3</item>
-	    <item>ScrambleSuit</item>
-	    <item>Tunnel through Azure</item>
-	    <item>Tunnel through Amazon</item>
-	    <item>Tunnel through Google</item>
-	    <item>Get New Bridges</item>
-	    <item></item>
-	</string-array>
-    
-</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
deleted file mode 100644
index 19e06e7..0000000
--- a/res/values/colors.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-    <resources>
-        <color name="panel_background">#ffffff</color>
-        <color name="panel_background_dark">#efefef</color>
-        <color name="panel_background_main">#efefef</color>
-        <color name="bright_green">#ccff2a</color>
-        <color name="dark_green">#669901</color>
-    </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
deleted file mode 100644
index f96195c..0000000
--- a/res/values/dimens.xml
+++ /dev/null
@@ -1,361 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/* //device/apps/common/assets/res/any/dimens.xml
-**
-** Copyright 2006, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
--->
-<resources>
-    <!-- The width that is used when creating thumbnails of applications. -->
-    <dimen name="thumbnail_width">164dp</dimen>
-    <!-- The height that is used when creating thumbnails of applications. -->
-    <dimen name="thumbnail_height">145dp</dimen>
-    <!-- The standard size (both width and height) of an application icon that
-         will be displayed in the app launcher and elsewhere. -->
-    <dimen name="app_icon_size">48dip</dimen>
-    <!-- The maximum number of action buttons that should be permitted within
-         an action bar/action mode. This will be used to determine how many
-         showAsAction="ifRoom" items can fit. "always" items can override this. -->
-    <integer name="max_action_buttons">2</integer>
-    <dimen name="toast_y_offset">64dip</dimen>
-    <!-- Height of the status bar -->
-    <dimen name="status_bar_height">25dip</dimen>
-    <!-- Height of the bottom navigation / system bar. -->
-    <dimen name="navigation_bar_height">48dp</dimen>
-    <!-- Height of the bottom navigation bar in portrait; often the same as @dimen/navigation_bar_height -->
-    <dimen name="navigation_bar_height_landscape">48dp</dimen>
-    <!-- Width of the navigation bar when it is placed vertically on the screen -->
-    <dimen name="navigation_bar_width">42dp</dimen>
-    <!-- Height of notification icons in the status bar -->
-    <dimen name="status_bar_icon_size">24dip</dimen>
-    <!-- Size of the giant number (unread count) in the notifications -->
-    <dimen name="status_bar_content_number_size">48sp</dimen>
-    <!-- Height of the system bar (combined status & navigation); used by
-         SystemUI internally, not respected by the window manager. -->
-    <dimen name="system_bar_height">@dimen/navigation_bar_height</dimen>
-    <!-- Height of notification icons in the system bar -->
-    <dimen name="system_bar_icon_size">32dip</dimen>
-    <!-- Margin at the edge of the screen to ignore touch events for in the windowshade. -->
-    <dimen name="status_bar_edge_ignore">5dp</dimen>
-
-    <!-- Minimum size of the fastscroll overlay -->
-    <dimen name="fastscroll_overlay_size">104dp</dimen>
-    <!-- Text size of the fastscroll overlay -->
-    <dimen name="fastscroll_overlay_text_size">52sp</dimen>
-    <!-- Padding of the fastscroll overlay -->
-    <dimen name="fastscroll_overlay_padding">16dp</dimen>
-    <!-- Width of the fastscroll thumb -->
-    <dimen name="fastscroll_thumb_width">64dp</dimen>
-    <!-- Height of the fastscroll thumb -->
-    <dimen name="fastscroll_thumb_height">52dp</dimen>
-    <!-- Min width for a tablet device -->
-    <dimen name="min_xlarge_screen_width">800dp</dimen>
-
-    <!-- Default height of a key in the password keyboard for alpha (used by keyguard) -->
-    <dimen name="password_keyboard_key_height_alpha">56dip</dimen>
-    <!-- Default height of a key in the password keyboard for numeric (used by keyguard) -->
-    <dimen name="password_keyboard_key_height_numeric">56dip</dimen>
-    <!-- Default correction for the space key in the password keyboard  (used by keyguard) -->
-    <dimen name="password_keyboard_spacebar_vertical_correction">4dip</dimen>
-    <!-- Default horizontal gap between keys in the password keyboard (used by keyguard) -->
-    <dimen name="password_keyboard_horizontalGap">3dip</dimen>
-    <!-- Default vertical gap between keys in the password keyboard (used by keyguard) -->
-    <dimen name="password_keyboard_verticalGap">9dip</dimen>
-
-    <!-- Size of lockscreen outerring on unsecure unlock LockScreen -->
-    <dimen name="keyguard_lockscreen_outerring_diameter">270dp</dimen>
-
-    <!-- Default target placement radius for GlowPadView. Should be 1/2 of outerring diameter. -->
-    <dimen name="glowpadview_target_placement_radius">135dip</dimen>
-
-    <!-- Default glow radius for GlowPadView -->
-    <dimen name="glowpadview_glow_radius">75dip</dimen>
-
-    <!-- Default distance beyond which GlowPadView snaps to the matching target -->
-    <dimen name="glowpadview_snap_margin">40dip</dimen>
-
-    <!-- Default distance from each snap target that GlowPadView considers a "hit" -->
-    <dimen name="glowpadview_inner_radius">15dip</dimen>
-
-    <!-- Preference activity side margins -->
-    <dimen name="preference_screen_side_margin">0dp</dimen>
-    <!-- Preference activity side margins negative-->
-    <dimen name="preference_screen_side_margin_negative">0dp</dimen>
-    <!-- Preference activity top margin -->
-    <dimen name="preference_screen_top_margin">0dp</dimen>
-    <!-- Preference activity bottom margin -->
-    <dimen name="preference_screen_bottom_margin">0dp</dimen>
-    <!-- Preference widget area width (to the left of the text) -->
-    <dimen name="preference_widget_width">48dp</dimen>
-    <!-- Preference fragment padding, bottom -->
-    <dimen name="preference_fragment_padding_bottom">0dp</dimen>
-    <!-- Preference fragment padding, sides -->
-    <dimen name="preference_fragment_padding_side">16dp</dimen>
-    <!-- Weight of the left pane in a multi-pane preference layout. -->
-    <integer name="preferences_left_pane_weight">4</integer>
-    <!-- Weight of the right pane in a multi-pane preference layout. So the split is 40:60 -->
-    <integer name="preferences_right_pane_weight">6</integer>
-    <!-- Padding to the left of the preference panel breadcrumb -->
-    <dimen name="preference_breadcrumb_paddingLeft">0dp</dimen>
-    <!-- Padding to the right of the preference panel breadcrumb -->
-    <dimen name="preference_breadcrumb_paddingRight">0dp</dimen>
-    <!-- Minimum space to allocate to the left of a preference item for an icon.
-        This helps in aligning titles when some items have icons and some don't. When space is
-        at a premium, we don't pre-allocate any space. -->
-    <dimen name="preference_icon_minWidth">0dp</dimen>
-    <!-- The platform's desired minimum size for a dialog's width when it
-         is along the major axis (that is the screen is landscape).  This may
-         be either a fraction or a dimension. -->
-    <item type="dimen" name="dialog_min_width_major">65%</item>
-
-    <!-- The platform's desired fixed width for a dialog along the major axis
-         (the screen is in landscape). This may be either a fraction or a dimension.-->
-    <item type="dimen" name="dialog_fixed_width_major">320dp</item>
-    <!-- The platform's desired fixed width for a dialog along the minor axis
-         (the screen is in portrait). This may be either a fraction or a dimension.-->
-    <item type="dimen" name="dialog_fixed_width_minor">320dp</item>
-    <!-- The platform's desired fixed height for a dialog along the major axis
-         (the screen is in portrait). This may be either a fraction or a dimension.-->
-    <item type="dimen" name="dialog_fixed_height_major">80%</item>
-    <!-- The platform's desired fixed height for a dialog along the minor axis
-         (the screen is in landscape). This may be either a fraction or a dimension.-->
-    <item type="dimen" name="dialog_fixed_height_minor">100%</item>
-
-    <!-- Preference activity, vertical padding for the header list -->
-    <dimen name="preference_screen_header_vertical_padding">0dp</dimen>
-
-    <dimen name="preference_screen_header_padding_side">16dip</dimen>
-    <integer name="preference_screen_header_scrollbarStyle">0x02000000</integer> <!-- outsideOverlay -->
-
-    <integer name="preference_fragment_scrollbarStyle">0x02000000</integer> <!-- outsideOverlay -->
-
-    <dimen name="preference_item_padding_side">8dip</dimen>
-    <dimen name="preference_item_padding_inner">8dip</dimen>
-    <dimen name="preference_child_padding_side">16dip</dimen>
-
-    <!-- The platform's desired minimum size for a dialog's width when it
-         is along the minor axis (that is the screen is portrait).  This may
-         be either a fraction or a dimension. -->
-    <item type="dimen" name="dialog_min_width_minor">95%</item>
-
-    <!-- The width of the big icons in notifications. -->
-    <dimen name="notification_large_icon_width">64dp</dimen>
-    <!-- The width of the big icons in notifications. -->
-    <dimen name="notification_large_icon_height">64dp</dimen>
-
-    <!-- Minimum width of the search view text entry area. -->
-    <dimen name="search_view_text_min_width">160dip</dimen>
-
-    <!-- Preferred width of the search view. -->
-    <dimen name="search_view_preferred_width">320dip</dimen>
-
-    <!-- Dialog title height -->
-    <dimen name="alert_dialog_title_height">64dip</dimen>
-    <!-- Dialog button bar height -->
-    <dimen name="alert_dialog_button_bar_height">48dip</dimen>
-
-    <!-- Default height of an action bar. -->
-    <dimen name="action_bar_default_height">48dip</dimen>
-    <!-- Vertical padding around action bar icons. -->
-    <dimen name="action_bar_icon_vertical_padding">8dip</dimen>
-    <!-- Text size for action bar titles -->
-    <dimen name="action_bar_title_text_size">18dp</dimen>
-    <!-- Text size for action bar subtitles -->
-    <dimen name="action_bar_subtitle_text_size">14dp</dimen>
-    <!-- Top margin for action bar subtitles -->
-    <dimen name="action_bar_subtitle_top_margin">-3dp</dimen>
-    <!-- Bottom margin for action bar subtitles -->
-    <dimen name="action_bar_subtitle_bottom_margin">5dip</dimen>
-
-    <!-- Size of clock font in LockScreen on Unsecure unlock screen. -->
-    <dimen name="keyguard_lockscreen_clock_font_size">80dip</dimen>
-
-    <!-- Size of status line font on Unsecure unlock LockScreen. -->
-    <dimen name="keyguard_lockscreen_status_line_font_size">14dip</dimen>
-
-    <!-- Size of right margin on Unsecure unlock LockScreen -->
-    <dimen name="keyguard_lockscreen_status_line_font_right_margin">42dip</dimen>
-
-    <!-- Size of top margin on Clock font to edge on unlock LockScreen -->
-    <dimen name="keyguard_lockscreen_status_line_clockfont_top_margin">22dip</dimen>
-
-    <!-- Size of top margin on Clock font to edge on unlock LockScreen -->
-    <dimen name="keyguard_lockscreen_status_line_clockfont_bottom_margin">12dip</dimen>
-
-    <!-- Padding on left margin of PIN text entry field to center it when del button is showing -->
-    <dimen name="keyguard_lockscreen_pin_margin_left">40dip</dimen>
-
-    <!-- Height of FaceUnlock view in keyguard -->
-    <dimen name="face_unlock_height">330dip</dimen>
-
-    <!-- Minimum popup width for selecting an activity in ActivityChooserDialog/ActivityChooserView. -->
-    <dimen name="activity_chooser_popup_min_width">200dip</dimen>
-
-    <!-- The default gap between components in a layout. -->
-    <dimen name="default_gap">8dip</dimen>
-
-    <!-- Text padding for dropdown items -->
-    <dimen name="dropdownitem_text_padding_left">8dip</dimen>
-
-    <!-- Text padding for dropdown items -->
-    <dimen name="dropdownitem_text_padding_right">8dip</dimen>
-
-    <!-- Width of the icon in a dropdown list -->
-    <dimen name="dropdownitem_icon_width">32dip</dimen>
-
-    <!-- Default width for a textview error popup -->
-    <dimen name="textview_error_popup_default_width">240dip</dimen>
-
-    <!-- Volume panel y offset -->
-    <dimen name="volume_panel_top">80dp</dimen>
-
-    <!-- Default padding to apply to AppWidgetHostViews containing widgets targeting API level 14 and up. -->
-    <dimen name="default_app_widget_padding_left">8dp</dimen>
-    <dimen name="default_app_widget_padding_top">8dp</dimen>
-    <dimen name="default_app_widget_padding_right">8dp</dimen>
-    <dimen name="default_app_widget_padding_bottom">8dp</dimen>
-
-    <!-- Minimum width for an action button in the menu area of an action bar -->
-    <dimen name="action_button_min_width">56dip</dimen>
-
-    <!-- Maximum height for a stacked tab bar as part of an action bar -->
-    <dimen name="action_bar_stacked_max_height">48dp</dimen>
-
-    <!-- Maximum width for a stacked action bar tab. This prevents
-         action bar tabs from becoming too wide on a wide screen when only
-         a few are present. -->
-    <dimen name="action_bar_stacked_tab_max_width">180dp</dimen>
-
-    <!-- Size of notification text (see TextAppearance.StatusBar.EventContent) -->
-    <dimen name="notification_text_size">14dp</dimen>
-    <!-- Size of notification text titles (see TextAppearance.StatusBar.EventContent.Title) -->
-    <dimen name="notification_title_text_size">18dp</dimen>
-    <!-- Size of smaller notification text (see TextAppearance.StatusBar.EventContent.Line2, Info, Time) -->
-    <dimen name="notification_subtext_size">12dp</dimen>
-
-    <!-- Keyguard dimensions -->
-    <!-- TEMP -->
-    <dimen name="kg_security_panel_height">600dp</dimen>
-
-    <!-- Height of security view in keyguard. -->
-    <dimen name="kg_security_view_height">480dp</dimen>
-
-    <!-- Width of widget view in keyguard. -->
-    <dimen name="kg_widget_view_width">0dp</dimen>
-
-    <!-- Height of widget view in keyguard. -->
-    <dimen name="kg_widget_view_height">0dp</dimen>
-
-    <!-- Size of the clock font in keyguard's status view -->
-    <dimen name="kg_status_clock_font_size">75dp</dimen>
-
-    <!-- Size of the date font in keyguard's status view  -->
-    <dimen name="kg_status_date_font_size">15dp</dimen>
-
-    <!-- Size of the generic status lines keyguard's status view  -->
-    <dimen name="kg_status_line_font_size">13dp</dimen>
-
-    <!-- Size of margin on the right of keyguard's status view -->
-    <dimen name="kg_status_line_font_right_margin">16dp</dimen>
-
-    <!-- Top margin for the clock view -->
-    <dimen name="kg_clock_top_margin">-16dp</dimen>
-
-    <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard -->
-    <dimen name="kg_key_horizontal_gap">0dp</dimen>
-
-    <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard -->
-    <dimen name="kg_key_vertical_gap">0dp</dimen>
-
-    <!-- Horizontal gap between keys in PIN and SIM PIN numeric keyboards in keyguard -->
-    <dimen name="kg_pin_key_height">60dp</dimen>
-
-    <!-- Space reserved at the bottom of secure views (pin/pattern/password/SIM pin/SIM puk) -->
-    <dimen name="kg_secure_padding_height">46dp</dimen>
-
-    <!-- The height of the runway lights strip -->
-    <dimen name="kg_runway_lights_height">7dp</dimen>
-
-    <!-- The height of the runway lights strip -->
-    <dimen name="kg_runway_lights_vertical_padding">2dp</dimen>
-
-    <!-- Horizontal padding for the widget pager -->
-    <dimen name="kg_widget_pager_horizontal_padding">16dp</dimen>
-
-    <!-- Top padding for the widget pager -->
-    <dimen name="kg_widget_pager_top_padding">0dp</dimen>
-
-    <!-- Bottom padding for the widget pager -->
-    <dimen name="kg_widget_pager_bottom_padding">64dp</dimen>
-
-    <!-- Top margin for the runway lights. We add a negative margin in large
-        devices to account for the widget pager padding -->
-    <dimen name="kg_runway_lights_top_margin">0dp</dimen>
-
-    <!-- Touch slop for the global toggle accessibility gesture -->
-    <dimen name="accessibility_touch_slop">80dip</dimen>
-
-    <!-- Width of the sliding KeyguardSecurityContainer (includes 2x keyguard_security_view_margin) -->
-    <dimen name="keyguard_security_width">320dp</dimen>
-
-    <!-- Height of the sliding KeyguardSecurityContainer (includes 2x keyguard_security_view_margin) -->
-    <dimen name="keyguard_security_height">400dp</dimen>
-
-    <!-- Margin around the various security views -->
-    <dimen name="keyguard_security_view_margin">8dp</dimen>
-
-    <!-- Margin around the various security views -->
-    <dimen name="keyguard_muliuser_selector_margin">8dp</dimen>
-
-    <!-- Stroke width of the frame for the circular avatars. -->
-    <dimen name="keyguard_avatar_frame_stroke_width">2dp</dimen>
-
-    <!-- Shadow radius under the frame for the circular avatars. -->
-    <dimen name="keyguard_avatar_frame_shadow_radius">1dp</dimen>
-
-    <!-- Size of the avator on hte multiuser lockscreen. -->
-    <dimen name="keyguard_avatar_size">66dp</dimen>
-
-    <!-- Size of the text under the avator on the multiuser lockscreen. -->
-    <dimen name="keyguard_avatar_name_size">10sp</dimen>
-
-    <!-- Size of the region along the edge of the screen that will accept
-         swipes to scroll the widget area. -->
-    <dimen name="kg_edge_swipe_region_size">24dp</dimen>
-
-    <!-- If the height if keyguard drops below this threshold (most likely
-    due to the appearance of the IME), then drop the multiuser selector. -->
-    <dimen name="kg_squashed_layout_threshold">600dp</dimen>
-
-    <!-- The height of widgets which do not support vertical resizing. This is only
-    used on tablets; on phones, this size is determined by the space left by the
-    security mode. -->
-    <dimen name="kg_small_widget_height">160dp</dimen>
-
-    <!-- Rounded corner radius for video subtitles. -->
-    <dimen name="subtitle_corner_radius">2dp</dimen>
-
-    <!-- Shadow radius for video subtitles. -->
-    <dimen name="subtitle_shadow_radius">2dp</dimen>
-
-    <!-- Shadow offset for video subtitles. -->
-    <dimen name="subtitle_shadow_offset">2dp</dimen>
-
-    <!-- Outline width for video subtitles. -->
-    <dimen name="subtitle_outline_width">2dp</dimen>
-
-    <!-- width of ImmersiveModeConfirmation (-1 for match_parent) -->
-    <dimen name="immersive_mode_cling_width">-1px</dimen>
-</resources>
diff --git a/res/values/pdnsd.xml b/res/values/pdnsd.xml
deleted file mode 100644
index 522f765..0000000
--- a/res/values/pdnsd.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-	<string name="pdnsd_conf" formatted="false">
-global {
-	perm_cache=0;
-	cache_dir="/data/data/org.torproject.android/app_bin";
-	server_port = 8091;
-	server_ip = 0.0.0.0;
-	query_method=udp_only;
-	min_ttl=15m;
-	max_ttl=1w;
-	timeout=10;
-	daemon=on;
-	pid_file="/data/data/org.torproject.android/app_bin/pdnsd.pid";
-
-}
-
-server {
-	label= "upstream";
-	ip = %s;
-	port = %d;
-	uptest = none;
-}
-
-rr {
-	name=localhost;
-	reverse=on;
-	a=127.0.0.1;
-	owner=localhost;
-	soa=localhost,root.localhost,42,86400,900,86400,86400;
-}
-	</string>
-</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
deleted file mode 100644
index 9f6431d..0000000
--- a/res/values/strings.xml
+++ /dev/null
@@ -1,339 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<resources>
-  <string name="app_name">Orbot</string>
-  <string name="app_description">Orbot is a free proxy app that empowers other apps to use the internet more securely. Orbot uses Tor to encrypt your Internet traffic and then hides it by bouncing through a series of computers around the world. Tor is free software and an open network that helps you defend against a form of network surveillance that threatens personal freedom and privacy, confidential business activities and relationships, and state security known as traffic analysis.</string>
-  <string name="internal_web_url">http://orbot/</string>
-  <string name="default_web_url">http://check.torproject.org</string>
-  <string name="secure_default_web_url">https://check.torproject.org</string>
-  <string name="tor_check_api_url">https://check.torproject.org/?TorButton=true</string>
-  <string name="control_permission_label">start and stop Tor</string>
-  <string name="tor_proxy_service_process">torproxyservice</string>
-  <string name="status_starting_up">Orbot is starting…</string>
-  <string name="status_activated">Connected to the Tor network</string>
-  <string name="status_disabled">Orbot is deactivated</string>
-  <string name="status_shutting_down">TorService is shutting down</string>
-  <string name="tor_process_starting">Starting Tor client…</string>
-  <string name="tor_process_complete">complete.</string>
-  <string name="tor_process_waiting">waiting.</string>
-  <string name="not_anonymous_yet">WARNING: Your traffic is not anonymous yet! Please configure your applications to use HTTP proxy 127.0.0.1:8118 or SOCKS4A or SOCKS5 proxy 127.0.0.1:9050</string>
-  <string name="menu_home">Home</string>
-  <string name="menu_browse">Browse</string>
-  <string name="menu_settings">Settings</string>
-  <string name="menu_log">Log</string>
-  <string name="menu_info">Help</string>
-  <string name="menu_apps">VPN</string>
-  <string name="menu_start">Start</string>
-  <string name="menu_stop">Stop</string>
-  <string name="menu_about">About</string>
-  <string name="menu_promo_apps">Get apps…</string>
-  <string name="main_layout_download">Download</string>
-  <string name="main_layout_upload">Upload</string>
-  <string name="button_help">Help</string>
-  <string name="button_close">Close</string>
-  <string name="button_about">About</string>
-  <string name="button_clear_log">Clear Log</string>
-  <string name="menu_verify">Check</string>
-  <string name="menu_exit">Exit</string>
-  <string name="menu_scan">Scan BridgeQR</string>
-  <string name="menu_share_bridge">Share BridgeQR</string>
-  <string name="press_to_start">- long press to start -</string>
-  <string name="pref_trans_proxy_group">Transparent Proxying (Requires Root)</string>
-  <string name="pref_trans_proxy_title">Transparent Proxying</string>
-  <string name="pref_trans_proxy_summary">Automatic Torifying of Apps</string>
-  <string name="pref_transparent_all_title">Tor Everything</string>
-  <string name="pref_transparent_all_summary">Proxy traffic for all apps through Tor</string>
-  <string name="pref_transparent_port_fallback_title">Port Proxy Fallback</string>
-  <string name="pref_transparent_port_fallback_summary">WARNING: Circumvents common ports (80, 443, etc). *USE ONLY* if \'All\' or \'App\' mode doesn\'t work.</string>
-  <string name="pref_transparent_port_title">Port List</string>
-  <string name="pref_transparent_port_summary">List of ports to proxy. *USE ONLY* if \'All\' or \'App\' mode doesn\'t work</string>
-  <string name="pref_transparent_port_dialog">Enter ports to proxy</string>
-  <string name="pref_has_root">Request Root Access</string>
-  <string name="pref_has_root_summary">Request root access for transparent proxying</string>
-  <string name="status_install_success">Tor binaries successfully installed!</string>
-  <string name="status_install_fail">The Tor binary files were unable to be installed. Please check the log and notify tor-assistants at torproject.org</string>
-  <string name="title_error">Application Error</string>
-  <string name="wizard_title">Orbot</string>
-  <string name="wizard_btn_tell_me_more">About Orbot</string>
-  <string name="btn_next">Next</string>
-  <string name="btn_back">Back</string>
-  <string name="btn_finish">Finish</string>
-  <string name="btn_okay">Okay</string>
-  <string name="btn_cancel">Cancel</string>
-  <!--Welcome Wizard strings (DJH)-->
-  <string name="wizard_details">Some Orbot Details</string>
-  <string name="wizard_details_msg">Orbot is an open-source application that contains Tor, LibEvent and Polipo. It provides a local HTTP proxy (8118) and a SOCKS proxy (9050) into the Tor network. Orbot also has the ability, on rooted device, to send all internet traffic through Tor.</string>
-  <string name="wizard_permissions_root">Permission Granted</string>
-  <string name="wizard_permissions_stock">Orbot Permissions</string>
-  <string name="wizard_premissions_msg_root">Excellent! We\'ve detected that you have root permissions enabled for Orbot. We will use this power wisely.</string>
-  <string name="wizard_permissions_msg_stock"> While it is not required, Orbot can become a more powerful tool if your device has root access. Use the button below to grant Orbot superpowers! </string>
-  <string name="wizard_permissions_no_root">If you don\'t have root access or have no idea what we\'re talking about, just be sure to use apps made to work with Orbot.</string>
-  <string name="wizard_permissions_consent">I understand and would like to continue without Superuser</string>
-  <string name="wizard_permission_enable_root">Grant Root for Orbot</string>
-  <string name="wizard_configure">Configure Torification</string>
-  <string name="wizard_configure_msg">Orbot gives you the option to route all application traffic through Tor OR to choose your applications individually.</string>
-  <string name="wizard_configure_all">Proxy All Apps Through Tor</string>
-  <string name="wizard_configure_select_apps">Select Individual Apps for Tor</string>
-  <string name="wizard_tips_tricks">Orbot-enabled Apps</string>
-  <string name="wizard_tips_msg">The apps below were developed to work with Orbot. Click each button to install now, or you can find them later on Google Play, at GuardianProject.info website or via F-Droid.org.</string>
-  <string name="wizard_tips_otrchat">ChatSecure - Secure instant messaging client for Android</string>
-  <string name="wizard_tips_proxy">Proxy Settings - Learn how to configure apps to work with Orbot</string>
-  <string name="wizard_tips_duckgo">DuckDuckGo Search Engine app</string>
-  <string name="wizard_tips_twitter">Set Twitter proxy to host \"localhost\" and port 8118</string>
-  <string name="wizard_tips_story_maker">StoryMaker - Make a story and leave it to tor for security!</string>
-  <string name="twitter_setup_url">https://guardianproject.info/2012/05/02/orbot-your-twitter/</string>
-  <string name="wizard_proxy_help_info">Proxy Settings</string>
-  <string name="wizard_proxy_help_msg">If the Android app you are using can support the use of an HTTP or SOCKS proxy, then you can configure it to connect to Orbot and use Tor.\n\n\n    The host settings is 127.0.0.1 or \"localhost\". For HTTP, the port setting is 8118. For SOCKS, the proxy is 9050. You should use SOCKS4A or SOCKS5 if possible.\n    \n\n\n    You can learn more about proxying on Android via the FAQ at: http://tinyurl.com/proxyandroid\n    </string>
-  <string name="wizard_final">Orbot is ready!</string>
-  <string name="wizard_final_msg">Millions of people around the world use Tor for a wide variety of reasons.\n\nJournalists and bloggers, human rights defenders, law enforcement officers, soldiers, corporations, citizens of repressive regimes, and just ordinary citizens… and now you are ready to, as well!</string>
-  <string name="wizard_exit_at_first_screen_toast">Please configure Orbot before you can start using it!</string>
-  <!--END Welcome Wizard strings (DJH)-->
-  <string name="connect_first_time">You\'ve successfully connected to the Tor network - but this does NOT mean your device is secure. You can use the \'Browser\' button to test your connection. \n\nVisit us at https://guardianproject.info/apps/orbot or send an email to help at guardianproject.info to learn more.</string>
-  <string name="tor_check">This will open your web browser to https://check.torproject.org in order to see if Orbot is probably configured and you are connected to Tor.</string>
-  <string name="pref_hs_group">Hidden Service Hosting</string>
-  <string name="pref_general_group">General</string>
-  <string name="pref_start_boot_title">Start Orbot on Boot</string>
-  <string name="pref_start_boot_summary">Automatically start Orbot and connect Tor when your Android device boots</string>
-  <!--New Wizard Strings-->
-  <!--Title Screen-->
-  <string name="wizard_title_msg">Orbot brings Tor to Android!\n\nTor helps you defend against content filtering, traffic analysis and network surveillance that threatens privacy, confidential information and personal relationships.\n\nThis wizard will help you configure Orbot and Tor on your device.</string>
-  <!--Warning screen-->
-  <string name="wizard_warning_title">Warning</string>
-  <string name="wizard_warning_msg">Simply installing Orbot will not automatically anonymize your mobile traffic.\n\nYou must properly configure Orbot, your device and other apps to successfully use Tor.</string>
-  <!--Permissions screen-->
-  <string name="wizard_permissions_title">Permissions</string>
-  <string name="wizard_permissions_root_msg1">You can optionally grant Orbot \'Superuser\' access to enable advanced features, such as Transparent Proxying.</string>
-  <string name="wizard_permissions_root_msg2">If you do not want to do this, please make sure to use apps made to work with Orbot</string>
-  <string name="wizard_permissions_no_root_msg">Your device does not appear to be rooted or provide root or \'Superuser\' access.\n\nPlease try the \'Apps\' mode on the main screen instead.</string>
-  <!--TipsAndTricks screen-->
-  <string name="wizard_tips_title">Orbot-Enabled Apps</string>
-  <string name="wizard_tips_gibberbot">ChatSecure: Secure chat app with Off-the-Record Encryption</string>
-  <string name="wizard_tips_orweb">Orfox: Privacy-enhanced browser that works through Tor</string>
-  <string name="wizard_tips_play">Find all Guardian Project apps on Google Play</string>
-  <string name="wizard_tips_fdroid">Find all Guardian Project apps on F-Droid</string>
-  <string name="wizard_tips_fdroid_org">Find all Guardian Project apps on https://f-droid.org</string>
-  <!--Transparent Proxy screen-->
-  <string name="wizard_transproxy_title">Transparent Proxying</string>
-  <string name="wizard_transproxy_msg">This allows your apps to automatically run through the Tor network without any configuration.</string>
-  <string name="wizard_transproxy_hint">(Check this box if you have no idea what we are talking about)</string>
-  <string name="wizard_transproxy_none">None</string>
-  <string name="pref_transparent_tethering_title">Tor Tethering</string>
-  <string name="pref_transparent_tethering_summary">Enable Tor Transparent Proxying for Wifi and USB Tethered Devices (requires restart)</string>
-  <string name="button_grant_superuser">Request Superuser Access</string>
-  <string name="pref_select_apps">Select Apps</string>
-  <string name="pref_select_apps_summary">Choose Apps to Route Through Tor</string>
-  <string name="pref_node_configuration">Node Configuration</string>
-  <string name="pref_node_configuration_summary">These are advanced settings that can reduce your anonymity</string>
-  <string name="pref_entrance_node">Entrance Nodes</string>
-  <string name="pref_entrance_node_summary">Fingerprints, nicks, countries and addresses for the first hop</string>
-  <string name="pref_entrance_node_dialog">Enter Entrance Nodes</string>
-  <string name="pref_allow_background_starts_title">Allow Background Starts</string>
-  <string name="pref_allow_background_starts_summary">Let any app tell Orbot to start Tor and related services</string>
-  
-  <string name="button_proxy_all">Proxy All</string>
-  <string name="button_proxy_none">Proxy None</string>
-  <string name="button_invert_selection">Invert Selection</string>
-
-  <string name="pref_proxy_title">Outbound Network Proxy (Optional)</string>
-  
-  <string name="pref_proxy_type_title">Outbound Proxy Type</string>
-  <string name="pref_proxy_type_summary">Protocol to use for proxy server: HTTP, HTTPS, Socks4, Socks5</string>
-  <string name="pref_proxy_type_dialog">Enter Proxy Type</string>
-  
-  <string name="pref_proxy_host_title">Outbound Proxy Host</string>
-  <string name="pref_proxy_host_summary">Proxy Server hostname</string>
-  <string name="pref_proxy_host_dialog">Enter Proxy Host</string>
-  
-  <string name="pref_proxy_port_title">Outbound Proxy Port</string>
-  <string name="pref_proxy_port_summary">Proxy Server port</string>
-  <string name="pref_proxy_port_dialog">Enter Proxy port</string>
-
-  <string name="pref_proxy_username_title">Outbound Proxy Username</string>
-  <string name="pref_proxy_username_summary">Proxy Username (Optional)</string>
-  <string name="pref_proxy_username_dialog">Enter Proxy Username</string>
-  
-  <string name="pref_proxy_password_title">Outbound Proxy Password</string>
-  <string name="pref_proxy_password_summary">Proxy Password (Optional)</string>
-  <string name="pref_proxy_password_dialog">Enter Proxy Password</string>
-  
-  
-  
-  <string name="status">Status</string>
-  <string name="setting_up_full_transparent_proxying_">Setting up full transparent proxying…</string>
-  <string name="setting_up_app_based_transparent_proxying_">Setting up app-based transparent proxying…</string>
-  <string name="transparent_proxying_enabled">Transparent proxying ENABLED</string>
-  <string name="transproxy_enabled_for_tethering_">TransProxy enabled for Tethering!</string>
-  <string name="warning_error_starting_transparent_proxying_">WARNING: error starting transparent proxying!</string>
-  <string name="transproxy_rules_cleared">TransProxy rules cleared</string>
-  <string name="couldn_t_start_tor_process_">Couldn\'t start Tor process: </string>
-  <string name="privoxy_is_running_on_port_">Polipo is running on port: </string>
-  <string name="setting_up_port_based_transparent_proxying_">Setting up port-based transparent proxying…</string>
-  <string name="bridge_error">Bridge Error</string>
-  <string name="bridge_requires_ip">In order to use the bridge feature, you must enter at least one bridge IP address.</string>
-  <string name="send_email_for_bridges">Send an email to bridges at torproject.org with the line \"get bridges\" by itself in the body of the mail from a gmail account.</string>
-  <string name="error">Error</string>
-  <string name="your_reachableaddresses_settings_caused_an_exception_">Your ReachableAddresses settings caused an exception!</string>
-  <string name="your_relay_settings_caused_an_exception_">Your relay settings caused an exception!</string>
-  <string name="exit_nodes">Exit Nodes</string>
-  <string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Fingerprints, nicks, countries and addresses for the last hop</string>
-  <string name="enter_exit_nodes">Enter Exit Nodes</string>
-  <string name="exclude_nodes">Exclude Nodes</string>
-  <string name="fingerprints_nicks_countries_and_addresses_to_exclude">Fingerprints, nicks, countries and addresses to exclude</string>
-  <string name="enter_exclude_nodes">Enter Exclude Nodes</string>
-  <string name="strict_nodes">Strict Nodes</string>
-  <string name="use_only_these_specified_nodes">Use *only* these specified nodes</string>
-  <string name="bridges">Bridges</string>
-  <string name="use_bridges">Use Bridges</string>
-  <string name="bridges_obfuscated">Obfuscated Bridges</string>
-  <string name="enable_alternate_entrance_nodes_into_the_tor_network">Enable alternate entrance nodes into the Tor Network</string>
-  <string name="enable_if_configured_bridges_are_obfuscated_bridges">Enable if configured bridges are obfuscated bridges</string>
-  <string name="ip_address_and_port_of_bridges">IP address and port of bridges</string>
-  <string name="enter_bridge_addresses">Enter Bridge Addresses</string>
-  <string name="relays">Relays</string>
-  <string name="relaying">Relaying</string>
-  <string name="enable_your_device_to_be_a_non_exit_relay">Enable your device to be a non-exit relay</string>
-  <string name="relay_port">Relay Port</string>
-  <string name="listening_port_for_your_tor_relay">Listening port for your Tor relay</string>
-  <string name="enter_or_port">Enter OR port</string>
-  <string name="relay_nickname">Relay nickname</string>
-  <string name="the_nickname_for_your_tor_relay">The nickname for your Tor relay</string>
-  <string name="enter_a_custom_relay_nickname">Enter a custom relay nickname</string>
-  <string name="reachable_addresses">Reachable Addresses</string>
-  <string name="run_as_a_client_behind_a_firewall_with_restrictive_policies">Run as a client behind a firewall with restrictive policies</string>
-  <string name="reachable_ports">Reachable ports</string>
-  <string name="ports_reachable_behind_a_restrictive_firewall">Ports reachable behind a restrictive firewall</string>
-  <string name="enter_ports">Enter ports</string>
-  <string name="enable_hidden_services">Hidden Service Hosting</string>
-  <string name="run_servers_accessible_via_the_tor_network">allow on-device server to be accessible via the Tor network</string>
-  <string name="enter_localhost_ports_for_hidden_services">enter localhost ports for hidden services</string>
-  <string name="hidden_service_ports">Hidden Service Ports</string>
-  <string name="the_addressable_name_for_your_hidden_service_generated_automatically_">the addressable name for your hidden service (generated automatically)</string>
-  <string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">enable debug log to output (must use adb or aLogCat to view)</string>
-  <string name="project_home">Project Home(s): </string>
-  <string name="project_urls">https://www.torproject.org/docs/android\nhttps://guardianproject.info/apps/orbot/</string>
-  <string name="the_tor_license">The Tor License</string>
-  <string name="https_torproject_org">https://torproject.org</string>
-  <string name="third_party_software">3rd-Party-Software: </string>
-  <string name="tor_version">Tor: https://www.torproject.org</string>
-  <string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
-  <string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
-  <string name="iptables_version">IPtables v1.4.21: http://www.netfilter.org</string>
-  <string name="openssl_version">OpenSSL v1.0.1q: http://www.openssl.org</string>
-  <string name="hidden_service_request">An app wants to open hidden server port %S to the Tor network. This is safe if you trust the app.</string>
-  <string name="found_existing_tor_process">found existing Tor process…</string>
-  <string name="something_bad_happened">Something bad happened. Check the log</string>
-  <string name="hidden_service_on">hidden service on:</string>
-  <string name="unable_to_read_hidden_service_name">unable to read hidden service name</string>
-  <string name="unable_to_start_tor">Unable to start Tor:</string>
-  <string name="unable_to_reset_tor">Reboot your device, unable to reset Tor!</string>
-  <string name="pref_use_sys_iptables_title">Use Default Iptables</string>
-  <string name="pref_use_sys_iptables_summary">use the built-in iptables binary instead of the one bundled with Orbot</string>
-  
-  <string name="error_installing_binares">The Tor binaries were not able to be installed or upgraded.</string>
-  
-  <string name="pref_use_persistent_notifications">Always keep the icon in toolbar when Orbot is connected</string>
-  <string name="pref_use_persistent_notifications_title">Always-On Notifications</string>
-  
-  <string name="pref_use_expanded_notifications">Show expanded notification with Tor exit country and IP</string>
-  <string name="pref_use_expanded_notifications_title">Expanded Notifications</string>
-  
-  <string name="notification_using_bridges">Bridges enabled!</string>
-  <string name="default_bridges"/>
-  <string name="set_locale_title">Language</string>
-  <string name="set_locale_summary">Choose the locale and language for Orbot</string>
-  <string name="wizard_locale_title">Choose Language</string>
-  <string name="wizard_locale_msg">Leave default or switch the current language</string>
-  <string name="powered_by">powered by Tor</string>
-  <string name="btn_save_settings">Save Settings</string>
-  <string name="no_internet_connection_tor">No internet connection; Tor is on standby…</string>
-  <string name="bandwidth_">Bandwidth:</string>
-  <string name="down">down</string>
-  <string name="up">up</string>
-  <string name="pref_disable_network_title">No Network Auto-Sleep</string>
-  <string name="pref_disable_network_summary">Put Tor to sleep when there is no internet available</string>
-  <string name="newnym">You\'ve switched to a new Tor identity!</string>
-  
-    <string name="menu_verify_browser">Browser</string>
-    <string name="menu_use_chatsecure">Use ChatSecure</string>
-
-    <string name="permission_manage_tor_label">Manage Tor</string>
-    <string name="permission_manage_tor_description">Enable this app to control the Tor service</string>
-    <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">It doesn\'t seem like you have Orfox installed. Want help with that, or should we just open the browser?</string>
-    <string name="install_apps_">Install apps?</string>
-    <string name="no_network_connectivity_putting_tor_to_sleep_">No network connectivity. Putting Tor to sleep…</string>
-    <string name="network_connectivity_is_good_waking_tor_up_">Network connectivity is good. Waking Tor up…</string>
-    <string name="updating_settings_in_tor_service">updating settings in Tor service</string>
-  
-    <string name="pref_socks_title">Tor SOCKS</string>
-    <string name="pref_socks_summary">Port that Tor offers its SOCKS proxy on (default: 9050 or 0 to disable)</string>
-    <string name="pref_socks_dialog">SOCKS Port Config</string>
-    
-    <string name="pref_transport_title">Tor TransProxy Port</string>
-    <string name="pref_transport_summary">Port that Tor offers its Transparent Proxy on (default: 9040 or 0 to disable)</string>
-    <string name="pref_transport_dialog">TransProxy Port Config</string>
-    
-    
-    <string name="pref_dnsport_title">Tor DNS Port</string>
-    <string name="pref_dnsport_summary">Port that Tor offers its DNS on (default: 5400 or 0 to disable)</string>
-    <string name="pref_dnsport_dialog">DNS Port Config</string>
-    
-    
-    <string name="pref_torrc_title">Torrc Custom Config</string>
-    <string name="pref_torrc_summary">EXPERTS ONLY: enter direct torrc config lines</string>
-    <string name="pref_torrc_dialog">Custom Torrc</string>
-    
-    <string name="wizard_tips_martus">Mobile Martus - Benetech Human Rights Documentation App</string>
-  <string name="your_tor_public_ips_">Your Tor Public IPs:</string>
-  <string name="please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_">"Please disable this app in Android->Settings->Apps if you are having problems with Orbot: "</string>
-  <string name="app_conflict">App Conflict</string>
-  
-
-  <string name="pref_transproxy_refresh_title">Transproxy Auto-Refresh</string>
-  <string name="pref_transproxy_refresh_summary">Re-apply Transproxy rules when the network state changes</string>
-  
-  <string name="pref_transproxy_flush_title">Transproxy FORCE REMOVE</string>
-  <string name="pref_transproxy_flush_summary">Tap here to flush all transproxy network rules NOW</string>
-  <string name="transparent_proxy_rules_flushed_">Transparent proxy rules flushed!</string>
-  <string name="you_do_not_have_root_access_enabled">You do not have ROOT access enabled</string>
-  <string name="you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_">You may need to stop and start Orbot for settings change to be enabled.</string>
-  
-  <string name="menu_vpn">VPN</string>
-  
-  <string name="kbps">kbps</string>
-  
-  <string name="mbps">mbps</string>
-  
-  <string name="kb">KB</string>
-  
-  <string name="mb">MB</string>
-  
-  <string name="bridges_updated">Bridges Updated</string>
-  
-  <string name="restart_orbot_to_use_this_bridge_">Please restart Orbot to enable the changes</string>
-  
-  <string name="menu_qr">QR Codes</string>
-  
-  <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">If your mobile network actively blocks Tor, you can use a Bridge to access the network. SELECT one of the bridge types above to enable bridges.</string>
-  
-  <string name="bridge_mode">Bridge Mode</string>
-  
-  <string name="get_bridges_email">Email</string>
-  <string name="get_bridges_web">Web</string>
-  
-  <string name="activate">Activate</string>
-  
-  <string name="apps_mode">Apps VPN Mode</string>
-  
-  <string name="you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_">You can enable all apps on your device to run through the Tor network using the VPN feature of Android.\n\n*WARNING* This is a new, experimental feature and in some cases may not start automatically, or may stop. It should NOT be used for anonymity, and ONLY used for getting through firewalls and filters.</string>
-  
-  <string name="send_email">Send Email</string>
-  
-  <string name="you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_">You can get a bridge address through email, the web or by scanning a bridge QR code. Select \'Email\' or \'Web\' below to request a bridge address.\n\nOnce you have an address, copy & paste it into the \"Bridges\" preference in Orbot\'s setting and restart.</string>
-  
-  <string name="install_orweb">Install Orfox</string>
-  
-  <string name="standard_browser">Standard Browser</string>
-  
-  <string name="note_only_standard_tor_bridges_work_on_intel_x86_atom_devices">NOTE: Only standard Tor bridges work on Intel X86/ATOM devices</string>
-
-	<string name="vpn_default_world">World</string>
-</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
deleted file mode 100644
index b3fe8af..0000000
--- a/res/values/styles.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <style name="NotificationText" parent="android:TextAppearance.StatusBar.EventContent" />
-    <style name="NotificationTitle" parent="android:TextAppearance.StatusBar.EventContent.Title" />
-</resources>
diff --git a/res/values/theme.xml b/res/values/theme.xml
deleted file mode 100644
index e51e533..0000000
--- a/res/values/theme.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<resources>
-    <style name="DefaultTheme" parent="Theme.AppCompat.NoActionBar">
-    </style>
-    
-</resources>
-
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
deleted file mode 100644
index f34548e..0000000
--- a/res/xml/preferences.xml
+++ /dev/null
@@ -1,269 +0,0 @@
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-
-<PreferenceCategory android:title="@string/pref_general_group">
-<CheckBoxPreference 
-android:defaultValue="true" 
-android:key="pref_start_boot"
-android:title="@string/pref_start_boot_title"
-android:summary="@string/pref_start_boot_summary"
-android:enabled="true"/>
-
-<CheckBoxPreference
-android:defaultValue="true" 
-android:key="pref_persistent_notifications"
-android:summary="@string/pref_use_persistent_notifications"
-android:enabled="true" 
-android:title="@string/pref_use_persistent_notifications_title"/>
-
-<CheckBoxPreference
-android:defaultValue="true" 
-android:key="pref_expanded_notifications"
-android:summary="@string/pref_use_expanded_notifications"
-android:enabled="true" 
-android:title="@string/pref_use_expanded_notifications_title"/>
-
-<CheckBoxPreference
-android:defaultValue="true" 
-android:key="pref_allow_background_starts"
-android:summary="@string/pref_allow_background_starts_summary"
-android:title="@string/pref_allow_background_starts_title"/>
-
- <ListPreference android:title="@string/set_locale_title"
-   android:key="pref_default_locale"
-   android:summary="@string/set_locale_summary"
-   android:defaultValue="en">
- </ListPreference>
-
-</PreferenceCategory>
-
-<PreferenceCategory android:title="@string/pref_trans_proxy_group">
-
-<CheckBoxPreference 
-android:defaultValue="false" 
-android:key="has_root"
-android:title="@string/pref_has_root"
-android:summary="@string/pref_has_root_summary"
-android:enabled="true"/>
-    
-<CheckBoxPreference 
-android:defaultValue="false" 
-android:key="pref_transparent"
-android:title="@string/pref_trans_proxy_title"
-android:summary="@string/pref_trans_proxy_summary"
-android:enabled="true"/>
-
-<CheckBoxPreference
-android:defaultValue="false" 
-android:key="pref_transparent_all"
-android:summary="@string/pref_transparent_all_summary"
-android:enabled="true" 
-android:title="@string/pref_transparent_all_title"/>
-
-<Preference
-android:defaultValue="" 
-android:key="pref_transparent_app_list"
-android:title="@string/pref_select_apps"
-android:summary="@string/pref_select_apps_summary"
-android:enabled="true"/>
-
-<CheckBoxPreference
-android:defaultValue="false" 
-android:key="pref_transparent_tethering"
-android:summary="@string/pref_transparent_tethering_summary"
-android:enabled="true" 
-android:dependency="has_root"
-android:title="@string/pref_transparent_tethering_title"/>
-
-
-</PreferenceCategory>
-
-<PreferenceCategory android:title="@string/pref_node_configuration"
- android:summary="@string/pref_node_configuration_summary">
- 
-<EditTextPreference android:key="pref_entrance_nodes"
-android:title="@string/pref_entrance_node"
-android:summary="@string/pref_entrance_node_summary"
-android:dialogTitle="@string/pref_entrance_node_dialog"
-/>
-<EditTextPreference android:key="pref_exit_nodes"
-android:title="@string/exit_nodes"
-android:summary="@string/fingerprints_nicks_countries_and_addresses_for_the_last_hop"
-android:dialogTitle="@string/enter_exit_nodes"
-/>
-<EditTextPreference android:key="pref_exclude_nodes"
-android:title="@string/exclude_nodes"
-android:summary="@string/fingerprints_nicks_countries_and_addresses_to_exclude"
-android:dialogTitle="@string/enter_exclude_nodes"
-/>
-
-<CheckBoxPreference android:defaultValue="false" 
-android:title="@string/strict_nodes" android:key="pref_strict_nodes" 
-android:summary="@string/use_only_these_specified_nodes"/>
-
-</PreferenceCategory> 
-<PreferenceCategory android:title="@string/bridges">
-
-<CheckBoxPreference android:defaultValue="false" 
-android:title="@string/use_bridges" android:key="pref_bridges_enabled" 
-android:summary="@string/enable_alternate_entrance_nodes_into_the_tor_network"/>
-
-<EditTextPreference android:key="pref_bridges_list"
-android:title="@string/bridges"
-android:summary="@string/ip_address_and_port_of_bridges"
-android:dialogTitle="@string/enter_bridge_addresses"
-android:defaultValue="@string/default_bridges"
-android:inputType="textMultiLine|textNoSuggestions"
-/>
-
-</PreferenceCategory>
-
-<PreferenceCategory android:title="@string/relays">
-<CheckBoxPreference android:key="pref_or"
-android:defaultValue="false"
-android:title="@string/relaying"
-android:summary="@string/enable_your_device_to_be_a_non_exit_relay"
-android:enabled="true"
-/>
-
-<EditTextPreference android:key="pref_or_port"
-android:defaultValue="9001"
-android:title="@string/relay_port"
-android:summary="@string/listening_port_for_your_tor_relay"
-android:dialogTitle="@string/enter_or_port"
-/>
-
-<EditTextPreference android:key="pref_or_nickname"
-android:defaultValue="OrbotRelay"
-android:title="@string/relay_nickname"
-android:summary="@string/the_nickname_for_your_tor_relay"
-android:dialogTitle="@string/enter_a_custom_relay_nickname"
-/>
-
-</PreferenceCategory>
-
-<PreferenceCategory android:title="ReachableAddresses">
-<CheckBoxPreference
-android:key="pref_reachable_addresses"
-android:defaultValue="false"
-android:title="@string/reachable_addresses"
-android:summary="@string/run_as_a_client_behind_a_firewall_with_restrictive_policies"
-android:enabled="true"></CheckBoxPreference>
-
-<EditTextPreference
-android:key="pref_reachable_addresses_ports"
-android:defaultValue="*:80,*:443"
-android:title="@string/reachable_ports"
-android:summary="@string/ports_reachable_behind_a_restrictive_firewall"
-android:dialogTitle="@string/enter_ports"
-/>
-</PreferenceCategory>
-
-<PreferenceCategory android:title="@string/pref_hs_group">
-<CheckBoxPreference android:title="@string/enable_hidden_services" 
-android:summary="@string/run_servers_accessible_via_the_tor_network" android:key="pref_hs_enable"></CheckBoxPreference>
-<EditTextPreference android:summary="@string/enter_localhost_ports_for_hidden_services" 
-android:title="@string/hidden_service_ports" android:enabled="false" android:key="pref_hs_ports"></EditTextPreference>
-
-<EditTextPreference android:key="pref_hs_hostname" 
-android:summary="@string/the_addressable_name_for_your_hidden_service_generated_automatically_" 
-android:title=".Onion Hostname"></EditTextPreference>
-</PreferenceCategory>
-
-<PreferenceCategory android:title="@string/pref_proxy_title">
-<EditTextPreference android:key="pref_proxy_type"
-android:title="@string/pref_proxy_type_title"
-android:summary="@string/pref_proxy_type_summary"
-android:dialogTitle="@string/pref_proxy_type_dialog"
-/>
-<EditTextPreference android:key="pref_proxy_host"
-android:title="@string/pref_proxy_host_title"
-android:summary="@string/pref_proxy_host_summary"
-android:dialogTitle="@string/pref_proxy_host_dialog"
-/>
-<EditTextPreference android:key="pref_proxy_port"
-android:title="@string/pref_proxy_port_title"
-android:summary="@string/pref_proxy_port_summary"
-android:dialogTitle="@string/pref_proxy_port_dialog"
-/>
-
-<EditTextPreference android:key="pref_proxy_username"
-android:title="@string/pref_proxy_username_title"
-android:summary="@string/pref_proxy_username_summary"
-android:dialogTitle="@string/pref_proxy_username_dialog"
-/>
-<EditTextPreference android:key="pref_proxy_password"
-android:title="@string/pref_proxy_password_title"
-android:summary="@string/pref_proxy_password_summary"
-android:dialogTitle="@string/pref_proxy_password_dialog"
-/>
-</PreferenceCategory>
-
-<PreferenceCategory android:title="Debug">
-    
-    <EditTextPreference android:key="pref_socks"
-android:title="@string/pref_socks_title"
-android:summary="@string/pref_socks_summary"
-android:dialogTitle="@string/pref_socks_dialog"
-android:defaultValue="9050"
-/>
-    
-      <EditTextPreference android:key="pref_transport"
-android:title="@string/pref_transport_title"
-android:summary="@string/pref_transport_summary"
-android:dialogTitle="@string/pref_transport_dialog"
-android:defaultValue="9040"
-/>
-      
-        <EditTextPreference android:key="pref_dnsport"
-android:title="@string/pref_dnsport_title"
-android:summary="@string/pref_dnsport_summary"
-android:dialogTitle="@string/pref_dnsport_dialog"
-android:defaultValue="5400"
-/>
-    
-  <EditTextPreference android:key="pref_custom_torrc"
-android:title="@string/pref_torrc_title"
-android:summary="@string/pref_torrc_summary"
-android:dialogTitle="@string/pref_torrc_dialog"
-android:defaultValue=""
-/>
-    
-  
-<CheckBoxPreference
-android:key="pref_enable_logging"
-android:defaultValue="false"
-android:title="Debug Log"
-android:summary="@string/enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_"
-android:enabled="true"></CheckBoxPreference>
-
-
-<CheckBoxPreference
-android:defaultValue="false" 
-android:key="pref_use_sys_iptables"
-android:summary="@string/pref_use_sys_iptables_summary"
-android:enabled="true" 
-android:title="@string/pref_use_sys_iptables_title"/>
-
-
-<CheckBoxPreference
-android:defaultValue="true" 
-android:key="pref_disable_network"
-android:summary="@string/pref_disable_network_summary"
-android:enabled="true" 
-android:title="@string/pref_disable_network_title"/>
-
-<CheckBoxPreference
-android:defaultValue="false" 
-android:key="pref_transproxy_refresh"
-android:summary="@string/pref_transproxy_refresh_summary"
-android:enabled="true" 
-android:title="@string/pref_transproxy_refresh_title"/>
-
-<Preference
-android:key="pref_transproxy_flush"
-android:summary="@string/pref_transproxy_flush_summary"
-android:enabled="true" 
-android:title="@string/pref_transproxy_flush_title"/>
-
-</PreferenceCategory>
-</PreferenceScreen>
diff --git a/src/com/google/zxing/integration/android/IntentIntegrator.java b/src/com/google/zxing/integration/android/IntentIntegrator.java
deleted file mode 100644
index d5628e8..0000000
--- a/src/com/google/zxing/integration/android/IntentIntegrator.java
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
- * Copyright 2009 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.zxing.integration.android;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Fragment;
-import android.content.ActivityNotFoundException;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.net.Uri;
-import android.os.Bundle;
-import android.util.Log;
-
-/**
- * <p>A utility class which helps ease integration with Barcode Scanner via {@link Intent}s. This is a simple
- * way to invoke barcode scanning and receive the result, without any need to integrate, modify, or learn the
- * project's source code.</p>
- *
- * <h2>Initiating a barcode scan</h2>
- *
- * <p>To integrate, create an instance of {@code IntentIntegrator} and call {@link #initiateScan()} and wait
- * for the result in your app.</p>
- *
- * <p>It does require that the Barcode Scanner (or work-alike) application is installed. The
- * {@link #initiateScan()} method will prompt the user to download the application, if needed.</p>
- *
- * <p>There are a few steps to using this integration. First, your {@link Activity} must implement
- * the method {@link Activity#onActivityResult(int, int, Intent)} and include a line of code like this:</p>
- *
- * <pre>{@code
- * public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- *   IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
- *   if (scanResult != null) {
- *     // handle scan result
- *   }
- *   // else continue with any other code you need in the method
- *   ...
- * }
- * }</pre>
- *
- * <p>This is where you will handle a scan result.</p>
- *
- * <p>Second, just call this in response to a user action somewhere to begin the scan process:</p>
- *
- * <pre>{@code
- * IntentIntegrator integrator = new IntentIntegrator(yourActivity);
- * integrator.initiateScan();
- * }</pre>
- *
- * <p>Note that {@link #initiateScan()} returns an {@link AlertDialog} which is non-null if the
- * user was prompted to download the application. This lets the calling app potentially manage the dialog.
- * In particular, ideally, the app dismisses the dialog if it's still active in its {@link Activity#onPause()}
- * method.</p>
- * 
- * <p>You can use {@link #setTitle(String)} to customize the title of this download prompt dialog (or, use
- * {@link #setTitleByID(int)} to set the title by string resource ID.) Likewise, the prompt message, and
- * yes/no button labels can be changed.</p>
- *
- * <p>Finally, you can use {@link #addExtra(String, Object)} to add more parameters to the Intent used
- * to invoke the scanner. This can be used to set additional options not directly exposed by this
- * simplified API.</p>
- * 
- * <p>By default, this will only allow applications that are known to respond to this intent correctly
- * do so. The apps that are allowed to response can be set with {@link #setTargetApplications(List)}.
- * For example, set to {@link #TARGET_BARCODE_SCANNER_ONLY} to only target the Barcode Scanner app itself.</p>
- *
- * <h2>Sharing text via barcode</h2>
- *
- * <p>To share text, encoded as a QR Code on-screen, similarly, see {@link #shareText(CharSequence)}.</p>
- *
- * <p>Some code, particularly download integration, was contributed from the Anobiit application.</p>
- *
- * <h2>Enabling experimental barcode formats</h2>
- *
- * <p>Some formats are not enabled by default even when scanning with {@link #ALL_CODE_TYPES}, such as
- * PDF417. Use {@link #initiateScan(java.util.Collection)} with
- * a collection containing the names of formats to scan for explicitly, like "PDF_417", to use such
- * formats.</p>
- *
- * @author Sean Owen
- * @author Fred Lin
- * @author Isaac Potoczny-Jones
- * @author Brad Drehmer
- * @author gcstang
- */
-public class IntentIntegrator {
-
-  public static final int REQUEST_CODE = 0x0000c0de; // Only use bottom 16 bits
-  private static final String TAG = IntentIntegrator.class.getSimpleName();
-
-  public static final String DEFAULT_TITLE = "Install Barcode Scanner?";
-  public static final String DEFAULT_MESSAGE =
-      "This application requires Barcode Scanner. Would you like to install it?";
-  public static final String DEFAULT_YES = "Yes";
-  public static final String DEFAULT_NO = "No";
-
-  private static final String BS_PACKAGE = "com.google.zxing.client.android";
-  private static final String BSPLUS_PACKAGE = "com.srowen.bs.android";
-
-  // supported barcode formats
-  public static final Collection<String> PRODUCT_CODE_TYPES = list("UPC_A", "UPC_E", "EAN_8", "EAN_13", "RSS_14");
-  public static final Collection<String> ONE_D_CODE_TYPES =
-      list("UPC_A", "UPC_E", "EAN_8", "EAN_13", "CODE_39", "CODE_93", "CODE_128",
-           "ITF", "RSS_14", "RSS_EXPANDED");
-  public static final Collection<String> QR_CODE_TYPES = Collections.singleton("QR_CODE");
-  public static final Collection<String> DATA_MATRIX_TYPES = Collections.singleton("DATA_MATRIX");
-
-  public static final Collection<String> ALL_CODE_TYPES = null;
-  
-  public static final List<String> TARGET_BARCODE_SCANNER_ONLY = Collections.singletonList(BS_PACKAGE);
-  public static final List<String> TARGET_ALL_KNOWN = list(
-          BSPLUS_PACKAGE,             // Barcode Scanner+
-          BSPLUS_PACKAGE + ".simple", // Barcode Scanner+ Simple
-          BS_PACKAGE                  // Barcode Scanner          
-          // What else supports this intent?
-      );
-  
-  private final Activity activity;
-  private final Fragment fragment;
-
-  private String title;
-  private String message;
-  private String buttonYes;
-  private String buttonNo;
-  private List<String> targetApplications;
-  private final Map<String,Object> moreExtras = new HashMap<String,Object>(3);
-
-  /**
-   * @param activity {@link Activity} invoking the integration
-   */
-  public IntentIntegrator(Activity activity) {
-    this.activity = activity;
-    this.fragment = null;
-    initializeConfiguration();
-  }
-
-  /**
-   * @param fragment {@link Fragment} invoking the integration.
-   *  {@link #startActivityForResult(Intent, int)} will be called on the {@link Fragment} instead
-   *  of an {@link Activity}
-   */
-  public IntentIntegrator(Fragment fragment) {
-    this.activity = fragment.getActivity();
-    this.fragment = fragment;
-    initializeConfiguration();
-  }
-
-  private void initializeConfiguration() {
-    title = DEFAULT_TITLE;
-    message = DEFAULT_MESSAGE;
-    buttonYes = DEFAULT_YES;
-    buttonNo = DEFAULT_NO;
-    targetApplications = TARGET_ALL_KNOWN;
-  }
-  
-  public String getTitle() {
-    return title;
-  }
-  
-  public void setTitle(String title) {
-    this.title = title;
-  }
-
-  public void setTitleByID(int titleID) {
-    title = activity.getString(titleID);
-  }
-
-  public String getMessage() {
-    return message;
-  }
-
-  public void setMessage(String message) {
-    this.message = message;
-  }
-
-  public void setMessageByID(int messageID) {
-    message = activity.getString(messageID);
-  }
-
-  public String getButtonYes() {
-    return buttonYes;
-  }
-
-  public void setButtonYes(String buttonYes) {
-    this.buttonYes = buttonYes;
-  }
-
-  public void setButtonYesByID(int buttonYesID) {
-    buttonYes = activity.getString(buttonYesID);
-  }
-
-  public String getButtonNo() {
-    return buttonNo;
-  }
-
-  public void setButtonNo(String buttonNo) {
-    this.buttonNo = buttonNo;
-  }
-
-  public void setButtonNoByID(int buttonNoID) {
-    buttonNo = activity.getString(buttonNoID);
-  }
-  
-  public Collection<String> getTargetApplications() {
-    return targetApplications;
-  }
-  
-  public final void setTargetApplications(List<String> targetApplications) {
-    if (targetApplications.isEmpty()) {
-      throw new IllegalArgumentException("No target applications");
-    }
-    this.targetApplications = targetApplications;
-  }
-  
-  public void setSingleTargetApplication(String targetApplication) {
-    this.targetApplications = Collections.singletonList(targetApplication);
-  }
-
-  public Map<String,?> getMoreExtras() {
-    return moreExtras;
-  }
-
-  public final void addExtra(String key, Object value) {
-    moreExtras.put(key, value);
-  }
-
-  /**
-   * Initiates a scan for all known barcode types with the default camera.
-   *
-   * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
-   *   if a prompt was needed, or null otherwise.
-   */
-  public final AlertDialog initiateScan() {
-    return initiateScan(ALL_CODE_TYPES, -1);
-  }
-  
-  /**
-   * Initiates a scan for all known barcode types with the specified camera.
-   *
-   * @param cameraId camera ID of the camera to use. A negative value means "no preference".
-   * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
-   *   if a prompt was needed, or null otherwise.
-   */
-  public final AlertDialog initiateScan(int cameraId) {
-    return initiateScan(ALL_CODE_TYPES, cameraId);
-  }
-
-  /**
-   * Initiates a scan, using the default camera, only for a certain set of barcode types, given as strings corresponding
-   * to their names in ZXing's {@code BarcodeFormat} class like "UPC_A". You can supply constants
-   * like {@link #PRODUCT_CODE_TYPES} for example.
-   *
-   * @param desiredBarcodeFormats names of {@code BarcodeFormat}s to scan for
-   * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
-   *   if a prompt was needed, or null otherwise.
-   */
-  public final AlertDialog initiateScan(Collection<String> desiredBarcodeFormats) {
-    return initiateScan(desiredBarcodeFormats, -1);
-  }
-  
-  /**
-   * Initiates a scan, using the specified camera, only for a certain set of barcode types, given as strings corresponding
-   * to their names in ZXing's {@code BarcodeFormat} class like "UPC_A". You can supply constants
-   * like {@link #PRODUCT_CODE_TYPES} for example.
-   *
-   * @param desiredBarcodeFormats names of {@code BarcodeFormat}s to scan for
-   * @param cameraId camera ID of the camera to use. A negative value means "no preference".
-   * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
-   *   if a prompt was needed, or null otherwise
-   */
-  public final AlertDialog initiateScan(Collection<String> desiredBarcodeFormats, int cameraId) {
-    Intent intentScan = new Intent(BS_PACKAGE + ".SCAN");
-    intentScan.addCategory(Intent.CATEGORY_DEFAULT);
-
-    // check which types of codes to scan for
-    if (desiredBarcodeFormats != null) {
-      // set the desired barcode types
-      StringBuilder joinedByComma = new StringBuilder();
-      for (String format : desiredBarcodeFormats) {
-        if (joinedByComma.length() > 0) {
-          joinedByComma.append(',');
-        }
-        joinedByComma.append(format);
-      }
-      intentScan.putExtra("SCAN_FORMATS", joinedByComma.toString());
-    }
-
-    // check requested camera ID
-    if (cameraId >= 0) {
-      intentScan.putExtra("SCAN_CAMERA_ID", cameraId);
-    }
-
-    String targetAppPackage = findTargetAppPackage(intentScan);
-    if (targetAppPackage == null) {
-      return showDownloadDialog();
-    }
-    intentScan.setPackage(targetAppPackage);
-    intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-    intentScan.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
-    attachMoreExtras(intentScan);
-    startActivityForResult(intentScan, REQUEST_CODE);
-    return null;
-  }
-
-  /**
-   * Start an activity. This method is defined to allow different methods of activity starting for
-   * newer versions of Android and for compatibility library.
-   *
-   * @param intent Intent to start.
-   * @param code Request code for the activity
-   * @see android.app.Activity#startActivityForResult(Intent, int)
-   * @see android.app.Fragment#startActivityForResult(Intent, int)
-   */
-  protected void startActivityForResult(Intent intent, int code) {
-    if (fragment == null) {
-      activity.startActivityForResult(intent, code);
-    } else {
-      fragment.startActivityForResult(intent, code);
-    }
-  }
-  
-  private String findTargetAppPackage(Intent intent) {
-    PackageManager pm = activity.getPackageManager();
-    List<ResolveInfo> availableApps = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
-    if (availableApps != null) {
-      for (String targetApp : targetApplications) {
-        if (contains(availableApps, targetApp)) {
-          return targetApp;
-        }
-      }
-    }
-    return null;
-  }
-  
-  private static boolean contains(Iterable<ResolveInfo> availableApps, String targetApp) {
-    for (ResolveInfo availableApp : availableApps) {
-      String packageName = availableApp.activityInfo.packageName;
-      if (targetApp.equals(packageName)) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  private AlertDialog showDownloadDialog() {
-    AlertDialog.Builder downloadDialog = new AlertDialog.Builder(activity);
-    downloadDialog.setTitle(title);
-    downloadDialog.setMessage(message);
-    downloadDialog.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
-      @Override
-      public void onClick(DialogInterface dialogInterface, int i) {
-        String packageName;
-        if (targetApplications.contains(BS_PACKAGE)) {
-          // Prefer to suggest download of BS if it's anywhere in the list
-          packageName = BS_PACKAGE;
-        } else {
-          // Otherwise, first option:
-          packageName = targetApplications.get(0);
-        }
-        Uri uri = Uri.parse("market://details?id=" + packageName);
-        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
-        try {
-          if (fragment == null) {
-            activity.startActivity(intent);
-          } else {
-            fragment.startActivity(intent);
-          }
-        } catch (ActivityNotFoundException anfe) {
-          // Hmm, market is not installed
-          Log.w(TAG, "Google Play is not installed; cannot install " + packageName);
-        }
-      }
-    });
-    downloadDialog.setNegativeButton(buttonNo, null);
-    downloadDialog.setCancelable(true);
-    return downloadDialog.show();
-  }
-
-
-  /**
-   * <p>Call this from your {@link Activity}'s
-   * {@link Activity#onActivityResult(int, int, Intent)} method.</p>
-   *
-   * @param requestCode request code from {@code onActivityResult()}
-   * @param resultCode result code from {@code onActivityResult()}
-   * @param intent {@link Intent} from {@code onActivityResult()}
-   * @return null if the event handled here was not related to this class, or
-   *  else an {@link IntentResult} containing the result of the scan. If the user cancelled scanning,
-   *  the fields will be null.
-   */
-  public static IntentResult parseActivityResult(int requestCode, int resultCode, Intent intent) {
-    if (requestCode == REQUEST_CODE) {
-      if (resultCode == Activity.RESULT_OK) {
-        String contents = intent.getStringExtra("SCAN_RESULT");
-        String formatName = intent.getStringExtra("SCAN_RESULT_FORMAT");
-        byte[] rawBytes = intent.getByteArrayExtra("SCAN_RESULT_BYTES");
-        int intentOrientation = intent.getIntExtra("SCAN_RESULT_ORIENTATION", Integer.MIN_VALUE);
-        Integer orientation = intentOrientation == Integer.MIN_VALUE ? null : intentOrientation;
-        String errorCorrectionLevel = intent.getStringExtra("SCAN_RESULT_ERROR_CORRECTION_LEVEL");
-        return new IntentResult(contents,
-                                formatName,
-                                rawBytes,
-                                orientation,
-                                errorCorrectionLevel);
-      }
-      return new IntentResult();
-    }
-    return null;
-  }
-
-
-  /**
-   * Defaults to type "TEXT_TYPE".
-   *
-   * @param text the text string to encode as a barcode
-   * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
-   *   if a prompt was needed, or null otherwise
-   * @see #shareText(CharSequence, CharSequence)
-   */
-  public final AlertDialog shareText(CharSequence text) {
-    return shareText(text, "TEXT_TYPE");
-  }
-
-  /**
-   * Shares the given text by encoding it as a barcode, such that another user can
-   * scan the text off the screen of the device.
-   *
-   * @param text the text string to encode as a barcode
-   * @param type type of data to encode. See {@code com.google.zxing.client.android.Contents.Type} constants.
-   * @return the {@link AlertDialog} that was shown to the user prompting them to download the app
-   *   if a prompt was needed, or null otherwise
-   */
-  public final AlertDialog shareText(CharSequence text, CharSequence type) {
-    Intent intent = new Intent();
-    intent.addCategory(Intent.CATEGORY_DEFAULT);
-    intent.setAction(BS_PACKAGE + ".ENCODE");
-    intent.putExtra("ENCODE_TYPE", type);
-    intent.putExtra("ENCODE_DATA", text);
-    String targetAppPackage = findTargetAppPackage(intent);
-    if (targetAppPackage == null) {
-      return showDownloadDialog();
-    }
-    intent.setPackage(targetAppPackage);
-    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
-    attachMoreExtras(intent);
-    if (fragment == null) {
-      activity.startActivity(intent);
-    } else {
-      fragment.startActivity(intent);
-    }
-    return null;
-  }
-  
-  private static List<String> list(String... values) {
-    return Collections.unmodifiableList(Arrays.asList(values));
-  }
-
-  private void attachMoreExtras(Intent intent) {
-    for (Map.Entry<String,Object> entry : moreExtras.entrySet()) {
-      String key = entry.getKey();
-      Object value = entry.getValue();
-      // Kind of hacky
-      if (value instanceof Integer) {
-        intent.putExtra(key, (Integer) value);
-      } else if (value instanceof Long) {
-        intent.putExtra(key, (Long) value);
-      } else if (value instanceof Boolean) {
-        intent.putExtra(key, (Boolean) value);
-      } else if (value instanceof Double) {
-        intent.putExtra(key, (Double) value);
-      } else if (value instanceof Float) {
-        intent.putExtra(key, (Float) value);
-      } else if (value instanceof Bundle) {
-        intent.putExtra(key, (Bundle) value);
-      } else {
-        intent.putExtra(key, value.toString());
-      }
-    }
-  }
-
-}
diff --git a/src/com/google/zxing/integration/android/IntentResult.java b/src/com/google/zxing/integration/android/IntentResult.java
deleted file mode 100644
index 2469af9..0000000
--- a/src/com/google/zxing/integration/android/IntentResult.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2009 ZXing authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.google.zxing.integration.android;
-
-/**
- * <p>Encapsulates the result of a barcode scan invoked through {@link IntentIntegrator}.</p>
- *
- * @author Sean Owen
- */
-public final class IntentResult {
-
-  private final String contents;
-  private final String formatName;
-  private final byte[] rawBytes;
-  private final Integer orientation;
-  private final String errorCorrectionLevel;
-
-  IntentResult() {
-    this(null, null, null, null, null);
-  }
-
-  IntentResult(String contents,
-               String formatName,
-               byte[] rawBytes,
-               Integer orientation,
-               String errorCorrectionLevel) {
-    this.contents = contents;
-    this.formatName = formatName;
-    this.rawBytes = rawBytes;
-    this.orientation = orientation;
-    this.errorCorrectionLevel = errorCorrectionLevel;
-  }
-
-  /**
-   * @return raw content of barcode
-   */
-  public String getContents() {
-    return contents;
-  }
-
-  /**
-   * @return name of format, like "QR_CODE", "UPC_A". See {@code BarcodeFormat} for more format names.
-   */
-  public String getFormatName() {
-    return formatName;
-  }
-
-  /**
-   * @return raw bytes of the barcode content, if applicable, or null otherwise
-   */
-  public byte[] getRawBytes() {
-    return rawBytes;
-  }
-
-  /**
-   * @return rotation of the image, in degrees, which resulted in a successful scan. May be null.
-   */
-  public Integer getOrientation() {
-    return orientation;
-  }
-
-  /**
-   * @return name of the error correction level used in the barcode, if applicable
-   */
-  public String getErrorCorrectionLevel() {
-    return errorCorrectionLevel;
-  }
-  
-  @Override
-  public String toString() {
-    StringBuilder dialogText = new StringBuilder(100);
-    dialogText.append("Format: ").append(formatName).append('\n');
-    dialogText.append("Contents: ").append(contents).append('\n');
-    int rawBytesLength = rawBytes == null ? 0 : rawBytes.length;
-    dialogText.append("Raw bytes: (").append(rawBytesLength).append(" bytes)\n");
-    dialogText.append("Orientation: ").append(orientation).append('\n');
-    dialogText.append("EC level: ").append(errorCorrectionLevel).append('\n');
-    return dialogText.toString();
-  }
-
-}
diff --git a/src/info/guardianproject/util/Languages.java b/src/info/guardianproject/util/Languages.java
deleted file mode 100644
index 6219661..0000000
--- a/src/info/guardianproject/util/Languages.java
+++ /dev/null
@@ -1,233 +0,0 @@
-package info.guardianproject.util;
-
-import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.content.ContextWrapper;
-import android.content.Intent;
-import android.content.res.AssetManager;
-import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.os.Build;
-import android.text.TextUtils;
-import android.util.DisplayMetrics;
-
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-public class Languages {
-    public static final String TAG = "Languages";
-
-    public static final Locale defaultLocale;
-    public static final Locale TIBETAN = new Locale("bo");
-    static final Locale localesToTest[] = {
-            Locale.ENGLISH, Locale.FRENCH, Locale.GERMAN,
-            Locale.ITALIAN, Locale.JAPANESE, Locale.KOREAN,
-            Locale.TRADITIONAL_CHINESE, Locale.SIMPLIFIED_CHINESE,
-            TIBETAN, new Locale("af"), new Locale("am"),
-            new Locale("ar"), new Locale("az"), new Locale("bg"),
-            new Locale("bn"), new Locale("ca"), new Locale("cs"),
-            new Locale("da"), new Locale("el"), new Locale("es"),
-            new Locale("et"), new Locale("eu"), new Locale("fa"),
-            new Locale("fi"), new Locale("gl"), new Locale("hi"),
-            new Locale("hr"), new Locale("hu"), new Locale("hy"),
-            new Locale("in"), new Locale("hy"), new Locale("in"),
-            new Locale("is"), new Locale("it"), new Locale("iw"),
-            new Locale("ka"), new Locale("kk"), new Locale("km"),
-            new Locale("kn"), new Locale("ky"), new Locale("lo"),
-            new Locale("lt"), new Locale("lv"), new Locale("mk"),
-            new Locale("ml"), new Locale("mn"), new Locale("mr"),
-            new Locale("ms"), new Locale("my"), new Locale("nb"),
-            new Locale("ne"), new Locale("nl"), new Locale("pl"),
-            new Locale("pt"), new Locale("rm"), new Locale("ro"),
-            new Locale("ru"), new Locale("si"), new Locale("sk"),
-            new Locale("sl"), new Locale("sn"), new Locale("sr"),
-            new Locale("sv"), new Locale("sw"), new Locale("ta"),
-            new Locale("te"), new Locale("th"), new Locale("tl"),
-            new Locale("tr"), new Locale("uk"), new Locale("ur"),
-            new Locale("uz"), new Locale("vi"), new Locale("zu"),
-    };
-
-    private static final String USE_SYSTEM_DEFAULT = "";
-    private static final String defaultString = "Use System Default";
-
-    private static Locale locale;
-    private static Languages singleton;
-    private static Class<?> clazz;
-    private static int resId;
-    private static Map<String, String> tmpMap = new TreeMap<String, String>();
-    private static Map<String, String> nameMap;
-
-    static {
-        defaultLocale = Locale.getDefault();
-    }
-
-    private Languages(Activity activity) {
-        AssetManager assets = activity.getAssets();
-        Configuration config = activity.getResources().getConfiguration();
-        // Resources() requires DisplayMetrics, but they are only needed for drawables
-        DisplayMetrics ignored = new DisplayMetrics();
-        activity.getWindowManager().getDefaultDisplay().getMetrics(ignored);
-        Resources resources;
-        Set<Locale> localeSet = new LinkedHashSet<Locale>();
-        for (Locale locale : localesToTest) {
-            config.locale = locale;
-            resources = new Resources(assets, ignored, config);
-            if (!TextUtils.equals(defaultString, resources.getString(resId))
-                    || locale.equals(Locale.ENGLISH))
-                localeSet.add(locale);
-        }
-        for (Locale locale : localeSet) {
-            if (locale.equals(TIBETAN)) {
-                // include English name for devices without Tibetan font support
-                tmpMap.put(TIBETAN.getLanguage(), "Tibetan བོད་སྐད།"); // Tibetan
-            } else if (locale.equals(Locale.SIMPLIFIED_CHINESE)) {
-                tmpMap.put(Locale.SIMPLIFIED_CHINESE.toString(), "中文 (中国)"); // Chinese (China)
-            } else if (locale.equals(Locale.TRADITIONAL_CHINESE)) {
-                tmpMap.put(Locale.TRADITIONAL_CHINESE.toString(), "中文 (台灣)"); // Chinese (Taiwan)
-            } else {
-                tmpMap.put(locale.getLanguage(), locale.getDisplayLanguage(locale));
-            }
-        }
-
-        /* USE_SYSTEM_DEFAULT is a fake one for displaying in a chooser menu. */
-        localeSet.add(null);
-        tmpMap.put(USE_SYSTEM_DEFAULT, activity.getString(resId));
-        nameMap = Collections.unmodifiableMap(tmpMap);
-    }
-
-    /**
-     * Get the instance of {@link Languages} to work with, providing the
-     * {@link Activity} that is will be working as part of, as well as the
-     * {@code resId} that has the exact string "Use System Default",
-     * i.e. {@code R.string.use_system_default}.
-     * <p/>
-     * That string resource {@code resId} is also used to find the supported
-     * translations: if an included translation has a translated string that
-     * matches that {@code resId}, then that language will be included as a
-     * supported language.
-     *
-     * @param clazz the {@link Class} of the default {@code Activity},
-     *              usually the main {@code Activity} from where the
-     *              Settings is launched from.
-     * @param resId the string resource ID to for the string "Use System Default",
-     *              e.g. {@code R.string.use_system_default}
-     * @return
-     */
-    public static void setup(Class<?> clazz, int resId) {
-        if (Languages.clazz == null) {
-            Languages.clazz = clazz;
-            Languages.resId = resId;
-        } else {
-            throw new RuntimeException("Languages singleton was already initialized, duplicate call to Languages.setup()!");
-        }
-    }
-
-    /**
-     * Get the singleton to work with.
-     *
-     * @param activity the {@link Activity} this is working as part of
-     * @return
-     */
-    public static Languages get(Activity activity) {
-        if (singleton == null) {
-            singleton = new Languages(activity);
-        }
-        return singleton;
-    }
-
-    //@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
-    @SuppressLint("NewApi")
-	public static void setLanguage(final ContextWrapper contextWrapper, String language, boolean refresh) {
-        if (locale != null && TextUtils.equals(locale.getLanguage(), language) && (!refresh)) {
-            return; // already configured
-        } else if (language == null || language == USE_SYSTEM_DEFAULT) {
-            locale = defaultLocale;
-        } else {
-            /* handle locales with the country in it, i.e. zh_CN, zh_TW, etc */
-            String localeSplit[] = language.split("_");
-            if (localeSplit.length > 1) {
-                locale = new Locale(localeSplit[0], localeSplit[1]);
-            } else {
-                locale = new Locale(language);
-            }
-        }
-
-        final Resources resources = contextWrapper.getBaseContext().getResources();
-        Configuration config = resources.getConfiguration();
-        if (Build.VERSION.SDK_INT >= 17) {
-            config.setLocale(locale);
-        } else {
-            config.locale = locale;
-        }
-        resources.updateConfiguration(config, resources.getDisplayMetrics());
-        Locale.setDefault(locale);
-
-    }
-
-    /**
-     * Force reload the {@link Activity to make language changes take effect.}
-     *
-     * @param activity the {@code Activity} to force reload
-     */
-    public static void forceChangeLanguage(Activity activity) {
-        Intent intent = activity.getIntent();
-        if (intent == null) // when launched as LAUNCHER
-            return;
-        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
-        activity.finish();
-        activity.overridePendingTransition(0, 0);
-        activity.startActivity(intent);
-        activity.overridePendingTransition(0, 0);
-    }
-
-    /**
-     * Return the name of the language based on the locale.
-     *
-     * @param locale
-     * @return
-     */
-    public String getName(String locale) {
-        String ret = nameMap.get(locale);
-        // if no match, try to return a more general name (i.e. English for
-        // en_IN)
-        if (ret == null && locale.contains("_"))
-            ret = nameMap.get(locale.split("_")[0]);
-        return ret;
-    }
-
-    /**
-     * Return an array of the names of all the supported languages, sorted to
-     * match what is returned by {@link Languages#getSupportedLocales()}.
-     *
-     * @return
-     */
-    public String[] getAllNames() {
-        return nameMap.values().toArray(new String[nameMap.size()]);
-    }
-
-    public int getPosition(Locale locale) {
-        String localeName = locale.getLanguage();
-        int i = 0;
-        for (String key : nameMap.keySet())
-            if (TextUtils.equals(key, localeName))
-                return i;
-            else
-                i++;
-        return -1;
-    }
-
-    /**
-     * Get sorted list of supported locales.
-     *
-     * @return
-     */
-    public String[] getSupportedLocales() {
-        Set<String> keys = nameMap.keySet();
-        return keys.toArray(new String[keys.size()]);
-    }
-}
diff --git a/src/net b/src/net
deleted file mode 120000
index ab37141..0000000
--- a/src/net
+++ /dev/null
@@ -1 +0,0 @@
-../external/jtorctl/net/
\ No newline at end of file
diff --git a/src/org/torproject/android/OrbotApp.java b/src/org/torproject/android/OrbotApp.java
deleted file mode 100644
index 7bbb649..0000000
--- a/src/org/torproject/android/OrbotApp.java
+++ /dev/null
@@ -1,78 +0,0 @@
-
-package org.torproject.android;
-
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.app.Application;
-import android.content.Intent;
-import android.content.res.Configuration;
-import android.os.Build;
-import android.text.TextUtils;
-import android.util.Log;
-
-import org.torproject.android.service.TorServiceConstants;
-
-import info.guardianproject.util.Languages;
-
-import java.io.File;
-import java.util.Locale;
-
-public class OrbotApp extends Application implements OrbotConstants
-{
-
-    private Locale locale;
-
-    public static File appBinHome;
-    public static File appCacheHome;
-
-    public static File fileTor;
-    public static File filePolipo;
-    public static File fileObfsclient;
-  // public static File fileMeekclient;
-    public static File fileXtables;
-    public static File fileTorRc;
-    public static File filePdnsd;
-    
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-        Prefs.setContext(this);
-
-        Languages.setup(OrbotMainActivity.class, R.string.menu_settings);
-        Languages.setLanguage(this, Prefs.getDefaultLocale(), true);
-
-        appBinHome = getDir(TorServiceConstants.DIRECTORY_TOR_BINARY,Application.MODE_PRIVATE);
-        appCacheHome = getDir(TorServiceConstants.DIRECTORY_TOR_DATA,Application.MODE_PRIVATE);
-
-        fileTor= new File(appBinHome, TorServiceConstants.TOR_ASSET_KEY);
-        filePolipo = new File(appBinHome, TorServiceConstants.POLIPO_ASSET_KEY);
-        fileObfsclient = new File(appBinHome, TorServiceConstants.OBFSCLIENT_ASSET_KEY);
-        fileXtables = new File(appBinHome, TorServiceConstants.IPTABLES_ASSET_KEY);
-        fileTorRc = new File(appBinHome, TorServiceConstants.TORRC_ASSET_KEY);
-        filePdnsd = new File(appBinHome, TorServiceConstants.PDNSD_ASSET_KEY);
-        
-    }
-
-    @Override
-    public void onConfigurationChanged(Configuration newConfig) {
-        super.onConfigurationChanged(newConfig);
-        Log.i(TAG, "onConfigurationChanged " + newConfig.locale.getLanguage());
-        Languages.setLanguage(this, Prefs.getDefaultLocale(), true);
-    }
-	
-    public static void forceChangeLanguage(Activity activity) {
-        Intent intent = activity.getIntent();
-        if (intent == null) // when launched as LAUNCHER
-            intent = new Intent(activity, OrbotMainActivity.class);
-        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
-        activity.finish();
-        activity.overridePendingTransition(0, 0);
-        activity.startActivity(intent);
-        activity.overridePendingTransition(0, 0);
-    }
-
-    public static Languages getLanguages(Activity activity) {
-        return Languages.get(activity);
-    }
-}
diff --git a/src/org/torproject/android/OrbotConstants.java b/src/org/torproject/android/OrbotConstants.java
deleted file mode 100644
index 10309fb..0000000
--- a/src/org/torproject/android/OrbotConstants.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot/The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-package org.torproject.android;
-
-public interface OrbotConstants {
-
-	public final static String TAG = "Orbot";
-
-	public final static String PREFS_KEY = "OrbotPrefs";
-	public final static String PREFS_KEY_TORIFIED = "PrefTord";
-
-	public final static int FILE_WRITE_BUFFER_SIZE = 2048;
-	
-	//path to check Tor against
-	public final static String URL_TOR_CHECK = "https://check.torproject.org";
-	
-    public final static String URL_TOR_BRIDGES = "https://bridges.torproject.org/bridges?transport=";
-
-	public final static String PREF_BRIDGES_UPDATED = "pref_bridges_enabled";
-	//public final static String PREF_BRIDGES_OBFUSCATED = "pref_bridges_obfuscated";
-    public final static String PREF_OR = "pref_or";
-    public final static String PREF_OR_PORT = "pref_or_port";
-    public final static String PREF_OR_NICKNAME = "pref_or_nickname";
-    public final static String PREF_REACHABLE_ADDRESSES = "pref_reachable_addresses";
-    public final static String PREF_REACHABLE_ADDRESSES_PORTS = "pref_reachable_addresses_ports";
-	public final static  int RESULT_CLOSE_ALL = 0;
-	
-	public final static String PREF_DISABLE_NETWORK = "pref_disable_network";
-	
-	public final static String PREF_TOR_SHARED_PREFS = "org.torproject.android_preferences";
-	
-	public final static int MAX_LOG_LENGTH = 10000;
-	
-	public final static String PREF_SOCKS = "pref_socks";
-	
-}
diff --git a/src/org/torproject/android/OrbotMainActivity.java b/src/org/torproject/android/OrbotMainActivity.java
deleted file mode 100644
index 0a4c25a..0000000
--- a/src/org/torproject/android/OrbotMainActivity.java
+++ /dev/null
@@ -1,1442 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - https://guardianproject.info */
-/* See LICENSE for licensing information */
-
-package org.torproject.android;
-
-import static org.torproject.android.OrbotConstants.TAG;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.text.NumberFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Locale;
-import java.util.Random;
-import java.util.StringTokenizer;
-
-import org.json.JSONArray;
-import org.torproject.android.service.TorService;
-import org.torproject.android.service.TorServiceConstants;
-import org.torproject.android.service.TorServiceUtils;
-import org.torproject.android.settings.SettingsPreferences;
-import org.torproject.android.ui.ImageProgressView;
-import org.torproject.android.ui.PromoAppsActivity;
-import org.torproject.android.ui.Rotate3dAnimation;
-import org.torproject.android.vpn.VPNEnableActivity;
-
-import android.annotation.SuppressLint;
-import android.app.ActivityManager;
-import android.app.ActivityManager.RunningServiceInfo;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.RemoteException;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.GestureDetector;
-import android.view.GestureDetector.SimpleOnGestureListener;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnLongClickListener;
-import android.view.View.OnTouchListener;
-import android.view.animation.AccelerateInterpolator;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.Spinner;
-import android.widget.TextView;
-import android.widget.Toast;
-import android.widget.ToggleButton;
-
-import com.google.zxing.integration.android.IntentIntegrator;
-import com.google.zxing.integration.android.IntentResult;
-
-public class OrbotMainActivity extends AppCompatActivity
-        implements OrbotConstants, OnLongClickListener, OnTouchListener {
-
-    /* Useful UI bits */
-    private TextView lblStatus = null; //the main text display widget
-    private ImageProgressView imgStatus = null; //the main touchable image for activating Orbot
-
-    private TextView downloadText = null;
-    private TextView uploadText = null;
-    private TextView mTxtOrbotLog = null;
-    
-    private Button mBtnBrowser = null;
-    private ToggleButton mBtnVPN = null;
-    private ToggleButton mBtnBridges = null;
-    
-    private Spinner spnCountries = null;
-
-	private DrawerLayout mDrawer;
-	private ActionBarDrawerToggle mDrawerToggle;
-	
-    /* Some tracking bits */
-    private String torStatus = null; //latest status reported from the tor service
-    private Intent lastStatusIntent;  // the last ACTION_STATUS Intent received
-
-    private SharedPreferences mPrefs = null;
-
-    private boolean autoStartFromIntent = false;
-    
-    private final static int REQUEST_VPN = 8888;
-    private final static int REQUEST_SETTINGS = 0x9874;
-
-    // message types for mStatusUpdateHandler
-    private final static int STATUS_UPDATE = 1;
-    private static final int MESSAGE_TRAFFIC_COUNT = 2;
-
-	public final static String INTENT_ACTION_REQUEST_HIDDEN_SERVICE = "org.torproject.android.REQUEST_HS_PORT";
-	public final static String INTENT_ACTION_REQUEST_START_TOR = "org.torproject.android.START_TOR";	
-
-	// for bridge loading from the assets default bridges.txt file
-    class Bridge
-    {
-    	String type;
-    	String config;
-    }
-    
-    private ArrayList<Bridge> alBridges = null;
-    
-    //this is needed for backwards compat back to Android 2.3.*
-    @SuppressLint("NewApi")
-    public View onCreateView(View parent, String name, Context context, AttributeSet attrs)
-    {
-        if(Build.VERSION.SDK_INT >= 11)
-          return super.onCreateView(parent, name, context, attrs);
-        return null;
-    }
-    
-    /** Called when the activity is first created. */
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        mPrefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
-        /* Create the widgets before registering for broadcasts to guarantee
-         * that the widgets exist when the status updates try to update them */
-    	doLayout();
-
-    	/* receive the internal status broadcasts, which are separate from the public
-    	 * status broadcasts to prevent other apps from sending fake/wrong status
-    	 * info to this app */
-        LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
-        lbm.registerReceiver(mLocalBroadcastReceiver,
-                new IntentFilter(TorServiceConstants.ACTION_STATUS));
-        lbm.registerReceiver(mLocalBroadcastReceiver,
-                new IntentFilter(TorServiceConstants.LOCAL_ACTION_BANDWIDTH));
-        lbm.registerReceiver(mLocalBroadcastReceiver,
-                new IntentFilter(TorServiceConstants.LOCAL_ACTION_LOG));
-	}
-
-	private void sendIntentToService(String action) {
-		Intent torService = new Intent(this, TorService.class);    
-		torService.setAction(action);
-		startService(torService);
-	}
-
-    private void stopTor() {
-        imgStatus.setImageResource(R.drawable.torstarting);
-        Intent torService = new Intent(this, TorService.class);
-        stopService(torService);
-    }
-
-    /**
-     * The state and log info from {@link TorService} are sent to the UI here in
-     * the form of a local broadcast. Regular broadcasts can be sent by any app,
-     * so local ones are used here so other apps cannot interfere with Orbot's
-     * operation.
-     */
-    private BroadcastReceiver mLocalBroadcastReceiver = new BroadcastReceiver() {
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-            if (action == null)
-                return;
-
-            if (action.equals(TorServiceConstants.LOCAL_ACTION_LOG)) {
-                Message msg = mStatusUpdateHandler.obtainMessage(STATUS_UPDATE);
-                msg.obj = intent.getStringExtra(TorServiceConstants.LOCAL_EXTRA_LOG);
-                msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
-                mStatusUpdateHandler.sendMessage(msg);
-
-            } else if (action.equals(TorServiceConstants.LOCAL_ACTION_BANDWIDTH)) {
-                long upload = intent.getLongExtra("up", 0);
-                long download = intent.getLongExtra("down", 0);
-                long written = intent.getLongExtra("written", 0);
-                long read = intent.getLongExtra("read", 0);
-
-                Message msg = mStatusUpdateHandler.obtainMessage(MESSAGE_TRAFFIC_COUNT);
-                msg.getData().putLong("download", download);
-                msg.getData().putLong("upload", upload);
-                msg.getData().putLong("readTotal", read);
-                msg.getData().putLong("writeTotal", written);
-                msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
-
-                mStatusUpdateHandler.sendMessage(msg);
-
-            } else if (action.equals(TorServiceConstants.ACTION_STATUS)) {
-                lastStatusIntent = intent;
-                
-                Message msg = mStatusUpdateHandler.obtainMessage(STATUS_UPDATE);
-                msg.getData().putString("status", intent.getStringExtra(TorServiceConstants.EXTRA_STATUS));
-
-                mStatusUpdateHandler.sendMessage(msg);
-            }
-        }
-    };
- 
-    private void doLayout ()
-    {
-        setContentView(R.layout.layout_main);
-        
-        setTitle(R.string.app_name);
-
-        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
-        setSupportActionBar(toolbar);
-        
-        mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
-          mDrawerToggle = new ActionBarDrawerToggle(
-              this,  mDrawer,        
-              toolbar,
-              android.R.string.ok, android.R.string.cancel
-          );
-
-      getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-      getSupportActionBar().setHomeButtonEnabled(true);
-      
-      mDrawer.setDrawerListener(mDrawerToggle);
-      mDrawerToggle.syncState();
-        
-        mTxtOrbotLog = (TextView)findViewById(R.id.orbotLog);
-        
-        lblStatus = (TextView)findViewById(R.id.lblStatus);
-        lblStatus.setOnLongClickListener(this);
-        imgStatus = (ImageProgressView)findViewById(R.id.imgStatus);
-        imgStatus.setOnLongClickListener(this);
-        imgStatus.setOnTouchListener(this);
-        
-        downloadText = (TextView)findViewById(R.id.trafficDown);
-        uploadText = (TextView)findViewById(R.id.trafficUp);
-        
-        
-        downloadText.setText(formatCount(0) + " / " + formatTotal(0));
-        uploadText.setText(formatCount(0) + " / " + formatTotal(0));
-    
-        // Gesture detection
-		mGestureDetector = new GestureDetector(this, new MyGestureDetector());
-		
-		mBtnBrowser = (Button)findViewById(R.id.btnBrowser);
-		mBtnBrowser.setOnClickListener(new View.OnClickListener ()
-		{
-
-			@Override
-			public void onClick(View v) {
-				doTorCheck();
-				
-			}
-
-		});
-		
-		mBtnBrowser.setEnabled(false);
-		
-		mBtnVPN = (ToggleButton)findViewById(R.id.btnVPN);
-		
-		boolean canDoVPN = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
-
-		if (!canDoVPN)
-		{
-			//if not SDK 14 or higher, we can't use the VPN feature
-			mBtnVPN.setVisibility(View.GONE);
-		}
-		else
-		{
-			boolean useVPN = Prefs.useVpn();
-			mBtnVPN.setChecked(useVPN);
-			
-			//auto start VPN if VPN is enabled
-			if (useVPN)
-			{
-				startActivity(new Intent(OrbotMainActivity.this,VPNEnableActivity.class));
-			}
-			
-			mBtnVPN.setOnClickListener(new View.OnClickListener ()
-			{
-	
-				@Override
-				public void onClick(View v) {
-	
-					if (mBtnVPN.isChecked())
-						startActivity(new Intent(OrbotMainActivity.this,VPNEnableActivity.class));
-					else
-						stopVpnService();
-					
-				}
-	
-			});
-		}
-		
-		
-		mBtnBridges = (ToggleButton)findViewById(R.id.btnBridges);
-		mBtnBridges.setChecked(Prefs.bridgesEnabled());
-		mBtnBridges.setOnClickListener(new View.OnClickListener ()
-		{
-
-			@Override
-			public void onClick(View v) {
-				if (Build.CPU_ABI.contains("arm"))
-				{       
-					promptSetupBridges (); //if ARM processor, show all bridge options
-				
-				}
-				else
-				{
-					Toast.makeText(OrbotMainActivity.this, R.string.note_only_standard_tor_bridges_work_on_intel_x86_atom_devices, Toast.LENGTH_LONG).show();
-					showGetBridgePrompt(""); //if other chip ar, only stock bridges are supported
-				}
-			}
-
-			
-		});
-		
-		
-		String currentExit = Prefs.getExitNodes();
-		int selIdx = -1;
-		
-		ArrayList<String> cList = new ArrayList<String>();
-		cList.add(0, getString(R.string.vpn_default_world));
-	
-		for (int i = 0; i < TorServiceConstants.COUNTRY_CODES.length; i++)
-		{
-			Locale locale = new Locale("",TorServiceConstants.COUNTRY_CODES[i]);
-			cList.add(locale.getDisplayCountry());
-			
-			if (currentExit.contains(TorServiceConstants.COUNTRY_CODES[i]))
-				selIdx = i+1;
-		}
-		
-		spnCountries = (Spinner)findViewById(R.id.spinnerCountry);
-		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, cList);
-		spnCountries.setAdapter(adapter);
-		
-		if (selIdx != -1)
-			spnCountries.setSelection(selIdx);
-		
-		spnCountries.setOnItemSelectedListener(new OnItemSelectedListener() {
-		    @Override
-		    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
-		        // your code here
-		    	
-		    	String country = null;
-		    	
-		    	if (position == 0)
-		    		country = "";
-		    	else
-		    		country =  '{' + TorServiceConstants.COUNTRY_CODES[position-1] + '}';
-		    	
-		    	Intent torService = new Intent(OrbotMainActivity.this, TorService.class);    
-				torService.setAction(TorServiceConstants.CMD_SET_EXIT);
-				torService.putExtra("exit",country);
-				startService(torService);
-	    	
-		    }
-
-		    @Override
-		    public void onNothingSelected(AdapterView<?> parentView) {
-		        // your code here
-		    }
-
-		});
-    }
-    
-    GestureDetector mGestureDetector;
-    
-
-    @Override
-    public boolean onTouch(View v, MotionEvent event) {
-        return mGestureDetector.onTouchEvent(event);
-	}
-   	
-    
-   /*
-    * Create the UI Options Menu (non-Javadoc)
-    * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
-    */
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        super.onCreateOptionsMenu(menu);
-        MenuInflater inflater = getMenuInflater();
-        inflater.inflate(R.menu.orbot_main, menu);
-
-        return true;
-    }
-    
-    
-
-    @Override
-	public boolean onOptionsItemSelected(MenuItem item) {
-		
-    	 if (item.getItemId() == R.id.menu_settings)
-         {
-             Intent intent = new Intent(OrbotMainActivity.this, SettingsPreferences.class);
-             startActivityForResult(intent, REQUEST_SETTINGS);
-         }
-         else if (item.getItemId() == R.id.menu_promo_apps)
-         {
-             startActivity(new Intent(OrbotMainActivity.this, PromoAppsActivity.class));
-
-         }
-         else if (item.getItemId() == R.id.menu_exit)
-         {
-                 //exit app
-                 doExit();
-                 
-                 
-         }
-         else if (item.getItemId() == R.id.menu_about)
-         {
-                 showAbout();
-                 
-                 
-         }
-         else if (item.getItemId() == R.id.menu_scan)
-         {
-         	IntentIntegrator integrator = new IntentIntegrator(OrbotMainActivity.this);
-         	integrator.initiateScan();
-         }
-         else if (item.getItemId() == R.id.menu_share_bridge)
-         {
-         	
-     		String bridges = Prefs.getBridgesList();
-         	
-     		if (bridges != null && bridges.length() > 0)
-     		{
-         		try {
-						bridges = "bridge://" + URLEncoder.encode(bridges,"UTF-8");
-	            		
-	                	IntentIntegrator integrator = new IntentIntegrator(OrbotMainActivity.this);
-	                	integrator.shareText(bridges);
-	                	
-					} catch (UnsupportedEncodingException e) {
-						// TODO Auto-generated catch block
-						e.printStackTrace();
-					}
-     		}
-
-         }
-     
-		return super.onOptionsItemSelected(item);
-	}
-
-	private void showAbout ()
-        {
-                
-            LayoutInflater li = LayoutInflater.from(this);
-            View view = li.inflate(R.layout.layout_about, null); 
-            
-            String version = "";
-            
-            try {
-                version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName + " (Tor " + TorServiceConstants.BINARY_TOR_VERSION + ")";
-            } catch (NameNotFoundException e) {
-                version = "Version Not Found";
-            }
-            
-            TextView versionName = (TextView)view.findViewById(R.id.versionName);
-            versionName.setText(version);    
-            
-                    new AlertDialog.Builder(this)
-            .setTitle(getString(R.string.button_about))
-            .setView(view)
-            .show();
-        }
-
-
-    /**
-     * This is our attempt to REALLY exit Orbot, and stop the background service
-     * However, Android doesn't like people "quitting" apps, and/or our code may
-     * not be quite right b/c no matter what we do, it seems like the TorService
-     * still exists
-     **/
-    private void doExit() {
-        stopTor();
-
-        // Kill all the wizard activities
-        setResult(RESULT_CLOSE_ALL);
-        finish();
-    }
-
-	protected void onPause() {
-		try
-		{
-			super.onPause();
-	
-			if (aDialog != null)
-				aDialog.dismiss();
-		}
-		catch (IllegalStateException ise)
-		{
-			//can happen on exit/shutdown
-		}
-	}
-
-	private void doTorCheck ()
-	{
-		
-		openBrowser(URL_TOR_CHECK,false);
-		
-
-	}
-	
-	private void enableHiddenServicePort (int hsPort) throws RemoteException, InterruptedException
-	{
-		
-		Editor pEdit = mPrefs.edit();
-		
-		String hsPortString = mPrefs.getString("pref_hs_ports", "");
-		String onionHostname = mPrefs.getString("pref_hs_hostname","");
-		
-		if (hsPortString.indexOf(hsPort+"")==-1)
-		{
-			if (hsPortString.length() > 0 && hsPortString.indexOf(hsPort+"")==-1)
-				hsPortString += ',' + hsPort;
-			else
-				hsPortString = hsPort + "";
-			
-			pEdit.putString("pref_hs_ports", hsPortString);
-			pEdit.putBoolean("pref_hs_enable", true);
-			
-			pEdit.commit();
-		}
-
-		if (onionHostname == null || onionHostname.length() == 0)
-		{
-			requestTorRereadConfig();
-
-			new Thread () {
-
-			    public void run ()
-				{
-					String onionHostname = mPrefs.getString("pref_hs_hostname","");
-
-					while (onionHostname.length() == 0)				
-					{
-						//we need to stop and start Tor
-						try {					
-							Thread.sleep(3000); //wait three seconds					
-						} catch (Exception e) {
-							// TODO Auto-generated catch block
-							e.printStackTrace();
-						}
-						 
-						onionHostname = mPrefs.getString("pref_hs_hostname","");						
-					}
-					
-					Intent nResult = new Intent();
-					nResult.putExtra("hs_host", onionHostname);
-					setResult(RESULT_OK, nResult);
-					finish();
-				}
-			}.start();
-		
-		}
-		else
-		{
-			Intent nResult = new Intent();
-			nResult.putExtra("hs_host", onionHostname);
-			setResult(RESULT_OK, nResult);
-			finish();
-		}
-	
-	}
-	
-	private synchronized void handleIntents ()
-	{
-		if (getIntent() == null)
-			return;
-		
-	    // Get intent, action and MIME type
-	    Intent intent = getIntent();
-	    String action = intent.getAction();
-	    Log.d(TAG, "handleIntents " + action);
-
-	    //String type = intent.getType();
-		
-		if (action == null)
-			return;
-		
-		if (action.equals(INTENT_ACTION_REQUEST_HIDDEN_SERVICE))
-		{
-        	final int hiddenServicePortRequest = getIntent().getIntExtra("hs_port", -1);
-
-			DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
-			    
-			    public void onClick(DialogInterface dialog, int which) {
-			        switch (which){
-			        case DialogInterface.BUTTON_POSITIVE:
-			            
-						try {
-							enableHiddenServicePort (hiddenServicePortRequest);
-							
-						} catch (RemoteException e) {
-							// TODO Auto-generated catch block
-							e.printStackTrace();
-						} catch (InterruptedException e) {
-							// TODO Auto-generated catch block
-							e.printStackTrace();
-						}
-
-						
-			            break;
-
-			        case DialogInterface.BUTTON_NEGATIVE:
-			            //No button clicked
-			        	finish();
-			            break;
-			        }
-			    }
-			};
-
-
-			String requestMsg = getString(R.string.hidden_service_request, hiddenServicePortRequest);
-			AlertDialog.Builder builder = new AlertDialog.Builder(this);
-			builder.setMessage(requestMsg).setPositiveButton("Allow", dialogClickListener)
-			    .setNegativeButton("Deny", dialogClickListener).show();
-			
-			return; //don't null the setIntent() as we need it later
-		}
-		else if (action.equals(INTENT_ACTION_REQUEST_START_TOR))
-		{
-			autoStartFromIntent = true;
-          
-            startTor();
-
-            //never allow backgrounds start from this type of intent start
-            //app devs who want background starts, can use the service intents
-            /**
-            if (Prefs.allowBackgroundStarts())
-            {            
-	            Intent resultIntent;
-	            if (lastStatusIntent == null) {
-	                resultIntent = new Intent(intent);
-	            } else {
-	                resultIntent = lastStatusIntent;
-	            }
-	            resultIntent.putExtra(TorServiceConstants.EXTRA_STATUS, torStatus);
-	            setResult(RESULT_OK, resultIntent);
-	            finish();
-            }*/
-          
-		}
-		else if (action.equals(Intent.ACTION_VIEW))
-		{
-			String urlString = intent.getDataString();
-			
-			if (urlString != null)
-			{
-				
-				if (urlString.toLowerCase().startsWith("bridge://"))
-
-				{
-					String newBridgeValue = urlString.substring(9); //remove the bridge protocol piece
-					newBridgeValue = URLDecoder.decode(newBridgeValue); //decode the value here
-
-					showAlert(getString(R.string.bridges_updated),getString(R.string.restart_orbot_to_use_this_bridge_) + newBridgeValue,false);	
-					
-					setNewBridges(newBridgeValue);
-				}
-			}
-		}
-		
-		updateStatus(null);
-		
-		setIntent(null);
-		
-		
-	}
-		
-	private void setNewBridges (String newBridgeValue)
-	{
-
-		Prefs.setBridgesList(newBridgeValue); //set the string to a preference
-		Prefs.putBridgesEnabled(true);
-		
-		setResult(RESULT_OK);
-		
-		mBtnBridges.setChecked(true);
-		
-		enableBridges(true);
-	}	
-
-	/*
-	 * Launch the system activity for Uri viewing with the provided url
-	 */
-	private void openBrowser(final String browserLaunchUrl,boolean forceExternal)
-	{
-		boolean isBrowserInstalled = appInstalledOrNot(TorServiceConstants.BROWSER_APP_USERNAME);
-		
-		if (mBtnVPN.isChecked()||forceExternal)
-		{
-			//use the system browser since VPN is on
-			Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
-			intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
-			startActivity(intent);
-		}
-		else if (Prefs.useTransparentProxying())
-		{
-			Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
-			intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
-			startActivity(intent);
-		}
-		else if (isBrowserInstalled)
-		{
-			startIntent(TorServiceConstants.BROWSER_APP_USERNAME,Intent.ACTION_VIEW,Uri.parse(browserLaunchUrl));						
-		}
-		else
-		{
-			AlertDialog aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
-              .setIcon(R.drawable.onion32)
-		      .setTitle(R.string.install_apps_)
-		      .setMessage(R.string.it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_)
-		      .setPositiveButton(R.string.install_orweb, new Dialog.OnClickListener ()
-		      {
-
-				@Override
-				public void onClick(DialogInterface dialog, int which) {
-
-					//prompt to install Orweb
-					Intent intent = new Intent(OrbotMainActivity.this,PromoAppsActivity.class);
-					startActivity(intent);
-					
-				}
-		    	  
-		      })
-		      .setNegativeButton(R.string.standard_browser, new Dialog.OnClickListener ()
-		      {
-
-				@Override
-				public void onClick(DialogInterface dialog, int which) {
-					Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
-					intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
-					startActivity(intent);
-					
-				}
-		    	  
-		      })
-		      .show();
-			  
-		}
-		
-	}
-	
-	
-	
-    
-
-    private void startIntent (String pkg, String action, Uri data)
-    {
-        Intent i;
-        PackageManager manager = getPackageManager();
-        try {
-            i = manager.getLaunchIntentForPackage(pkg);
-            if (i == null)
-                throw new PackageManager.NameNotFoundException();            
-            i.setAction(action);
-            i.setData(data);
-            startActivity(i);
-        } catch (PackageManager.NameNotFoundException e) {
-
-        }
-    }
-    
-    private boolean appInstalledOrNot(String uri)
-    {
-        PackageManager pm = getPackageManager();
-        try
-        {
-               PackageInfo pi = pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);               
-               return pi.applicationInfo.enabled;
-        }
-        catch (PackageManager.NameNotFoundException e)
-        {
-              return false;
-        }
-   }    
-    
-    @Override
-    protected void onActivityResult(int request, int response, Intent data) {
-        super.onActivityResult(request, response, data);
-
-        if (request == REQUEST_SETTINGS && response == RESULT_OK)
-        {
-            OrbotApp.forceChangeLanguage(this);
-            if (data != null && data.getBooleanExtra("transproxywipe", false))
-            {
-                    
-                    boolean result = flushTransProxy();
-                    
-                    if (result)
-                    {
-
-                        Toast.makeText(this, R.string.transparent_proxy_rules_flushed_, Toast.LENGTH_SHORT).show();
-                         
-                    }
-                    else
-                    {
-
-                        Toast.makeText(this, R.string.you_do_not_have_root_access_enabled, Toast.LENGTH_SHORT).show();
-                         
-                    }
-                
-            }
-            else if (torStatus == TorServiceConstants.STATUS_ON)
-            {
-                updateTransProxy();
-               // Toast.makeText(this, R.string.you_may_need_to_stop_and_start_orbot_for_settings_change_to_be_enabled_, Toast.LENGTH_SHORT).show();
-
-            }
-        }
-        else if (request == REQUEST_VPN && response == RESULT_OK)
-        {
-            sendIntentToService(TorServiceConstants.CMD_VPN);
-        }
-        
-        IntentResult scanResult = IntentIntegrator.parseActivityResult(request, response, data);
-        if (scanResult != null) {
-             // handle scan result
-        	
-        	String results = scanResult.getContents();
-        	
-        	if (results != null && results.length() > 0)
-        	{
-	        	try {
-					
-					int urlIdx = results.indexOf("://");
-					
-					if (urlIdx!=-1)
-					{
-						results = URLDecoder.decode(results, "UTF-8");
-						results = results.substring(urlIdx+3);
-
-						showAlert(getString(R.string.bridges_updated),getString(R.string.restart_orbot_to_use_this_bridge_) + results,false);	
-						
-						setNewBridges(results);
-					}
-					else
-					{
-						JSONArray bridgeJson = new JSONArray(results);
-						StringBuffer bridgeLines = new StringBuffer();
-						
-						for (int i = 0; i < bridgeJson.length(); i++)
-						{
-							String bridgeLine = bridgeJson.getString(i);
-							bridgeLines.append(bridgeLine).append("\n");
-						}
-						
-						setNewBridges(bridgeLines.toString());
-					}
-					
-					
-				} catch (Exception e) {
-					Log.e(TAG,"unsupported",e);
-				}
-        	}
-        	
-          }
-        
-    }
-    
-    public void promptSetupBridges ()
-    {
-    	loadBridgeDefaults();
-    	
-    	LayoutInflater li = LayoutInflater.from(this);
-        View view = li.inflate(R.layout.layout_diag, null); 
-        
-        TextView versionName = (TextView)view.findViewById(R.id.diaglog);
-        versionName.setText(R.string.if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_);    
-        
-        if (mBtnBridges.isChecked())
-        {
-	        new AlertDialog.Builder(this)
-	        .setTitle(R.string.bridge_mode)
-	        .setView(view)
-	        .setItems(R.array.bridge_options, new DialogInterface.OnClickListener() {
-               public void onClick(DialogInterface dialog, int which) {
-               // The 'which' argument contains the index position
-               // of the selected item
-            	   
-            	   switch (which)
-            	   {
-            	   case 0: //obfs 4;
-            		   setupBridgeType("obfs4");
-            		   enableBridges(true);
-
-            		   break;
-            	   case 1: //obfs3
-            		   setupBridgeType("obfs3");
-            		   enableBridges(true);
-
-            		   break;
-            	   case 2: //scramblesuit
-            		   setupBridgeType("scramblesuit");
-            		   enableBridges(true);
-
-            		   break;
-            	   case 3: //azure
-            		   Prefs.setBridgesList("2");
-            		   enableBridges(true);
-            		   
-            		   break;
-            	   case 4: //amazon
-                       Prefs.setBridgesList("1");
-            		   enableBridges(true);
-            		   
-            		   break;
-            	   case 5: //google
-                       Prefs.setBridgesList("0");
-            		   enableBridges(true);
-            		   break;	   
-            	   case 6:
-            		   showGetBridgePrompt("obfs4");
-            		   
-            		   break;
-            		  
-            	   }
-            	   
-               }
-           }).setNegativeButton(android.R.string.cancel, new Dialog.OnClickListener()
-	        {
-	        	@Override
-				public void onClick(DialogInterface dialog, int which) {
-					
-	            	//mBtnBridges.setChecked(false);
-					
-				}
-	        })
-	        .show();
-	        
-	       
-        }
-        else
-        {
-        	enableBridges(false);
-        }
-        
-    }
-    
-    private void showGetBridgePrompt (final String type)
-    {
-    	LayoutInflater li = LayoutInflater.from(this);
-        View view = li.inflate(R.layout.layout_diag, null); 
-        
-        TextView versionName = (TextView)view.findViewById(R.id.diaglog);
-        versionName.setText(R.string.you_must_get_a_bridge_address_by_email_web_or_from_a_friend_once_you_have_this_address_please_paste_it_into_the_bridges_preference_in_orbot_s_setting_and_restart_);    
-        
-        new AlertDialog.Builder(this)
-        .setTitle(R.string.bridge_mode)
-        .setView(view)
-        .setNegativeButton(android.R.string.cancel, new Dialog.OnClickListener()
-        {
-        	@Override
-			public void onClick(DialogInterface dialog, int which) {
-				//do nothing
-			}
-        })
-        .setNeutralButton(R.string.get_bridges_email, new Dialog.OnClickListener ()
-        {
-
-			@Override
-			public void onClick(DialogInterface dialog, int which) {
-				
-
-				sendGetBridgeEmail(type);
-
-			}
-
-       	 
-        })
-        .setPositiveButton(R.string.get_bridges_web, new Dialog.OnClickListener ()
-        {
-
-			@Override
-			public void onClick(DialogInterface dialog, int which) {
-				
-				openBrowser(URL_TOR_BRIDGES + type,true);
-
-			}
-
-       	 
-        }).show();
-    }
-    
-    private void sendGetBridgeEmail (String type)
-    {
-    	Intent intent = new Intent(Intent.ACTION_SEND);
-    	intent.setType("message/rfc822");
-		intent.putExtra(Intent.EXTRA_EMAIL  , new String[]{"bridges at torproject.org"});
-		
-		if (type != null)
-		{
-	    	intent.putExtra(Intent.EXTRA_SUBJECT, "get transport " + type);
-	    	intent.putExtra(Intent.EXTRA_TEXT, "get transport " + type);
-	    	
-		}
-		else
-		{
-			intent.putExtra(Intent.EXTRA_SUBJECT, "get bridges");
-			intent.putExtra(Intent.EXTRA_TEXT, "get bridges");
-			
-		}
-		
-    	startActivity(Intent.createChooser(intent, getString(R.string.send_email)));
-    }
-    
-    private void enableBridges (boolean enable)
-    {
-		Prefs.putBridgesEnabled(enable);
-
-		if (torStatus == TorServiceConstants.STATUS_ON)
-		{
-			String bridgeList = Prefs.getBridgesList();
-			if (bridgeList != null && bridgeList.length() > 0)
-			{
-				requestTorRereadConfig ();
-			}
-		}
-    }
-
-    private void requestTorRereadConfig() {
-        sendIntentToService(TorServiceConstants.CMD_SIGNAL_HUP);
-    }
-    
-    public void stopVpnService ()
-    {    	
-        sendIntentToService(TorServiceConstants.CMD_VPN_CLEAR);
-    }
-
-    private boolean flushTransProxy ()
-    {
-        sendIntentToService(TorServiceConstants.CMD_FLUSH);
-        return true;
-    }
-    
-    private boolean updateTransProxy ()
-    {
-        sendIntentToService(TorServiceConstants.CMD_UPDATE_TRANS_PROXY);
-        return true;
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-
-        if (mPrefs != null)
-        {
-			mBtnVPN.setChecked(Prefs.useVpn());			
-			mBtnBridges.setChecked(Prefs.bridgesEnabled());
-        }
-
-		requestTorStatus();
-
-		updateStatus(null);
-		
-    }
-
-    AlertDialog aDialog = null;
-    
-    //general alert dialog for mostly Tor warning messages
-    //sometimes this can go haywire or crazy with too many error
-    //messages from Tor, and the user cannot stop or exit Orbot
-    //so need to ensure repeated error messages are not spamming this method
-    private void showAlert(String title, String msg, boolean button)
-    {
-            try
-            {
-                    if (aDialog != null && aDialog.isShowing())
-                            aDialog.dismiss();
-            }
-            catch (Exception e){} //swallow any errors
-            
-             if (button)
-             {
-                            aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
-                     .setIcon(R.drawable.onion32)
-             .setTitle(title)
-             .setMessage(msg)
-             .setPositiveButton(android.R.string.ok, null)
-             .show();
-             }
-             else
-             {
-                     aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
-                     .setIcon(R.drawable.onion32)
-             .setTitle(title)
-             .setMessage(msg)
-             .show();
-             }
-    
-             aDialog.setCanceledOnTouchOutside(true);
-    }
-
-    /**
-     * Update the layout_main UI based on the status of {@link TorService}.
-     * {@code torServiceMsg} must never be {@code null}
-     */
-    private void updateStatus(String torServiceMsg) {
-
-    	if (torStatus == null)
-    		return; //UI not init'd yet
-    	
-        if (torStatus == TorServiceConstants.STATUS_ON) {
-        	
-            imgStatus.setImageResource(R.drawable.toron);
-
-            mBtnBrowser.setEnabled(true);
-
-            if (torServiceMsg != null)
-            {
-            	if (torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_HEADER))
-            		lblStatus.setText(torServiceMsg);
-            }
-        	else
-        		lblStatus.setText(getString(R.string.status_activated));
-
-
-            boolean showFirstTime = mPrefs.getBoolean("connect_first_time", true);
-
-            if (showFirstTime)
-            {
-                Editor pEdit = mPrefs.edit();
-                pEdit.putBoolean("connect_first_time", false);
-                pEdit.commit();
-                showAlert(getString(R.string.status_activated),
-                        getString(R.string.connect_first_time), true);
-            }
-
-            if (autoStartFromIntent)
-            {
-                autoStartFromIntent = false;
-                Intent resultIntent = lastStatusIntent;	            
-	            resultIntent.putExtra(TorServiceConstants.EXTRA_STATUS, torStatus);
-	            setResult(RESULT_OK, resultIntent);
-                finish();
-                Log.d(TAG, "autoStartFromIntent finish");
-            }
-            
-            
-
-        } else if (torStatus == TorServiceConstants.STATUS_STARTING) {
-
-            imgStatus.setImageResource(R.drawable.torstarting);
-
-            if (torServiceMsg != null)
-            {
-            	if (torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_BOOTSTRAPPED))
-            		lblStatus.setText(torServiceMsg);            	            
-            }
-            else
-            	lblStatus.setText(getString(R.string.status_starting_up));
-            
-            mBtnBrowser.setEnabled(false);
-
-        } else if (torStatus == TorServiceConstants.STATUS_STOPPING) {
-
-        	  if (torServiceMsg != null && torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_HEADER))
-              	lblStatus.setText(torServiceMsg);	
-        	  
-            imgStatus.setImageResource(R.drawable.torstarting);
-            lblStatus.setText(torServiceMsg);
-            mBtnBrowser.setEnabled(false);
-
-        } else if (torStatus == TorServiceConstants.STATUS_OFF) {
-
-            imgStatus.setImageResource(R.drawable.toroff);
-            lblStatus.setText(getString(R.string.press_to_start));
-            mBtnBrowser.setEnabled(false);
-        }
-
-        if (torServiceMsg != null && torServiceMsg.length() > 0)
-        {
-            mTxtOrbotLog.append(torServiceMsg + '\n');
-        }
-    }
-
-    /**
-     * Starts tor and related daemons by sending an
-     * {@link TorServiceConstants#ACTION_START} {@link Intent} to
-     * {@link TorService}
-     */
-    private void startTor() {
-        sendIntentToService(TorServiceConstants.ACTION_START);
-    }
-    
-    /**
-     * Request tor status without starting it
-     * {@link TorServiceConstants#ACTION_START} {@link Intent} to
-     * {@link TorService}
-     */
-    private void requestTorStatus() {
-        sendIntentToService(TorServiceConstants.ACTION_STATUS);
-    }
-
-    private boolean isTorServiceRunning() {
-        ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
-        for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
-            if (TorService.class.getName().equals(service.service.getClassName())) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public boolean onLongClick(View view) {
-
-        if (torStatus == TorServiceConstants.STATUS_OFF) {
-            lblStatus.setText(getString(R.string.status_starting_up));
-            startTor();
-        } else {
-        	lblStatus.setText(getString(R.string.status_shutting_down));
-        	
-            stopTor();
-        }
-        
-        return true;
-                
-    }
-
-// this is what takes messages or values from the callback threads or other non-mainUI threads
-//and passes them back into the main UI thread for display to the user
-    private Handler mStatusUpdateHandler = new Handler() {
-
-        @Override
-        public void handleMessage(final Message msg) {
-        	
-        	String newTorStatus = msg.getData().getString("status");
-        	String log = (String)msg.obj;
-        	
-        	if (torStatus == null && newTorStatus != null) //first time status
-        	{
-        		torStatus = newTorStatus;
-        		findViewById(R.id.pbConnecting).setVisibility(View.GONE);
-        		findViewById(R.id.frameMain).setVisibility(View.VISIBLE);
-        		updateStatus(log);
-        		
-        		//now you can handle the intents properly
-        		handleIntents();
-        		
-        	}
-        	else if (newTorStatus != null && !torStatus.equals(newTorStatus)) //status changed
-        	{
-        		torStatus = newTorStatus;
-        		updateStatus(log);
-        	}        	
-        	else if (log != null) //it is just a log
-        		updateStatus(log);
-        	
-            switch (msg.what) {
-                case MESSAGE_TRAFFIC_COUNT:
-
-                    Bundle data = msg.getData();
-                    DataCount datacount =  new DataCount(data.getLong("upload"),data.getLong("download"));     
-                    
-                    long totalRead = data.getLong("readTotal");
-                    long totalWrite = data.getLong("writeTotal");
-                
-                    downloadText.setText(formatCount(datacount.Download) + " / " + formatTotal(totalRead));
-                    uploadText.setText(formatCount(datacount.Upload) + " / " + formatTotal(totalWrite));
-
-                    break;
-                default:
-                    super.handleMessage(msg);
-            }
-        }
-    };
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-          LocalBroadcastManager.getInstance(this).unregisterReceiver(mLocalBroadcastReceiver);
-
-    }
-
-    public class DataCount {
-           // data uploaded
-           public long Upload;
-           // data downloaded
-           public long Download;
-           
-           DataCount(long Upload, long Download){
-               this.Upload = Upload;
-               this.Download = Download;
-           }
-       }
-       
-    private String formatCount(long count) {
-        NumberFormat numberFormat = NumberFormat.getInstance(Locale.getDefault());
-        // Converts the supplied argument into a string.
-        // Under 2Mb, returns "xxx.xKb"
-        // Over 2Mb, returns "xxx.xxMb"
-        if (count < 1e6)
-            return numberFormat.format(Math.round(((float) ((int) (count * 10 / 1024)) / 10)))
-                    + getString(R.string.kbps);
-        else
-            return numberFormat.format(Math
-                    .round(((float) ((int) (count * 100 / 1024 / 1024)) / 100)))
-                    + getString(R.string.mbps);
-    }
-
-    private String formatTotal(long count) {
-        NumberFormat numberFormat = NumberFormat.getInstance(Locale.getDefault());
-        // Converts the supplied argument into a string.
-        // Under 2Mb, returns "xxx.xKb"
-        // Over 2Mb, returns "xxx.xxMb"
-        if (count < 1e6)
-            return numberFormat.format(Math.round(((float) ((int) (count * 10 / 1024)) / 10)))
-                    + getString(R.string.kb);
-        else
-            return numberFormat.format(Math
-                    .round(((float) ((int) (count * 100 / 1024 / 1024)) / 100)))
-                    + getString(R.string.mb);
-    }
-
-      private static final float ROTATE_FROM = 0.0f;
-        private static final float ROTATE_TO = 360.0f*4f;// 3.141592654f * 32.0f;
-
-    public void spinOrbot (float direction)
-    {
-            sendIntentToService (TorServiceConstants.CMD_NEWNYM);
-        
-        
-            Toast.makeText(this, R.string.newnym, Toast.LENGTH_SHORT).show();
-            
-        //    Rotate3dAnimation rotation = new Rotate3dAnimation(ROTATE_FROM, ROTATE_TO*direction, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
-             Rotate3dAnimation rotation = new Rotate3dAnimation(ROTATE_FROM, ROTATE_TO*direction, imgStatus.getWidth()/2f,imgStatus.getWidth()/2f,20f,false);
-             rotation.setFillAfter(true);
-              rotation.setInterpolator(new AccelerateInterpolator());
-              rotation.setDuration((long) 2*1000);
-              rotation.setRepeatCount(0);
-              imgStatus.startAnimation(rotation);
-              
-        
-    }
-    
-    class MyGestureDetector extends SimpleOnGestureListener {
-            @Override
-            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
-                try {                    
-                    if (torStatus == TorServiceConstants.STATUS_ON)
-                    {
-                        float direction = 1f;
-                        if (velocityX < 0)
-                            direction = -1f;
-                        spinOrbot (direction);
-                    }
-                } catch (Exception e) {
-                    // nothing
-                }
-                return false;
-            }
-    }
-    
-    private void loadBridgeDefaults ()
-    {
-    	if (alBridges == null)
-    	{
-	    	alBridges = new ArrayList<Bridge>();
-	    	
-	    	try
-	    	{
-	    	 	BufferedReader in=
-	    	        new BufferedReader(new InputStreamReader(getAssets().open("bridges.txt"), "UTF-8"));
-	    	    String str;
-	
-	    	    while ((str=in.readLine()) != null) {
-	    	    
-	    	    	StringTokenizer st = new StringTokenizer (str," ");
-	    	    	Bridge b = new Bridge();
-	    	    	b.type = st.nextToken();
-	    	    	
-	    	    	StringBuffer sbConfig = new StringBuffer();
-	    	    	
-	    	    	while(st.hasMoreTokens())
-	    	    		sbConfig.append(st.nextToken()).append(' ');
-	    	    	
-	    	    	b.config = sbConfig.toString().trim();
-	    	    	
-	    	    	alBridges.add(b);
-	    	    	
-	    	    }
-	
-	    	    in.close();
-	    	}
-	    	catch (Exception e)
-	    	{
-	    		e.printStackTrace();
-	    	}
-    	}    	
-    	
-    }
-    
-    private void setupBridgeType (String type)
-    {
-    	StringBuffer sbConfig = new StringBuffer ();
-    	
-    	//we should randomly sort alBridges so we don't have the same bridge order each time
-    	long seed = System.nanoTime();
-    	Collections.shuffle(alBridges, new Random(seed));
-    	
-    	//let's just pull up to 2 bridges from the defaults at time
-    	int maxBridges = 2;
-    	int bridgeCount = 0;
-    	
-    	//now go through the list to find the bridges we want
-    	for (Bridge b : alBridges)
-    	{
-    		if (b.type.equals(type))
-    		{
-    			
-    			sbConfig.append(b.type);
-    			sbConfig.append(' ');
-    			sbConfig.append(b.config);      			
-    			
-    			bridgeCount++;
-    			
-    			if (bridgeCount == maxBridges)
-    				break;
-    			else
-    				sbConfig.append("\n");
-    		}
-    	}
-    	
-    	setNewBridges(sbConfig.toString());
-    }
-}
diff --git a/src/org/torproject/android/Prefs.java b/src/org/torproject/android/Prefs.java
deleted file mode 100644
index d79f160..0000000
--- a/src/org/torproject/android/Prefs.java
+++ /dev/null
@@ -1,134 +0,0 @@
-
-package org.torproject.android;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.text.TextUtils;
-
-import org.torproject.android.service.TorServiceUtils;
-
-import java.util.Locale;
-
-public class Prefs {
-    private final static String PREF_BRIDGES_ENABLED = "pref_bridges_enabled";
-    private final static String PREF_BRIDGES_LIST = "pref_bridges_list";
-    private final static String PREF_DEFAULT_LOCALE = "pref_default_locale";
-    private final static String PREF_ENABLE_LOGGING = "pref_enable_logging";
-    private final static String PREF_EXPANDED_NOTIFICATIONS = "pref_expanded_notifications";
-    private final static String PREF_HAS_ROOT = "has_root";
-    private final static String PREF_PERSIST_NOTIFICATIONS = "pref_persistent_notifications";
-    private final static String PREF_START_ON_BOOT = "pref_start_boot";
-    private final static String PREF_ALLOW_BACKGROUND_STARTS = "pref_allow_background_starts";
-    private final static String PREF_TRANSPARENT = "pref_transparent";
-    private final static String PREF_TRANSPARENT_ALL = "pref_transparent_all";
-    private final static String PREF_TRANSPARENT_TETHERING = "pref_transparent_tethering";
-    private final static String PREF_TRANSPROXY_REFRESH = "pref_transproxy_refresh";
-    private final static String PREF_USE_SYSTEM_IPTABLES = "pref_use_sys_iptables";
-    private final static String PREF_USE_VPN = "pref_vpn";
-    private final static String PREF_EXIT_NODES = "pref_exit_nodes";
-    
-    private static SharedPreferences prefs;
-
-    public static void setContext(Context context) {
-        if (prefs == null)
-            prefs = TorServiceUtils.getSharedPrefs(context);
-    }
-
-    private static void putBoolean(String key, boolean value) {
-        prefs.edit().putBoolean(key, value).apply();
-    }
-
-    private static void putString(String key, String value) {
-        prefs.edit().putString(key, value).apply();
-    }
-
-    public static boolean bridgesEnabled() {
-        return prefs.getBoolean(PREF_BRIDGES_ENABLED, false);
-    }
-
-    public static void putBridgesEnabled(boolean value) {
-        putBoolean(PREF_BRIDGES_ENABLED, value);
-    }
-
-    public static String getBridgesList() {
-        return prefs.getString(PREF_BRIDGES_LIST, "");
-    }
-
-    public static void setBridgesList(String value) {
-        putString(PREF_BRIDGES_LIST, value);
-    }
-
-    public static String getDefaultLocale() {
-        return prefs.getString(PREF_DEFAULT_LOCALE, Locale.getDefault().getLanguage());
-    }
-
-    public static void setDefaultLocale(String value) {
-        putString(PREF_DEFAULT_LOCALE, value);
-    }
-
-    public static boolean useSystemIpTables() {
-        return prefs.getBoolean(PREF_USE_SYSTEM_IPTABLES, false);
-    }
-
-    public static boolean useRoot() {
-        return prefs.getBoolean(PREF_HAS_ROOT, false);
-    }
-
-    public static boolean useTransparentProxying() {
-        return prefs.getBoolean(PREF_TRANSPARENT, false);
-    }
-
-    public static boolean transparentProxyAll() {
-        return prefs.getBoolean(PREF_TRANSPARENT_ALL, false);
-    }
-
-    public static boolean transparentTethering() {
-        return prefs.getBoolean(PREF_TRANSPARENT_TETHERING, false);
-    }
-
-    public static boolean transProxyNetworkRefresh() {
-        return prefs.getBoolean(PREF_TRANSPROXY_REFRESH, false);
-    }
-
-    public static boolean expandedNotifications() {
-        return prefs.getBoolean(PREF_EXPANDED_NOTIFICATIONS, false);
-    }
-
-    public static boolean useDebugLogging() {
-        return prefs.getBoolean(PREF_ENABLE_LOGGING, false);
-    }
-
-    public static boolean persistNotifications() {
-        return prefs.getBoolean(PREF_PERSIST_NOTIFICATIONS, true);
-    }
-
-    public static boolean allowBackgroundStarts() {
-        return prefs.getBoolean(PREF_ALLOW_BACKGROUND_STARTS, true);
-    }
-
-    public static boolean useVpn() {
-        return prefs.getBoolean(PREF_USE_VPN, false);
-    }
-
-    public static void putUseVpn(boolean value) {
-        putBoolean(PREF_USE_VPN, value);
-    }
-
-    public static boolean startOnBoot() {
-        return prefs.getBoolean(PREF_START_ON_BOOT, true);
-    }
-
-    public static void putStartOnBoot(boolean value) {
-        putBoolean(PREF_START_ON_BOOT, value);
-    }
-    
-    public static String getExitNodes ()
-    {
-    	return prefs.getString(PREF_EXIT_NODES, "");
-    }
-    
-    public static void setExitNodes (String exits)
-    {
-    	putString(PREF_EXIT_NODES,exits);
-    }
-}
diff --git a/src/org/torproject/android/service/DummyActivity.java b/src/org/torproject/android/service/DummyActivity.java
deleted file mode 100644
index 5400ba4..0000000
--- a/src/org/torproject/android/service/DummyActivity.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.torproject.android.service;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-/*
- * To combat background service being stopped/swiped
- */
-public class DummyActivity extends Activity {
-	@Override
-	public void onCreate( Bundle icicle ) {
-		super.onCreate( icicle );
-		finish();
-	}
-}
\ No newline at end of file
diff --git a/src/org/torproject/android/service/HiddenServiceManager.java b/src/org/torproject/android/service/HiddenServiceManager.java
deleted file mode 100644
index 6b0d32d..0000000
--- a/src/org/torproject/android/service/HiddenServiceManager.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.torproject.android.service;
-
-
-//list view with add/remove hidden services - user is prompted for port
-
-public class HiddenServiceManager {
-
-}
-/*
- * 
- * ## Once you have configured a hidden service, you can look at the
-## contents of the file ".../hidden_service/hostname" for the address
-## to tell people.
-##
-## HiddenServicePort x y:z says to redirect requests on port x to the
-## address y:z.
-
-#HiddenServiceDir @LOCALSTATEDIR@/lib/tor/hidden_service/
-#HiddenServicePort 80 127.0.0.1:80
-
-#HiddenServiceDir @LOCALSTATEDIR@/lib/tor/other_hidden_service/
-#HiddenServicePort 80 127.0.0.1:80
-#HiddenServicePort 22 127.0.0.1:22
-*/
-
diff --git a/src/org/torproject/android/service/OnBootReceiver.java b/src/org/torproject/android/service/OnBootReceiver.java
deleted file mode 100644
index 36891e8..0000000
--- a/src/org/torproject/android/service/OnBootReceiver.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package org.torproject.android.service;
-
-
-import org.torproject.android.Prefs;
-import org.torproject.android.vpn.VPNEnableActivity;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-
-public class OnBootReceiver extends BroadcastReceiver {
-	
-	@Override
-	public void onReceive(Context context, Intent intent) {
-	    Prefs.setContext(context);
-		if (Prefs.startOnBoot())
-		{			
-
-			if (Prefs.useVpn())
-				startVpnService(context); //VPN will start Tor once it is done
-			else
-				startService(TorServiceConstants.ACTION_START, context);
-				
-		}
-	}
-	
-	public void startVpnService (final Context context)
-    	{
-		   Intent intent = new Intent(context,VPNEnableActivity.class);
-           intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-           context.startActivity(intent);
-    	}
-
-	private void startService (String action, Context context)
-	{
-		
-		Intent torService = new Intent(context, TorService.class);    
-		torService.setAction(action);
-		context.startService(torService);
-		
-        
-	}
-	
-	
-}
-
diff --git a/src/org/torproject/android/service/StartTorReceiver.java b/src/org/torproject/android/service/StartTorReceiver.java
deleted file mode 100644
index 087b01f..0000000
--- a/src/org/torproject/android/service/StartTorReceiver.java
+++ /dev/null
@@ -1,36 +0,0 @@
-
-package org.torproject.android.service;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.text.TextUtils;
-
-import org.torproject.android.Prefs;
-
-public class StartTorReceiver extends BroadcastReceiver implements TorServiceConstants {
-
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        /* sanitize the Intent before forwarding it to TorService */
-        Prefs.setContext(context);
-        String action = intent.getAction();
-        if (TextUtils.equals(action, ACTION_START)) {
-            String packageName = intent.getStringExtra(EXTRA_PACKAGE_NAME);
-            if (Prefs.allowBackgroundStarts()) {
-                Intent startTorIntent = new Intent(context, TorService.class);
-                startTorIntent.setAction(action);
-                if (packageName != null)
-                    startTorIntent.putExtra(EXTRA_PACKAGE_NAME, packageName);
-                context.startService(startTorIntent);
-            } else if (!TextUtils.isEmpty(packageName)) {
-                // let the requesting app know that the user has disabled
-                // starting via Intent
-                Intent startsDisabledIntent = new Intent(ACTION_STATUS);
-                startsDisabledIntent.putExtra(EXTRA_STATUS, STATUS_STARTS_DISABLED);
-                startsDisabledIntent.setPackage(packageName);
-                context.sendBroadcast(startsDisabledIntent);
-            }
-        }
-    }
-}
diff --git a/src/org/torproject/android/service/TorResourceInstaller.java b/src/org/torproject/android/service/TorResourceInstaller.java
deleted file mode 100644
index 67dc32d..0000000
--- a/src/org/torproject/android/service/TorResourceInstaller.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-package org.torproject.android.service;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintStream;
-import java.io.StringBufferInputStream;
-import java.util.ArrayList;
-import java.util.concurrent.TimeoutException;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.R;
-
-import android.content.Context;
-import android.os.Build;
-import android.util.Log;
-
-public class TorResourceInstaller implements TorServiceConstants {
-
-    
-    File installFolder;
-    Context context;
-    
-    public TorResourceInstaller (Context context, File installFolder)
-    {
-        this.installFolder = installFolder;
-        
-        this.context = context;
-    }
-    
-    public void deleteDirectory(File file) {
-        if( file.exists() ) {
-            if (file.isDirectory()) {
-                File[] files = file.listFiles();
-                for(int i=0; i<files.length; i++) {
-                    if(files[i].isDirectory()) {
-                        deleteDirectory(files[i]);
-                    }
-                    else {
-                        files[i].delete();
-                    }
-                }
-            }
-                
-            file.delete();
-        }
-    }
-    
-    private final static String COMMAND_RM_FORCE = "rm -f ";
-    private final static String MP3_EXT = ".mp3";
-    //        
-    /*
-     * Extract the Tor resources from the APK file using ZIP
-     */
-    public boolean installResources () throws IOException, FileNotFoundException, TimeoutException
-    {
-        
-        InputStream is;
-        File outFile;
-
-        String cpuPath = "armeabi";
-            
-        if (Build.CPU_ABI.contains("x86"))
-        	cpuPath = "x86";
-        
-        deleteDirectory(installFolder);
-        
-        installFolder.mkdirs();
-        
-        Shell shell = Shell.startShell(new ArrayList<String>(),installFolder.getAbsolutePath());
-        
-        is = context.getResources().openRawResource(R.raw.torrc);
-        outFile = new File(installFolder, TORRC_ASSET_KEY);
-        shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
-        streamToFile(is,outFile, false, false);
-        
-        is = context.getResources().openRawResource(R.raw.torpolipo);
-        outFile = new File(installFolder, POLIPOCONFIG_ASSET_KEY);
-        shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
-        streamToFile(is,outFile, false, false);
-    
-        //only install if ARM (GoLang only supports ARM for now)
-        if (cpuPath.equals("armeabi"))
-        {
-        	 cpuPath = "armeabi";
-            is = context.getAssets().open(cpuPath + "/" + OBFSCLIENT_ASSET_KEY + MP3_EXT);
-	        outFile = new File(installFolder, OBFSCLIENT_ASSET_KEY);
-	        shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
-	        streamToFile(is,outFile, false, true);
-	        setExecutable(outFile);
-	        /**
-            is = context.getAssets().open(cpuPath + "/" + MEEK_ASSET_KEY + MP3_EXT);
-	        outFile = new File(installFolder, MEEK_ASSET_KEY);
-	        shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
-	        streamToFile(is,outFile, false, true);
-	        setExecutable(outFile);
-	        */
-	        
-        }
-                
-        is = context.getAssets().open(cpuPath + '/' + TOR_ASSET_KEY + MP3_EXT);
-        outFile = new File(installFolder, TOR_ASSET_KEY);
-        shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
-        streamToFile(is,outFile, false, true);
-        setExecutable(outFile);
-    
-        is = context.getAssets().open(cpuPath + '/' + POLIPO_ASSET_KEY + MP3_EXT);
-        outFile = new File(installFolder, POLIPO_ASSET_KEY);
-        shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
-        streamToFile(is,outFile, false, true);
-        setExecutable(outFile);
-    
-        is = context.getAssets().open(cpuPath + '/' + IPTABLES_ASSET_KEY + MP3_EXT);
-        outFile = new File(installFolder, IPTABLES_ASSET_KEY);
-        shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
-        streamToFile(is,outFile, false, true);
-        setExecutable(outFile);
-        
-        is = context.getAssets().open(cpuPath + '/' + PDNSD_ASSET_KEY + MP3_EXT);
-        outFile = new File(installFolder, PDNSD_ASSET_KEY);
-        shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
-        streamToFile(is,outFile, false, true);
-        setExecutable(outFile);
-        
-        installGeoIP();
-    
-        return true;
-    }
-    
-    public boolean updateTorConfigCustom (File fileTorRcCustom, String extraLines) throws IOException, FileNotFoundException, TimeoutException
-    {
-    	if (fileTorRcCustom.exists())
-    	{
-    		fileTorRcCustom.delete();
-    		Log.d("torResources","deleting existing torrc.custom");
-    	}
-    	else
-    		fileTorRcCustom.createNewFile();
-    	
-    	FileOutputStream fos = new FileOutputStream(fileTorRcCustom, false);
-    	PrintStream ps = new PrintStream(fos);
-    	ps.print(extraLines);
-    	ps.close();
-    	
-        return true;
-    }
-    
-    public boolean updatePolipoConfig (File filePolipo, String extraLines) throws IOException, FileNotFoundException, TimeoutException
-    {
-        
-        InputStream is;
-        
-        Shell shell = Shell.startShell(new ArrayList<String>(),installFolder.getAbsolutePath());
-        
-        is = context.getResources().openRawResource(R.raw.torpolipo);        
-        shell.add(new SimpleCommand(COMMAND_RM_FORCE + filePolipo.getAbsolutePath())).waitForFinish();
-        streamToFile(is,filePolipo, false, false);
-
-        if (extraLines != null && extraLines.length() > 0)
-        {
-            StringBufferInputStream sbis = new StringBufferInputStream('\n' + extraLines + '\n');
-            streamToFile(sbis,filePolipo,true,false);
-        }
-        
-        shell.close();
-        
-        return true;
-    }
-    
-    public boolean installPolipoConf () throws IOException, FileNotFoundException, TimeoutException
-    {
-        
-        InputStream is;
-        File outFile;
-        
-        Shell shell = Shell.startShell(new ArrayList<String>(),installFolder.getAbsolutePath());
-        
-        is = context.getResources().openRawResource(R.raw.torpolipo);
-        outFile = new File(installFolder, POLIPOCONFIG_ASSET_KEY);
-        shell.add(new SimpleCommand(COMMAND_RM_FORCE + outFile.getAbsolutePath())).waitForFinish();
-        streamToFile(is,outFile, false, false);
-        
-        return true;
-    }
-    
-    /*
-     * Extract the Tor binary from the APK file using ZIP
-     */
-    
-    private boolean installGeoIP () throws IOException, FileNotFoundException
-    {
-        
-        InputStream is;
-        File outFile;
-        
-        outFile = new File(installFolder, GEOIP_ASSET_KEY);
-        is = context.getResources().openRawResource(R.raw.geoip);
-        streamToFile(is, outFile, false, true);
-        
-        is = context.getResources().openRawResource(R.raw.geoip6);
-        outFile = new File(installFolder, GEOIP6_ASSET_KEY);
-        streamToFile(is, outFile, false, true);
-    
-        return true;
-    }
-    
-    /*
-    private static void copyAssetFile(Context ctx, String asset, File file) throws IOException, InterruptedException
-    {
-        
-        DataOutputStream out = new DataOutputStream(new FileOutputStream(file));
-        InputStream is = new GZIPInputStream(ctx.getAssets().open(asset));
-        
-        byte buf[] = new byte[8172];
-        int len;
-        while ((len = is.read(buf)) > 0) {
-            out.write(buf, 0, len);
-        }
-        out.close();
-        is.close();
-    }*/
-    
-    /*
-     * Write the inputstream contents to the file
-     */
-    public static boolean streamToFile(InputStream stm, File outFile, boolean append, boolean zip) throws IOException
-
-    {
-        byte[] buffer = new byte[FILE_WRITE_BUFFER_SIZE];
-
-        int bytecount;
-
-        OutputStream stmOut = new FileOutputStream(outFile.getAbsolutePath(), append);
-        ZipInputStream zis = null;
-        
-        if (zip)
-        {
-            zis = new ZipInputStream(stm);            
-            ZipEntry ze = zis.getNextEntry();
-            stm = zis;
-            
-        }
-        
-        while ((bytecount = stm.read(buffer)) > 0)
-        {
-
-            stmOut.write(buffer, 0, bytecount);
-
-        }
-
-        stmOut.close();
-        stm.close();
-        
-        if (zis != null)
-            zis.close();
-        
-        
-        return true;
-
-    }
-    
-    //copy the file from inputstream to File output - alternative impl
-    public static boolean copyFile (InputStream is, File outputFile)
-    {
-        
-        try {
-        	if (outputFile.exists())
-        		outputFile.delete();
-        	
-            boolean newFile = outputFile.createNewFile();
-            DataOutputStream out = new DataOutputStream(new FileOutputStream(outputFile));
-            DataInputStream in = new DataInputStream(is);
-            
-            int b = -1;
-            byte[] data = new byte[1024];
-            
-            while ((b = in.read(data)) != -1) {
-                out.write(data);
-            }
-            
-            if (b == -1); //rejoice
-            
-            //
-            out.flush();
-            out.close();
-            in.close();
-            // chmod?
-            
-            return newFile;
-            
-            
-        } catch (IOException ex) {
-            Log.e(OrbotConstants.TAG, "error copying binary", ex);
-            return false;
-        }
-
-    }
-    
-    
-
-   
-    /**
-     * Copies a raw resource file, given its ID to the given location
-     * @param ctx context
-     * @param resid resource id
-     * @param file destination file
-     * @param mode file permissions (E.g.: "755")
-     * @throws IOException on error
-     * @throws InterruptedException when interrupted
-     */
-    public static void copyRawFile(Context ctx, int resid, File file, String mode, boolean isZipd) throws IOException, InterruptedException
-    {
-        final String abspath = file.getAbsolutePath();
-        // Write the iptables binary
-        final FileOutputStream out = new FileOutputStream(file);
-        InputStream is = ctx.getResources().openRawResource(resid);
-        
-        if (isZipd)
-        {
-            ZipInputStream zis = new ZipInputStream(is);            
-            ZipEntry ze = zis.getNextEntry();
-            is = zis;
-        }
-        
-        byte buf[] = new byte[1024];
-        int len;
-        while ((len = is.read(buf)) > 0) {
-            out.write(buf, 0, len);
-        }
-        out.close();
-        is.close();
-        // Change the permissions
-        Runtime.getRuntime().exec("chmod "+mode+" "+abspath).waitFor();
-    }
-    /**
-     * Asserts that the binary files are installed in the bin directory.
-     * @param ctx context
-     * @param showErrors indicates if errors should be alerted
-     * @return false if the binary files could not be installed
-     */
-    /*
-    public static boolean assertIpTablesBinaries(Context ctx, boolean showErrors) throws Exception {
-        boolean changed = false;
-        
-        // Check iptables_g1
-        File file = new File(ctx.getDir("bin",0), "iptables");
-        copyRawFile(ctx, R.raw.iptables, file, CHMOD_EXEC, false);
-                
-        return true;
-    }*/
-    
-
-    private void setExecutable(File fileBin) {
-        fileBin.setReadable(true);
-        fileBin.setExecutable(true);
-        fileBin.setWritable(false);
-        fileBin.setWritable(true, true);
-    }
-
-}
diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java
deleted file mode 100644
index 5ab7bed..0000000
--- a/src/org/torproject/android/service/TorService.java
+++ /dev/null
@@ -1,2276 +0,0 @@
-/* Copyright (c) 2009-2011, Nathan Freitas, Orbot / The Guardian Project - https://guardianproject.info/apps/orbot */
-/* See LICENSE for licensing information */
-/*
- * Code for iptables binary management taken from DroidWall GPLv3
- * Copyright (C) 2009-2010  Rodrigo Zechin Rosauro
- */
-
-package org.torproject.android.service;
-
-
-import android.annotation.SuppressLint;
-import android.app.Notification;
-import android.app.Notification.Builder;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.app.Service;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.ContextWrapper;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.net.VpnService;
-import android.os.Build;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.support.v4.content.LocalBroadcastManager;
-import android.text.TextUtils;
-import android.util.Log;
-import android.widget.RemoteViews;
-
-import org.torproject.android.control.ConfigEntry;
-import org.torproject.android.control.EventHandler;
-import org.torproject.android.control.TorControlConnection;
-
-import org.json.JSONArray;
-import org.json.JSONObject;
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.OrbotApp;
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.OrbotMainActivity;
-import org.torproject.android.Prefs;
-import org.torproject.android.R;
-import org.torproject.android.settings.AppManager;
-import org.torproject.android.settings.TorifiedApp;
-import org.torproject.android.vpn.OrbotVpnManager;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Proxy;
-import java.net.Socket;
-import java.net.URL;
-import java.net.URLConnection;
-import java.text.Normalizer;
-import java.text.NumberFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Properties;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeoutException;
-
-public class TorService extends VpnService implements TorServiceConstants, OrbotConstants, EventHandler
-{
-    
-    private String mCurrentStatus = STATUS_OFF;
-    
-    private final static int CONTROL_SOCKET_TIMEOUT = 0;
-        
-    private TorControlConnection conn = null;
-    private Socket torConnSocket = null;
-    private int mLastProcessId = -1;
-    
-    private int mPortHTTP = HTTP_PROXY_PORT_DEFAULT;
-    private int mPortSOCKS = SOCKS_PROXY_PORT_DEFAULT;
-    
-    private static final int NOTIFY_ID = 1;
-    private static final int TRANSPROXY_NOTIFY_ID = 2;
-    private static final int ERROR_NOTIFY_ID = 3;
-    private static final int HS_NOTIFY_ID = 4;
-    
-    private static final int MAX_START_TRIES = 3;
-
-    private ArrayList<String> configBuffer = null;
-    private ArrayList<String> resetBuffer = null;
-
-    private boolean isTorUpgradeAndConfigComplete = false;
-
-    private File fileControlPort;
-    
-    private TorTransProxy mTransProxy;
-
-    private long mTotalTrafficWritten = 0;
-    private long mTotalTrafficRead = 0;
-    private boolean mConnectivity = true; 
-    private int mNetworkType = -1;
-
-    private long lastRead = -1;
-    private long lastWritten = -1;
-    
-    private NotificationManager mNotificationManager = null;
-    private Notification.Builder mNotifyBuilder;
-    private Notification mNotification;
-    private boolean mNotificationShowing = false;
-
-	boolean mIsLollipop = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
-
-    private ExecutorService mExecutor = Executors.newFixedThreadPool(1);
-
-    private NumberFormat mNumberFormat = null;
-    
-    private OrbotVpnManager mVpnManager;
-
-    public void debug(String msg)
-    {
-        if (Prefs.useDebugLogging())
-        {
-            Log.d(TAG,msg);
-            sendCallbackLogMessage(msg);    
-
-        }
-    }
-    
-    public void logException(String msg, Exception e)
-    {
-        if (Prefs.useDebugLogging())
-        {
-            Log.e(TAG,msg,e);
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
-            e.printStackTrace(new PrintStream(baos));
-            
-            sendCallbackLogMessage(msg + '\n'+ new String(baos.toByteArray()));
-            
-        }
-        else
-            sendCallbackLogMessage(msg);
-            
-
-    }
-    
-    
-    private boolean findExistingTorDaemon() {
-        try {
-            mLastProcessId = initControlConnection(3, true);
-
-            if (mLastProcessId != -1 && conn != null) {
-                sendCallbackLogMessage(getString(R.string.found_existing_tor_process));
-                sendCallbackStatus(STATUS_ON);
-                return true;
-            }
-        } catch (Exception e) {
-        }
-        return false;
-    }
-
-    /* (non-Javadoc)
-     * @see android.app.Service#onLowMemory()
-     */
-    @Override
-    public void onLowMemory() {
-        super.onLowMemory();
-        
-        logNotice( "Low Memory Warning!");
-        
-    }
-
-    private void clearNotifications ()
-    {
-        if (mNotificationManager != null)
-            mNotificationManager.cancelAll();
-        
-
-        hmBuiltNodes.clear();
-        mNotificationShowing = false;
-    }
-	        
-    @SuppressLint("NewApi")
-    private void showToolbarNotification (String notifyMsg, int notifyType, int icon)
-     {        
-         
-         //Reusable code.
-         Intent intent = new Intent(TorService.this, OrbotMainActivity.class);
-         PendingIntent pendIntent = PendingIntent.getActivity(TorService.this, 0, intent, 0);
- 
-        if (mNotifyBuilder == null)
-        {
-            
-            mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
-                
-            if (mNotifyBuilder == null)
-            {
-                mNotifyBuilder = new Notification.Builder(this)
-                    .setContentTitle(getString(R.string.app_name))
-                    .setSmallIcon(R.drawable.ic_stat_tor);
-
-                mNotifyBuilder.setContentIntent(pendIntent);
-            }        
-                                
-        }
-
-        mNotifyBuilder.setContentText(notifyMsg);
-        mNotifyBuilder.setSmallIcon(icon);
-        
-        if (notifyType != NOTIFY_ID)
-        {
-            mNotifyBuilder.setTicker(notifyMsg);
-        //    mNotifyBuilder.setLights(Color.GREEN, 1000, 1000);
-        }
-        else
-        {
-            mNotifyBuilder.setTicker(null);
-        }
-        
-        mNotifyBuilder.setOngoing(Prefs.persistNotifications());
-        
-        mNotification = mNotifyBuilder.build();
-        
-        if (Build.VERSION.SDK_INT >= 16 && Prefs.expandedNotifications()) {
-            // Create remote view that needs to be set as bigContentView for the notification.
-             RemoteViews expandedView = new RemoteViews(this.getPackageName(), 
-                     R.layout.layout_notification_expanded);
-             
-             StringBuffer sbInfo = new StringBuffer();
-             
-             if (notifyType == NOTIFY_ID)
-                 expandedView.setTextViewText(R.id.text, notifyMsg);
-             else
-             {
-                 expandedView.setTextViewText(R.id.info, notifyMsg);
-             }
-
-             if (hmBuiltNodes.size() > 0)
-             {
-                 Set<String> itBuiltNodes = hmBuiltNodes.keySet();
-                 for (String key : itBuiltNodes)
-                 {
-                     Node node = hmBuiltNodes.get(key);
-                     
-                     if (node.ipAddress != null)
-                     {
-                         sbInfo.append(node.ipAddress);
-                     
-                         if (node.country != null)
-                             sbInfo.append(' ').append(node.country);
-                     
-                         if (node.organization != null)
-                             sbInfo.append(" (").append(node.organization).append(')');
-                     
-                         sbInfo.append('\n');
-                     }
-                     
-                 }
-                 
-                 expandedView.setTextViewText(R.id.text2, sbInfo.toString());
-             }
-             
-             expandedView.setTextViewText(R.id.title, getString(R.string.app_name)); 
-             
-             expandedView.setImageViewResource(R.id.icon, icon);
-            mNotification.bigContentView = expandedView;
-        }
-        
-        if (Prefs.persistNotifications() && (!mNotificationShowing))
-        {
-            startForeground(NOTIFY_ID, mNotification);
-            logNotice("Set background service to FOREGROUND");
-        }
-        else
-        {
-            mNotificationManager.notify(NOTIFY_ID, mNotification);
-        }
-        
-        mNotificationShowing = true;
-     }
-    
-
-    /* (non-Javadoc)
-     * @see android.app.Service#onStart(android.content.Intent, int)
-     */
-    public int onStartCommand(Intent intent, int flags, int startId) {
-        if (intent != null)
-            new Thread (new IncomingIntentRouter(intent)).start();
-        else
-            Log.d(TAG, "Got null onStartCommand() intent");
-
-        return Service.START_STICKY;
-    }
-    
-    private class IncomingIntentRouter implements Runnable
-    {
-        Intent mIntent;
-        
-        public IncomingIntentRouter (Intent intent)
-        {
-            mIntent = intent;
-        }
-        
-        public void run() {
-            String action = mIntent.getAction();
-
-            if (action != null) {
-                if (action.equals(ACTION_START)) {
-                    replyWithStatus(mIntent);
-                    startTor();
-                    // stopTor() is called when the Service is destroyed
-                }
-                else if (action.equals(ACTION_STATUS)) {
-                    replyWithStatus(mIntent);                    
-                }
-                else if (action.equals(CMD_SIGNAL_HUP)) {
-                    requestTorRereadConfig();
-                } else if (action.equals(CMD_NEWNYM)) {
-                    newIdentity();
-                } else if (action.equals(CMD_FLUSH)) {
-                    flushTransparentProxyRules();
-                } else if (action.equals(CMD_UPDATE_TRANS_PROXY)) {
-                    processTransparentProxying();
-                } else if (action.equals(CMD_VPN)) {
-                    enableVpnProxy();
-                } else if (action.equals(CMD_VPN_CLEAR)) {
-                    clearVpnProxy();
-                } else if (action.equals(CMD_SET_EXIT)) {
-                	
-                	setExitNode(mIntent.getStringExtra("exit"));
-                	
-                } else {
-                    Log.w(TAG, "unhandled TorService Intent: " + action);
-                }
-            }
-        }
-    }
-    
-    @Override
-    public void onTaskRemoved(Intent rootIntent){
-         Log.d(TAG,"task removed");
-         Intent intent = new Intent( this, DummyActivity.class );
-         intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
-         startActivity( intent );
-    }
-
-    @Override
-    public void onDestroy() {
-        stopTor();
-        unregisterReceiver(mNetworkStateReceiver);
-        super.onDestroy();
-    }
-    
-    @Override
-    public void onRevoke ()
-    {
-    	if (mVpnManager != null)
-    		mVpnManager.onRevoke();
-    	
-    	super.onRevoke();
-    }
-
-    private void stopTor() {
-        Log.i("TorService", "stopTor");
-        try {
-            sendCallbackStatus(STATUS_STOPPING);
-            sendCallbackLogMessage(getString(R.string.status_shutting_down));
-
-            killAllDaemons();
-
-            //stop the foreground priority and make sure to remove the persistant notification
-            stopForeground(true);
-
-            if (Prefs.useRoot() && Prefs.useTransparentProxying())
-            {
-            	Shell shellRoot = Shell.startRootShell();
-                disableTransparentProxy(shellRoot);
-            	shellRoot.close();
-            }
-
-            sendCallbackLogMessage(getString(R.string.status_disabled));
-        }
-        catch (Exception e)
-        {
-            logNotice("An error occured stopping Tor: " + e.getMessage());
-            sendCallbackLogMessage(getString(R.string.something_bad_happened));
-        }
-        clearNotifications();
-        sendCallbackStatus(STATUS_OFF);
-    }
-
-
-    private String getHiddenServiceHostname ()
-    {
-
-        SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
-        boolean enableHiddenServices = prefs.getBoolean("pref_hs_enable", false);
-
-        StringBuffer result = new StringBuffer();
-
-        if (enableHiddenServices)
-        {
-            String hsPorts = prefs.getString("pref_hs_ports","");
-
-            StringTokenizer st = new StringTokenizer (hsPorts,",");
-            String hsPortConfig = null;
-
-            while (st.hasMoreTokens())
-            {
-
-                int hsPort = Integer.parseInt(st.nextToken().split(" ")[0]);;
-
-                File fileDir = new File(OrbotApp.appCacheHome, "hs" + hsPort);
-                File file = new File(fileDir, "hostname");
-
-
-                if (file.exists())
-                {
-                    try {
-                        String onionHostname = Utils.readString(new FileInputStream(file)).trim();
-
-                        if (result.length() > 0)
-                            result.append(",");
-
-                        result.append(onionHostname);
-
-
-                    } catch (FileNotFoundException e) {
-                        logException("unable to read onion hostname file",e);
-                        showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), HS_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
-                        return null;
-                    }
-                }
-                else
-                {
-                    showToolbarNotification(getString(R.string.unable_to_read_hidden_service_name), HS_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
-                    return null;
-
-                }
-            }
-
-            if (result.length() > 0)
-            {
-                String onionHostname = result.toString();
-
-                showToolbarNotification(getString(R.string.hidden_service_on) + ' ' + onionHostname, HS_NOTIFY_ID, R.drawable.ic_stat_tor);
-                Editor pEdit = prefs.edit();
-                pEdit.putString("pref_hs_hostname",onionHostname);
-                pEdit.commit();
-
-                return onionHostname;
-            }
-
-        }
-
-        return null;
-    }
-
-
-    private void killAllDaemons() throws Exception {
-        if (conn != null) {
-            logNotice("Using control port to shutdown Tor");
-
-            try {
-                logNotice("sending HALT signal to Tor process");
-                conn.shutdownTor("HALT");
-
-            } catch (IOException e) {
-                Log.d(TAG, "error shutting down Tor via connection", e);
-            }
-
-            conn = null;
-        }
-
-        // try these separately in case one fails, then it can try the next
-        File cannotKillFile = null;
-        try {
-        	TorServiceUtils.killProcess(OrbotApp.fileObfsclient);
-        } catch (IOException e) {
-           // e.printStackTrace();
-            Log.w(TAG,"could not kill obfsclient",e);
-            cannotKillFile = OrbotApp.fileObfsclient;
-        }
-        
-        try {
-        	TorServiceUtils.killProcess(OrbotApp.filePolipo);
-        } catch (IOException e) {
-            Log.w(TAG,"could not kill polipo",e);
-            cannotKillFile = OrbotApp.filePolipo;
-        }
-        try {
-            TorServiceUtils.killProcess(OrbotApp.fileTor);
-        } catch (IOException e) {
-            Log.w(TAG,"could not kill tor",e);
-            cannotKillFile = OrbotApp.fileTor;
-        }
-    }
-
-    private void requestTorRereadConfig() {
-        try {
-            conn.signal("HUP");
-            return;
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        // if that fails, try again using native utils
-        try {
-        	TorServiceUtils.killProcess(OrbotApp.fileTor, "-1"); // this is -HUP
-        } catch (Exception e) {
-            e.printStackTrace();
-        } 
-    }
-
-        private void logNotice (String msg)
-    {
-        if (msg != null && msg.trim().length() > 0)
-        {
-            if (Prefs.useDebugLogging())
-                Log.d(TAG, msg);
-        
-            sendCallbackLogMessage(msg);
-        }
-    }
-    
-    @Override
-    public void onCreate() {
-        super.onCreate();
-
-        try
-        {
-            mNumberFormat = NumberFormat.getInstance(Locale.getDefault()); //localized numbers!
-
-            if (mNotificationManager == null)
-            {
-               
-               IntentFilter mNetworkStateFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);               
-                registerReceiver(mNetworkStateReceiver , mNetworkStateFilter);
-         
-                mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
-             
-            }
-        
-            new Thread(new Runnable ()
-            {
-                public void run ()
-                {
-                    try
-                    {
-                        
-                        torUpgradeAndConfig();
-                    
-                        findExistingTorDaemon();
-                    }
-                    catch (Exception e)
-                    {
-                        Log.e(TAG,"error onBind",e);
-                        logNotice("error finding exiting process: " + e.toString());
-                    }
-                    
-                }
-            }).start();
-        	
-        }
-        catch (Exception e)
-        {
-            //what error here
-            Log.e(TAG, "Error installing Orbot binaries",e);
-            logNotice("There was an error installing Orbot binaries");
-        }
-        
-        Log.i("TorService", "onCreate end");
-    }
-
-    private void torUpgradeAndConfig() throws IOException, TimeoutException {
-        if (isTorUpgradeAndConfigComplete)
-            return;
-
-        SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-        String version = prefs.getString(PREF_BINARY_TOR_VERSION_INSTALLED,null);
-
-        logNotice("checking binary version: " + version);
-        
-        TorResourceInstaller installer = new TorResourceInstaller(this, OrbotApp.appBinHome);
-        
-        if (version == null || (!version.equals(BINARY_TOR_VERSION)) || (!OrbotApp.fileTor.exists()))
-        {
-            logNotice("upgrading binaries to latest version: " + BINARY_TOR_VERSION);
-            
-            boolean success = installer.installResources();
-            
-            if (success)
-                prefs.edit().putString(PREF_BINARY_TOR_VERSION_INSTALLED,BINARY_TOR_VERSION).commit();    
-        }
-
-        updateTorConfigFile ();
-        isTorUpgradeAndConfigComplete = true;
-    }
-
-    private boolean updateTorConfigFile () throws FileNotFoundException, IOException, TimeoutException
-    {
-        SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
-        TorResourceInstaller installer = new TorResourceInstaller(this, OrbotApp.appBinHome);
-        
-        StringBuffer extraLines = new StringBuffer();
-        
-        String TORRC_CONTROLPORT_FILE_KEY = "ControlPortWriteToFile";
-        fileControlPort = new File(OrbotApp.appBinHome, "control.txt");
-        extraLines.append(TORRC_CONTROLPORT_FILE_KEY).append(' ').append(fileControlPort.getCanonicalPath()).append('\n');
-
-//         extraLines.append("RunAsDaemon 1").append('\n');
- //        extraLines.append("AvoidDiskWrites 1").append('\n');
-        
-         String socksPortPref = prefs.getString(OrbotConstants.PREF_SOCKS,
-                 String.valueOf(TorServiceConstants.SOCKS_PROXY_PORT_DEFAULT));
-         if (socksPortPref.indexOf(':')!=-1)
-             socksPortPref = socksPortPref.split(":")[1];
-         
-        if (!socksPortPref.equalsIgnoreCase("auto"))
-        {
-	        boolean isPortUsed = TorServiceUtils.isPortOpen("127.0.0.1",Integer.parseInt(socksPortPref),500);
-	        
-	        if (isPortUsed) //the specified port is not available, so let Tor find one instead
-	        	socksPortPref = "auto";
-        }
-        
-        extraLines.append("SOCKSPort ").append(socksPortPref).append('\n');
-        extraLines.append("SafeSocks 0").append('\n');
-        extraLines.append("TestSocks 0").append('\n');
-        extraLines.append("WarnUnsafeSocks 1").append('\n');
-
-        String transPort = prefs.getString("pref_transport", TorServiceConstants.TOR_TRANSPROXY_PORT_DEFAULT+"");
-        String dnsPort = prefs.getString("pref_dnsport", TorServiceConstants.TOR_DNS_PORT_DEFAULT+"");
-            
-        extraLines.append("TransPort ").append(transPort).append('\n');
-    	extraLines.append("DNSPort ").append(dnsPort).append("\n");
-    	
-    	if (Prefs.useVpn())
-    		extraLines.append("DNSListenAddress 0.0.0.0").append('\n');
-    	
-        if (Prefs.transparentTethering())
-        {
-            extraLines.append("TransListenAddress 0.0.0.0").append('\n');
-            extraLines.append("DNSListenAddress 0.0.0.0").append('\n');            
-        }
-       
-        extraLines.append("VirtualAddrNetwork 10.192.0.0/10").append('\n');
-        extraLines.append("AutomapHostsOnResolve 1").append('\n');
-
-        extraLines.append("DisableNetwork 0").append('\n');
-                
-        if (Prefs.useDebugLogging())
-        {
-        	extraLines.append("Log debug syslog").append('\n');    
-        	extraLines.append("Log info syslog").append('\n');
-        	extraLines.append("SafeLogging 0").append('\n');   
-
-        }
-        
-        processSettingsImpl(extraLines);
-        
-        String torrcCustom = new String(prefs.getString("pref_custom_torrc", "").getBytes("US-ASCII"));
-        extraLines.append(torrcCustom).append('\n');
-
-        logNotice("updating torrc custom configuration...");
-
-        debug("torrc.custom=" + extraLines.toString());
-        
-        File fileTorRcCustom = new File(OrbotApp.fileTorRc.getAbsolutePath() + ".custom");
-        boolean success = installer.updateTorConfigCustom(fileTorRcCustom, extraLines.toString());    
-        
-        if (success)
-        {
-            logNotice ("success.");
-        }
-        
-        return success;
-    }
-
-    /**
-     * Send Orbot's status in reply to an
-     * {@link TorServiceConstants#ACTION_START} {@link Intent}, targeted only to
-     * the app that sent the initial request.
-     */
-    private void replyWithStatus(Intent startRequest) {
-        String packageName = startRequest.getStringExtra(EXTRA_PACKAGE_NAME);
-
-        Intent reply = new Intent(ACTION_STATUS);
-        reply.putExtra(EXTRA_STATUS, mCurrentStatus);
-        reply.putExtra(EXTRA_SOCKS_PROXY, "socks://127.0.0.1:" + mPortSOCKS);
-        reply.putExtra(EXTRA_SOCKS_PROXY_HOST, "127.0.0.1");
-        reply.putExtra(EXTRA_SOCKS_PROXY_PORT, mPortSOCKS);
-        reply.putExtra(EXTRA_HTTP_PROXY, "http://127.0.0.1" + mPortHTTP);
-        reply.putExtra(EXTRA_HTTP_PROXY_HOST, "127.0.0.1");
-        reply.putExtra(EXTRA_HTTP_PROXY_PORT, mPortHTTP);
-        
-        if (packageName != null)
-        {
-        	reply.setPackage(packageName);
-        	sendBroadcast(reply);
-        }
-        else
-        {
-            LocalBroadcastManager.getInstance(this).sendBroadcast(reply);
-
-        }
-
-    }
-
-    /**
-     * The entire process for starting tor and related services is run from this method.
-     */
-    private void startTor() {
-        // STATUS_STARTING is set in onCreate()
-        if (mCurrentStatus == STATUS_STOPPING) {
-            // these states should probably be handled better
-            sendCallbackLogMessage("Ignoring start request, currently " + mCurrentStatus);
-            return;
-        } else if (mCurrentStatus == STATUS_ON && findExistingTorDaemon()) {
-        
-            sendCallbackLogMessage("Ignoring start request, already started.");
-            
-            return;
-        }        
-        
-
-        try {
-        	
-	        // make sure there are no stray daemons running
-	        killAllDaemons();
-	
-	        sendCallbackStatus(STATUS_STARTING);
-	        sendCallbackLogMessage(getString(R.string.status_starting_up));
-	        logNotice(getString(R.string.status_starting_up));
-	        
-	        ArrayList<String> customEnv = new ArrayList<String>();
-	
-	        if (Prefs.bridgesEnabled())
-	        	if (Prefs.useVpn() && !mIsLollipop)
-	        	{
-	        		customEnv.add("TOR_PT_PROXY=socks5://" + OrbotVpnManager.sSocksProxyLocalhost + ":" + OrbotVpnManager.sSocksProxyServerPort); 
-	        	}
-	        
-	        String baseDirectory = OrbotApp.fileTor.getParent();
-	        Shell shellUser = Shell.startShell(customEnv, baseDirectory);
-	        
-	        boolean success = runTorShellCmd(shellUser);
-	        
-	        if (success)
-	        {
-	            if (mPortHTTP != -1)
-	                runPolipoShellCmd(shellUser);
-	            
-	            if (Prefs.useRoot() && Prefs.useTransparentProxying())
-	            {
-	                 Shell shellRoot = Shell.startRootShell();
-	
-	                disableTransparentProxy(shellRoot);
-	                enableTransparentProxy(shellRoot);
-	                
-	                shellRoot.close();
-	            }
-	            
-	            getHiddenServiceHostname ();
-	        }
-	        else
-	        {
-	                 showToolbarNotification(getString(R.string.unable_to_start_tor), ERROR_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
-	        }
-	        shellUser.close();
-
-        } catch (Exception e) {
-            logException("Unable to start Tor: " + e.toString(), e);
-            showToolbarNotification(
-                    getString(R.string.unable_to_start_tor) + ": " + e.getMessage(),
-                    ERROR_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
-            stopTor();
-        }
-    }
-
-    private boolean flushTransparentProxyRules () {
-        if (Prefs.useRoot())
-        {
-             if (mTransProxy == null)
-                 mTransProxy = new TorTransProxy(this, OrbotApp.fileXtables);
-
-             try {
-                 mTransProxy.flushTransproxyRules(this);
-             } catch (Exception e) {
-                 e.printStackTrace();
-                 return false;
-             }
-         
-             return true;
-        }
-        else
-        {
-            return false;
-        }
-    }
-    
-    /*
-     * activate means whether to apply the users preferences
-     * or clear them out
-     * 
-     * the idea is that if Tor is off then transproxy is off
-     */
-    private boolean enableTransparentProxy (Shell shell) throws Exception
-     {
-        
-         if (mTransProxy == null)
-         {
-             mTransProxy = new TorTransProxy(this, OrbotApp.fileXtables);
-             
-         }
-
-        SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-        String transProxy = prefs.getString("pref_transport", TorServiceConstants.TOR_TRANSPROXY_PORT_DEFAULT+"");
-        String dnsPort = prefs.getString("pref_dnsport", TorServiceConstants.TOR_TRANSPROXY_PORT_DEFAULT+"");
-        
-        if (transProxy.indexOf(':')!=-1) //we just want the port for this
-            transProxy = transProxy.split(":")[1];
-        
-        if (dnsPort.indexOf(':')!=-1) //we just want the port for this
-            dnsPort = dnsPort.split(":")[1];
-        
-        mTransProxy.setTransProxyPort(Integer.parseInt(transProxy));
-        mTransProxy.setDNSPort(Integer.parseInt(dnsPort));
-        
-        int code = 0; // Default state is "okay"
-        
-        if(Prefs.transparentProxyAll())
-        {
-
-            code = mTransProxy.setTransparentProxyingAll(this, true, shell);
-        }
-        else
-        {
-            ArrayList<TorifiedApp> apps = AppManager.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext()));
-
-            code = mTransProxy.setTransparentProxyingByApp(this,apps, true, shell);
-        }
-        
-        debug ("TorTransProxy resp code: " + code);
-        
-        if (code == 0)
-        {
-
-            if (Prefs.transparentTethering())
-            {
-                showToolbarNotification(getString(R.string.transproxy_enabled_for_tethering_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
-
-                Shell shellRoot = Shell.startRootShell();
-                mTransProxy.enableTetheringRules(this, shellRoot);
-                shellRoot.close();
-                  
-            }
-            else
-            {
-                showToolbarNotification(getString(R.string.transparent_proxying_enabled), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
-
-            }
-        }
-        else
-        {
-            showToolbarNotification(getString(R.string.warning_error_starting_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
-
-        }
-    
-        return true;
-     }
-    
-    /*
-     * activate means whether to apply the users preferences
-     * or clear them out
-     * 
-     * the idea is that if Tor is off then transproxy is off
-     */
-    private boolean disableTransparentProxy (Shell shell) throws Exception
-     {
-        
-         debug ("Transparent Proxying: disabling...");
-
-         if (mTransProxy == null)
-             mTransProxy = new TorTransProxy(this, OrbotApp.fileXtables);
- 
-         mTransProxy.setTransparentProxyingAll(this, false, shell);    
-        ArrayList<TorifiedApp> apps = AppManager.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext()));
-        mTransProxy.setTransparentProxyingByApp(this, apps, false, shell);
-    
-         return true;
-     }
-    
-    private boolean runTorShellCmd(final Shell shell) throws Exception
-    {
-
-        String torrcPath = new File(OrbotApp.appBinHome, TORRC_ASSET_KEY).getCanonicalPath();
-
-        updateTorConfigFile();
-        
-        sendCallbackLogMessage(getString(R.string.status_starting_up));
-        
-        String torCmdString = OrbotApp.fileTor.getCanonicalPath()
-                + " DataDirectory " + OrbotApp.appCacheHome.getCanonicalPath()
-                + " --defaults-torrc " + torrcPath
-                + " -f " + torrcPath + ".custom";
-    
-        debug(torCmdString);
-        
-        SimpleCommand shellTorCommand = new SimpleCommand(torCmdString + " --verify-config");
-        shell.add(shellTorCommand).waitForFinish();
-        
-        int exitCode = shellTorCommand.getExitCode();
-        String output = shellTorCommand.getOutput();
-        
-        if (exitCode != 0 && output != null && output.length() > 0)
-        {
-            logNotice("Tor (" + exitCode + "): " + output);
-            throw new Exception ("Torrc config did not verify");
-            
-        }
-
-        shellTorCommand = new SimpleCommand(torCmdString);
-        shell.add(shellTorCommand).waitForFinish();
-        exitCode = shellTorCommand.getExitCode();
-        output = shellTorCommand.getOutput();
-        
-        if (exitCode != 0 && output != null && output.length() > 0)
-        {
-            logNotice("Tor (" + exitCode + "): " + output);
-            //throw new Exception ("unable to start");
-            return false;
-        }
-        
-        //now try to connect
-        mLastProcessId = initControlConnection (100,false);
-
-        if (mLastProcessId == -1)
-        {
-            logNotice(getString(R.string.couldn_t_start_tor_process_) + "; exit=" + shellTorCommand.getExitCode() + ": " + shellTorCommand.getOutput());
-            sendCallbackLogMessage(getString(R.string.couldn_t_start_tor_process_));
-        
-            throw new Exception ("Unable to start Tor");
-        }
-        else
-        {
-        
-            logNotice("Tor started; process id=" + mLastProcessId);
-           
-        }
-        
-        return true;
-    }
-    
-    private void updatePolipoConfig () throws FileNotFoundException, IOException
-    {
-        
-
-        File file = new File(OrbotApp.appBinHome, POLIPOCONFIG_ASSET_KEY);
-        
-        Properties props = new Properties();
-        
-        props.load(new FileReader(file));
-        
-        props.put("socksParentProxy", "\"localhost:" + mPortSOCKS + "\"");
-        props.put("proxyPort",mPortHTTP+"");
-        
-        props.store(new FileWriter(file), "updated");
-        
-    }
-    
-    
-    private void runPolipoShellCmd (Shell shell) throws Exception
-    {
-        
-        logNotice( "Starting polipo process");
-        
-            int polipoProcId = TorServiceUtils.findProcessId(OrbotApp.filePolipo.getCanonicalPath());
-
-            StringBuilder log = null;
-            
-            int attempts = 0;
-            
-            if (polipoProcId == -1)
-            {
-                log = new StringBuilder();
-                
-                updatePolipoConfig();
-                
-                String polipoConfigPath = new File(OrbotApp.appBinHome, POLIPOCONFIG_ASSET_KEY).getCanonicalPath();
-                SimpleCommand cmdPolipo = new SimpleCommand(OrbotApp.filePolipo.getCanonicalPath() + " -c " + polipoConfigPath + " &");
-                
-                shell.add(cmdPolipo);
-                
-                //wait one second to make sure it has started up
-                Thread.sleep(1000);
-                
-                while ((polipoProcId = TorServiceUtils.findProcessId(OrbotApp.filePolipo.getCanonicalPath())) == -1  && attempts < MAX_START_TRIES)
-                {
-                    logNotice("Couldn't find Polipo process... retrying...\n" + log);
-                    Thread.sleep(3000);
-                    attempts++;
-                }
-                
-                logNotice(log.toString());
-            }
-            
-            sendCallbackLogMessage(getString(R.string.privoxy_is_running_on_port_) + mPortHTTP);
-            
-            logNotice("Polipo process id=" + polipoProcId);
-            
-    }
-    
-    private int initControlConnection (int maxTries, boolean isReconnect) throws Exception, RuntimeException
-    {
-            int controlPort = -1;
-            int attempt = 0;
-
-            logNotice( "Waiting for control port...");
-            
-            while (conn == null && attempt++ < maxTries)
-            {
-                try
-                {
-                    
-                    controlPort = getControlPort();
-                    
-                    if (controlPort != -1)
-                    {
-                        logNotice( "Connecting to control port: " + controlPort);
-                        
-                        torConnSocket = new Socket(IP_LOCALHOST, controlPort);
-                        torConnSocket.setSoTimeout(CONTROL_SOCKET_TIMEOUT);
-                        
-                        conn = new TorControlConnection(torConnSocket);
-                        conn.launchThread(true);//is daemon
-                        
-                        break;
-                    }
-                    
-                }
-                catch (Exception ce)
-                {
-                    conn = null;
-                //    logException( "Error connecting to Tor local control port: " + ce.getMessage(),ce);
-                    
-                }
-                
-                
-                try {
-                //    logNotice("waiting...");
-                    Thread.sleep(1000); }
-                catch (Exception e){}
-            }
-            
-            if (conn != null)
-            {
-                    logNotice( "SUCCESS connected to Tor control port.");
-                    
-                    File fileCookie = new File(OrbotApp.appCacheHome, TOR_CONTROL_COOKIE);
-                    
-                    if (fileCookie.exists())
-                    {
-                        byte[] cookie = new byte[(int)fileCookie.length()];
-                        DataInputStream fis = new DataInputStream(new FileInputStream(fileCookie));
-                        fis.read(cookie);
-                        fis.close();
-                        conn.authenticate(cookie);
-                                
-                        logNotice( "SUCCESS - authenticated to control port.");
-                        
-                        sendCallbackLogMessage(getString(R.string.tor_process_starting) + ' ' + getString(R.string.tor_process_complete));
-    
-                        addEventHandler();
-                    
-                        String torProcId = conn.getInfo("process/pid");
-                        
-                         String confSocks = conn.getInfo("net/listeners/socks");
-                         StringTokenizer st = new StringTokenizer(confSocks," ");
-
-                         confSocks = st.nextToken().split(":")[1];
-                         confSocks = confSocks.substring(0,confSocks.length()-1);
-                         mPortSOCKS = Integer.parseInt(confSocks);
-                                                  
-                        return Integer.parseInt(torProcId);
-                        
-                    }
-                    else
-                    {
-                        logNotice ("Tor authentication cookie does not exist yet");
-                        conn = null;
-                                
-                    }
-                }
-                
-            
-            return -1;
-
-    }
-    
-    private int getControlPort ()
-    {
-        int result = -1;
-        
-        try
-        {
-            if (fileControlPort.exists())
-            {
-                debug("Reading control port config file: " + fileControlPort.getCanonicalPath());
-                BufferedReader bufferedReader = new BufferedReader(new FileReader(fileControlPort));
-                String line = bufferedReader.readLine();
-                
-                if (line != null)
-                {
-                    String[] lineParts = line.split(":");
-                    result = Integer.parseInt(lineParts[1]);
-                }
-                
-
-                bufferedReader.close();
-
-                //store last valid control port
-                SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-                prefs.edit().putInt("controlport", result).commit();
-                
-            }
-            else
-            {
-                debug("Control Port config file does not yet exist (waiting for tor): " + fileControlPort.getCanonicalPath());
-                
-            }
-            
-            
-        }
-        catch (FileNotFoundException e)
-        {    
-            debug("unable to get control port; file not found");
-        }
-        catch (Exception e)
-        {    
-            debug("unable to read control port config file");
-        }
-
-        return result;
-    }
-
-    public void addEventHandler () throws Exception
-    {
-           // We extend NullEventHandler so that we don't need to provide empty
-           // implementations for all the events we don't care about.
-           // ...
-        logNotice( "adding control port event handler");
-
-        conn.setEventHandler(this);
-        
-        conn.setEvents(Arrays.asList(new String[]{
-              "ORCONN", "CIRC", "NOTICE", "WARN", "ERR","BW"}));
-          // conn.setEvents(Arrays.asList(new String[]{
-            //  "DEBUG", "INFO", "NOTICE", "WARN", "ERR"}));
-
-        logNotice( "SUCCESS added control port event handler");
-    }
-    
-        /**
-         * Returns the port number that the HTTP proxy is running on
-         */
-        public int getHTTPPort() throws RemoteException {
-            return mPortHTTP;
-        }
-
-        
-        /**
-         * Returns the port number that the HTTP proxy is running on
-         */
-        public int getSOCKSPort() throws RemoteException {
-            return mPortSOCKS;
-        }
-        
-        public void enableVpnProxy () {
-        	debug ("enabling VPN Proxy");
-            
-            Prefs.putUseVpn(true);
-            processTransparentProxying();
-            
-            updateConfiguration("DNSPort",TOR_VPN_DNS_LISTEN_ADDRESS + ":" + TorServiceConstants.TOR_DNS_PORT_DEFAULT,false);
-            
-            if (mVpnManager == null)
-            	mVpnManager = new OrbotVpnManager (this);
-            
-            Intent intent = new Intent();
-            intent.setAction("start");            
-            intent.putExtra("torSocks", mPortSOCKS);
-            
-            mVpnManager.handleIntent(new Builder(),intent);
-           
-        }
-        
-        public void clearVpnProxy ()
-        {   
-        	debug ("clearing VPN Proxy");
-            Prefs.putUseVpn(false);
-            processTransparentProxying();
-            
-            if (mVpnManager != null)
-            {
-            	Intent intent = new Intent();
-                intent.setAction("stop");
-            	mVpnManager.handleIntent(new Builder(), intent);
-            	mVpnManager = null;
-            }            
-                             
-        }
-
-    @Override
-    public void message(String severity, String msg) {
-        logNotice(severity + ": " + msg);
-    }
-
-    @Override
-    public void newDescriptors(List<String> orList) {
-    }
-
-    @Override
-    public void orConnStatus(String status, String orName) {
-        
-            StringBuilder sb = new StringBuilder();
-            sb.append("orConnStatus (");
-            sb.append(parseNodeName(orName) );
-            sb.append("): ");
-            sb.append(status);
-            
-            debug(sb.toString());
-    }
-
-    @Override
-    public void streamStatus(String status, String streamID, String target) {
-        
-            StringBuilder sb = new StringBuilder();
-            sb.append("StreamStatus (");
-            sb.append((streamID));
-            sb.append("): ");
-            sb.append(status);
-            
-            logNotice(sb.toString());
-    }
-
-    @Override
-    public void unrecognized(String type, String msg) {
-        
-            StringBuilder sb = new StringBuilder();
-            sb.append("Message (");
-            sb.append(type);
-            sb.append("): ");
-            sb.append(msg);
-            
-            logNotice(sb.toString());
-    }
-
-    @Override
-    public void bandwidthUsed(long read, long written) {
-    
-        if (read != lastRead || written != lastWritten)
-        {
-            StringBuilder sb = new StringBuilder();                
-            sb.append(formatCount(read));
-            sb.append(" \u2193");            
-            sb.append(" / ");
-            sb.append(formatCount(written));
-            sb.append(" \u2191");            
-               
-            int iconId = R.drawable.ic_stat_tor;
-            
-            if (read > 0 || written > 0)
-                iconId = R.drawable.ic_stat_tor_xfer;
-            
-            if (mConnectivity && Prefs.persistNotifications())
-                  showToolbarNotification(sb.toString(), NOTIFY_ID, iconId);
-
-            mTotalTrafficWritten += written;
-            mTotalTrafficRead += read;
-        }
-        
-        lastWritten = written;
-        lastRead = read;
-        
-        sendCallbackBandwidth(lastWritten, lastRead, mTotalTrafficWritten, mTotalTrafficRead);
-    }
-    
-    private String formatCount(long count) {
-        // Converts the supplied argument into a string.
-
-        // Under 2Mb, returns "xxx.xKb"
-        // Over 2Mb, returns "xxx.xxMb"
- 	if (mNumberFormat != null)
-        	if (count < 1e6)
-            		return mNumberFormat.format(Math.round((float)((int)(count*10/1024))/10)) + "kbps";
-        	else
-            		return mNumberFormat.format(Math.round((float)((int)(count*100/1024/1024))/100)) + "mbps";
-	else
-		return "";
-        
-           //return count+" kB";
-    }
-    
-    public void circuitStatus(String status, String circID, String path) {
-        
-        /* once the first circuit is complete, then announce that Orbot is on*/
-        if (mCurrentStatus == STATUS_STARTING && TextUtils.equals(status, "BUILT"))
-            sendCallbackStatus(STATUS_ON);
-
-        StringBuilder sb = new StringBuilder();
-        sb.append("Circuit (");
-        sb.append((circID));
-        sb.append(") ");
-        sb.append(status);
-        sb.append(": ");
-        
-        StringTokenizer st = new StringTokenizer(path,",");
-        Node node = null;
-        
-        while (st.hasMoreTokens())
-        {
-            String nodePath = st.nextToken();
-            node = new Node();
-            
-            String[] nodeParts;
-            
-            if (nodePath.contains("="))
-                nodeParts = nodePath.split("=");
-            else
-                nodeParts = nodePath.split("~");
-            
-            if (nodeParts.length == 1)
-            {
-                node.id = nodeParts[0].substring(1);
-                node.name = node.id;
-            }
-            else if (nodeParts.length == 2)
-            {
-                node.id = nodeParts[0].substring(1);
-                node.name = nodeParts[1];
-            }
-            
-            node.status = status;
-            
-            sb.append(node.name);
-            
-            if (st.hasMoreTokens())
-                sb.append (" > ");
-        }
-        
-        if (Prefs.useDebugLogging())
-            debug(sb.toString());
-        else if(status.equals("BUILT"))
-            logNotice(sb.toString());
-        else if (status.equals("CLOSED"))
-            logNotice(sb.toString());
-
-        if (Prefs.expandedNotifications())
-        {
-            //get IP from last nodename
-            if(status.equals("BUILT")){
-                
-                if (node.ipAddress == null)
-                    mExecutor.execute(new ExternalIPFetcher(node));
-                
-                hmBuiltNodes.put(node.id, node);
-            }
-            
-            if (status.equals("CLOSED"))
-            {
-                hmBuiltNodes.remove(node.id);
-                
-            }
-        }
-    
-    }
-    
-    private HashMap<String,Node> hmBuiltNodes = new HashMap<String,Node>();
-    
-    class Node
-    {
-        String status;
-        String id;
-        String name;
-        String ipAddress;
-        String country;
-        String organization;
-    }
-    
-    private class ExternalIPFetcher implements Runnable {
-
-        private Node mNode;
-        private int MAX_ATTEMPTS = 3;
-        private final static String ONIONOO_BASE_URL = "https://onionoo.torproject.org/details?fields=country_name,as_name,or_addresses&lookup=";
-        
-        public ExternalIPFetcher (Node node)
-        {
-            mNode = node;
-        }
-        
-        public void run ()
-        {
-            
-            for (int i = 0; i < MAX_ATTEMPTS; i++)
-            {
-                if (conn != null)
-                {
-                    try {
-
-                    	URLConnection conn = null;
-                    	
-                        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8118));
-                        conn = new URL(ONIONOO_BASE_URL + mNode.id).openConnection(proxy);
-    
-                        conn.setRequestProperty("Connection","Close");
-                        conn.setConnectTimeout(60000);
-                        conn.setReadTimeout(60000);
-                        
-                        InputStream is = conn.getInputStream();
-                        
-                        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-    
-                        // getting JSON string from URL
-                        
-                        StringBuffer json = new StringBuffer();
-                        String line = null;
-    
-                        while ((line = reader.readLine())!=null)
-                            json.append(line);
-                        
-                        JSONObject jsonNodeInfo = new org.json.JSONObject(json.toString());
-                            
-                        JSONArray jsonRelays = jsonNodeInfo.getJSONArray("relays");
-                        
-                        if (jsonRelays.length() > 0)
-                        {
-                            mNode.ipAddress = jsonRelays.getJSONObject(0).getJSONArray("or_addresses").getString(0).split(":")[0];
-                            mNode.country = jsonRelays.getJSONObject(0).getString("country_name");
-                            mNode.organization = jsonRelays.getJSONObject(0).getString("as_name");
-                            
-                            StringBuffer sbInfo = new StringBuffer();
-                            sbInfo.append(mNode.ipAddress);
-                             
-                             if (mNode.country != null)
-                                 sbInfo.append(' ').append(mNode.country);
-                         
-                             if (mNode.organization != null)
-                                 sbInfo.append(" (").append(mNode.organization).append(')');
-                         
-                             logNotice(sbInfo.toString());
-                            
-                        }
-                        
-                        reader.close();
-                        is.close();
-                        
-                        break;
-                        
-                    } catch (Exception e) {
-                        
-                        debug ("Error getting node details from onionoo: " + e.getMessage());
-                        
-                        
-                    }
-                }
-            }
-        }
-        
-        
-    }
-    
-    private String parseNodeName(String node)
-    {
-        if (node.indexOf('=')!=-1)
-        {
-            return (node.substring(node.indexOf("=")+1));
-        }
-        else if (node.indexOf('~')!=-1)
-        {
-            return (node.substring(node.indexOf("~")+1));
-        }
-        else
-            return node;
-    }
-
-        public void processTransparentProxying() {
-            try{
-                if (Prefs.useRoot())
-                {
-                     Shell shell = Shell.startRootShell();
-                    if (Prefs.useTransparentProxying()){
-                        enableTransparentProxy(shell);
-                    } else {
-                        disableTransparentProxy(shell);                        
-                    }
-                    shell.close();
-                }
-            } catch (Exception e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
-            }
-            
-        }
-
-        public String getInfo (String key) {
-            try {
-                if(conn !=null){
-                    String m = conn.getInfo(key);
-                    return m;
-                }
-            }
-            catch(Exception ioe){
-            //    Log.e(TAG,"Unable to get Tor information",ioe);
-                logNotice("Unable to get Tor information"+ioe.getMessage());
-            }
-            return null;
-        }
-        
-        public String getConfiguration (String name)
-        {
-            try
-            {
-                if (conn != null)
-                {
-                    StringBuffer result = new StringBuffer();
-                    
-                    List<ConfigEntry> listCe = conn.getConf(name);
-                    
-                    Iterator<ConfigEntry> itCe = listCe.iterator();
-                    ConfigEntry ce = null; 
-                    
-                       
-                    
-                    while (itCe.hasNext())
-                    {
-                        ce = itCe.next();
-                        
-                        result.append(ce.key);
-                        result.append(' ');
-                        result.append(ce.value);
-                        result.append('\n');
-                    }
-                    
-                          return result.toString();
-                }
-            }
-            catch (Exception ioe)
-            {
-                
-                logException("Unable to get Tor configuration: " + ioe.getMessage(),ioe);
-            }
-            
-            return null;
-        }
-        
-        private final static String RESET_STRING = "=\"\"";
-        /**
-         * Set configuration
-         **/
-        public boolean updateConfiguration (String name, String value, boolean saveToDisk)
-        { 
-            
-            
-            if (configBuffer == null)
-                configBuffer = new ArrayList<String>();
-            
-            if (resetBuffer == null)
-                resetBuffer = new ArrayList<String>();
-            
-            if (value == null || value.length() == 0)
-            {
-                resetBuffer.add(name + RESET_STRING);
-                
-            }
-            else
-            {
-                StringBuffer sbConf = new StringBuffer();
-                sbConf.append(name);
-                sbConf.append(' ');
-                sbConf.append(value);
-                
-                configBuffer.add(sbConf.toString());
-            }
-            
-            return false;
-        }
-        
-        public void setTorNetworkEnabled (final boolean isEnabled)
-        {
-
-        	
-        	//it is possible to not have a connection yet, and someone might try to newnym
-            if (conn != null)
-            {
-                new Thread ()
-                {
-                    public void run ()
-                    {
-                        try { 
-                            
-                            conn.setConf("DisableNetwork", isEnabled ? "0" : "1");
-                        	
-                        }
-                        catch (Exception ioe){
-                            debug("error requesting newnym: " + ioe.getLocalizedMessage());
-                        }
-                    }
-                }.start();
-            }
-        	
-        }
-        
-        public void newIdentity () 
-        {
-            //it is possible to not have a connection yet, and someone might try to newnym
-            if (conn != null)
-            {
-                new Thread ()
-                {
-                    public void run ()
-                    {
-                        try { 
-                            
-                            conn.signal("NEWNYM"); 
-                        
-                        }
-                        catch (Exception ioe){
-                            
-                        	debug("error requesting newnym: " + ioe.getLocalizedMessage());
-                            
-                        }
-                    }
-                }.start();
-            }
-        }
-        
-        public boolean saveConfiguration ()
-        {
-            try
-            {
-                if (conn != null)
-                {
-                    
-                     if (resetBuffer != null && resetBuffer.size() > 0)
-                        {    
-                         for (String value : configBuffer)
-                             {
-                                 
-                              //   debug("removing torrc conf: " + value);
-                                 
-                                 
-                             }
-                         
-                           // conn.resetConf(resetBuffer);
-                            resetBuffer = null;
-                        }
-                  
-                     if (configBuffer != null && configBuffer.size() > 0)
-                        {
-                             
-                                 for (String value : configBuffer)
-                                 {
-                                     
-                                     debug("Setting torrc conf: " + value);
-                                     
-                                     
-                                 }
-                                 
-                             conn.setConf(configBuffer);
-                                 
-                            configBuffer = null;
-                        }
-                  
-                          // Flush the configuration to disk.
-                    //this is doing bad things right now NF 22/07/10
-                          //conn.saveConf();
-    
-                          return true;
-                }
-            }
-            catch (Exception ioe)
-            {
-                logException("Unable to update Tor configuration: " + ioe.getMessage(),ioe);
-            }
-            
-            return false;
-        }
-
-    private void sendCallbackBandwidth(long upload, long download, long written, long read)    {
-        Intent intent = new Intent(LOCAL_ACTION_BANDWIDTH);
-
-        intent.putExtra("up",upload);
-	      intent.putExtra("down",download);
-	      intent.putExtra("written",written);
-	      intent.putExtra("read",read);
-	      intent.putExtra(EXTRA_STATUS, mCurrentStatus);
-
-        LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
-    }
-
-    private void sendCallbackLogMessage (String logMessage)
-    {
-        
-        Intent intent = new Intent(LOCAL_ACTION_LOG);
-          // You can also include some extra data.
-          intent.putExtra(LOCAL_EXTRA_LOG, logMessage);
-	      intent.putExtra(EXTRA_STATUS, mCurrentStatus);
-
-          LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
-
-    }
-    
-    private void sendCallbackStatus(String currentStatus) {
-        mCurrentStatus = currentStatus;
-        Intent intent = getActionStatusIntent(currentStatus);
-        // send for Orbot internals, using secure local broadcast
-        sendBroadcastOnlyToOrbot(intent);
-        // send for any apps that are interested
-        sendBroadcast(intent);
-    }
-
-    /**
-     * Send a secure broadcast only to Orbot itself
-     * @see {@link ContextWrapper#sendBroadcast(Intent)}
-     * @see {@link LocalBroadcastManager}
-     */
-    private boolean sendBroadcastOnlyToOrbot(Intent intent) {
-        return LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
-    }
-
-    private Intent getActionStatusIntent(String currentStatus) {
-        Intent intent = new Intent(ACTION_STATUS);
-        intent.putExtra(EXTRA_STATUS, currentStatus);
-        return intent;
-    }
-
-    /*
-     *  Another way to do this would be to use the Observer pattern by defining the 
-     *  BroadcastReciever in the Android manifest.
-     */
-    private final BroadcastReceiver mNetworkStateReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-
-        	if (mCurrentStatus != STATUS_ON)
-        		return;
-        	
-            SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
-            boolean doNetworKSleep = prefs.getBoolean(OrbotConstants.PREF_DISABLE_NETWORK, true);
-            
-            final ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
-            final NetworkInfo netInfo = cm.getActiveNetworkInfo();
-
-            boolean newConnectivityState = false;
-            int newNetType = -1;
-            
-            boolean isChanged = false;
-            
-            if (netInfo!=null)
-            	newNetType = netInfo.getType();
-
-            isChanged = ((mNetworkType != newNetType)&&(mConnectivity != newConnectivityState));
-            
-            if(netInfo != null && netInfo.isConnected()) {
-                // WE ARE CONNECTED: DO SOMETHING
-            	newConnectivityState = true;
-            }   
-            else {
-                // WE ARE NOT: DO SOMETHING ELSE
-            	newConnectivityState = false;
-            }
-            
-            mNetworkType = newNetType;
-        	mConnectivity = newConnectivityState;
-        	
-            if (doNetworKSleep)
-            {
-	            setTorNetworkEnabled (mConnectivity);
-	            
-	            if (!mConnectivity)
-                {
-                    logNotice(context.getString(R.string.no_network_connectivity_putting_tor_to_sleep_));
-                    showToolbarNotification(getString(R.string.no_internet_connection_tor),NOTIFY_ID,R.drawable.ic_stat_tor_off);
-                    
-                }
-                else
-                {
-                    logNotice(context.getString(R.string.network_connectivity_is_good_waking_tor_up_));
-                    showToolbarNotification(getString(R.string.status_activated),NOTIFY_ID,R.drawable.ic_stat_tor);
-                }
-	            
-	            //is this a change in state?
-	            if (isChanged)
-	            {
-	                try {
-	                    
-	                    if (mCurrentStatus != STATUS_OFF)
-	                    {
-	                        if (mConnectivity)
-	                        {
-	                            if (Prefs.useRoot() && Prefs.useTransparentProxying() && Prefs.transProxyNetworkRefresh())
-	                            {
-	                                
-	                                Shell shell = Shell.startRootShell();
-	                         
-	                                disableTransparentProxy(shell);
-	                                enableTransparentProxy(shell);
-	                                
-	                                shell.close();
-	                            }
-	                        }
-	                    }
-	                    
-	                } catch (Exception e) {
-	                    logException ("error updating state after network restart",e);
-	                }
-		            
-	            }
-            }
-
-            
-        }
-    };
-
-    private boolean processSettingsImpl (StringBuffer extraLines) throws IOException
-    {
-        logNotice(getString(R.string.updating_settings_in_tor_service));
-        
-        SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-        
-        boolean useBridges = Prefs.bridgesEnabled();
-
-        boolean becomeRelay = prefs.getBoolean(OrbotConstants.PREF_OR, false);
-        boolean ReachableAddresses = prefs.getBoolean(OrbotConstants.PREF_REACHABLE_ADDRESSES,false);
-        boolean enableHiddenServices = prefs.getBoolean("pref_hs_enable", false);
-
-        boolean enableStrictNodes = prefs.getBoolean("pref_strict_nodes", false);
-        String entranceNodes = prefs.getString("pref_entrance_nodes", "");
-        String exitNodes = prefs.getString("pref_exit_nodes", "");
-        String excludeNodes = prefs.getString("pref_exclude_nodes", "");
-        
-        if (!useBridges)
-        {
-           
-            extraLines.append("UseBridges 0").append('\n');
-
-	        if (Prefs.useVpn()) //set the proxy here if we aren't using a bridge
-	        {
-	        	
-	        	if (!mIsLollipop)
-	        	{
-		        	String proxyType = "socks5";
-		        	extraLines.append(proxyType + "Proxy" + ' ' + OrbotVpnManager.sSocksProxyLocalhost + ':' + OrbotVpnManager.sSocksProxyServerPort).append('\n');
-	        	};
-			
-	        }
-	        else
-	        {
-		        String proxyType = prefs.getString("pref_proxy_type", null);
-		        if (proxyType != null && proxyType.length() > 0)
-		        {
-		            String proxyHost = prefs.getString("pref_proxy_host", null);
-		            String proxyPort = prefs.getString("pref_proxy_port", null);
-		            String proxyUser = prefs.getString("pref_proxy_username", null);
-		            String proxyPass = prefs.getString("pref_proxy_password", null);
-		            
-		            if ((proxyHost != null && proxyHost.length()>0) && (proxyPort != null && proxyPort.length() > 0))
-		            {
-		            	extraLines.append(proxyType + "Proxy" + ' ' + proxyHost + ':' + proxyPort).append('\n');
-		                
-		                if (proxyUser != null && proxyPass != null)
-		                {
-		                    if (proxyType.equalsIgnoreCase("socks5"))
-		                    {
-		                    	extraLines.append("Socks5ProxyUsername" + ' ' + proxyUser).append('\n');
-		                    	extraLines.append("Socks5ProxyPassword" + ' ' + proxyPass).append('\n');
-		                    }
-		                    else
-		                    	extraLines.append(proxyType + "ProxyAuthenticator" + ' ' + proxyUser + ':' + proxyPort).append('\n');
-		                    
-		                }
-		                else if (proxyPass != null)
-		                	extraLines.append(proxyType + "ProxyAuthenticator" + ' ' + proxyUser + ':' + proxyPort).append('\n');
-		                
-		                
-		
-		            }
-		        }
-	        }
-        }
-        else
-        {
-        
-
-            extraLines.append("UseBridges 1").append('\n');
-            
-            String bridgeList = new String(Prefs.getBridgesList().getBytes("ISO-8859-1"));
-            
-            if (bridgeList != null && bridgeList.length() > 1) //longer then 1 = some real values here
-            {
-	            
-	            //check if any PT bridges are needed
-	            boolean obfsBridges = bridgeList.contains("obfs3")||bridgeList.contains("obfs4")||bridgeList.contains("scramblesuit");
-            
-	            if (obfsBridges)
-	            {
-	                extraLines.append("ClientTransportPlugin obfs3 exec " + OrbotApp.fileObfsclient.getCanonicalPath()).append('\n');
-	                extraLines.append("ClientTransportPlugin obfs4 exec " + OrbotApp.fileObfsclient.getCanonicalPath()).append('\n');
-	                extraLines.append("ClientTransportPlugin scramblesuit exec " + OrbotApp.fileObfsclient.getCanonicalPath()).append('\n');
-	            }
-	            
-	            boolean meekBridges = bridgeList.contains("meek");
-	            if (meekBridges)
-	            {
-	            	extraLines.append("ClientTransportPlugin meek_lite exec " + OrbotApp.fileObfsclient.getCanonicalPath()).append('\n');
-	            }
-	            
-	            String[] bridgeListLines = bridgeList.split("\\r?\\n");
-
-	            for (String bridgeConfigLine : bridgeListLines)
-	            {
-	                if (!TextUtils.isEmpty(bridgeConfigLine))
-	                {
-	                	extraLines.append("Bridge ");
-	                	
-	                	//bridgeConfigLine = bridgeConfigLine.replace('�', ' ');
-	                	
-	                	StringTokenizer st = new StringTokenizer (bridgeConfigLine," ");
-	                	while (st.hasMoreTokens())
-	                		extraLines.append(st.nextToken()).append(' ');
-	                	
-	                	extraLines.append("\n");
-	                	
-	                }
-	
-	            }
-	            
-            }
-            else
-            {
-            	//time to do autobridges, aka meek
-
-            	debug ("Using meek bridges");
-                
-            //	String bridgeConfig = "meek exec " + OrbotApp.fileMeekclient.getCanonicalPath();
-            	String bridgeConfig = "meek_lite exec " + OrbotApp.fileObfsclient.getCanonicalPath();
-            	
-            	extraLines.append("ClientTransportPlugin" + ' ' + bridgeConfig).append('\n');
-            
-            	int meekIdx = 2; //let's use Azure by default
-            	
-            	if (bridgeList != null && bridgeList.length() == 1)
-            	{
-            	  try 
-            	  {
-            		  meekIdx = Integer.parseInt(bridgeList);
-            		  
-            		  if (meekIdx+1 > BRIDGES_MEEK.length)
-            			  throw new Exception("not valid meek idx");
-            	  }
-            	  catch (Exception e)
-            	  {
-            		  debug("invalid meek type; please enter 0=Google, 1=AWS, 2=Azure");
-            	  }
-            	}
-            	
-            	extraLines.append("Bridge " + BRIDGES_MEEK[meekIdx]).append('\n');            	
-            	
-            }
- 
-        }
-        
-                  
-        //only apply GeoIP if you need it
-        File fileGeoIP = new File(OrbotApp.appBinHome, GEOIP_ASSET_KEY);
-        File fileGeoIP6 = new File(OrbotApp.appBinHome, GEOIP6_ASSET_KEY);
-            
-        if (fileGeoIP.exists())
-        {
-	        extraLines.append("GeoIPFile" + ' ' + fileGeoIP.getCanonicalPath()).append('\n');
-	        extraLines.append("GeoIPv6File" + ' ' + fileGeoIP6.getCanonicalPath()).append('\n');
-        }
-        
-        if (!TextUtils.isEmpty(entranceNodes))
-        	extraLines.append("EntryNodes" + ' ' + entranceNodes).append('\n');
-       
-        if (!TextUtils.isEmpty(exitNodes))
-        	extraLines.append("ExitNodes" + ' ' + exitNodes).append('\n');
-        
-        if (!TextUtils.isEmpty(excludeNodes))
-        	extraLines.append("ExcludeNodes" + ' ' + excludeNodes).append('\n');
-        
-        extraLines.append("StrictNodes" + ' ' + (enableStrictNodes ? "1" : "0")).append('\n');
-
-        try
-        {
-            if (ReachableAddresses)
-            {
-                String ReachableAddressesPorts =
-                    prefs.getString(OrbotConstants.PREF_REACHABLE_ADDRESSES_PORTS, "*:80,*:443");
-                
-                extraLines.append("ReachableAddresses" + ' ' + ReachableAddressesPorts).append('\n');
-
-            }
-            
-        }
-        catch (Exception e)
-        {
-           showToolbarNotification (getString(R.string.your_reachableaddresses_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_notifyerr);
-
-           return false;
-        }
-
-        try
-        {
-            if (becomeRelay && (!useBridges) && (!ReachableAddresses))
-            {
-                int ORPort =  Integer.parseInt(prefs.getString(OrbotConstants.PREF_OR_PORT, "9001"));
-                String nickname = prefs.getString(OrbotConstants.PREF_OR_NICKNAME, "Orbot");
-
-                String dnsFile = writeDNSFile ();
-                
-                extraLines.append("ServerDNSResolvConfFile" + ' ' + dnsFile).append('\n');
-                extraLines.append("ORPort" + ' ' + ORPort).append('\n');
-                extraLines.append("Nickname" + ' ' + nickname).append('\n');
-                extraLines.append("ExitPolicy" + ' ' + "reject *:*").append('\n');
-
-            }
-        }
-        catch (Exception e)
-        {
-             showToolbarNotification (getString(R.string.your_relay_settings_caused_an_exception_),ERROR_NOTIFY_ID,R.drawable.ic_stat_notifyerr);
-
-          
-            return false;
-        }
-
-        if (enableHiddenServices)
-        {
-            logNotice("hidden services are enabled");
-            
-            //updateConfiguration("RendPostPeriod", "600 seconds", false); //possible feature to investigate
-            
-            String hsPorts = prefs.getString("pref_hs_ports","");
-            
-            StringTokenizer st = new StringTokenizer (hsPorts,",");
-            String hsPortConfig = null;
-            int hsPort = -1;
-            
-            while (st.hasMoreTokens())
-            {
-                try
-                {
-                    hsPortConfig = st.nextToken().trim();
-                    
-                    if (hsPortConfig.indexOf(":")==-1) //setup the port to localhost if not specifed
-                    {
-                        hsPortConfig = hsPortConfig + " 127.0.0.1:" + hsPortConfig;
-                    }
-                    
-                    hsPort = Integer.parseInt(hsPortConfig.split(" ")[0]);
-
-                    String hsDirPath = new File(OrbotApp.appCacheHome,"hs" + hsPort).getCanonicalPath();
-                    
-                    debug("Adding hidden service on port: " + hsPortConfig);
-                    
-                    extraLines.append("HiddenServiceDir" + ' ' + hsDirPath).append('\n');
-                    extraLines.append("HiddenServicePort" + ' ' + hsPortConfig).append('\n');
-                    
-
-                } catch (NumberFormatException e) {
-                    Log.e(TAG,"error parsing hsport",e);
-                } catch (Exception e) {
-                    Log.e(TAG,"error starting share server",e);
-                }
-            }
-            
-            
-        }
-        
-        return true;
-    }
-    
-    public static String flattenToAscii(String string) {
-        char[] out = new char[string.length()];
-        string = Normalizer.normalize(string, Normalizer.Form.NFD);
-        int j = 0;
-        for (int i = 0, n = string.length(); i < n; ++i) {
-            char c = string.charAt(i);
-            if (c <= '\u007F') out[j++] = c;
-        }
-        return new String(out);
-    }
-
-    //using Google DNS for now as the public DNS server
-    private String writeDNSFile () throws IOException
-    {
-        File file = new File(OrbotApp.appBinHome, "resolv.conf");
-
-        PrintWriter bw = new PrintWriter(new FileWriter(file));
-        bw.println("nameserver 8.8.8.8");
-        bw.println("nameserver 8.8.4.4");
-        bw.close();
-    
-        return file.getCanonicalPath();
-    }
-
-    @SuppressLint("NewApi")
-    @Override
-    public void onTrimMemory(int level) {
-        super.onTrimMemory(level);
-        
-        switch (level)
-        {
-        
-            case TRIM_MEMORY_BACKGROUND:
-                debug("trim memory requested: app in the background");
-            return;
-            
-        /**
-        public static final int TRIM_MEMORY_BACKGROUND
-        Added in API level 14
-        Level for onTrimMemory(int): the process has gone on to the LRU list. This is a good opportunity to clean up resources that can efficiently and quickly be re-built if the user returns to the app.
-        Constant Value: 40 (0x00000028)
-        */
-        
-            case TRIM_MEMORY_COMPLETE:
-
-                debug("trim memory requested: cleanup all memory");
-            return;
-        /**
-        public static final int TRIM_MEMORY_COMPLETE
-        Added in API level 14
-        Level for onTrimMemory(int): the process is nearing the end of the background LRU list, and if more memory isn't found soon it will be killed.
-        Constant Value: 80 (0x00000050)
-        */
-            case TRIM_MEMORY_MODERATE:
-
-                debug("trim memory requested: clean up some memory");
-            return;
-                
-        /**
-        public static final int TRIM_MEMORY_MODERATE
-        Added in API level 14
-        Level for onTrimMemory(int): the process is around the middle of the background LRU list; freeing memory can help the system keep other processes running later in the list for better overall performance.
-        Constant Value: 60 (0x0000003c)
-        */
-        
-            case TRIM_MEMORY_RUNNING_CRITICAL:
-
-                debug("trim memory requested: memory on device is very low and critical");
-            return;
-        /**
-        public static final int TRIM_MEMORY_RUNNING_CRITICAL
-        Added in API level 16
-        Level for onTrimMemory(int): the process is not an expendable background process, but the device is running extremely low on memory and is about to not be able to keep any background processes running. Your running process should free up as many non-critical resources as it can to allow that memory to be used elsewhere. The next thing that will happen after this is onLowMemory() called to report that nothing at all can be kept in the background, a situation that can start to notably impact the user.
-        Constant Value: 15 (0x0000000f)
-        */
-        
-            case TRIM_MEMORY_RUNNING_LOW:
-
-                debug("trim memory requested: memory on device is running low");
-            return;
-        /**
-        public static final int TRIM_MEMORY_RUNNING_LOW
-        Added in API level 16
-        Level for onTrimMemory(int): the process is not an expendable background process, but the device is running low on memory. Your running process should free up unneeded resources to allow that memory to be used elsewhere.
-        Constant Value: 10 (0x0000000a)
-        */
-            case TRIM_MEMORY_RUNNING_MODERATE:
-
-                debug("trim memory requested: memory on device is moderate");
-            return;
-        /**
-        public static final int TRIM_MEMORY_RUNNING_MODERATE
-        Added in API level 16
-        Level for onTrimMemory(int): the process is not an expendable background process, but the device is running moderately low on memory. Your running process may want to release some unneeded resources for use elsewhere.
-        Constant Value: 5 (0x00000005)
-        */
-            case TRIM_MEMORY_UI_HIDDEN:
-
-                debug("trim memory requested: app is not showing UI anymore");
-            return;
-                
-        /**
-        public static final int TRIM_MEMORY_UI_HIDDEN
-        Level for onTrimMemory(int): the process had been showing a user interface, and is no longer doing so. Large allocations with the UI should be released at this point to allow memory to be better managed.
-        Constant Value: 20 (0x00000014)
-        */
-        }
-        
-    }
-
-    @Override
-    public IBinder onBind(Intent arg0) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-    
-    private void setExitNode (String newExits)
-    {
-    	SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-        
-    	if (TextUtils.isEmpty(newExits))
-    	{
-    		prefs.edit().remove("pref_exit_nodes").apply();
-    		
-    		if (conn != null)
-        	{
-    	    	try
-    	    	{
-    	    		ArrayList<String> resetBuffer = new ArrayList<String>();
-    	    		resetBuffer.add("ExitNodes");
-    	    		resetBuffer.add("StrictNodes");
-    	    		conn.resetConf(resetBuffer);
-    	    		conn.setConf("DisableNetwork","1");
-    	    		conn.setConf("DisableNetwork","0");
-    	    		
-    	    	}
-    	    	catch (Exception ioe)
-    	    	{
-    	    		Log.e(TAG, "Connection exception occured resetting exits",ioe);
-    	    	}
-        	}
-    	}
-    	else
-    	{
-    		prefs.edit().putString("pref_exit_nodes", newExits).apply();
-    		
-    		if (conn != null)
-        	{
-    	    	try
-    	    	{
-                    File fileGeoIP = new File(OrbotApp.appBinHome, GEOIP_ASSET_KEY);
-                    File fileGeoIP6 = new File(OrbotApp.appBinHome, GEOIP6_ASSET_KEY);
-                        
-                    conn.setConf("GeoIPFile",fileGeoIP.getCanonicalPath());
-                    conn.setConf("GeoIPv6File",fileGeoIP6.getCanonicalPath());
-                    
-    	    		conn.setConf("ExitNodes", newExits);
-    	    		conn.setConf("StrictNodes","1");
-    	    		
-    	    		conn.setConf("DisableNetwork","1");
-    	    		conn.setConf("DisableNetwork","0");
-
-    	    	}
-    	    	catch (Exception ioe)
-    	    	{
-    	    		Log.e(TAG, "Connection exception occured resetting exits",ioe);    	    	
-    	    	}
-        	}
-    	}
-
-    }
-
-}
diff --git a/src/org/torproject/android/service/TorServiceConstants.java b/src/org/torproject/android/service/TorServiceConstants.java
deleted file mode 100644
index e2f0964..0000000
--- a/src/org/torproject/android/service/TorServiceConstants.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-package org.torproject.android.service;
-
-import android.content.Intent;
-
-public interface TorServiceConstants {
-
-	public final static String TOR_APP_USERNAME = "org.torproject.android";
-	public final static String BROWSER_APP_USERNAME = "info.guardianproject.orfox";
-	
-	public final static String DIRECTORY_TOR_BINARY = "bin";
-	public final static String DIRECTORY_TOR_DATA = "data";
-	
-	//name of the tor C binary
-	public final static String TOR_ASSET_KEY = "tor";	
-	
-	//torrc (tor config file)
-	public final static String TORRC_ASSET_KEY = "torrc";
-	public final static String TORRCDIAG_ASSET_KEY = "torrcdiag";
-	public final static String TORRC_TETHER_KEY = "torrctether";
-	
-	public final static String TOR_CONTROL_COOKIE = "control_auth_cookie";
-	
-	//privoxy
-	public final static String POLIPO_ASSET_KEY = "polipo";
-	
-	//privoxy.config
-	public final static String POLIPOCONFIG_ASSET_KEY = "torpolipo.conf";
-	
-	//geoip data file asset key
-	public final static String GEOIP_ASSET_KEY = "geoip";
-	public final static String GEOIP6_ASSET_KEY = "geoip6";
-
-	//various console cmds
-	public final static String SHELL_CMD_CHMOD = "chmod";
-	public final static String SHELL_CMD_KILL = "kill -9";
-	public final static String SHELL_CMD_RM = "rm";
-	public final static String SHELL_CMD_PS = "toolbox ps";
-	public final static String SHELL_CMD_PS_ALT = "ps";
-    
-    
-	//public final static String SHELL_CMD_PIDOF = "pidof";
-	public final static String SHELL_CMD_LINK = "ln -s";
-	public final static String SHELL_CMD_CP = "cp";
-	
-
-	public final static String CHMOD_EXE_VALUE = "770";
-
-	public final static int FILE_WRITE_BUFFER_SIZE = 1024;
-
-	public final static String IP_LOCALHOST = "127.0.0.1";
-	public final static int UPDATE_TIMEOUT = 1000;
-	public final static int TOR_TRANSPROXY_PORT_DEFAULT = 9040;
-	
-	public final static int STANDARD_DNS_PORT = 53;
-	public final static int TOR_DNS_PORT_DEFAULT = 5400;
-	public final static String TOR_VPN_DNS_LISTEN_ADDRESS = "127.0.0.1";
-	
-	public final static int CONTROL_PORT_DEFAULT = 9051;
-    public final static int HTTP_PROXY_PORT_DEFAULT = 8118; // like Privoxy!
-    public final static int SOCKS_PROXY_PORT_DEFAULT = 9050;
-
-    
-	//path to check Tor against
-	public final static String URL_TOR_CHECK = "https://check.torproject.org";
-
-    //control port 
-    public final static String TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE = "Bootstrapped 100%";
-    public final static String LOG_NOTICE_HEADER = "NOTICE";
-    public final static String LOG_NOTICE_BOOTSTRAPPED = "Bootstrapped";
-    
-    /**
-     * A request to Orbot to transparently start Tor services
-     */
-    public final static String ACTION_START = "org.torproject.android.intent.action.START";
-    /**
-     * {@link Intent} send by Orbot with {@code ON/OFF/STARTING/STOPPING} status
-     */
-    public final static String ACTION_STATUS = "org.torproject.android.intent.action.STATUS";
-    /**
-     * {@code String} that contains a status constant: {@link #STATUS_ON},
-     * {@link #STATUS_OFF}, {@link #STATUS_STARTING}, or
-     * {@link #STATUS_STOPPING}
-     */
-    public final static String EXTRA_STATUS = "org.torproject.android.intent.extra.STATUS";
-    /**
-     * A {@link String} {@code packageName} for Orbot to direct its status reply
-     * to, used in {@link #ACTION_START} {@link Intent}s sent to Orbot
-     */
-    public final static String EXTRA_PACKAGE_NAME = "org.torproject.android.intent.extra.PACKAGE_NAME";
-    /**
-     * The SOCKS proxy settings in URL form.
-     */
-    public final static String EXTRA_SOCKS_PROXY = "org.torproject.android.intent.extra.SOCKS_PROXY";
-    public final static String EXTRA_SOCKS_PROXY_HOST = "org.torproject.android.intent.extra.SOCKS_PROXY_HOST";
-    public final static String EXTRA_SOCKS_PROXY_PORT = "org.torproject.android.intent.extra.SOCKS_PROXY_PORT";
-    /**
-     * The HTTP proxy settings in URL form.
-     */
-    public final static String EXTRA_HTTP_PROXY = "org.torproject.android.intent.extra.HTTP_PROXY";
-    public final static String EXTRA_HTTP_PROXY_HOST = "org.torproject.android.intent.extra.HTTP_PROXY_HOST";
-    public final static String EXTRA_HTTP_PROXY_PORT = "org.torproject.android.intent.extra.HTTP_PROXY_PORT";
-
-    public final static String LOCAL_ACTION_LOG = "log";
-    public final static String LOCAL_ACTION_BANDWIDTH = "bandwidth";
-    public final static String LOCAL_EXTRA_LOG = "log";
-
-    /**
-     * All tor-related services and daemons are stopped
-     */
-    public final static String STATUS_OFF = "OFF";
-    /**
-     * All tor-related services and daemons have completed starting
-     */
-    public final static String STATUS_ON = "ON";
-    public final static String STATUS_STARTING = "STARTING";
-    public final static String STATUS_STOPPING = "STOPPING";
-    /**
-     * The user has disabled the ability for background starts triggered by
-     * apps. Fallback to the old Intent that brings up Orbot.
-     */
-    public final static String STATUS_STARTS_DISABLED = "STARTS_DISABLED";
-
-    // actions for internal command Intents
-    public static final String CMD_SIGNAL_HUP = "signal_hup";
-    public static final String CMD_STATUS = "status";
-    public static final String CMD_FLUSH = "flush";
-    public static final String CMD_NEWNYM = "newnym";
-    public static final String CMD_VPN = "vpn";
-    public static final String CMD_VPN_CLEAR = "vpnclear";
-    public static final String CMD_UPDATE_TRANS_PROXY = "update";
-    public static final String CMD_SET_EXIT = "setexit";
-    
-    
-    
-    public static final String BINARY_TOR_VERSION = "0.2.7.5-020120160125";
-    public static final String PREF_BINARY_TOR_VERSION_INSTALLED = "BINARY_TOR_VERSION_INSTALLED";
-    
-    //obfsproxy 
-    public static final String OBFSCLIENT_ASSET_KEY = "obfs4proxy";
-    
-   // public static final String MEEK_ASSET_KEY = "meek-client";
-    
-	//name of the iptables binary
-	public final static String IPTABLES_ASSET_KEY = "xtables";	
-
-	//DNS daemon for TCP DNS over TOr
-	public final static String PDNSD_ASSET_KEY = "pdnsd";
-
-	//EXIT COUNTRY CODES
-	public final static String[] COUNTRY_CODES = {"DE","AT","SE","CH","IS","CA","US","ES","FR","BG","PL","AU","BR","CZ","DK","FI","GB","HU","NL","JP","RO","RU","SG","SK"};
-	
-	//MEEK BRIDGEs	
-	public final static String[] BRIDGES_MEEK = 
-		{
-			"meek_lite 0.0.2.0:1 url=https://meek-reflect.appspot.com/ front=www.google.com",
-			"meek_lite 0.0.2.0:2 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com",
-			"meek_lite 0.0.2.0:3 url=https://az668014.vo.msecnd.net/ front=ajax.aspnetcdn.com"
-		};
-
-}
diff --git a/src/org/torproject/android/service/TorServiceUtils.java b/src/org/torproject/android/service/TorServiceUtils.java
deleted file mode 100644
index 9a072b9..0000000
--- a/src/org/torproject/android/service/TorServiceUtils.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-package org.torproject.android.service;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.net.ConnectException;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.util.StringTokenizer;
-
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.OrbotApp;
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.Prefs;
-
-import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Build;
-import android.util.Log;
-
-public class TorServiceUtils implements TorServiceConstants {
-
-	
-	
-	public static int findProcessId(String command) throws IOException 
-	{
-		int procId = findProcessIdWithPS(command);
-		return procId;
-	}
-	
-	//use 'pidof' command
-	/**
-	public static int findProcessIdWithPidOf(String command) throws Exception
-	{
-		
-		int procId = -1;
-		
-		Runtime r = Runtime.getRuntime();
-		    	
-		Process procPs = null;
-		
-		String baseName = new File(command).getName();
-		//fix contributed my mikos on 2010.12.10
-		procPs = r.exec(new String[] {SHELL_CMD_PIDOF, baseName});
-        //procPs = r.exec(SHELL_CMD_PIDOF);
-            
-        BufferedReader reader = new BufferedReader(new InputStreamReader(procPs.getInputStream()));
-        String line = null;
-
-        while ((line = reader.readLine())!=null)
-        {
-        
-        	try
-        	{
-        		//this line should just be the process id
-        		procId = Integer.parseInt(line.trim());
-        		break;
-        	}
-        	catch (NumberFormatException e)
-        	{
-        		Log.e("TorServiceUtils","unable to parse process pid: " + line,e);
-        	}
-        }
-            
-       
-        return procId;
-
-	}
-	 * @throws IOException */
-	
-	//use 'ps' command
-	public static int findProcessIdWithPS(String command) throws IOException 
-	{
-		
-		int procId = -1;
-		
-		Runtime r = Runtime.getRuntime();
-		    	
-		Process procPs = null;
-		
-        procPs = r.exec(SHELL_CMD_PS); // this is the android ps <name> command
-            
-        BufferedReader reader = new BufferedReader(new InputStreamReader(procPs.getInputStream()));
-        String line = null;
-        
-        while ((line = reader.readLine())!=null)
-        {
-        	if (line.contains("PID"))
-        		continue;
-        		
-        	if (line.contains(command))
-        	{
-        		
-        		String[] lineParts = line.split("\\s+");
-        		
-        	    try { 
-        	        
-        	        procId = Integer.parseInt(lineParts[1]); //for most devices it is the second number
-        	    } catch(NumberFormatException e) {
-        	    	procId = Integer.parseInt(lineParts[0]); //but for samsungs it is the first
-        	        
-        	    }
-        		
-        		
-        		break;
-        	}
-        }
-        
-        try { procPs.destroy(); } catch (Exception e) {} // try to destroy just to make sure we clean it up
-       
-        return procId;
-
-	}
-	
-	public static SharedPreferences getSharedPrefs (Context context)
-	{
-		if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB)
-			return context.getSharedPreferences(OrbotConstants.PREF_TOR_SHARED_PREFS,0 | Context.MODE_MULTI_PROCESS);
-		else
-			return context.getSharedPreferences(OrbotConstants.PREF_TOR_SHARED_PREFS,Context.MODE_PRIVATE);
-		
-	}
-	
-	public static void killProcess(File fileProcBin) throws Exception {
-        killProcess(fileProcBin, "-9"); // this is -KILL
-    }
-
-    public static void killProcess(File fileProcBin, String signal) throws Exception {
-        int procId = -1;
-        int killAttempts = 0;
-
-        while ((procId = TorServiceUtils.findProcessId(fileProcBin.getCanonicalPath())) != -1) {
-            killAttempts++;
-            //logNotice("Found " + fileProcBin.getName() + " PID=" + procId + " - killing now...");
-            String pidString = String.valueOf(procId);
-            /*
-             * first try as the normal app user to be safe, then if that fails,
-             * try root since the process might be left over from
-             * uninstall/reinstall with different UID.
-             */
-            Shell shell;
-            if (Prefs.useRoot() && killAttempts > 2) {
-                shell = Shell.startRootShell();
-                Log.i(OrbotApp.TAG, "using a root shell");
-            } else {
-                shell = Shell.startShell();
-            }
-            shell.add(new SimpleCommand("busybox killall " + signal + " " + fileProcBin.getName()));
-            shell.add(new SimpleCommand("toolbox kill " + signal + " " + pidString));
-            shell.add(new SimpleCommand("busybox kill " + signal + " " + pidString));
-            shell.add(new SimpleCommand("kill " + signal + " " + pidString));
-            try {
-                Thread.sleep(1000);
-            } catch (InterruptedException e) {
-                // ignored
-            }
-            shell.close();
-            if (killAttempts > 4)
-                throw new Exception("Cannot kill: " + fileProcBin.getAbsolutePath());
-        }
-    }
-
-    public static boolean isPortOpen(final String ip, final int port, final int timeout) {
-        try {
-            Socket socket = new Socket();
-            socket.connect(new InetSocketAddress(ip, port), timeout);
-            socket.close();
-            return true;
-        } 
-
-        catch(ConnectException ce){
-            //ce.printStackTrace();
-            return false;
-        }
-
-        catch (Exception ex) {
-            //ex.printStackTrace();
-            return false;
-        }
-    }
-}
diff --git a/src/org/torproject/android/service/TorTransProxy.java b/src/org/torproject/android/service/TorTransProxy.java
deleted file mode 100644
index f88e46b..0000000
--- a/src/org/torproject/android/service/TorTransProxy.java
+++ /dev/null
@@ -1,763 +0,0 @@
-package org.torproject.android.service;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.Prefs;
-import org.torproject.android.settings.TorifiedApp;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-
-public class TorTransProxy implements TorServiceConstants {
-	
-	private String mSysIptables = null;
-	private TorService mTorService = null;
-	private File mFileXtables = null;
-	
-	private final static String ALLOW_LOCAL = " ! -d 127.0.0.1";
-
-	private int mTransProxyPort = TorServiceConstants.TOR_TRANSPROXY_PORT_DEFAULT;
-	private int mDNSPort = TorServiceConstants.TOR_DNS_PORT_DEFAULT;
-	
-	public TorTransProxy (TorService torService, File fileXTables)
-	{
-		mTorService = torService;
-		mFileXtables = fileXTables;	
-	}
-	
-	public void setTransProxyPort (int transProxyPort)
-	{
-		mTransProxyPort = transProxyPort;
-	}
-	
-	public void setDNSPort (int dnsPort)
-	{
-		mDNSPort = dnsPort;
-	}
-	
-	public String getIpTablesPath (Context context)
-	{
-
-		String ipTablesPath = null;
-
-		if (Prefs.useSystemIpTables())
-		{
-			ipTablesPath = findSystemIPTables();
-		}
-		else
-		{
-			ipTablesPath = mFileXtables.getAbsolutePath();
-			ipTablesPath += " iptables"; //append subcommand since we are using xtables now
-			
-		}
-			
-		return ipTablesPath;
-	}
-	
-	public String getIp6TablesPath (Context context)
-	{
-
-		String ipTablesPath = null;
-		
-		if (Prefs.useSystemIpTables())
-		{
-			ipTablesPath = findSystemIP6Tables();
-		}
-		else
-		{
-			ipTablesPath = mFileXtables.getAbsolutePath();
-			ipTablesPath += " ip6tables"; //append subcommand since we are using xtables now
-			
-		}
-			
-		return ipTablesPath;
-	
-	}
-	
-	private String findSystemIPTables ()
-	{
-		if (mSysIptables != null)
-		{
-			return mSysIptables;
-		}
-		else
-		{
-		
-			//if the user wants us to use the built-in iptables, then we have to find it
-			File fileIpt = new File("/system/xbin/iptables");
-			
-			if (fileIpt.exists())
-				mSysIptables = fileIpt.getAbsolutePath();
-			else
-			{
-			
-				fileIpt = new File("/system/bin/iptables");
-				
-				if (fileIpt.exists())
-					mSysIptables = fileIpt.getAbsolutePath();
-			}
-		}
-		
-		return mSysIptables;
-	}
-	
-
-	
-	private String findSystemIP6Tables ()
-	{
-		
-		//if the user wants us to use the built-in iptables, then we have to find it
-		File fileIpt = new File("/system/xbin/ip6tables");
-		
-		if (fileIpt.exists())
-			mSysIptables = fileIpt.getAbsolutePath();
-		else
-		{
-		
-			fileIpt = new File("/system/bin/ip6tables");
-			
-			if (fileIpt.exists())
-				mSysIptables = fileIpt.getAbsolutePath();
-		}
-		
-		
-		return mSysIptables;
-	}
-	
-	/*
-	public int flushIptablesAll(Context context) throws Exception {
-		
-		String ipTablesPath = getIpTablesPath(context);
-	
-    	final StringBuilder script = new StringBuilder();
-    	
-    	StringBuilder res = new StringBuilder();
-    	int code = -1;
-
-		script.append(ipTablesPath);
-		script.append(" -t nat");
-		script.append(" -F || exit\n");
-	
-		script.append(ipTablesPath);
-		script.append(" -t filter");
-		script.append(" -F || exit\n");
-    	
-    	String[] cmd = {script.toString()};	    	
-		code = TorServiceUtils.doShellCommand(cmd, res, true, true);		
-		String msg = res.toString();
-		
-		TorService.logMessage(cmd[0] + ";errCode=" + code + ";resp=" + msg);
-			
-		
-		return code;
-	
-	}*/
-	
-	/*
-	public static int purgeIptablesByApp(Context context, TorifiedApp[] apps) throws Exception {
-
-		//restoreDNSResolvConf(); //not working yet
-		
-		String ipTablesPath = new File(context.getDir("bin", 0),"iptables").getAbsolutePath();
-		
-    	final StringBuilder script = new StringBuilder();
-    	
-    	StringBuilder res = new StringBuilder();
-    	int code = -1;
-    	
-		for (int i = 0; i < apps.length; i++)
-		{
-			//flush nat for every app
-			script.append(ipTablesPath);
-			script.append(" -t nat -m owner --uid-owner ");
-			script.append(tApp.getUid());
-			script.append(" -F || exit\n");
-		
-			script.append(ipTablesPath);
-			script.append(" -t filter -m owner --uid-owner ");
-			script.append(tApp.getUid());
-			script.append(" -F || exit\n");
-				
-		}
-		
-    	
-    	String[] cmd = {script.toString()};	    	
-		code = TorServiceUtils.doShellCommand(cmd, res, true, true);		
-		String msg = res.toString();
-		logNotice(cmd[0] + ";errCode=" + code + ";resp=" + msg);
-			
-		
-		return code;
-		
-	}*/
-	
-	
-	/*
-	 // 9/19/2010 - NF This code is in process... /etc path on System partition
-	 // is read-only on Android for now.
-	public static int redirectDNSResolvConf () throws Exception
-	{
-    	StringBuilder script = new StringBuilder();
-    	StringBuilder res = new StringBuilder();
-    	int code = -1;
-    	
-		//mv resolv.conf to resolve.conf.bak
-		String cmd = "mv /etc/resolv.conf /etc/resolv.conf.bak";
-		script.append(cmd);
-		
-		//create new resolve.conf pointing to localhost/127.0.0.1
-		cmd = "echo \"nameserver 127.0.0.1\" > /etc/resolv.conf";
-		script.append(cmd);
-		
-		String[] cmdFlush = {script.toString()};
-		code = TorServiceUtils.doShellCommand(cmdFlush, res, true, true);
-		//String msg = res.toString(); //get stdout from command
-		
-		
-		return code;
-	}
-	
-	public static int restoreDNSResolvConf () throws Exception
-	{
-		StringBuilder script = new StringBuilder();
-    	StringBuilder res = new StringBuilder();
-    	int code = -1;
-    	
-		//mv resolv.conf to resolve.conf.bak
-		String cmd = "mv /etc/resolv.conf.bak /etc/resolv.conf";
-		script.append(cmd);
-		script.append(" || exit\n");
-		
-		String[] cmdFlush = {script.toString()};
-		code = TorServiceUtils.doShellCommand(cmdFlush, res, true, true);
-		//String msg = res.toString(); //get stdout from command
-		
-		return code;
-	}
-	*/
-	/*
-	public int testOwnerModule(Context context, String ipTablesPath) throws Exception
-	{
-
-		TorBinaryInstaller.assertIpTablesBinaries(context, false);
-		
-		boolean runRoot = true;
-    	boolean waitFor = true;
-    	
-    	int torUid = context.getApplicationInfo().uid;
-
-    	StringBuilder script = new StringBuilder();
-    	
-    	StringBuilder res = new StringBuilder();
-    	int code = -1;
-    	
-    	// Allow everything for Tor
-		script.append(ipTablesPath);
-		script.append(" -A OUTPUT");
-		script.append(" -t filter");
-		script.append(" -m owner --uid-owner ");
-		script.append(torUid);
-		script.append(" -j ACCEPT");
-		script.append(" || exit\n");
-		
-		script.append(ipTablesPath);
-		script.append(" -D OUTPUT");
-		script.append(" -t filter");
-		script.append(" -m owner --uid-owner ");
-		script.append(torUid);
-		script.append(" -j ACCEPT");
-		script.append(" || exit\n");
-		
-		String[] cmdAdd = {script.toString()};    	
-    	
-		code = TorServiceUtils.doShellCommand(cmdAdd, res, runRoot, waitFor);
-		String msg = res.toString();
-		
-		if (mTorService != null)
-		logMessage(cmdAdd[0] + ";errCode=" + code + ";resp=" + msg);
-		
-		
-		return code;
-    }	
-	*/
-	
-	/*
-	public int clearTransparentProxyingByApp (Context context, ArrayList<TorifiedApp> apps) throws Exception
-	{
-		boolean runRoot = true;
-    	boolean waitFor = true;
-    	
-		String ipTablesPath = getIpTablesPath(context);
-		
-    	StringBuilder script = new StringBuilder();
-    	
-    	StringBuilder res = new StringBuilder();
-    	int code = -1;
-    	
-    	String chainName = "ORBOT";
-		String jumpChainName = "OUTPUT";
-		
-		script.append(ipTablesPath);
-    	script.append(" --flush ").append(chainName); //delete previous user-defined chain
-    	script.append(" || exit\n");
-    	
-		script.append(ipTablesPath);
-    	script.append(" -D ").append(jumpChainName);
-    	script.append(" -j ").append(chainName);
-    	script.append(" || exit\n");
-    	
-    	script.append(ipTablesPath);
-    	script.append(" -X ").append(chainName); //delete previous user-defined chain
-    	script.append(" || exit\n");
-
-		String[] cmdAdd = {script.toString()};    	
-    		
-		code = TorServiceUtils.doShellCommand(cmdAdd, res, runRoot, waitFor);
-		String msg = res.toString();
-		
-		logMessage(cmdAdd[0] + ";errCode=" + code + ";resp=" + msg);
-		
-		return code;
-	}*/
-	
-	public int setTransparentProxyingByApp(Context context, ArrayList<TorifiedApp> apps, boolean enableRule, Shell shell)
-	{
-		String ipTablesPath = getIpTablesPath(context);
-		
-    	//StringBuilder script = new StringBuilder();
-    	
-		String action = " -A ";
-    	String srcChainName = "OUTPUT";
-
-		if (!enableRule)
-			action = " -D ";
-		
-    	//run the delete commands in a separate process as it might error out
-    	//String[] cmdExecClear = {script.toString()};    	    	
-		//code = TorServiceUtils.doShellCommand(cmdExecClear, res, runRoot, waitFor);
-		
-		//reset script
-		
-    	int lastExit = -1;
-    	StringBuilder script;    	
-    	
-
-		// Same for DNS
-		script = new StringBuilder();
-		script.append(ipTablesPath);
-		script.append(" -t nat");
-		script.append(action).append(srcChainName);
-		script.append(" -p udp");
-		//script.append(" -m owner --uid-owner ");
-		//script.append(tApp.getUid());
-		//script.append(" -m udp --dport "); 
-		script.append(" --dport ");
-		script.append(STANDARD_DNS_PORT);
-		script.append(" -j REDIRECT --to-ports ");
-		script.append(mDNSPort);
-		executeCommand (shell, script.toString());
-		
-    	// Allow everything for Tor
-    	
-		//build up array of shell cmds to execute under one root context
-		for (TorifiedApp tApp:apps)
-		{
-
-			if (((!enableRule) || tApp.isTorified())
-					&& (!tApp.getUsername().equals(TorServiceConstants.TOR_APP_USERNAME))
-					) //if app is set to true
-			{
-				
-				
-				logMessage("transproxy for app: " + tApp.getUsername() + " (" + tApp.getUid() + "): enable=" + enableRule);
-				
-				dropAllIPv6Traffic(context, tApp.getUid(),enableRule, shell);
-				
-		    	script = new StringBuilder();
-
-				// Allow loopback
-		    	/**
-				script.append(ipTablesPath);
-				script.append(" -t filter");
-		        script.append(action).append(srcChainName);
-				script.append(" -m owner --uid-owner ");
-				script.append(tApp.getUid());
-				script.append(" -o lo");
-				script.append(" -j ACCEPT");
-
-				executeCommand (shell, script.toString());
-				script = new StringBuilder();
-				**/
-				
-				// Set up port redirection
-		    	script.append(ipTablesPath);
-		    	script.append(" -t nat");
-		    	script.append(action).append(srcChainName);				
-				script.append(" -p tcp");
-				script.append(ALLOW_LOCAL);
-				script.append(" -m owner --uid-owner ");
-				script.append(tApp.getUid());
-				script.append(" -m tcp --syn");
-				script.append(" -j REDIRECT --to-ports ");
-				script.append(mTransProxyPort);
-				
-				executeCommand (shell, script.toString());
-				
-				
-				script = new StringBuilder();
-				
-				// Reject all other outbound packets
-				script.append(ipTablesPath);
-				script.append(" -t filter");
-		        script.append(action).append(srcChainName);
-				script.append(" -m owner --uid-owner ");
-				script.append(tApp.getUid());				
-				script.append(ALLOW_LOCAL);
-				script.append(" -j REJECT");
-
-				lastExit = executeCommand (shell, script.toString());
-				
-		
-			}		
-		}		
-		
-		return lastExit;
-    }	
-	
-	private int executeCommand (Shell shell, String cmdString) {
-		SimpleCommand cmd = new SimpleCommand(cmdString);
-		try {
-		    shell.add(cmd);
-		} catch (IOException e) {
-		    e.printStackTrace();
-		}
-		int exitCode = cmd.getExitCode();
-		String output = cmd.getOutput();
-		
-		logMessage(cmdString + "; exit=" + exitCode + ";output=" + output);
-		
-		return exitCode;
-	}
-	
-	
-	public int enableTetheringRules (Context context, Shell shell) throws Exception
-	{
-		
-		String ipTablesPath = getIpTablesPath(context);
-		
-    	StringBuilder script = new StringBuilder();
-    
-    	String[] hwinterfaces = {"usb0","wl0.1"};
-    	
-    	
-    	int lastExit = -1;
-    	
-    	for (int i = 0; i < hwinterfaces.length; i++)
-    	{
-
-			script = new StringBuilder();
-	    	script.append(ipTablesPath);
-			script.append(" -t nat -A PREROUTING -i ");
-			script.append(hwinterfaces[i]);
-			script.append(" -p udp --dport 53 -j REDIRECT --to-ports ");
-			script.append(mDNSPort);
-			
-			executeCommand (shell, script.toString());
-			script = new StringBuilder();
-			
-			
-			script = new StringBuilder();
-			script.append(ipTablesPath);
-			script.append(" -t nat -A PREROUTING -i ");
-			script.append(hwinterfaces[i]);
-			script.append(" -p tcp -j REDIRECT --to-ports ");
-			script.append(mTransProxyPort);
-			
-			lastExit = executeCommand (shell, script.toString());
-			script = new StringBuilder();
-			
-			
-    	}
-    	
-		return lastExit;
-	}
-	
-	private void logMessage (String msg)
-	{
-		if (mTorService != null)
-			mTorService.debug(msg);
-	}
-	
-
-	
-	public int fixTransproxyLeak (Context context, Shell shell) throws Exception 
-	{
-		String ipTablesPath = getIpTablesPath(context);
-		
-    	StringBuilder script = new StringBuilder();
-    	script.append(ipTablesPath);
-		script.append(" -I OUTPUT ! -o lo ! -d 127.0.0.1 ! -s 127.0.0.1 -p tcp -m tcp --tcp-flags ACK,FIN ACK,FIN -j DROP");
-		
-		executeCommand (shell, script.toString());
-		script = new StringBuilder();
-		
-		script = new StringBuilder();
-		script.append(ipTablesPath);
-		script.append(" -I OUTPUT ! -o lo ! -d 127.0.0.1 ! -s 127.0.0.1 -p tcp -m tcp --tcp-flags ACK,RST ACK,RST -j DROP");
-		
-		int lastExit = executeCommand (shell, script.toString());
-		script = new StringBuilder();
-		
-		return lastExit;
-		 
-	}
-	
-	public int dropAllIPv6Traffic (Context context, int appUid, boolean enableDrop, Shell shell) {
-
-		String action = " -A ";
-		String chain = "OUTPUT";
-		
-		if (!enableDrop)
-			action = " -D ";
-		
-		String ip6tablesPath = getIp6TablesPath(context);
-    	
-    	StringBuilder script;
-
-		script = new StringBuilder();
-		script.append(ip6tablesPath);			
-		script.append(action);
-		script.append(chain);
-
-		if (appUid != -1)
-		{
-			script.append(" -m owner --uid-owner ");
-			script.append(appUid);	
-		}
-		
-		script.append(" -j DROP");
-		
-		int lastExit = executeCommand (shell, script.toString());
-		
-		return lastExit;
-	}
-	
-	/*
-	public int clearAllIPv6Filters (Context context) throws Exception
-	{
-
-		String ip6tablesPath = getIp6TablesPath(context);
-		Shell shell = Shell.startRootShell();
-    	
-    	StringBuilder script;
-
-		script = new StringBuilder();
-		script.append(ip6tablesPath);			
-		script.append(" -t filter");
-		script.append(" -F OUTPUT");
-		int lastExit = executeCommand (shell, script.toString());
-		
-		shell.close();
-		
-		return lastExit;
-	}*/
-	
-	public int flushTransproxyRules (Context context) throws IOException {
-		int exit = -1;
-		
-		String ipTablesPath = getIpTablesPath(context);
-		Shell shell = Shell.startRootShell();
-		
-		StringBuilder script = new StringBuilder();
-		script.append(ipTablesPath);			
-		script.append(" -t nat ");
-		script.append(" -F ");
-		
-    	executeCommand (shell, script.toString());
-		
-		script = new StringBuilder();
-		script.append(ipTablesPath);			
-		script.append(" -t filter ");
-		script.append(" -F ");
-		executeCommand (shell, script.toString());
-		
-		dropAllIPv6Traffic(context,-1,false, shell);
-
-		shell.close();
-		
-		return exit;
-	}
-	
-	public int setTransparentProxyingAll(Context context, boolean enable, Shell shell) throws Exception 
-	{
-	  	
-		String action = " -A ";
-    	String srcChainName = "OUTPUT";
-
-		if (!enable)
-			action = " -D ";
-
-		dropAllIPv6Traffic(context,-1,enable, shell);
-		
-		String ipTablesPath = getIpTablesPath(context);
-		
-    	
-    	int torUid = context.getApplicationInfo().uid;
-    	
-    	StringBuilder script = new StringBuilder();
-    	
-		// Allow everything for Tor
-    	
-		script.append(ipTablesPath);			
-		script.append(" -t nat");
-		script.append(action).append(srcChainName);
-		script.append(" -m owner --uid-owner ");
-		script.append(torUid);
-		script.append(" -j ACCEPT");
-		
-		executeCommand (shell, script.toString());
-		script = new StringBuilder();
-
-		// Allow loopback
-		
-		script.append(ipTablesPath);
-		script.append(" -t nat");
-		script.append(action).append(srcChainName);
-		script.append(" -o lo");
-		script.append(" -j ACCEPT");
-
-		executeCommand (shell, script.toString());
-		script = new StringBuilder();
-		
-    	// Set up port redirection    	
-		script.append(ipTablesPath);		
-		script.append(" -t nat");
-		script.append(action).append(srcChainName);
-		script.append(" -p tcp");
-		script.append(ALLOW_LOCAL); //allow access to localhost
-		script.append(" -m owner ! --uid-owner ");
-		script.append(torUid);
-		script.append(" -m tcp --syn");
-		script.append(" -j REDIRECT --to-ports ");
-		script.append(mTransProxyPort);
-
-		executeCommand (shell, script.toString());
-		script = new StringBuilder();
-		
-		// Same for DNS
-		script.append(ipTablesPath);
-		script.append(" -t nat");
-		script.append(action).append(srcChainName);
-		script.append(" -p udp");
-		script.append(ALLOW_LOCAL); //allow access to localhost
-		script.append(" -m owner ! --uid-owner ");
-		script.append(torUid);
-		//script.append(" -m udp --dport "); 
-		script.append(" --dport ");
-		script.append(STANDARD_DNS_PORT);
-		script.append(" -j REDIRECT --to-ports ");
-		script.append(mDNSPort);
-
-		executeCommand (shell, script.toString());
-		script = new StringBuilder();
-		
-		
-		if (Prefs.useDebugLogging())
-		{
-			//XXX: Comment the following rules for non-debug builds
-			script.append(ipTablesPath);			
-			script.append(" -t filter");
-			script.append(action).append(srcChainName);
-			script.append(" -p udp");
-			script.append(" --dport ");
-			script.append(STANDARD_DNS_PORT);
-			script.append(" -j LOG");
-			script.append(" --log-prefix='ORBOT_DNSLEAK_PROTECTION'");
-			script.append(" --log-uid");
-
-			executeCommand (shell, script.toString());
-			script = new StringBuilder();
-			
-			script.append(ipTablesPath);			
-			script.append(" -t filter");
-			script.append(action).append(srcChainName);
-	    	script.append(" -p tcp");
-			script.append(" -j LOG");
-			script.append(" --log-prefix='ORBOT_TCPLEAK_PROTECTION'");
-			script.append(" --log-uid");
-
-			executeCommand (shell, script.toString());
-			script = new StringBuilder();
-			
-		}
-
-		//allow access to transproxy port
-		script.append(ipTablesPath);
-		script.append(" -t filter");
-		script.append(action).append(srcChainName);
-		script.append(" -p tcp");
-		script.append(" -m tcp");
-		script.append(" --dport ").append(mTransProxyPort);
-		script.append(" -j ACCEPT");
-
-		executeCommand (shell, script.toString());
-		script = new StringBuilder();
-		
-		//allow access to local HTTP port
-		script.append(ipTablesPath);
-		script.append(" -t filter");
-		script.append(action).append(srcChainName);
-		script.append(" -p tcp");
-		script.append(" -m tcp");
-		script.append(" --dport ").append(mTorService.getHTTPPort());
-		script.append(" -j ACCEPT");
-
-		executeCommand (shell, script.toString());
-		script = new StringBuilder();
-		
-		//allow access to local SOCKS port
-		script.append(ipTablesPath);
-		script.append(" -t filter");
-		script.append(action).append(srcChainName);
-		script.append(" -p tcp");
-		script.append(" -m tcp");
-		script.append(" --dport ").append(mTorService.getSOCKSPort());
-		script.append(" -j ACCEPT");
-
-		executeCommand (shell, script.toString());
-		script = new StringBuilder();
-		
-		//allow access to local DNS port
-		script.append(ipTablesPath);
-		script.append(" -t filter");
-		script.append(action).append(srcChainName);
-		script.append(" -p udp");
-		script.append(" -m udp");
-		script.append(" --dport ").append(mDNSPort);
-		script.append(" -j ACCEPT");
-
-		executeCommand (shell, script.toString());
-		script = new StringBuilder();
-		
-		// Reject all other packets
-		script.append(ipTablesPath);
-		script.append(" -t filter");
-		script.append(action).append(srcChainName);
-		script.append(" -m owner ! --uid-owner ");
-		script.append(torUid);
-		script.append(ALLOW_LOCAL); //allow access to localhost
-		script.append(" -j REJECT");
-
-		int lastExit = executeCommand (shell, script.toString());
-		
-	//	fixTransproxyLeak (context);
-		
-    	return lastExit;
-	}	
-	
-
-}
diff --git a/src/org/torproject/android/service/TorrcConfig.java b/src/org/torproject/android/service/TorrcConfig.java
deleted file mode 100644
index 92bfb9b..0000000
--- a/src/org/torproject/android/service/TorrcConfig.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.torproject.android.service;
-
-public class TorrcConfig {
-
-}
-
-/*
- * GeoIPFile
- */
-/*
-HTTPProxy host[:port]
-Tor will make all its directory requests through this host:port (or host:80 if port is not specified), rather than connecting directly to any directory servers.
-
-HTTPProxyAuthenticator username:password
-If defined, Tor will use this username:password for Basic HTTP proxy authentication, as in RFC 2617. This is currently the only form of HTTP proxy authentication that Tor supports; feel free to submit a patch if you want it to support others.
-
-HTTPSProxy host[:port]
-Tor will make all its OR (SSL) connections through this host:port (or host:443 if port is not specified), via HTTP CONNECT rather than connecting directly to servers. You may want to set FascistFirewall to restrict the set of ports you might try to connect to, if your HTTPS proxy only allows connecting to certain ports.
-
-HTTPSProxyAuthenticator username:password
-If defined, Tor will use this username:password for Basic HTTPS proxy authentication, as in RFC 2617. This is currently the only form of HTTPS proxy authentication that Tor supports; feel free to submit a patch if you want it to support others.
-
-Socks4Proxy host[:port]
-Tor will make all OR connections through the SOCKS 4 proxy at host:port (or host:1080 if port is not specified).
-
-Socks5Proxy host[:port]
-Tor will make all OR connections through the SOCKS 5 proxy at host:port (or host:1080 if port is not specified).
-
-Socks5ProxyUsername username
-
-Socks5ProxyPassword password
-If defined, authenticate to the SOCKS 5 server using username and password in accordance to RFC 1929. Both username and password must be between 1 and 255 characters.
-*/
\ No newline at end of file
diff --git a/src/org/torproject/android/service/Utils.java b/src/org/torproject/android/service/Utils.java
deleted file mode 100644
index a89e03f..0000000
--- a/src/org/torproject/android/service/Utils.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-
-package org.torproject.android.service;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-public class Utils {
-
-
-	 public static String readString (InputStream stream)
-	    {
-	    	String line = null;
-	    
-	    	StringBuffer out = new StringBuffer();
-	    	
-	    	try {
-		    	BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
-
-				while ((line = reader.readLine()) != null)
-				{
-					out.append(line);
-					out.append('\n');
-					
-				}
-			} catch (IOException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
-			
-			return out.toString();
-	    	
-	    }
-	/*
-	 * Load the log file text
-	 */
-	 public static String loadTextFile (String path)
-	    {
-	    	String line = null;
-	    
-	    	StringBuffer out = new StringBuffer();
-	    	
-	    	try {
-		    	BufferedReader reader = new BufferedReader((new FileReader(new File(path))));
-
-				while ((line = reader.readLine()) != null)
-				{
-					out.append(line);
-					out.append('\n');
-					
-				}
-				
-				reader.close();
-			} catch (IOException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
-			
-			return out.toString();
-	    	
-	    }
-	 
-
-		/*
-		 * Load the log file text
-		 */
-		 public static boolean saveTextFile (String path, String contents)
-		    {
-			 	
-		    	try {
-		    		
-		    		 FileWriter writer = new FileWriter( path, false );
-                     writer.write( contents );
-                     
-                     writer.close();
-
-                     
-		    		
-		    		return true;
-			    	
-				} catch (IOException e) {
-				//	Log.d(TAG, "error writing file: " + path, e);
-						e.printStackTrace();
-					return false;
-				}
-				
-				
-		    	
-		    }
-	
-
-
-}
diff --git a/src/org/torproject/android/settings/AppManager.java b/src/org/torproject/android/settings/AppManager.java
deleted file mode 100644
index 6bb1437..0000000
--- a/src/org/torproject/android/settings/AppManager.java
+++ /dev/null
@@ -1,389 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-package org.torproject.android.settings;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import org.torproject.android.R;
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.service.TorServiceUtils;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.os.Bundle;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
-import android.widget.ImageView;
-import android.widget.ListAdapter;
-import android.widget.ListView;
-import android.widget.TextView;
-//import android.R;
-
-public class AppManager extends Activity implements OnCheckedChangeListener, OnClickListener, OrbotConstants {
-
-    private ListView listApps;
-    private final static String TAG = "Orbot";
-    
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-    
-        this.setContentView(R.layout.layout_apps);
-        
-        Button buttonSelectAll, buttonSelectNone, buttonInvert;
-
-        buttonSelectAll =   (Button) findViewById(R.id.button_proxy_all);
-        buttonSelectNone =  (Button) findViewById(R.id.button_proxy_none);
-        buttonInvert =      (Button) findViewById(R.id.button_invert_selection);
-
-        buttonSelectAll.setOnClickListener(new OnAutoClickListener(0));
-        buttonSelectNone.setOnClickListener(new OnAutoClickListener(1));
-        buttonInvert.setOnClickListener(new OnAutoClickListener(2));
-    }
-
-    class OnAutoClickListener implements Button.OnClickListener {
-        private int status;
-        public OnAutoClickListener(int status){
-            this.status = status;
-        }
-        @SuppressWarnings("unchecked")
-        public void onClick(View button){
-            ListView listView;
-            ViewGroup viewGroup;
-            View parentView, currentView;
-            ArrayAdapter<TorifiedApp> adapter;
-            TorifiedApp app;
-            CheckBox box;
-            float buttonId;
-            boolean[] isSelected;
-            int posI, selectedI, lvSz;
-
-            buttonId = button.getId();
-            listView = (ListView) findViewById(R.id.applistview);
-            lvSz = listView.getCount();
-            isSelected = new boolean[lvSz];
-
-            selectedI = -1;
-
-            if (this.status == 0){
-                Log.d(TAG, "Proxifying ALL");
-            }else if (this.status == 1){
-                Log.d(TAG, "Proxifying NONE");
-            }else {
-                Log.d(TAG, "Proxifying invert");
-            }
-
-            Context context = getApplicationContext();
-            SharedPreferences prefs = TorServiceUtils.getSharedPrefs(context);
-            ArrayList<TorifiedApp> apps = getApps(context, prefs);
-            parentView = (View) findViewById(R.layout.layout_apps);
-            viewGroup = (ViewGroup) listView;
-
-            adapter = (ArrayAdapter<TorifiedApp>) listApps.getAdapter();
-            if (adapter == null){
-                Log.w(TAG, "List adapter is null. Getting apps.");
-                loadApps(prefs);
-                adapter = (ArrayAdapter<TorifiedApp>) listApps.getAdapter();
-            }
-
-            for (int i = 0 ; i < adapter.getCount(); ++i){
-                app = (TorifiedApp) adapter.getItem(i);
-                currentView = adapter.getView(i, parentView, viewGroup);
-                box = (CheckBox) currentView.findViewById(R.id.itemcheck);
-                if (this.status == 0){
-                    if (!box.isChecked())
-                        box.performClick();
-                }else if (this.status == 1){
-                    if (box.isChecked())
-                        box.performClick();
-                }else {
-                    box.performClick();
-                }
-            }
-            saveAppSettings(context);
-            loadApps(prefs);
-        }
-    }
-    
-    @Override
-    protected void onResume() {
-        super.onResume();
-        listApps = (ListView)findViewById(R.id.applistview);
-
-        Button btnSave = (Button)findViewById(R.id.btnsave);
-        btnSave.setOnClickListener(new OnClickListener()
-        {
-
-            public void onClick(View v) {
-                finish();
-            }
-        });
-        
-        mPrefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-        loadApps(mPrefs);
-    }
-
-    SharedPreferences mPrefs = null;
-    ArrayList<TorifiedApp> mApps = null;
-    
-    private void loadApps (SharedPreferences prefs)
-    {
-        
-        mApps = getApps(getApplicationContext(), prefs);
-        
-        /*
-        Arrays.sort(apps, new Comparator<TorifiedApp>() {
-            public int compare(TorifiedApp o1, TorifiedApp o2) {
-                if (o1.isTorified() == o2.isTorified()) return o1.getName().compareTo(o2.getName());
-                if (o1.isTorified()) return -1;
-                return 1;
-            }
-        });*/
-        
-        final LayoutInflater inflater = getLayoutInflater();
-        
-        ListAdapter adapter = new ArrayAdapter<TorifiedApp>(this,R.layout.layout_apps_item,R.id.itemtext,mApps) {
-            public View getView(int position, View convertView, ViewGroup parent) {
-                ListEntry entry;
-                if (convertView == null) {
-                    // Inflate a new view
-                    convertView = inflater.inflate(R.layout.layout_apps_item, parent, false);
-                    entry = new ListEntry();
-                    entry.icon = (ImageView) convertView.findViewById(R.id.itemicon);
-                    entry.box = (CheckBox) convertView.findViewById(R.id.itemcheck);
-                    entry.text = (TextView) convertView.findViewById(R.id.itemtext);
-                    
-                    entry.text.setOnClickListener(AppManager.this);
-                    entry.text.setOnClickListener(AppManager.this);
-                    
-                    convertView.setTag(entry);
-                
-                    entry.box.setOnCheckedChangeListener(AppManager.this);
-                } else {
-                    // Convert an existing view
-                    entry = (ListEntry) convertView.getTag();
-                }
-                
-                
-                final TorifiedApp app = mApps.get(position);
-                
-                if (app.getIcon() != null)
-                    entry.icon.setImageDrawable(app.getIcon());
-                else
-                    entry.icon.setVisibility(View.GONE);
-                
-                entry.text.setText(app.getName());
-                
-                final CheckBox box = entry.box;
-                box.setTag(app);
-                box.setChecked(app.isTorified());
-                
-                entry.text.setTag(box);
-                entry.icon.setTag(box);
-                
-                return convertView;
-            }
-        };
-        
-        listApps.setAdapter(adapter);
-        
-    }
-    
-    private static class ListEntry {
-        private CheckBox box;
-        private TextView text;
-        private ImageView icon;
-    }
-    
-    /* (non-Javadoc)
-     * @see android.app.Activity#onStop()
-     */
-    @Override
-    protected void onStop() {
-        super.onStop();
-        
-    }
-
-    
-    public static ArrayList<TorifiedApp> getApps (Context context, SharedPreferences prefs)
-    {
-
-        String tordAppString = prefs.getString(PREFS_KEY_TORIFIED, "");
-        String[] tordApps;
-        
-        StringTokenizer st = new StringTokenizer(tordAppString,"|");
-        tordApps = new String[st.countTokens()];
-        int tordIdx = 0;
-        while (st.hasMoreTokens())
-        {
-            tordApps[tordIdx++] = st.nextToken();
-        }
-        
-        Arrays.sort(tordApps);
-
-        //else load the apps up
-        PackageManager pMgr = context.getPackageManager();
-        
-        List<ApplicationInfo> lAppInfo = pMgr.getInstalledApplications(0);
-        
-        Iterator<ApplicationInfo> itAppInfo = lAppInfo.iterator();
-        
-        ArrayList<TorifiedApp> apps = new ArrayList<TorifiedApp>();
-        
-        ApplicationInfo aInfo = null;
-        
-        int appIdx = 0;
-        TorifiedApp app = null;
-        
-        while (itAppInfo.hasNext())
-        {
-            aInfo = itAppInfo.next();
-            
-            app = new TorifiedApp();
-            
-            try {
-                PackageInfo pInfo = pMgr.getPackageInfo(aInfo.packageName, PackageManager.GET_PERMISSIONS);
-                
-                if (pInfo != null && pInfo.requestedPermissions != null)
-                {
-                    for (String permInfo:pInfo.requestedPermissions)
-                    {
-                        if (permInfo.equals("android.permission.INTERNET"))
-                        {
-                            app.setUsesInternet(true);
-                            
-                        }
-                    }
-                    
-                }
-                
-                
-            } catch (Exception e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
-            }
-            
-            if ((aInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1)
-            {
-                 //System app
-                app.setUsesInternet(true);
-           }
-            
-            
-            if (!app.usesInternet())
-                continue;
-            else
-            {
-                apps.add(app);
-            }
-            
-            
-            app.setEnabled(aInfo.enabled);
-            app.setUid(aInfo.uid);
-            app.setUsername(pMgr.getNameForUid(app.getUid()));
-            app.setProcname(aInfo.processName);
-            app.setPackageName(aInfo.packageName);
-            
-            try
-            {
-                app.setName(pMgr.getApplicationLabel(aInfo).toString());
-            }
-            catch (Exception e)
-            {
-                app.setName(aInfo.packageName);
-            }
-            
-            
-            //app.setIcon(pMgr.getApplicationIcon(aInfo));
-            
-            // check if this application is allowed
-            if (Arrays.binarySearch(tordApps, app.getUsername()) >= 0) {
-                app.setTorified(true);
-            }
-            else
-            {
-                app.setTorified(false);
-            }
-            
-            appIdx++;
-        }
-    
-        Collections.sort(apps);
-        
-        return apps;
-    }
-    
-
-    public void saveAppSettings (Context context)
-    {
-
-        StringBuilder tordApps = new StringBuilder();
-
-        for (TorifiedApp tApp:mApps)
-        {
-            if (tApp.isTorified())
-            {
-                tordApps.append(tApp.getUsername());
-                tordApps.append("|");
-            }
-        }
-        
-        Editor edit = mPrefs.edit();
-        edit.putString(PREFS_KEY_TORIFIED, tordApps.toString());
-        edit.commit();
-        
-    }
-    
-
-    /**
-     * Called an application is check/unchecked
-     */
-    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-        final TorifiedApp app = (TorifiedApp) buttonView.getTag();
-        if (app != null) {
-            app.setTorified(isChecked);
-        }
-        
-        saveAppSettings(this);
-
-    }
-
-    
-
-
-    public void onClick(View v) {
-        
-        CheckBox cbox = (CheckBox)v.getTag();
-        
-        final TorifiedApp app = (TorifiedApp)cbox.getTag();
-        if (app != null) {
-            app.setTorified(!app.isTorified());
-            cbox.setChecked(app.isTorified());
-        }
-        
-        saveAppSettings(this);
-        
-    }
-
-
-
-    
-}
diff --git a/src/org/torproject/android/settings/SettingsPreferences.java b/src/org/torproject/android/settings/SettingsPreferences.java
deleted file mode 100644
index 8d861f4..0000000
--- a/src/org/torproject/android/settings/SettingsPreferences.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
-/* See LICENSE for licensing information */
-
-package org.torproject.android.settings;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.os.Build;
-import android.os.Bundle;
-import android.preference.CheckBoxPreference;
-import android.preference.EditTextPreference;
-import android.preference.ListPreference;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceChangeListener;
-import android.preference.Preference.OnPreferenceClickListener;
-import android.preference.PreferenceActivity;
-import android.widget.Toast;
-
-import info.guardianproject.util.Languages;
-
-import org.sufficientlysecure.rootcommands.RootCommands;
-import org.sufficientlysecure.rootcommands.Shell;
-import org.torproject.android.OrbotApp;
-import org.torproject.android.Prefs;
-import org.torproject.android.R;
-import org.torproject.android.service.TorServiceUtils;
-
-import java.util.Locale;
-
-
-public class SettingsPreferences 
-		extends PreferenceActivity implements OnPreferenceClickListener {
-    private static final String TAG = "SettingsPreferences";
-
-	private CheckBoxPreference prefCBTransProxy = null;
-	private CheckBoxPreference prefcBTransProxyAll = null;
-	private Preference prefTransProxyFlush = null;
-	
-	private Preference prefTransProxyApps = null;
-    private CheckBoxPreference prefHiddenServices = null;
-    private EditTextPreference prefHiddenServicesPorts;
-    private EditTextPreference prefHiddenServicesHostname;
-	private CheckBoxPreference prefRequestRoot = null;
-	private ListPreference prefLocale = null;
-	
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        addPreferencesFromResource(R.xml.preferences);
-        getPreferenceManager().setSharedPreferencesMode(Context.MODE_MULTI_PROCESS);
-        SharedPreferences prefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
-
-        prefRequestRoot = (CheckBoxPreference) findPreference("has_root");
-        prefRequestRoot.setOnPreferenceClickListener(this);
-
-        prefLocale = (ListPreference) findPreference("pref_default_locale");
-        prefLocale.setOnPreferenceClickListener(this);
-        Languages languages = Languages.get(this);
-        prefLocale.setEntries(languages.getAllNames());
-        prefLocale.setEntryValues(languages.getSupportedLocales());
-        prefLocale.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-
-            @Override
-            public boolean onPreferenceChange(Preference preference, Object newValue) {
-                String language = (String) newValue;
-                if (preference == prefLocale) {
-                    SharedPreferences settings = TorServiceUtils
-                            .getSharedPrefs(getApplicationContext());
-
-                    String lang = settings.getString("pref_default_locale",
-                            Locale.getDefault().getLanguage());
-                    OrbotApp app = (OrbotApp) getApplication();
-                    Languages.setLanguage(app, language, true);
-                    lang = settings.getString("pref_default_locale",
-                            Locale.getDefault().getLanguage());
-                    OrbotApp.forceChangeLanguage(SettingsPreferences.this);
-                }
-                return false;
-            }
-        });
-
-        prefCBTransProxy = (CheckBoxPreference) findPreference("pref_transparent");
-        prefcBTransProxyAll = (CheckBoxPreference) findPreference("pref_transparent_all");
-
-        prefTransProxyFlush = (Preference) findPreference("pref_transproxy_flush");
-        prefTransProxyFlush.setOnPreferenceClickListener(new OnPreferenceClickListener() {
-
-            @Override
-            public boolean onPreferenceClick(Preference arg0) {
-
-                Intent data = new Intent();
-                data.putExtra("transproxywipe", true);
-                setResult(RESULT_OK, data);
-
-                finish();
-                return false;
-            }
-
-        });
-
-        
-        prefTransProxyApps = findPreference("pref_transparent_app_list");
-        prefTransProxyApps.setOnPreferenceClickListener(this);
-        prefCBTransProxy.setOnPreferenceClickListener(this);
-        prefcBTransProxyAll.setOnPreferenceClickListener(this);
-        prefHiddenServices = (CheckBoxPreference) findPreference("pref_hs_enable");
-        prefHiddenServices.setOnPreferenceClickListener(this);
-        prefHiddenServicesHostname = (EditTextPreference) findPreference("pref_hs_hostname");
-        
-        
-        prefCBTransProxy.setEnabled(prefRequestRoot.isChecked());
-        
-        prefcBTransProxyAll.setEnabled(prefCBTransProxy.isChecked());
-        
-        if (prefCBTransProxy.isChecked())
-        	prefTransProxyApps.setEnabled((!prefcBTransProxyAll.isChecked()));
-        
-        prefHiddenServicesPorts = (EditTextPreference) findPreference("pref_hs_ports");
-        prefHiddenServicesHostname.setEnabled(prefHiddenServices.isChecked());
-        prefHiddenServicesPorts.setEnabled(prefHiddenServices.isChecked());
-        
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
-        {
-       	 	prefTransProxyApps.setEnabled(true);
-        }
-        
-        
-    }
-
-	public boolean onPreferenceClick(Preference preference) {
-		
-		setResult(RESULT_OK);
-		
-		if (preference == prefRequestRoot)
-		{
-			if (prefRequestRoot.isChecked())
-			{
-				
-				boolean canRoot = RootCommands.rootAccessGiven();
-				prefRequestRoot.setChecked(canRoot);
-
-				if (!canRoot)
-				{
-					try
-					{
-						Shell shell = Shell.startRootShell();
-						shell.close();
-						
-						prefRequestRoot.setChecked(true);
-						prefCBTransProxy.setEnabled(true);
-						
-					}
-					catch (Exception e)
-					{
-						Toast.makeText(this, R.string.wizard_permissions_no_root_msg, Toast.LENGTH_LONG).show();
-					}
-				}
-			}
-		}
-		else if (preference == prefTransProxyApps)
-		{
-			startActivity(new Intent(this, AppManager.class));
-			
-		}
-		else if (preference == prefHiddenServices)
-		{
-	        prefHiddenServicesPorts.setEnabled(prefHiddenServices.isChecked());
-	        prefHiddenServicesHostname.setEnabled(prefHiddenServices.isChecked());
-		}
-		else
-		{
-			prefcBTransProxyAll.setEnabled(prefCBTransProxy.isChecked());
-			prefTransProxyApps.setEnabled(prefCBTransProxy.isChecked() && (!prefcBTransProxyAll.isChecked()));
-			
-			
-		}
-		
-		return true;
-	}
-
-
-}
diff --git a/src/org/torproject/android/settings/TorifiedApp.java b/src/org/torproject/android/settings/TorifiedApp.java
deleted file mode 100644
index ceada4d..0000000
--- a/src/org/torproject/android/settings/TorifiedApp.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package org.torproject.android.settings;
-
-import android.graphics.drawable.Drawable;
-
-public class TorifiedApp implements Comparable {
-
-	private boolean enabled;
-	private int uid;
-	private String username;
-	private String procname;
-	private String name;
-	private Drawable icon;
-	private String packageName;
-	
-	private boolean torified = false;
-	private boolean usesInternet = false;
-	
-	public boolean usesInternet() {
-		return usesInternet;
-	}
-	public void setUsesInternet(boolean usesInternet) {
-		this.usesInternet = usesInternet;
-	}
-	/**
-	 * @return the torified
-	 */
-	public boolean isTorified() {
-		return torified;
-	}
-	/**
-	 * @param torified the torified to set
-	 */
-	public void setTorified(boolean torified) {
-		this.torified = torified;
-	}
-	private int[] enabledPorts;
-	
-	/**
-	 * @return the enabledPorts
-	 */
-	public int[] getEnabledPorts() {
-		return enabledPorts;
-	}
-	/**
-	 * @param enabledPorts the enabledPorts to set
-	 */
-	public void setEnabledPorts(int[] enabledPorts) {
-		this.enabledPorts = enabledPorts;
-	}
-	/**
-	 * @return the enabled
-	 */
-	public boolean isEnabled() {
-		return enabled;
-	}
-	/**
-	 * @param enabled the enabled to set
-	 */
-	public void setEnabled(boolean enabled) {
-		this.enabled = enabled;
-	}
-	/**
-	 * @return the uid
-	 */
-	public int getUid() {
-		return uid;
-	}
-	/**
-	 * @param uid the uid to set
-	 */
-	public void setUid(int uid) {
-		this.uid = uid;
-	}
-	/**
-	 * @return the username
-	 */
-	public String getUsername() {
-		return username;
-	}
-	/**
-	 * @param username the username to set
-	 */
-	public void setUsername(String username) {
-		this.username = username;
-	}
-	/**
-	 * @return the procname
-	 */
-	public String getProcname() {
-		return procname;
-	}
-	/**
-	 * @param procname the procname to set
-	 */
-	public void setProcname(String procname) {
-		this.procname = procname;
-	}
-	/**
-	 * @return the name
-	 */
-	public String getName() {
-		return name;
-	}
-	/**
-	 * @param name the name to set
-	 */
-	public void setName(String name) {
-		this.name = name;
-	}
-	
-
-	public Drawable getIcon() {
-		return icon;
-	}
-	
-	public void setIcon(Drawable icon) {
-		this.icon = icon;
-	}
-	
-	@Override
-	public int compareTo(Object another) {
-		
-		return this.toString().compareTo(another.toString());
-	}
-	
-	@Override
-	public String toString ()
-	{
-		return getName();
-	}
-	
-
-	public String getPackageName() {
-		return packageName;
-	}
-	public void setPackageName(String packageName) {
-		this.packageName = packageName;
-	}
-}
diff --git a/src/org/torproject/android/ui/BridgeSetupActivity.java b/src/org/torproject/android/ui/BridgeSetupActivity.java
deleted file mode 100644
index 7cabe35..0000000
--- a/src/org/torproject/android/ui/BridgeSetupActivity.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.torproject.android.ui;
-
-public class BridgeSetupActivity {
-
-}
diff --git a/src/org/torproject/android/ui/ImageProgressView.java b/src/org/torproject/android/ui/ImageProgressView.java
deleted file mode 100644
index 641c444..0000000
--- a/src/org/torproject/android/ui/ImageProgressView.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package org.torproject.android.ui;
-
-import java.util.Random;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.RectF;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.View;
-import android.widget.ImageView;
-
-public class ImageProgressView extends ImageView
-{
-
-	  private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
-
-	  private float progress = 0f; // 0 to 1
-	  
-	  private RectF circle;
-	  
-	public ImageProgressView(Context context) {
-	 super(context);
-	 // TODO Auto-generated constructor stub
-	 init();
-	 
-	}
-
-	public ImageProgressView(Context context, AttributeSet attrs) {
-	 super(context, attrs);
-	 init();
-	}
-
-	public ImageProgressView(Context context, AttributeSet attrs, int defStyle) {
-	 super(context, attrs, defStyle);
-	 
-	 init();
-	}
-
-	private void init(){
-	 paint.setStyle(Paint.Style.STROKE);
-	 paint.setColor(Color.GREEN);
-	 paint.setAntiAlias(true);
-	 paint.setStrokeWidth(20);
-	 
-	}
-
-	@Override
-	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-	   super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-	   
-	   setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
-	   MeasureSpec.getSize(heightMeasureSpec));
-	 
-	}
-
-	@Override
-	protected void onDraw(Canvas canvas) {
-
-		super.onDraw(canvas);
-		
-		if (circle == null)
-		{
-		circle = new RectF(getWidth()/2,getHeight()/2+getHeight()/8, getWidth()/3,getHeight()/3);
-		}
-		
-		float sweepAngle = 360f * progress;
-		
-		canvas.drawArc(circle, 0, sweepAngle, true, paint);
-		
-	}
-	
-	
-
-	
-}
\ No newline at end of file
diff --git a/src/org/torproject/android/ui/OrbotDiagnosticsActivity.java b/src/org/torproject/android/ui/OrbotDiagnosticsActivity.java
deleted file mode 100644
index 5a01a94..0000000
--- a/src/org/torproject/android/ui/OrbotDiagnosticsActivity.java
+++ /dev/null
@@ -1,333 +0,0 @@
-package org.torproject.android.ui;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.R;
-import org.torproject.android.service.TorResourceInstaller;
-import org.torproject.android.service.TorServiceConstants;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.Environment;
-import android.os.Handler;
-import android.os.Message;
-import android.os.StatFs;
-import android.text.format.Formatter;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.TextView;
-
-
-public class OrbotDiagnosticsActivity extends Activity {
-
-	private TextView mTextView = null;
-	private final static String TAG = "OrbotDiag";
-	private StringBuffer log = new StringBuffer();
-	Process mProcess;
-	
-	@Override
-	protected void onCreate(Bundle savedInstanceState) { 
-		super.onCreate(savedInstanceState);
-		
-		setContentView(R.layout.layout_diag);
-		
-		mTextView = (TextView)findViewById(R.id.diaglog);
-		
-	}
-
-	private String getFreeStorage ()
-	{
-		File path = Environment.getDataDirectory();
-		StatFs stat = new StatFs(path.getPath());
-		long blockSize = stat.getBlockSize();
-		long availableBlocks = stat.getAvailableBlocks();
-		return Formatter.formatFileSize(this, availableBlocks * blockSize);
-	}
-	
-	@Override
-	protected void onPause() {
-		super.onPause();
-		
-		stopTor();
-	}
-
-	@Override
-	protected void onDestroy() {
-
-		super.onDestroy();
-		
-	}
-	
-	private void stopTor ()
-	{
-		File appBinHome = this.getDir("bin", Context.MODE_PRIVATE);
-
-		File fileTor= new File(appBinHome, TorServiceConstants.TOR_ASSET_KEY);
-    	
-		if (mProcess != null)
-			mProcess.destroy();
-		
-		
-	}
-	
-	
-
-	@Override
-	protected void onResume() {
-		super.onResume();
-
-
-		log("Hello, Orbot!");
-		
-		try
-		{
-			log(android.os.Build.DEVICE);
-			log(android.os.Build.HARDWARE);
-			log(android.os.Build.MANUFACTURER);
-			log(android.os.Build.MODEL);
-			log(android.os.Build.VERSION.CODENAME);
-			log(android.os.Build.VERSION.RELEASE);
-		}
-		catch (Exception e)
-		{
-			log("error getting device info");
-		}
-		
-		showFileTree ();
-		
-		runTorTest();
-	}
-
-	private void runTorTest ()
-	{
-		try
-		{
-			File appBinHome = this.getDir("bin", Context.MODE_PRIVATE);
-			File appDataHome = this.getDir("data", Context.MODE_PRIVATE);
-	
-	    	File fileTor= new File(appBinHome, TorServiceConstants.TOR_ASSET_KEY);
-	    	enableBinExec (fileTor, appBinHome);	    	
-	    	
-			InputStream is = getResources().openRawResource(R.raw.torrc);
-			File fileTorrc = new File(appBinHome, TorServiceConstants.TORRC_ASSET_KEY + "diag");
-			TorResourceInstaller.streamToFile(is,fileTorrc, false, false);
-		
-			/**
-			ArrayList<String> alEnv = new ArrayList<String>();
-			alEnv.add("HOME=" + appBinHome.getAbsolutePath());
-			Shell shell = Shell.startShell(alEnv,appBinHome.getAbsolutePath());
-			SimpleCommand cmdTor = new SimpleCommand(fileTor.getAbsolutePath() + " DataDirectory " + appDataHome.getAbsolutePath() + " -f " + fileTorrc.getAbsolutePath());			
-			shell.add(cmdTor);
-			**/
-			
-			String cmd = fileTor.getAbsolutePath() + " DataDirectory " + appDataHome.getAbsolutePath() + " -f " + fileTorrc.getAbsolutePath();
-			
-			log ("Executing command> " + cmd);
-			
-			mProcess = Runtime.getRuntime().exec(cmd);
-			
-			BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(mProcess.getInputStream()));
-			StreamGobbler sg = new StreamGobbler();
-			sg.reader = bufferedReader;
-			sg.process = mProcess;
-			new Thread(sg).start();
-			
-			if (mProcess.getErrorStream() != null)
-			{
-				bufferedReader = new BufferedReader(new InputStreamReader(mProcess.getErrorStream()));
-				sg = new StreamGobbler();
-				sg.reader = bufferedReader;
-				sg.process = mProcess;
-				new Thread(sg).start();
-			}
-			
-			
-		}
-		catch (Exception e)
-		{
-			Log.d(TAG,"runTorTest exception",e);
-		}
-        
-	}
-	
-	class StreamGobbler implements Runnable
-	{
-		BufferedReader reader;
-		Process process;
-		
-		public void run ()
-		{
-			String line = null;			
-			try {
-				while ( (line = reader.readLine()) != null)
-				{
-					Message msg = mHandler.obtainMessage(0);
-					msg.getData().putString("log", line);
-					mHandler.sendMessage(msg);
-				}
-				
-			} catch (IOException e) {
-				Log.d(TAG, "error reading line",e);
-			}
-			
-			//log("Tor exit code=" + process.exitValue() + ";");
-			
-		}
-	}
-	
-	 private boolean enableBinExec (File fileBin, File appBinHome) throws Exception
-	    {
-	    	
-	    	log(fileBin.getName() + ": PRE: Is binary exec? " + fileBin.canExecute());
-	  
-	    	if (!fileBin.canExecute())
-	    	{
-	    		log("(re)Setting permission on binary: " + fileBin.getAbsolutePath());	
-				Shell shell = Shell.startShell(new ArrayList<String>(), appBinHome.getAbsolutePath());
-			
-				shell.add(new SimpleCommand("chmod " + TorServiceConstants.CHMOD_EXE_VALUE + ' ' + fileBin.getAbsolutePath())).waitForFinish();
-				
-				File fileTest = new File(fileBin.getAbsolutePath());
-				log(fileTest.getName() + ": POST: Is binary exec? " + fileTest.canExecute());
-				
-				shell.close();
-	    	}
-	    	
-			return fileBin.canExecute();
-	    }
-	
-	private void showFileTree ()
-	{
-		
-		File fileDir = this.getDir("bin", Context.MODE_PRIVATE);
-		
-		if (fileDir.exists())
-		{
-			log("checking file tree: " + fileDir.getAbsolutePath());
-			printDir (fileDir.getName(), fileDir);
-		}
-		else
-		{
-			log("app_bin does not exist");
-		}
-		
-		fileDir = this.getDir("data", Context.MODE_PRIVATE);
-		if (fileDir.exists())
-		{
-			log("checking file tree: " + fileDir.getAbsolutePath());
-			printDir (fileDir.getName(), fileDir);
-		}
-		else
-		{
-			log ("app_data does not exist");
-		}
-				
-
-	}
-	
-	private void printDir (String path, File fileDir)
-	{
-		File[] files = fileDir.listFiles();
-		
-		if (files != null && files.length > 0)
-		{
-			for (File file : files)
-			{
-
-				try
-				{
-					if (file.isDirectory())
-					{
-						printDir(path + '/' + file.getName(), file);
-					}
-					else
-					{
-						log(path + '/' + file.getName() + " len:" + file.length() + " exec:" + file.canExecute());
-						
-					}
-				}
-				catch (Exception e)
-				{
-					log("problem printing out file information");
-				}
-			
-			}
-		}
-	}
-	
-	Handler mHandler = new Handler ()
-	{
-
-		@Override
-		public void handleMessage(Message msg) {
-		
-			super.handleMessage(msg);
-			
-			String logMsg = msg.getData().getString("log");
-			log(logMsg);
-		}
-		
-	};
-	
-	private void log (String msg)
-	{
-		Log.d(TAG, msg);
-		mTextView.append(msg + '\n');
-		log.append(msg + '\n');
-	}
-	
-
-	@Override
-	public boolean onCreateOptionsMenu(Menu menu) {
-	    // Inflate menu resource file.
-	    getMenuInflater().inflate(R.menu.share_menu, menu);
-	
-	    // Locate MenuItem with ShareActionProvider
-	    MenuItem item = menu.findItem(R.id.menu_item_share);
-	
-	    return true;
-	}
-	
-	@Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-	    switch (item.getItemId()) {
-	
-	    case R.id.menu_item_share:
-	    	sendLog();
-	        return true;
-	
-	    default:
-	        return super.onOptionsItemSelected(item);
-	    }
-    }
-	
-	private void sendLog ()
-	{
-		int maxLength = 5000;
-		
-		String logShare = null;
-		
-		if (log.length() > maxLength)
-			logShare = log.substring(0,  maxLength);
-		else
-			logShare = log.toString();
-		
-		Intent sendIntent = new Intent();
-		sendIntent.setAction(Intent.ACTION_SEND);
-		sendIntent.putExtra(Intent.EXTRA_TEXT, logShare);
-		sendIntent.setType("text/plain");
-		startActivity(sendIntent);
-	}
-
-
-}
diff --git a/src/org/torproject/android/ui/PromoAppsActivity.java b/src/org/torproject/android/ui/PromoAppsActivity.java
deleted file mode 100644
index e51885c..0000000
--- a/src/org/torproject/android/ui/PromoAppsActivity.java
+++ /dev/null
@@ -1,215 +0,0 @@
-package org.torproject.android.ui;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ResolveInfo;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.Button;
-
-import org.torproject.android.OrbotConstants;
-import org.torproject.android.R;
-import org.torproject.android.service.TorServiceConstants;
-
-import java.util.List;
-
-public class PromoAppsActivity extends Activity implements OrbotConstants {
-
-    final static String MARKET_URI = "market://details?id=";
-    final static String FDROID_APP_URI = "https://f-droid.org/repository/browse/?fdid=";
-    final static String PLAY_APP_URI = "https://play.google.com/store/apps/details?id=";
-    final static String FDROID_URI = "https://f-droid.org/repository/browse/?fdfilter=info.guardianproject";
-    final static String PLAY_URI = "https://play.google.com/store/apps/developer?id=The+Guardian+Project";
-
-    private final static String FDROID_PACKAGE_NAME = "org.fdroid.fdroid";
-    private final static String PLAY_PACKAGE_NAME = "com.android.vending";
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState)
-    {
-        super.onCreate(savedInstanceState);
-
-    }
-
-    @Override
-    protected void onStart() {
-
-        super.onStart();
-        setContentView(R.layout.layout_promo_apps);
-
-        stepFive();
-
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-
-
-    }
-
-    void stepFive(){
-
-
-        String title = getString(R.string.wizard_tips_title);
-
-        setTitle(title);
-
-        Button btnLink = (Button)findViewById(R.id.WizardRootButtonInstallGibberbot);
-
-        btnLink.setOnClickListener(new OnClickListener() {
-
-            @Override
-            public void onClick(View view) {
-                finish();
-                startActivity(getInstallIntent("info.guardianproject.otr.app.im"));
-
-            }
-        });
-
-        btnLink = (Button)findViewById(R.id.WizardRootButtonInstallOrweb);
-
-        btnLink.setOnClickListener(new OnClickListener() {
-
-            @Override
-            public void onClick(View view) {
-                finish();
-                startActivity(getInstallIntent(TorServiceConstants.BROWSER_APP_USERNAME));
-
-            }
-        });
-
-        btnLink = (Button)findViewById(R.id.WizardRootButtonInstallDuckgo);
-
-        btnLink.setOnClickListener(new OnClickListener() {
-
-            @Override
-            public void onClick(View view) {
-
-                finish();
-                startActivity(getInstallIntent("com.duckduckgo.mobile.android"));
-
-            }
-        });
-
-        btnLink = (Button)findViewById(R.id.WizardRootButtonInstallTwitter);
-
-        btnLink.setOnClickListener(new OnClickListener() {
-
-            @Override
-            public void onClick(View view) {
-
-                String url = getString(R.string.twitter_setup_url);
-                finish();
-                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
-
-            }
-        });
-
-        btnLink = (Button)findViewById(R.id.WizardRootButtonInstallStoryMaker);
-
-        btnLink.setOnClickListener(new OnClickListener() {
-
-            @Override
-            public void onClick(View view) {
-                finish();
-                startActivity(getInstallIntent("info.guardianproject.mrapp"));
-
-            }
-        });
-
-        btnLink = (Button)findViewById(R.id.WizardRootButtonInstallMartus);
-
-        btnLink.setOnClickListener(new OnClickListener() {
-
-            @Override
-            public void onClick(View view) {
-                finish();
-                startActivity(getInstallIntent("org.martus.android"));
-
-            }
-        });
-
-        btnLink = (Button)findViewById(R.id.WizardRootButtonGooglePlay);
-        PackageManager pm = getPackageManager();
-        final Intent intent = new Intent(Intent.ACTION_VIEW);
-        // change text and icon based on which app store is installed (or not)
-        try {
-            if (isAppInstalled(pm, FDROID_PACKAGE_NAME)) {
-                Drawable icon = pm.getApplicationIcon(FDROID_PACKAGE_NAME);
-                btnLink.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
-                btnLink.setText(R.string.wizard_tips_fdroid);
-                intent.setPackage(FDROID_PACKAGE_NAME);
-                intent.setData(Uri.parse(FDROID_URI));
-            } else if (isAppInstalled(pm, PLAY_PACKAGE_NAME)) {
-                Drawable icon = pm.getApplicationIcon(PLAY_PACKAGE_NAME);
-                btnLink.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
-                btnLink.setText(R.string.wizard_tips_play);
-                intent.setPackage(PLAY_PACKAGE_NAME);
-                intent.setData(Uri.parse(PLAY_URI));
-            }
-        } catch (NameNotFoundException e) {
-            e.printStackTrace();
-            btnLink.setText(R.string.wizard_tips_fdroid_org);
-            intent.setData(Uri.parse(FDROID_URI));
-        }
-
-        btnLink.setOnClickListener(new OnClickListener() {
-
-            @Override
-            public void onClick(View view) {
-                startActivity(intent);
-            }
-        });
-
-        Button next = ((Button)findViewById(R.id.btnWizard2));
-    	next.setOnClickListener(new View.OnClickListener() {
-			
-			public void onClick(View v) {
-				finish();
-			}
-		});
-
-	}
-
-    boolean isAppInstalled(PackageManager pm, String packageName) {
-        try {
-            pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
-            return true;
-        } catch (PackageManager.NameNotFoundException e) {
-            return false;
-        }
-    }
-
-    Intent getInstallIntent(String packageName) {
-        final Intent intent = new Intent(Intent.ACTION_VIEW);
-        intent.setData(Uri.parse(MARKET_URI + packageName));
-
-        PackageManager pm = getPackageManager();
-        List<ResolveInfo> resInfos = pm.queryIntentActivities(intent, 0);
-
-        String foundPackageName = null;
-        for (ResolveInfo r : resInfos) {
-            Log.i(TAG, "market: " + r.activityInfo.packageName);
-            if (TextUtils.equals(r.activityInfo.packageName, FDROID_PACKAGE_NAME)
-                    || TextUtils.equals(r.activityInfo.packageName, PLAY_PACKAGE_NAME)) {
-                foundPackageName = r.activityInfo.packageName;
-                break;
-            }
-        }
-
-        if (foundPackageName == null) {
-            intent.setData(Uri.parse(FDROID_APP_URI + packageName));
-        } else {
-            intent.setPackage(foundPackageName);
-        }
-        return intent;
-    }
-}
diff --git a/src/org/torproject/android/ui/Rotate3dAnimation.java b/src/org/torproject/android/ui/Rotate3dAnimation.java
deleted file mode 100644
index 7829d2d..0000000
--- a/src/org/torproject/android/ui/Rotate3dAnimation.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.torproject.android.ui;
-
-import android.graphics.Camera;
-import android.graphics.Matrix;
-import android.view.animation.Animation;
-import android.view.animation.Transformation;
-
-/**
- * An animation that rotates the view on the Y axis between two specified angles.
- * This animation also adds a translation on the Z axis (depth) to improve the effect.
- */
-public class Rotate3dAnimation extends Animation {
-    private final float mFromDegrees;
-    private final float mToDegrees;
-    private final float mCenterX;
-    private final float mCenterY;
-    private final float mDepthZ;
-    private final boolean mReverse;
-    private Camera mCamera;
-
-    /**
-     * Creates a new 3D rotation on the Y axis. The rotation is defined by its
-     * start angle and its end angle. Both angles are in degrees. The rotation
-     * is performed around a center point on the 2D space, definied by a pair
-     * of X and Y coordinates, called centerX and centerY. When the animation
-     * starts, a translation on the Z axis (depth) is performed. The length
-     * of the translation can be specified, as well as whether the translation
-     * should be reversed in time.
-     *
-     * @param fromDegrees the start angle of the 3D rotation
-     * @param toDegrees the end angle of the 3D rotation
-     * @param centerX the X center of the 3D rotation
-     * @param centerY the Y center of the 3D rotation
-     * @param reverse true if the translation should be reversed, false otherwise
-     */
-    public Rotate3dAnimation(float fromDegrees, float toDegrees,
-            float centerX, float centerY, float depthZ, boolean reverse) {
-        mFromDegrees = fromDegrees;
-        mToDegrees = toDegrees;
-        mCenterX = centerX;
-        mCenterY = centerY;
-        mDepthZ = depthZ;
-        mReverse = reverse;
-    }
-
-    @Override
-    public void initialize(int width, int height, int parentWidth, int parentHeight) {
-        super.initialize(width, height, parentWidth, parentHeight);
-        mCamera = new Camera();
-    }
-
-    @Override
-    protected void applyTransformation(float interpolatedTime, Transformation t) {
-        final float fromDegrees = mFromDegrees;
-        float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);
-
-        final float centerX = mCenterX;
-        final float centerY = mCenterY;
-        final Camera camera = mCamera;
-
-        final Matrix matrix = t.getMatrix();
-
-        camera.save();
-        if (mReverse) {
-            camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);
-        } else {
-            camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));
-        }
-        camera.rotateY(degrees);
-        camera.getMatrix(matrix);
-        camera.restore();
-
-        matrix.preTranslate(-centerX, -centerY);
-        matrix.postTranslate(centerX, centerY);
-    }
-}
diff --git a/src/org/torproject/android/ui/VPNSetupActivity.java b/src/org/torproject/android/ui/VPNSetupActivity.java
deleted file mode 100644
index d8674c0..0000000
--- a/src/org/torproject/android/ui/VPNSetupActivity.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.torproject.android.ui;
-
-public class VPNSetupActivity {
-
-}
diff --git a/src/org/torproject/android/vpn/OrbotVpnManager.java b/src/org/torproject/android/vpn/OrbotVpnManager.java
deleted file mode 100644
index bfb564c..0000000
--- a/src/org/torproject/android/vpn/OrbotVpnManager.java
+++ /dev/null
@@ -1,455 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.torproject.android.vpn;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Locale;
-import java.util.concurrent.TimeoutException;
-
-import org.sufficientlysecure.rootcommands.Shell;
-import org.sufficientlysecure.rootcommands.command.SimpleCommand;
-import org.torproject.android.OrbotApp;
-import org.torproject.android.R;
-import org.torproject.android.service.TorService;
-import org.torproject.android.service.TorServiceConstants;
-import org.torproject.android.service.TorServiceUtils;
-import org.torproject.android.settings.AppManager;
-import org.torproject.android.settings.TorifiedApp;
-
-import android.annotation.TargetApi;
-import android.app.PendingIntent;
-import android.app.Service;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.net.VpnService;
-import android.net.VpnService.Builder;
-import android.os.Build;
-import android.os.Handler;
-import android.os.Message;
-import android.os.ParcelFileDescriptor;
-import android.util.Log;
-import android.widget.Toast;
-
-import com.runjva.sourceforge.jsocks.protocol.ProxyServer;
-import com.runjva.sourceforge.jsocks.server.ServerAuthenticatorNone;
-
- at TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
-
-public class OrbotVpnManager implements Handler.Callback {
-    private static final String TAG = "OrbotVpnService";
-
-    private PendingIntent mConfigureIntent;
-
-    private Thread mThreadVPN;
-
-    private String mSessionName = "OrbotVPN";
-    private ParcelFileDescriptor mInterface;
-
-    private int mTorSocks = TorServiceConstants.SOCKS_PROXY_PORT_DEFAULT;
-    
-    public static int sSocksProxyServerPort = -1;
-    public static String sSocksProxyLocalhost = null;
-    private ProxyServer mSocksProxyServer;
-   
-    
-    private final static int VPN_MTU = 1500;
-    
-    private final static boolean mIsLollipop = Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
-    
-    //this is the actual DNS server we talk to over UDP or TCP (now using Tor's DNS port)
-    private final static String DEFAULT_ACTUAL_DNS_HOST = "127.0.0.1";
-    private final static int DEFAULT_ACTUAL_DNS_PORT = TorServiceConstants.TOR_DNS_PORT_DEFAULT;
-    
-    private boolean isRestart = false;
-    
-    private TorService mService;
-    
-
-    static{
-    	  System.loadLibrary("tun2socks");
-    	}
-    
-    public OrbotVpnManager (TorService service)
-    {
-    	mService = service;
-    }
-   
-    //public int onStartCommand(Intent intent, int flags, int startId) {
-    public int handleIntent(Builder builder, Intent intent) {
-
-    	if (intent != null)
-    	{
-	    	String action = intent.getAction();
-	    	
-	    	if (action.equals("start"))
-	    	{
-		
-		        // Stop the previous session by interrupting the thread.
-		        if (mThreadVPN == null || (!mThreadVPN.isAlive()))
-		        {
-		        	Log.d(TAG,"starting OrbotVPNService service!");
-		        	
-		        	mTorSocks = intent.getIntExtra("torSocks", TorServiceConstants.SOCKS_PROXY_PORT_DEFAULT);
-			    	
-		        	if (!mIsLollipop)
-		        	{
-	
-		        		startSocksBypass();
-		        	}
-		        	
-		            setupTun2Socks(builder);               
-		        }
-	    	}
-	    	else if (action.equals("stop"))
-	    	{
-	    		Log.d(TAG,"stop OrbotVPNService service!");
-	    		
-	    		stopVPN();    		
-	    		//if (mHandler != null)
-	    			//mHandler.postDelayed(new Runnable () { public void run () { stopSelf(); }}, 1000);
-	    	}
-	    	else if (action.equals("refresh"))
-	    	{
-	    		Log.d(TAG,"refresh OrbotVPNService service!");
-	    		
-	    		if (!mIsLollipop)
-	    		  startSocksBypass();
-	    		
-	    		if (!isRestart)
-	    			setupTun2Socks(builder);
-	    	}
-    	}
-     
-        
-        return Service.START_STICKY;
-    }
-  
-    private void startSocksBypass()
-    {
-       
-    	new Thread ()
-    	{
-    		
-    		public void run ()
-    		{
-
-                //generate the proxy port that the 
-                if (sSocksProxyServerPort == -1)
-                {
-                	try {
-						
-                		sSocksProxyLocalhost = "127.0.0.1";// InetAddress.getLocalHost().getHostAddress();
-	                	sSocksProxyServerPort = (int)((Math.random()*1000)+10000); 
-	                	
-					} catch (Exception e) {
-						Log.e(TAG,"Unable to access localhost",e);
-						throw new RuntimeException("Unable to access localhost: " + e);
-						
-					}
-                	
-                }
-                
-                
-		    	if (mSocksProxyServer != null)
-		    	{
-		    		stopSocksBypass ();
-		    	}
-		    	
-		    	try
-		    	{
-			        mSocksProxyServer = new ProxyServer(new ServerAuthenticatorNone(null, null));
-			        ProxyServer.setVpnService(mService);
-			        mSocksProxyServer.start(sSocksProxyServerPort, 5, InetAddress.getLocalHost());
-			        
-		    	}
-		    	catch (Exception e)
-		    	{
-		    		Log.e(TAG,"error getting host",e);
-		    	}
-    		}
-    	}.start();
-       
-    }
-
-    private synchronized void stopSocksBypass ()
-    {
-
-        if (mSocksProxyServer != null){
-            mSocksProxyServer.stop();
-            mSocksProxyServer = null;
-        }
-        
-        
-    }
-    
-    /**
-    @Override
-	public void onCreate() {
-		super.onCreate();
-		
-		// Set the locale to English (or probably any other language that^M
-        // uses Hindu-Arabic (aka Latin) numerals).^M
-        // We have found that VpnService.Builder does something locale-dependent^M
-        // internally that causes errors when the locale uses its own numerals^M
-        // (i.e., Farsi and Arabic).^M
-		Locale.setDefault(new Locale("en"));
-		
-	}
-
-
-	@Override
-    public void onDestroy() {
-    	stopVPN();
-    }*/
-    
-    private void stopVPN ()
-    {
-    	if (mIsLollipop)
-    		stopSocksBypass ();
-        
-        if (mInterface != null){
-            try
-            {
-            	Log.d(TAG,"closing interface, destroying VPN interface");
-                
-        		mInterface.close();
-        		mInterface = null;
-            	
-            }
-            catch (Exception e)
-            {
-                Log.d(TAG,"error stopping tun2socks",e);
-            }
-            catch (Error e)
-            {
-                Log.d(TAG,"error stopping tun2socks",e);
-            }   
-        }
-        
-        Tun2Socks.Stop();
-        
-        try {
-        	TorServiceUtils.killProcess(OrbotApp.filePdnsd);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        
-        mThreadVPN = null;
-        
-
-    }
-
-    @Override
-    public boolean handleMessage(Message message) {
-        if (message != null) {
-            Toast.makeText(mService, message.what, Toast.LENGTH_SHORT).show();
-        }
-        return true;
-    }
-
-  
-    private synchronized void setupTun2Socks(final Builder builder)  {
-
-    	
-        if (mInterface != null) //stop tun2socks now to give it time to clean up
-        {
-        	isRestart = true;
-        	Tun2Socks.Stop();
-        }
-        
-    	mThreadVPN = new Thread ()
-    	{
-    		
-    		public void run ()
-    		{
-	    		try
-		        {
-	    			
-	    			if (isRestart)
-	    			{
-	    				Log.d(TAG,"is a restart... let's wait for a few seconds");
-			        	Thread.sleep(3000);
-	    			}
-	    			
-	    			//start PDNSD daemon pointing to actual DNS
-	    			startDNS(DEFAULT_ACTUAL_DNS_HOST,DEFAULT_ACTUAL_DNS_PORT);
-	    			
-		    		final String vpnName = "OrbotVPN";
-		    		final String localhost = "127.0.0.1";
-
-		    		final String virtualGateway = "10.10.10.1";
-		    		final String virtualIP = "10.10.10.2";
-		    		final String virtualNetMask = "255.255.255.0";
-		    		final String dummyDNS = "8.8.8.8"; //this is intercepted by the tun2socks library, but we must put in a valid DNS to start
-		    		final String defaultRoute = "0.0.0.0";
-		    		
-		    		final String localSocks = localhost + ':'
-		    		        + String.valueOf(mTorSocks);
-		    		
-		    		final String localDNS = virtualGateway + ':' + "8091";//String.valueOf(TorServiceConstants.TOR_DNS_PORT_DEFAULT);
-		    		final boolean localDnsTransparentProxy = true;
-		        	
-			        builder.setMtu(VPN_MTU);
-			        builder.addAddress(virtualGateway,32);
-			        
-			        builder.setSession(vpnName);		        
-
-			        builder.addDnsServer(dummyDNS);
-			        builder.addRoute(dummyDNS,32);
-				        
-			        //route all traffic through VPN (we might offer country specific exclude lists in the future)
-			        builder.addRoute(defaultRoute,0);	
-			        
-			        //handle ipv6
-			        //builder.addAddress("fdfe:dcba:9876::1", 126);
-					//builder.addRoute("::", 0);
-			        
-			        if (mIsLollipop)			        
-			        	doLollipopAppRouting(builder);			        
-
-			         // Create a new interface using the builder and save the parameters.
-			        ParcelFileDescriptor newInterface = builder.setSession(mSessionName)
-			                .setConfigureIntent(mConfigureIntent)
-			                .establish();
-		
-			        if (mInterface != null)
-			        {
-			        	Log.d(TAG,"Stopping existing VPN interface");
-			        	mInterface.close();
-			        	mInterface = null;
-			        }
-
-		        	mInterface = newInterface;
-			        
-		        	Tun2Socks.Start(mInterface, VPN_MTU, virtualIP, virtualNetMask, localSocks , localDNS , localDnsTransparentProxy);
-		        	
-		        	isRestart = false;
-		        	
-		        }
-		        catch (Exception e)
-		        {
-		        	Log.d(TAG,"tun2Socks has stopped",e);
-		        }
-	    	}
-    		
-    	};
-    	
-    	mThreadVPN.start();
-    	
-    }
-    
-    
-    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
-	private void doLollipopAppRouting (Builder builder) throws NameNotFoundException
-    {    
-    	   
-        ArrayList<TorifiedApp> apps = AppManager.getApps(mService, TorServiceUtils.getSharedPrefs(mService.getApplicationContext()));
-    
-        boolean perAppEnabled = false;
-        
-        for (TorifiedApp app : apps)
-        {
-        	if (app.isTorified() && (!app.getPackageName().equals(mService.getPackageName())))
-        	{
-        		builder.addAllowedApplication(app.getPackageName());
-        		perAppEnabled = true;
-        	}
-        	
-        }
-    
-        if (!perAppEnabled)
-        	builder.addDisallowedApplication(mService.getPackageName());
-    
-    }
-    
-    
-    public void onRevoke() {
-    
-    	Log.w(TAG,"VPNService REVOKED!");
-    	
-    	if (!isRestart)
-    	{
-	    	SharedPreferences prefs = TorServiceUtils.getSharedPrefs(mService.getApplicationContext()); 
-	        prefs.edit().putBoolean("pref_vpn", false).commit();      
-	    	stopVPN();	
-    	}
-    	
-    	isRestart = false;
-    	
-    	//super.onRevoke();
-    
-    }
-    
-    
-    private void startDNS (String dns, int port) throws IOException, TimeoutException
-    {
-    	makePdnsdConf(mService, dns, port,OrbotApp.filePdnsd.getParentFile() );
-    	
-        ArrayList<String> customEnv = new ArrayList<String>();
-    	String baseDirectory = OrbotApp.filePdnsd.getParent();
-        Shell shell = Shell.startShell(customEnv, baseDirectory);
-        
-        String cmdString = OrbotApp.filePdnsd.getCanonicalPath() + 
-        		" -c " + baseDirectory + "/pdnsd.conf";
-    
-        SimpleCommand shellCommand = new SimpleCommand(cmdString);
-        
-        shell.add(shellCommand).waitForFinish();
-    
-        Log.i(TAG,"PDNSD: " + shellCommand.getExitCode() + ": " + shellCommand.getOutput());
-        
-    }
-    
-    public static void makePdnsdConf(Context context, String dns, int port, File fileDir) throws FileNotFoundException {
-        String conf = String.format(context.getString(R.string.pdnsd_conf), dns, port);
-
-        File f = new File(fileDir,"pdnsd.conf");
-
-        if (f.exists()) {
-                f.delete();
-        }
-
-        FileOutputStream fos = new FileOutputStream(f, false);
-    	PrintStream ps = new PrintStream(fos);
-    	ps.print(conf);
-    	ps.close();
-    	
-        //f.withWriter { out -> out.print conf };
-        
-        
-        File cache = new File(fileDir,"pdnsd.cache");
-
-        if (!cache.exists()) {
-                try {
-                        cache.createNewFile();
-                } catch (Exception e) {
-
-                }
-        }
-}
-
-    
-}
diff --git a/src/org/torproject/android/vpn/Tun2Socks.java b/src/org/torproject/android/vpn/Tun2Socks.java
deleted file mode 100644
index a7c638e..0000000
--- a/src/org/torproject/android/vpn/Tun2Socks.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package org.torproject.android.vpn;
-
-/*
- * Copyright (c) 2013, Psiphon Inc.
- * All rights reserved.
- *
- * 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 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 <http://www.gnu.org/licenses/>.
- *
- */
-
-import java.net.DatagramSocket;
-import java.net.Socket;
-
-import android.annotation.TargetApi;
-import android.os.Build;
-import android.os.ParcelFileDescriptor;
-import android.util.Log;
-
- at TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
-public class Tun2Socks
-{
-    public static interface IProtectSocket
-    {
-        boolean doVpnProtect(Socket socket);
-        boolean doVpnProtect(DatagramSocket socket);
-    };
-
-    private static final String TAG = Tun2Socks.class.getSimpleName();
-    private static final boolean LOGD = true;
-
-    private static Thread mThread;
-    private static ParcelFileDescriptor mVpnInterfaceFileDescriptor;
-    private static int mVpnInterfaceMTU;
-    private static String mVpnIpAddress;
-    private static String mVpnNetMask;
-    private static String mSocksServerAddress;
-    private static String mUdpgwServerAddress;
-    private static boolean mUdpgwTransparentDNS;
-    
-    // Note: this class isn't a singleton, but you can't run more
-    // than one instance due to the use of global state (the lwip
-    // module, etc.) in the native code.
-    
-    private static boolean mLibLoaded = false;
-    
-    public static void Start(
-            ParcelFileDescriptor vpnInterfaceFileDescriptor,
-            int vpnInterfaceMTU,
-            String vpnIpAddress,
-            String vpnNetMask,
-            String socksServerAddress,
-            String udpgwServerAddress,
-            boolean udpgwTransparentDNS)
-    {
-        
-        if (!mLibLoaded)
-        {
-            System.loadLibrary("tun2socks");
-            mLibLoaded = true;
-        }
-
-        mVpnInterfaceFileDescriptor = vpnInterfaceFileDescriptor;
-        mVpnInterfaceMTU = vpnInterfaceMTU;
-        mVpnIpAddress = vpnIpAddress;
-        mVpnNetMask = vpnNetMask;
-        mSocksServerAddress = socksServerAddress;
-        mUdpgwServerAddress = udpgwServerAddress;
-        mUdpgwTransparentDNS = udpgwTransparentDNS;
-
-        if (mVpnInterfaceFileDescriptor != null)
-            runTun2Socks(
-                    mVpnInterfaceFileDescriptor.detachFd(),
-                    mVpnInterfaceMTU,
-                    mVpnIpAddress,
-                    mVpnNetMask,
-                    mSocksServerAddress,
-                    mUdpgwServerAddress,
-                    mUdpgwTransparentDNS ? 1 : 0);
-    }
-    
-    public static void Stop()
-    {
-       
-        terminateTun2Socks();
-    
-    }
-
-    public static void logTun2Socks(
-            String level,
-            String channel,
-            String msg)
-    {
-        String logMsg = level + "(" + channel + "): " + msg;
-        if (0 == level.compareTo("ERROR"))
-        {
-            Log.e(TAG, logMsg);
-        }
-        else
-        {
-            if (LOGD) Log.d(TAG, logMsg);
-        }
-    }
-
-    private native static int runTun2Socks(
-            int vpnInterfaceFileDescriptor,
-            int vpnInterfaceMTU,
-            String vpnIpAddress,
-            String vpnNetMask,
-            String socksServerAddress,
-            String udpgwServerAddress,
-            int udpgwTransparentDNS);
-
-    private native static void terminateTun2Socks();
-    
-}
\ No newline at end of file
diff --git a/src/org/torproject/android/vpn/VPNEnableActivity.java b/src/org/torproject/android/vpn/VPNEnableActivity.java
deleted file mode 100644
index 8b7dbc6..0000000
--- a/src/org/torproject/android/vpn/VPNEnableActivity.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package org.torproject.android.vpn;
-
-import org.torproject.android.Prefs;
-import org.torproject.android.R;
-import org.torproject.android.service.TorService;
-import org.torproject.android.service.TorServiceConstants;
-
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.net.VpnService;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
-import android.widget.TextView;
-
-/*
- * To combat background service being stopped/swiped
- */
-public class VPNEnableActivity extends Activity {
-	
-	private final static int REQUEST_VPN = 7777;
-	private	Intent intent = null;
-	private boolean checkVpn = true;
-	private Handler h = new Handler();
-	
-	@Override
-	public void onCreate( Bundle icicle ) {
-		
-		requestWindowFeature(Window.FEATURE_NO_TITLE);
-        //getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
-
-		super.onCreate( icicle );
-
-		Log.d("VPNEnableActivity","prompting user to start Orbot VPN");
-
-		
-	}
-	
-	public void onResume ()
-	{
-		super.onResume();
-		
-		if (checkVpn)
-		{
-			intent = VpnService.prepare(this);
-			
-			if (intent != null)
-				promptStartVpnService();
-			else
-				startVpnService ();
-			
-			checkVpn = false;
-		}
-	}
-	
-	public void promptStartVpnService ()
-    {
-    	 
-         AlertDialog dialog = new AlertDialog.Builder(this)
-         .setTitle(getString(R.string.app_name) + ' ' + getString(R.string.apps_mode))
-         .setMessage(getString(R.string.you_can_enable_all_apps_on_your_device_to_run_through_the_tor_network_using_the_vpn_feature_of_android_))
-         .setPositiveButton(R.string.activate, new Dialog.OnClickListener ()
-         {
-
-			@Override
-			public void onClick(DialogInterface dialog, int which) {
-		        Prefs.putUseVpn(true);
-		        
-				startVpnService();
-				
-			}
-
-        	 
-         })
-         .setNegativeButton(R.string.btn_cancel, new Dialog.OnClickListener ()
-         {
-
-			@Override
-			public void onClick(DialogInterface dialog, int which) {
-				
-				 h.postDelayed(new Runnable () {
-		            	
-		            	public void run ()
-		            	{
-		            		VPNEnableActivity.this.finish();	
-		            		
-		            	}
-		            }, 100);
-			}
-        	 
-         }).create();
-         
-         dialog.show();
-         
-         
-    }
-	 
-	private void startVpnService ()
-	{
-   		if (intent == null)
-   		{
-   			Log.d("VPNEnableActivity","VPN enabled, starting Tor...");
-            sendIntentToService(TorServiceConstants.CMD_VPN);
-            
-            Handler h = new Handler();
-            h.postDelayed(new Runnable () {
-            	
-            	public void run ()
-            	{
-            		sendIntentToService(TorServiceConstants.ACTION_START);		
-            		finish();
-            	}
-            }, 100);
-           
-   			
-   		}
-   		else
-   		{
-   			Log.w("VPNEnableActivity","prompt for VPN");
-            startActivityForResult(intent,REQUEST_VPN);
-
-   		}
-
-	}
-	
-	  @Override
-	    protected void onActivityResult(int request, int response, Intent data) {
-	        super.onActivityResult(request, response, data);
-	        
-	        if (request == REQUEST_VPN && response == RESULT_OK)
-	        {
-	            sendIntentToService(TorServiceConstants.CMD_VPN);	    
-	            
-	            h.postDelayed(new Runnable () {
-	            	
-	            	public void run ()
-	            	{
-	            		sendIntentToService(TorServiceConstants.ACTION_START);		
-	            		 finish();
-	            	}
-	            }, 1000);
-	            
-	           
-	            
-	        }
-	  }
-	  
-
-		private void sendIntentToService(String action) {
-			Intent torService = new Intent(this, TorService.class);    
-			torService.setAction(action);
-			startService(torService);
-		}
-    
-}





More information about the tor-commits mailing list