]> Nutra Git (v1) - nutratech/vps-root.git/commitdiff
track all /etc
authornutra-bot <nutradigest@gmail.com>
Fri, 24 Jun 2022 13:42:59 +0000 (13:42 +0000)
committernutra-bot <nutradigest@gmail.com>
Fri, 24 Jun 2022 13:42:59 +0000 (13:42 +0000)
1714 files changed:
etc/.pwd.lock [new file with mode: 0644]
etc/NetworkManager/dispatcher.d/hook-network-manager [new file with mode: 0755]
etc/PackageKit/PackageKit.conf [new file with mode: 0644]
etc/PackageKit/Vendor.conf [new file with mode: 0644]
etc/UPower/UPower.conf [new file with mode: 0644]
etc/X11/Xsession.d/20dbus_xdg-runtime [new file with mode: 0644]
etc/X11/Xsession.d/90gpg-agent [new file with mode: 0644]
etc/adduser.conf [new file with mode: 0644]
etc/alternatives/ABORT.7.gz [new symlink]
etc/alternatives/ALTER_AGGREGATE.7.gz [new symlink]
etc/alternatives/ALTER_COLLATION.7.gz [new symlink]
etc/alternatives/ALTER_CONVERSION.7.gz [new symlink]
etc/alternatives/ALTER_DATABASE.7.gz [new symlink]
etc/alternatives/ALTER_DEFAULT_PRIVILEGES.7.gz [new symlink]
etc/alternatives/ALTER_DOMAIN.7.gz [new symlink]
etc/alternatives/ALTER_EVENT_TRIGGER.7.gz [new symlink]
etc/alternatives/ALTER_EXTENSION.7.gz [new symlink]
etc/alternatives/ALTER_FOREIGN_DATA_WRAPPER.7.gz [new symlink]
etc/alternatives/ALTER_FOREIGN_TABLE.7.gz [new symlink]
etc/alternatives/ALTER_FUNCTION.7.gz [new symlink]
etc/alternatives/ALTER_GROUP.7.gz [new symlink]
etc/alternatives/ALTER_INDEX.7.gz [new symlink]
etc/alternatives/ALTER_LANGUAGE.7.gz [new symlink]
etc/alternatives/ALTER_LARGE_OBJECT.7.gz [new symlink]
etc/alternatives/ALTER_MATERIALIZED_VIEW.7.gz [new symlink]
etc/alternatives/ALTER_OPERATOR.7.gz [new symlink]
etc/alternatives/ALTER_OPERATOR_CLASS.7.gz [new symlink]
etc/alternatives/ALTER_OPERATOR_FAMILY.7.gz [new symlink]
etc/alternatives/ALTER_POLICY.7.gz [new symlink]
etc/alternatives/ALTER_PROCEDURE.7.gz [new symlink]
etc/alternatives/ALTER_PUBLICATION.7.gz [new symlink]
etc/alternatives/ALTER_ROLE.7.gz [new symlink]
etc/alternatives/ALTER_ROUTINE.7.gz [new symlink]
etc/alternatives/ALTER_RULE.7.gz [new symlink]
etc/alternatives/ALTER_SCHEMA.7.gz [new symlink]
etc/alternatives/ALTER_SEQUENCE.7.gz [new symlink]
etc/alternatives/ALTER_SERVER.7.gz [new symlink]
etc/alternatives/ALTER_STATISTICS.7.gz [new symlink]
etc/alternatives/ALTER_SUBSCRIPTION.7.gz [new symlink]
etc/alternatives/ALTER_SYSTEM.7.gz [new symlink]
etc/alternatives/ALTER_TABLE.7.gz [new symlink]
etc/alternatives/ALTER_TABLESPACE.7.gz [new symlink]
etc/alternatives/ALTER_TEXT_SEARCH_CONFIGURATION.7.gz [new symlink]
etc/alternatives/ALTER_TEXT_SEARCH_DICTIONARY.7.gz [new symlink]
etc/alternatives/ALTER_TEXT_SEARCH_PARSER.7.gz [new symlink]
etc/alternatives/ALTER_TEXT_SEARCH_TEMPLATE.7.gz [new symlink]
etc/alternatives/ALTER_TRIGGER.7.gz [new symlink]
etc/alternatives/ALTER_TYPE.7.gz [new symlink]
etc/alternatives/ALTER_USER.7.gz [new symlink]
etc/alternatives/ALTER_USER_MAPPING.7.gz [new symlink]
etc/alternatives/ALTER_VIEW.7.gz [new symlink]
etc/alternatives/ANALYZE.7.gz [new symlink]
etc/alternatives/BEGIN.7.gz [new symlink]
etc/alternatives/CALL.7.gz [new symlink]
etc/alternatives/CHECKPOINT.7.gz [new symlink]
etc/alternatives/CLOSE.7.gz [new symlink]
etc/alternatives/CLUSTER.7.gz [new symlink]
etc/alternatives/COMMENT.7.gz [new symlink]
etc/alternatives/COMMIT.7.gz [new symlink]
etc/alternatives/COMMIT_PREPARED.7.gz [new symlink]
etc/alternatives/COPY.7.gz [new symlink]
etc/alternatives/CREATE_ACCESS_METHOD.7.gz [new symlink]
etc/alternatives/CREATE_AGGREGATE.7.gz [new symlink]
etc/alternatives/CREATE_CAST.7.gz [new symlink]
etc/alternatives/CREATE_COLLATION.7.gz [new symlink]
etc/alternatives/CREATE_CONVERSION.7.gz [new symlink]
etc/alternatives/CREATE_DATABASE.7.gz [new symlink]
etc/alternatives/CREATE_DOMAIN.7.gz [new symlink]
etc/alternatives/CREATE_EVENT_TRIGGER.7.gz [new symlink]
etc/alternatives/CREATE_EXTENSION.7.gz [new symlink]
etc/alternatives/CREATE_FOREIGN_DATA_WRAPPER.7.gz [new symlink]
etc/alternatives/CREATE_FOREIGN_TABLE.7.gz [new symlink]
etc/alternatives/CREATE_FUNCTION.7.gz [new symlink]
etc/alternatives/CREATE_GROUP.7.gz [new symlink]
etc/alternatives/CREATE_INDEX.7.gz [new symlink]
etc/alternatives/CREATE_LANGUAGE.7.gz [new symlink]
etc/alternatives/CREATE_MATERIALIZED_VIEW.7.gz [new symlink]
etc/alternatives/CREATE_OPERATOR.7.gz [new symlink]
etc/alternatives/CREATE_OPERATOR_CLASS.7.gz [new symlink]
etc/alternatives/CREATE_OPERATOR_FAMILY.7.gz [new symlink]
etc/alternatives/CREATE_POLICY.7.gz [new symlink]
etc/alternatives/CREATE_PROCEDURE.7.gz [new symlink]
etc/alternatives/CREATE_PUBLICATION.7.gz [new symlink]
etc/alternatives/CREATE_ROLE.7.gz [new symlink]
etc/alternatives/CREATE_RULE.7.gz [new symlink]
etc/alternatives/CREATE_SCHEMA.7.gz [new symlink]
etc/alternatives/CREATE_SEQUENCE.7.gz [new symlink]
etc/alternatives/CREATE_SERVER.7.gz [new symlink]
etc/alternatives/CREATE_STATISTICS.7.gz [new symlink]
etc/alternatives/CREATE_SUBSCRIPTION.7.gz [new symlink]
etc/alternatives/CREATE_TABLE.7.gz [new symlink]
etc/alternatives/CREATE_TABLESPACE.7.gz [new symlink]
etc/alternatives/CREATE_TABLE_AS.7.gz [new symlink]
etc/alternatives/CREATE_TEXT_SEARCH_CONFIGURATION.7.gz [new symlink]
etc/alternatives/CREATE_TEXT_SEARCH_DICTIONARY.7.gz [new symlink]
etc/alternatives/CREATE_TEXT_SEARCH_PARSER.7.gz [new symlink]
etc/alternatives/CREATE_TEXT_SEARCH_TEMPLATE.7.gz [new symlink]
etc/alternatives/CREATE_TRANSFORM.7.gz [new symlink]
etc/alternatives/CREATE_TRIGGER.7.gz [new symlink]
etc/alternatives/CREATE_TYPE.7.gz [new symlink]
etc/alternatives/CREATE_USER.7.gz [new symlink]
etc/alternatives/CREATE_USER_MAPPING.7.gz [new symlink]
etc/alternatives/CREATE_VIEW.7.gz [new symlink]
etc/alternatives/DEALLOCATE.7.gz [new symlink]
etc/alternatives/DECLARE.7.gz [new symlink]
etc/alternatives/DELETE.7.gz [new symlink]
etc/alternatives/DISCARD.7.gz [new symlink]
etc/alternatives/DO.7.gz [new symlink]
etc/alternatives/DROP_ACCESS_METHOD.7.gz [new symlink]
etc/alternatives/DROP_AGGREGATE.7.gz [new symlink]
etc/alternatives/DROP_CAST.7.gz [new symlink]
etc/alternatives/DROP_COLLATION.7.gz [new symlink]
etc/alternatives/DROP_CONVERSION.7.gz [new symlink]
etc/alternatives/DROP_DATABASE.7.gz [new symlink]
etc/alternatives/DROP_DOMAIN.7.gz [new symlink]
etc/alternatives/DROP_EVENT_TRIGGER.7.gz [new symlink]
etc/alternatives/DROP_EXTENSION.7.gz [new symlink]
etc/alternatives/DROP_FOREIGN_DATA_WRAPPER.7.gz [new symlink]
etc/alternatives/DROP_FOREIGN_TABLE.7.gz [new symlink]
etc/alternatives/DROP_FUNCTION.7.gz [new symlink]
etc/alternatives/DROP_GROUP.7.gz [new symlink]
etc/alternatives/DROP_INDEX.7.gz [new symlink]
etc/alternatives/DROP_LANGUAGE.7.gz [new symlink]
etc/alternatives/DROP_MATERIALIZED_VIEW.7.gz [new symlink]
etc/alternatives/DROP_OPERATOR.7.gz [new symlink]
etc/alternatives/DROP_OPERATOR_CLASS.7.gz [new symlink]
etc/alternatives/DROP_OPERATOR_FAMILY.7.gz [new symlink]
etc/alternatives/DROP_OWNED.7.gz [new symlink]
etc/alternatives/DROP_POLICY.7.gz [new symlink]
etc/alternatives/DROP_PROCEDURE.7.gz [new symlink]
etc/alternatives/DROP_PUBLICATION.7.gz [new symlink]
etc/alternatives/DROP_ROLE.7.gz [new symlink]
etc/alternatives/DROP_ROUTINE.7.gz [new symlink]
etc/alternatives/DROP_RULE.7.gz [new symlink]
etc/alternatives/DROP_SCHEMA.7.gz [new symlink]
etc/alternatives/DROP_SEQUENCE.7.gz [new symlink]
etc/alternatives/DROP_SERVER.7.gz [new symlink]
etc/alternatives/DROP_STATISTICS.7.gz [new symlink]
etc/alternatives/DROP_SUBSCRIPTION.7.gz [new symlink]
etc/alternatives/DROP_TABLE.7.gz [new symlink]
etc/alternatives/DROP_TABLESPACE.7.gz [new symlink]
etc/alternatives/DROP_TEXT_SEARCH_CONFIGURATION.7.gz [new symlink]
etc/alternatives/DROP_TEXT_SEARCH_DICTIONARY.7.gz [new symlink]
etc/alternatives/DROP_TEXT_SEARCH_PARSER.7.gz [new symlink]
etc/alternatives/DROP_TEXT_SEARCH_TEMPLATE.7.gz [new symlink]
etc/alternatives/DROP_TRANSFORM.7.gz [new symlink]
etc/alternatives/DROP_TRIGGER.7.gz [new symlink]
etc/alternatives/DROP_TYPE.7.gz [new symlink]
etc/alternatives/DROP_USER.7.gz [new symlink]
etc/alternatives/DROP_USER_MAPPING.7.gz [new symlink]
etc/alternatives/DROP_VIEW.7.gz [new symlink]
etc/alternatives/END.7.gz [new symlink]
etc/alternatives/EXECUTE.7.gz [new symlink]
etc/alternatives/EXPLAIN.7.gz [new symlink]
etc/alternatives/FETCH.7.gz [new symlink]
etc/alternatives/GRANT.7.gz [new symlink]
etc/alternatives/IMPORT_FOREIGN_SCHEMA.7.gz [new symlink]
etc/alternatives/INSERT.7.gz [new symlink]
etc/alternatives/LISTEN.7.gz [new symlink]
etc/alternatives/LOAD.7.gz [new symlink]
etc/alternatives/LOCK.7.gz [new symlink]
etc/alternatives/MOVE.7.gz [new symlink]
etc/alternatives/NOTIFY.7.gz [new symlink]
etc/alternatives/PREPARE.7.gz [new symlink]
etc/alternatives/PREPARE_TRANSACTION.7.gz [new symlink]
etc/alternatives/README [new file with mode: 0644]
etc/alternatives/REASSIGN_OWNED.7.gz [new symlink]
etc/alternatives/REFRESH_MATERIALIZED_VIEW.7.gz [new symlink]
etc/alternatives/REINDEX.7.gz [new symlink]
etc/alternatives/RELEASE_SAVEPOINT.7.gz [new symlink]
etc/alternatives/RESET.7.gz [new symlink]
etc/alternatives/REVOKE.7.gz [new symlink]
etc/alternatives/ROLLBACK.7.gz [new symlink]
etc/alternatives/ROLLBACK_PREPARED.7.gz [new symlink]
etc/alternatives/ROLLBACK_TO_SAVEPOINT.7.gz [new symlink]
etc/alternatives/SAVEPOINT.7.gz [new symlink]
etc/alternatives/SECURITY_LABEL.7.gz [new symlink]
etc/alternatives/SELECT.7.gz [new symlink]
etc/alternatives/SELECT_INTO.7.gz [new symlink]
etc/alternatives/SET.7.gz [new symlink]
etc/alternatives/SET_CONSTRAINTS.7.gz [new symlink]
etc/alternatives/SET_ROLE.7.gz [new symlink]
etc/alternatives/SET_SESSION_AUTHORIZATION.7.gz [new symlink]
etc/alternatives/SET_TRANSACTION.7.gz [new symlink]
etc/alternatives/SHOW.7.gz [new symlink]
etc/alternatives/START_TRANSACTION.7.gz [new symlink]
etc/alternatives/TABLE.7.gz [new symlink]
etc/alternatives/TRUNCATE.7.gz [new symlink]
etc/alternatives/UNLISTEN.7.gz [new symlink]
etc/alternatives/UPDATE.7.gz [new symlink]
etc/alternatives/VACUUM.7.gz [new symlink]
etc/alternatives/VALUES.7.gz [new symlink]
etc/alternatives/WITH.7.gz [new symlink]
etc/alternatives/arptables [new symlink]
etc/alternatives/arptables-restore [new symlink]
etc/alternatives/arptables-save [new symlink]
etc/alternatives/awk [new symlink]
etc/alternatives/awk.1.gz [new symlink]
etc/alternatives/builtins.7.gz [new symlink]
etc/alternatives/c++ [new symlink]
etc/alternatives/c++.1.gz [new symlink]
etc/alternatives/c89 [new symlink]
etc/alternatives/c89.1.gz [new symlink]
etc/alternatives/c99 [new symlink]
etc/alternatives/c99.1.gz [new symlink]
etc/alternatives/cc [new symlink]
etc/alternatives/cc.1.gz [new symlink]
etc/alternatives/clusterdb.1.gz [new symlink]
etc/alternatives/cpp [new symlink]
etc/alternatives/createdb.1.gz [new symlink]
etc/alternatives/createuser.1.gz [new symlink]
etc/alternatives/dropdb.1.gz [new symlink]
etc/alternatives/dropuser.1.gz [new symlink]
etc/alternatives/ebtables [new symlink]
etc/alternatives/ebtables-restore [new symlink]
etc/alternatives/ebtables-save [new symlink]
etc/alternatives/editor [new symlink]
etc/alternatives/editor.1.gz [new symlink]
etc/alternatives/ex [new symlink]
etc/alternatives/ex.1.gz [new symlink]
etc/alternatives/ex.da.1.gz [new symlink]
etc/alternatives/ex.de.1.gz [new symlink]
etc/alternatives/ex.fr.1.gz [new symlink]
etc/alternatives/ex.it.1.gz [new symlink]
etc/alternatives/ex.ja.1.gz [new symlink]
etc/alternatives/ex.pl.1.gz [new symlink]
etc/alternatives/ex.ru.1.gz [new symlink]
etc/alternatives/faked.1.gz [new symlink]
etc/alternatives/faked.es.1.gz [new symlink]
etc/alternatives/faked.fr.1.gz [new symlink]
etc/alternatives/faked.sv.1.gz [new symlink]
etc/alternatives/fakeroot [new symlink]
etc/alternatives/fakeroot.1.gz [new symlink]
etc/alternatives/fakeroot.es.1.gz [new symlink]
etc/alternatives/fakeroot.fr.1.gz [new symlink]
etc/alternatives/fakeroot.sv.1.gz [new symlink]
etc/alternatives/from [new symlink]
etc/alternatives/from.1.gz [new symlink]
etc/alternatives/ftp [new symlink]
etc/alternatives/ftp.1.gz [new symlink]
etc/alternatives/futurize [new symlink]
etc/alternatives/infobrowser [new symlink]
etc/alternatives/infobrowser.1.gz [new symlink]
etc/alternatives/initdb.1.gz [new symlink]
etc/alternatives/ip6tables [new symlink]
etc/alternatives/ip6tables-restore [new symlink]
etc/alternatives/ip6tables-save [new symlink]
etc/alternatives/iptables [new symlink]
etc/alternatives/iptables-restore [new symlink]
etc/alternatives/iptables-save [new symlink]
etc/alternatives/jsondiff [new symlink]
etc/alternatives/lzcat [new symlink]
etc/alternatives/lzcat.1.gz [new symlink]
etc/alternatives/lzcmp [new symlink]
etc/alternatives/lzcmp.1.gz [new symlink]
etc/alternatives/lzdiff [new symlink]
etc/alternatives/lzdiff.1.gz [new symlink]
etc/alternatives/lzegrep [new symlink]
etc/alternatives/lzegrep.1.gz [new symlink]
etc/alternatives/lzfgrep [new symlink]
etc/alternatives/lzfgrep.1.gz [new symlink]
etc/alternatives/lzgrep [new symlink]
etc/alternatives/lzgrep.1.gz [new symlink]
etc/alternatives/lzless [new symlink]
etc/alternatives/lzless.1.gz [new symlink]
etc/alternatives/lzma [new symlink]
etc/alternatives/lzma.1.gz [new symlink]
etc/alternatives/lzmore [new symlink]
etc/alternatives/lzmore.1.gz [new symlink]
etc/alternatives/mt [new symlink]
etc/alternatives/mt.1.gz [new symlink]
etc/alternatives/nawk [new symlink]
etc/alternatives/nawk.1.gz [new symlink]
etc/alternatives/nc [new symlink]
etc/alternatives/nc.1.gz [new symlink]
etc/alternatives/netcat [new symlink]
etc/alternatives/netcat.1.gz [new symlink]
etc/alternatives/netrc.5.gz [new symlink]
etc/alternatives/newt-palette [new symlink]
etc/alternatives/oid2name.1.gz [new symlink]
etc/alternatives/pager [new symlink]
etc/alternatives/pager.1.gz [new symlink]
etc/alternatives/pasteurize [new symlink]
etc/alternatives/pbr [new symlink]
etc/alternatives/pftp [new symlink]
etc/alternatives/pftp.1.gz [new symlink]
etc/alternatives/pg_archivecleanup.1.gz [new symlink]
etc/alternatives/pg_basebackup.1.gz [new symlink]
etc/alternatives/pg_checksums.1.gz [new symlink]
etc/alternatives/pg_controldata.1.gz [new symlink]
etc/alternatives/pg_ctl.1.gz [new symlink]
etc/alternatives/pg_dump.1.gz [new symlink]
etc/alternatives/pg_dumpall.1.gz [new symlink]
etc/alternatives/pg_isready.1.gz [new symlink]
etc/alternatives/pg_receivewal.1.gz [new symlink]
etc/alternatives/pg_recvlogical.1.gz [new symlink]
etc/alternatives/pg_resetwal.1.gz [new symlink]
etc/alternatives/pg_restore.1.gz [new symlink]
etc/alternatives/pg_rewind.1.gz [new symlink]
etc/alternatives/pg_standby.1.gz [new symlink]
etc/alternatives/pg_test_fsync.1.gz [new symlink]
etc/alternatives/pg_test_timing.1.gz [new symlink]
etc/alternatives/pg_upgrade.1.gz [new symlink]
etc/alternatives/pg_waldump.1.gz [new symlink]
etc/alternatives/pgbench.1.gz [new symlink]
etc/alternatives/pico [new symlink]
etc/alternatives/pico.1.gz [new symlink]
etc/alternatives/pinentry [new symlink]
etc/alternatives/pinentry.1.gz [new symlink]
etc/alternatives/postgres.1.gz [new symlink]
etc/alternatives/postmaster.1.gz [new symlink]
etc/alternatives/psql.1.gz [new symlink]
etc/alternatives/rcp [new symlink]
etc/alternatives/rcp.1.gz [new symlink]
etc/alternatives/reindexdb.1.gz [new symlink]
etc/alternatives/rlogin [new symlink]
etc/alternatives/rlogin.1.gz [new symlink]
etc/alternatives/rmt [new symlink]
etc/alternatives/rmt.8.gz [new symlink]
etc/alternatives/rsh [new symlink]
etc/alternatives/rsh.1.gz [new symlink]
etc/alternatives/rview [new symlink]
etc/alternatives/rvim [new symlink]
etc/alternatives/sar [new symlink]
etc/alternatives/sar.1.gz [new symlink]
etc/alternatives/telnet [new symlink]
etc/alternatives/telnet.1.gz [new symlink]
etc/alternatives/text.plymouth [new symlink]
etc/alternatives/traceroute6 [new symlink]
etc/alternatives/traceroute6.8.gz [new symlink]
etc/alternatives/unlzma [new symlink]
etc/alternatives/unlzma.1.gz [new symlink]
etc/alternatives/vacuumdb.1.gz [new symlink]
etc/alternatives/vacuumlo.1.gz [new symlink]
etc/alternatives/vi [new symlink]
etc/alternatives/vi.1.gz [new symlink]
etc/alternatives/vi.da.1.gz [new symlink]
etc/alternatives/vi.de.1.gz [new symlink]
etc/alternatives/vi.fr.1.gz [new symlink]
etc/alternatives/vi.it.1.gz [new symlink]
etc/alternatives/vi.ja.1.gz [new symlink]
etc/alternatives/vi.pl.1.gz [new symlink]
etc/alternatives/vi.ru.1.gz [new symlink]
etc/alternatives/view [new symlink]
etc/alternatives/view.1.gz [new symlink]
etc/alternatives/view.da.1.gz [new symlink]
etc/alternatives/view.de.1.gz [new symlink]
etc/alternatives/view.fr.1.gz [new symlink]
etc/alternatives/view.it.1.gz [new symlink]
etc/alternatives/view.ja.1.gz [new symlink]
etc/alternatives/view.pl.1.gz [new symlink]
etc/alternatives/view.ru.1.gz [new symlink]
etc/alternatives/vim [new symlink]
etc/alternatives/vimdiff [new symlink]
etc/alternatives/vtrgb [new symlink]
etc/alternatives/w [new symlink]
etc/alternatives/w.1.gz [new symlink]
etc/alternatives/write [new symlink]
etc/alternatives/write.1.gz [new symlink]
etc/apparmor.d/abstractions/X [new file with mode: 0644]
etc/apparmor.d/abstractions/apache2-common [new file with mode: 0644]
etc/apparmor.d/abstractions/apparmor_api/change_profile [new file with mode: 0644]
etc/apparmor.d/abstractions/apparmor_api/examine [new file with mode: 0644]
etc/apparmor.d/abstractions/apparmor_api/find_mountpoint [new file with mode: 0644]
etc/apparmor.d/abstractions/apparmor_api/introspect [new file with mode: 0644]
etc/apparmor.d/abstractions/apparmor_api/is_enabled [new file with mode: 0644]
etc/apparmor.d/abstractions/aspell [new file with mode: 0644]
etc/apparmor.d/abstractions/audio [new file with mode: 0644]
etc/apparmor.d/abstractions/authentication [new file with mode: 0644]
etc/apparmor.d/abstractions/base [new file with mode: 0644]
etc/apparmor.d/abstractions/bash [new file with mode: 0644]
etc/apparmor.d/abstractions/consoles [new file with mode: 0644]
etc/apparmor.d/abstractions/cups-client [new file with mode: 0644]
etc/apparmor.d/abstractions/dbus [new file with mode: 0644]
etc/apparmor.d/abstractions/dbus-accessibility [new file with mode: 0644]
etc/apparmor.d/abstractions/dbus-accessibility-strict [new file with mode: 0644]
etc/apparmor.d/abstractions/dbus-session [new file with mode: 0644]
etc/apparmor.d/abstractions/dbus-session-strict [new file with mode: 0644]
etc/apparmor.d/abstractions/dbus-strict [new file with mode: 0644]
etc/apparmor.d/abstractions/dconf [new file with mode: 0644]
etc/apparmor.d/abstractions/dovecot-common [new file with mode: 0644]
etc/apparmor.d/abstractions/dri-common [new file with mode: 0644]
etc/apparmor.d/abstractions/dri-enumerate [new file with mode: 0644]
etc/apparmor.d/abstractions/enchant [new file with mode: 0644]
etc/apparmor.d/abstractions/fcitx [new file with mode: 0644]
etc/apparmor.d/abstractions/fcitx-strict [new file with mode: 0644]
etc/apparmor.d/abstractions/fonts [new file with mode: 0644]
etc/apparmor.d/abstractions/freedesktop.org [new file with mode: 0644]
etc/apparmor.d/abstractions/gnome [new file with mode: 0644]
etc/apparmor.d/abstractions/gnupg [new file with mode: 0644]
etc/apparmor.d/abstractions/ibus [new file with mode: 0644]
etc/apparmor.d/abstractions/kde [new file with mode: 0644]
etc/apparmor.d/abstractions/kde-globals-write [new file with mode: 0644]
etc/apparmor.d/abstractions/kde-icon-cache-write [new file with mode: 0644]
etc/apparmor.d/abstractions/kde-language-write [new file with mode: 0644]
etc/apparmor.d/abstractions/kerberosclient [new file with mode: 0644]
etc/apparmor.d/abstractions/ldapclient [new file with mode: 0644]
etc/apparmor.d/abstractions/libpam-systemd [new file with mode: 0644]
etc/apparmor.d/abstractions/likewise [new file with mode: 0644]
etc/apparmor.d/abstractions/mdns [new file with mode: 0644]
etc/apparmor.d/abstractions/mesa [new file with mode: 0644]
etc/apparmor.d/abstractions/mir [new file with mode: 0644]
etc/apparmor.d/abstractions/mozc [new file with mode: 0644]
etc/apparmor.d/abstractions/mysql [new file with mode: 0644]
etc/apparmor.d/abstractions/nameservice [new file with mode: 0644]
etc/apparmor.d/abstractions/nis [new file with mode: 0644]
etc/apparmor.d/abstractions/nvidia [new file with mode: 0644]
etc/apparmor.d/abstractions/opencl [new file with mode: 0644]
etc/apparmor.d/abstractions/opencl-common [new file with mode: 0644]
etc/apparmor.d/abstractions/opencl-intel [new file with mode: 0644]
etc/apparmor.d/abstractions/opencl-mesa [new file with mode: 0644]
etc/apparmor.d/abstractions/opencl-nvidia [new file with mode: 0644]
etc/apparmor.d/abstractions/opencl-pocl [new file with mode: 0644]
etc/apparmor.d/abstractions/openssl [new file with mode: 0644]
etc/apparmor.d/abstractions/orbit2 [new file with mode: 0644]
etc/apparmor.d/abstractions/p11-kit [new file with mode: 0644]
etc/apparmor.d/abstractions/perl [new file with mode: 0644]
etc/apparmor.d/abstractions/php [new file with mode: 0644]
etc/apparmor.d/abstractions/php5 [new file with mode: 0644]
etc/apparmor.d/abstractions/postfix-common [new file with mode: 0644]
etc/apparmor.d/abstractions/private-files [new file with mode: 0644]
etc/apparmor.d/abstractions/private-files-strict [new file with mode: 0644]
etc/apparmor.d/abstractions/python [new file with mode: 0644]
etc/apparmor.d/abstractions/qt5 [new file with mode: 0644]
etc/apparmor.d/abstractions/qt5-compose-cache-write [new file with mode: 0644]
etc/apparmor.d/abstractions/qt5-settings-write [new file with mode: 0644]
etc/apparmor.d/abstractions/recent-documents-write [new file with mode: 0644]
etc/apparmor.d/abstractions/ruby [new file with mode: 0644]
etc/apparmor.d/abstractions/samba [new file with mode: 0644]
etc/apparmor.d/abstractions/smbpass [new file with mode: 0644]
etc/apparmor.d/abstractions/ssl_certs [new file with mode: 0644]
etc/apparmor.d/abstractions/ssl_keys [new file with mode: 0644]
etc/apparmor.d/abstractions/svn-repositories [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-bittorrent-clients [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-browsers [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-browsers.d/java [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-browsers.d/kde [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-browsers.d/mailto [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-browsers.d/multimedia [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-browsers.d/plugins-common [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-browsers.d/productivity [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-browsers.d/text-editors [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-browsers.d/ubuntu-integration [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-browsers.d/ubuntu-integration-xul [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-browsers.d/user-files [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-console-browsers [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-console-email [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-email [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-feed-readers [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-gnome-terminal [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-helpers [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-konsole [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-media-players [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-unity7-base [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-unity7-launcher [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-unity7-messaging [new file with mode: 0644]
etc/apparmor.d/abstractions/ubuntu-xterm [new file with mode: 0644]
etc/apparmor.d/abstractions/user-download [new file with mode: 0644]
etc/apparmor.d/abstractions/user-mail [new file with mode: 0644]
etc/apparmor.d/abstractions/user-manpages [new file with mode: 0644]
etc/apparmor.d/abstractions/user-tmp [new file with mode: 0644]
etc/apparmor.d/abstractions/user-write [new file with mode: 0644]
etc/apparmor.d/abstractions/video [new file with mode: 0644]
etc/apparmor.d/abstractions/vulkan [new file with mode: 0644]
etc/apparmor.d/abstractions/wayland [new file with mode: 0644]
etc/apparmor.d/abstractions/web-data [new file with mode: 0644]
etc/apparmor.d/abstractions/winbind [new file with mode: 0644]
etc/apparmor.d/abstractions/wutmp [new file with mode: 0644]
etc/apparmor.d/abstractions/xad [new file with mode: 0644]
etc/apparmor.d/abstractions/xdg-desktop [new file with mode: 0644]
etc/apparmor.d/disable/usr.sbin.rsyslogd [new symlink]
etc/apparmor.d/local/README [new file with mode: 0644]
etc/apparmor.d/local/lsb_release [new file with mode: 0644]
etc/apparmor.d/local/nvidia_modprobe [new file with mode: 0644]
etc/apparmor.d/local/sbin.dhclient [new file with mode: 0644]
etc/apparmor.d/local/usr.bin.man [new file with mode: 0644]
etc/apparmor.d/local/usr.lib.snapd.snap-confine.real [new file with mode: 0644]
etc/apparmor.d/local/usr.sbin.rsyslogd [new file with mode: 0644]
etc/apparmor.d/local/usr.sbin.tcpdump [new file with mode: 0644]
etc/apparmor.d/lsb_release [new file with mode: 0644]
etc/apparmor.d/nvidia_modprobe [new file with mode: 0644]
etc/apparmor.d/sbin.dhclient [new file with mode: 0644]
etc/apparmor.d/tunables/alias [new file with mode: 0644]
etc/apparmor.d/tunables/apparmorfs [new file with mode: 0644]
etc/apparmor.d/tunables/dovecot [new file with mode: 0644]
etc/apparmor.d/tunables/global [new file with mode: 0644]
etc/apparmor.d/tunables/home [new file with mode: 0644]
etc/apparmor.d/tunables/home.d/site.local [new file with mode: 0644]
etc/apparmor.d/tunables/home.d/ubuntu [new file with mode: 0644]
etc/apparmor.d/tunables/kernelvars [new file with mode: 0644]
etc/apparmor.d/tunables/multiarch [new file with mode: 0644]
etc/apparmor.d/tunables/multiarch.d/site.local [new file with mode: 0644]
etc/apparmor.d/tunables/proc [new file with mode: 0644]
etc/apparmor.d/tunables/securityfs [new file with mode: 0644]
etc/apparmor.d/tunables/share [new file with mode: 0644]
etc/apparmor.d/tunables/sys [new file with mode: 0644]
etc/apparmor.d/tunables/xdg-user-dirs [new file with mode: 0644]
etc/apparmor.d/tunables/xdg-user-dirs.d/site.local [new file with mode: 0644]
etc/apparmor.d/usr.bin.man [new file with mode: 0644]
etc/apparmor.d/usr.lib.snapd.snap-confine.real [new file with mode: 0644]
etc/apparmor.d/usr.sbin.rsyslogd [new file with mode: 0644]
etc/apparmor.d/usr.sbin.tcpdump [new file with mode: 0644]
etc/apparmor/init/network-interface-security/sbin.dhclient [new symlink]
etc/apparmor/parser.conf [new file with mode: 0644]
etc/apport/blacklist.d/README.blacklist [new file with mode: 0644]
etc/apport/blacklist.d/apport [new file with mode: 0644]
etc/apport/crashdb.conf [new file with mode: 0644]
etc/apt/apt.conf.d/01-vendor-ubuntu [new file with mode: 0644]
etc/apt/apt.conf.d/01autoremove [new file with mode: 0644]
etc/apt/apt.conf.d/01autoremove-postgresql [new file with mode: 0644]
etc/apt/apt.conf.d/10periodic [new file with mode: 0644]
etc/apt/apt.conf.d/15update-stamp [new file with mode: 0644]
etc/apt/apt.conf.d/20apt-esm-hook.conf [new file with mode: 0644]
etc/apt/apt.conf.d/20archive [new file with mode: 0644]
etc/apt/apt.conf.d/20auto-upgrades [new file with mode: 0644]
etc/apt/apt.conf.d/20packagekit [new file with mode: 0644]
etc/apt/apt.conf.d/20snapd.conf [new file with mode: 0644]
etc/apt/apt.conf.d/50command-not-found [new file with mode: 0644]
etc/apt/apt.conf.d/50unattended-upgrades [new file with mode: 0644]
etc/apt/apt.conf.d/70debconf [new file with mode: 0644]
etc/apt/apt.conf.d/99update-notifier [new file with mode: 0644]
etc/apt/sources.list [new file with mode: 0644]
etc/apt/sources.list.curtin.old [new file with mode: 0644]
etc/apt/sources.list.d/git-core-ubuntu-ppa-focal.list [new file with mode: 0644]
etc/apt/sources.list.save [new file with mode: 0644]
etc/apt/trusted.gpg.d/git-core_ubuntu_ppa.gpg [new file with mode: 0644]
etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg [new file with mode: 0644]
etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg [new file with mode: 0644]
etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg [new file with mode: 0644]
etc/at.deny [new file with mode: 0644]
etc/bash.bashrc [new file with mode: 0644]
etc/bash_completion [new file with mode: 0644]
etc/bash_completion.d/apport_completion [new file with mode: 0644]
etc/bash_completion.d/git-prompt [new file with mode: 0644]
etc/bash_completion.d/python-argcomplete [new file with mode: 0644]
etc/bindresvport.blacklist [new file with mode: 0644]
etc/byobu/backend [new file with mode: 0644]
etc/byobu/socketdir [new file with mode: 0644]
etc/ca-certificates.conf [new file with mode: 0644]
etc/ca-certificates.conf.dpkg-old [new file with mode: 0644]
etc/calendar/default [new file with mode: 0644]
etc/cloud/cloud.cfg [new file with mode: 0644]
etc/cloud/cloud.cfg.d/05_logging.cfg [new file with mode: 0644]
etc/cloud/cloud.cfg.d/90_dpkg.cfg [new file with mode: 0644]
etc/cloud/cloud.cfg.d/99-installer.cfg [new file with mode: 0644]
etc/cloud/cloud.cfg.d/README [new file with mode: 0644]
etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg [new file with mode: 0644]
etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg [new file with mode: 0644]
etc/cloud/ds-identify.cfg [new file with mode: 0644]
etc/cloud/templates/chef_client.rb.tmpl [new file with mode: 0644]
etc/cloud/templates/chrony.conf.alpine.tmpl [new file with mode: 0644]
etc/cloud/templates/chrony.conf.debian.tmpl [new file with mode: 0644]
etc/cloud/templates/chrony.conf.fedora.tmpl [new file with mode: 0644]
etc/cloud/templates/chrony.conf.opensuse.tmpl [new file with mode: 0644]
etc/cloud/templates/chrony.conf.photon.tmpl [new file with mode: 0644]
etc/cloud/templates/chrony.conf.rhel.tmpl [new file with mode: 0644]
etc/cloud/templates/chrony.conf.sles.tmpl [new file with mode: 0644]
etc/cloud/templates/chrony.conf.ubuntu.tmpl [new file with mode: 0644]
etc/cloud/templates/hosts.alpine.tmpl [new file with mode: 0644]
etc/cloud/templates/hosts.arch.tmpl [new file with mode: 0644]
etc/cloud/templates/hosts.debian.tmpl [new file with mode: 0644]
etc/cloud/templates/hosts.freebsd.tmpl [new file with mode: 0644]
etc/cloud/templates/hosts.gentoo.tmpl [new file with mode: 0644]
etc/cloud/templates/hosts.photon.tmpl [new file with mode: 0644]
etc/cloud/templates/hosts.redhat.tmpl [new file with mode: 0644]
etc/cloud/templates/hosts.suse.tmpl [new file with mode: 0644]
etc/cloud/templates/ntp.conf.alpine.tmpl [new file with mode: 0644]
etc/cloud/templates/ntp.conf.debian.tmpl [new file with mode: 0644]
etc/cloud/templates/ntp.conf.fedora.tmpl [new file with mode: 0644]
etc/cloud/templates/ntp.conf.opensuse.tmpl [new file with mode: 0644]
etc/cloud/templates/ntp.conf.photon.tmpl [new file with mode: 0644]
etc/cloud/templates/ntp.conf.rhel.tmpl [new file with mode: 0644]
etc/cloud/templates/ntp.conf.sles.tmpl [new file with mode: 0644]
etc/cloud/templates/ntp.conf.ubuntu.tmpl [new file with mode: 0644]
etc/cloud/templates/resolv.conf.tmpl [new file with mode: 0644]
etc/cloud/templates/sources.list.debian.tmpl [new file with mode: 0644]
etc/cloud/templates/sources.list.ubuntu.tmpl [new file with mode: 0644]
etc/cloud/templates/systemd.resolved.conf.tmpl [new file with mode: 0644]
etc/cloud/templates/timesyncd.conf.tmpl [new file with mode: 0644]
etc/console-setup/ISO-8859-1.acm [new file with mode: 0644]
etc/console-setup/Uni2-Fixed16.psf.gz [new file with mode: 0644]
etc/console-setup/cached_ISO-8859-1.acm.gz [new file with mode: 0644]
etc/console-setup/cached_ISO-8859-1_del.kmap.gz [new file with mode: 0644]
etc/console-setup/cached_UTF-8_del.kmap.gz [new file with mode: 0644]
etc/console-setup/cached_Uni2-Fixed16.psf.gz [new file with mode: 0644]
etc/console-setup/cached_setup_font.sh [new file with mode: 0755]
etc/console-setup/cached_setup_keyboard.sh [new file with mode: 0755]
etc/console-setup/cached_setup_terminal.sh [new file with mode: 0755]
etc/console-setup/compose.ARMSCII-8.inc [new file with mode: 0644]
etc/console-setup/compose.CP1251.inc [new file with mode: 0644]
etc/console-setup/compose.CP1255.inc [new file with mode: 0644]
etc/console-setup/compose.CP1256.inc [new file with mode: 0644]
etc/console-setup/compose.GEORGIAN-ACADEMY.inc [new file with mode: 0644]
etc/console-setup/compose.GEORGIAN-PS.inc [new file with mode: 0644]
etc/console-setup/compose.IBM1133.inc [new file with mode: 0644]
etc/console-setup/compose.ISIRI-3342.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-1.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-10.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-11.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-13.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-14.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-15.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-16.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-2.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-3.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-4.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-5.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-6.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-7.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-8.inc [new file with mode: 0644]
etc/console-setup/compose.ISO-8859-9.inc [new file with mode: 0644]
etc/console-setup/compose.KOI8-R.inc [new file with mode: 0644]
etc/console-setup/compose.KOI8-U.inc [new file with mode: 0644]
etc/console-setup/compose.TIS-620.inc [new file with mode: 0644]
etc/console-setup/compose.VISCII.inc [new file with mode: 0644]
etc/console-setup/remap.inc [new file with mode: 0644]
etc/console-setup/vtrgb [new file with mode: 0644]
etc/console-setup/vtrgb.vga [new file with mode: 0644]
etc/cron.d/.placeholder [new file with mode: 0644]
etc/cron.d/certbot [new file with mode: 0644]
etc/cron.d/e2scrub_all [new file with mode: 0644]
etc/cron.d/popularity-contest [new file with mode: 0644]
etc/cron.d/sysstat [new file with mode: 0644]
etc/cron.daily/.placeholder [new file with mode: 0644]
etc/cron.daily/apport [new file with mode: 0755]
etc/cron.daily/apt-compat [new file with mode: 0755]
etc/cron.daily/bsdmainutils [new file with mode: 0755]
etc/cron.daily/dpkg [new file with mode: 0755]
etc/cron.daily/logrotate [new file with mode: 0755]
etc/cron.daily/man-db [new file with mode: 0755]
etc/cron.daily/popularity-contest [new file with mode: 0755]
etc/cron.daily/sysstat [new file with mode: 0755]
etc/cron.daily/update-notifier-common [new file with mode: 0755]
etc/cron.hourly/.placeholder [new file with mode: 0644]
etc/cron.monthly/.placeholder [new file with mode: 0644]
etc/cron.weekly/.placeholder [new file with mode: 0644]
etc/cron.weekly/man-db [new file with mode: 0755]
etc/cron.weekly/update-notifier-common [new file with mode: 0755]
etc/crontab [new file with mode: 0644]
etc/cryptsetup-initramfs/conf-hook [new file with mode: 0644]
etc/crypttab [new file with mode: 0644]
etc/dbus-1/system.d/com.ubuntu.LanguageSelector.conf [new file with mode: 0644]
etc/dbus-1/system.d/com.ubuntu.SoftwareProperties.conf [new file with mode: 0644]
etc/dbus-1/system.d/org.freedesktop.Accounts.conf [new file with mode: 0644]
etc/dbus-1/system.d/org.freedesktop.ModemManager1.conf [new file with mode: 0644]
etc/dbus-1/system.d/org.freedesktop.PackageKit.conf [new file with mode: 0644]
etc/dbus-1/system.d/org.freedesktop.thermald.conf [new file with mode: 0644]
etc/debconf.conf [new file with mode: 0644]
etc/debian_version [new file with mode: 0644]
etc/default/amd64-microcode [new file with mode: 0644]
etc/default/apport [new file with mode: 0644]
etc/default/bsdmainutils [new file with mode: 0644]
etc/default/console-setup [new file with mode: 0644]
etc/default/crda [new file with mode: 0644]
etc/default/cron [new file with mode: 0644]
etc/default/cryptdisks [new file with mode: 0644]
etc/default/dbus [new file with mode: 0644]
etc/default/grub [new file with mode: 0644]
etc/default/grub.d/init-select.cfg [new file with mode: 0644]
etc/default/grub.ucf-dist [new file with mode: 0644]
etc/default/intel-microcode [new file with mode: 0644]
etc/default/irqbalance [new file with mode: 0644]
etc/default/keyboard [new file with mode: 0644]
etc/default/locale [new file with mode: 0644]
etc/default/mdadm [new file with mode: 0644]
etc/default/motd-news [new file with mode: 0644]
etc/default/networkd-dispatcher [new file with mode: 0644]
etc/default/nginx [new file with mode: 0644]
etc/default/nss [new file with mode: 0644]
etc/default/open-iscsi [new file with mode: 0644]
etc/default/pollinate [new file with mode: 0644]
etc/default/rsync [new file with mode: 0644]
etc/default/smartmontools [new file with mode: 0644]
etc/default/ssh [new file with mode: 0644]
etc/default/sysstat [new file with mode: 0644]
etc/default/ufw [new file with mode: 0644]
etc/default/useradd [new file with mode: 0644]
etc/deluser.conf [new file with mode: 0644]
etc/depmod.d/ubuntu.conf [new file with mode: 0644]
etc/dhcp/debug [new file with mode: 0644]
etc/dhcp/dhclient-enter-hooks.d/debug [new symlink]
etc/dhcp/dhclient-enter-hooks.d/resolved [new file with mode: 0755]
etc/dhcp/dhclient-exit-hooks.d/debug [new symlink]
etc/dhcp/dhclient-exit-hooks.d/hook-dhclient [new file with mode: 0755]
etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes [new file with mode: 0644]
etc/dhcp/dhclient-exit-hooks.d/timesyncd [new file with mode: 0644]
etc/dhcp/dhclient.conf [new file with mode: 0644]
etc/dpkg/dpkg.cfg [new file with mode: 0644]
etc/dpkg/dpkg.cfg.d/pkg-config-hook-config [new file with mode: 0644]
etc/dpkg/origins/debian [new file with mode: 0644]
etc/dpkg/origins/default [new symlink]
etc/dpkg/origins/ubuntu [new file with mode: 0644]
etc/dpkg/shlibs.default [new file with mode: 0644]
etc/dpkg/shlibs.override [new file with mode: 0644]
etc/e2scrub.conf [new file with mode: 0644]
etc/environment [new file with mode: 0644]
etc/ethertypes [new file with mode: 0644]
etc/fonts/conf.avail/10-antialias.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-autohint.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-hinting-full.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-hinting-medium.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-hinting-none.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-hinting-slight.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-no-sub-pixel.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-scale-bitmap-fonts.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-sub-pixel-bgr.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-sub-pixel-rgb.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-sub-pixel-vbgr.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-sub-pixel-vrgb.conf [new file with mode: 0644]
etc/fonts/conf.avail/10-unhinted.conf [new file with mode: 0644]
etc/fonts/conf.avail/11-lcdfilter-default.conf [new file with mode: 0644]
etc/fonts/conf.avail/11-lcdfilter-legacy.conf [new file with mode: 0644]
etc/fonts/conf.avail/11-lcdfilter-light.conf [new file with mode: 0644]
etc/fonts/conf.avail/20-unhint-small-dejavu-lgc-sans-mono.conf [new file with mode: 0644]
etc/fonts/conf.avail/20-unhint-small-dejavu-lgc-sans.conf [new file with mode: 0644]
etc/fonts/conf.avail/20-unhint-small-dejavu-lgc-serif.conf [new file with mode: 0644]
etc/fonts/conf.avail/20-unhint-small-dejavu-sans-mono.conf [new file with mode: 0644]
etc/fonts/conf.avail/20-unhint-small-dejavu-sans.conf [new file with mode: 0644]
etc/fonts/conf.avail/20-unhint-small-dejavu-serif.conf [new file with mode: 0644]
etc/fonts/conf.avail/20-unhint-small-vera.conf [new file with mode: 0644]
etc/fonts/conf.avail/25-unhint-nonlatin.conf [new file with mode: 0644]
etc/fonts/conf.avail/30-cjk-aliases.conf [new file with mode: 0644]
etc/fonts/conf.avail/30-metric-aliases.conf [new file with mode: 0644]
etc/fonts/conf.avail/40-nonlatin.conf [new file with mode: 0644]
etc/fonts/conf.avail/45-generic.conf [new file with mode: 0644]
etc/fonts/conf.avail/45-latin.conf [new file with mode: 0644]
etc/fonts/conf.avail/49-sansserif.conf [new file with mode: 0644]
etc/fonts/conf.avail/50-user.conf [new file with mode: 0644]
etc/fonts/conf.avail/51-local.conf [new file with mode: 0644]
etc/fonts/conf.avail/53-monospace-lcd-filter.conf [new file with mode: 0644]
etc/fonts/conf.avail/56-language-selector-ar.conf [new file with mode: 0644]
etc/fonts/conf.avail/57-dejavu-sans-mono.conf [new file with mode: 0644]
etc/fonts/conf.avail/57-dejavu-sans.conf [new file with mode: 0644]
etc/fonts/conf.avail/57-dejavu-serif.conf [new file with mode: 0644]
etc/fonts/conf.avail/58-dejavu-lgc-sans-mono.conf [new file with mode: 0644]
etc/fonts/conf.avail/58-dejavu-lgc-sans.conf [new file with mode: 0644]
etc/fonts/conf.avail/58-dejavu-lgc-serif.conf [new file with mode: 0644]
etc/fonts/conf.avail/60-generic.conf [new file with mode: 0644]
etc/fonts/conf.avail/60-latin.conf [new file with mode: 0644]
etc/fonts/conf.avail/64-language-selector-prefer.conf [new file with mode: 0644]
etc/fonts/conf.avail/65-fonts-persian.conf [new file with mode: 0644]
etc/fonts/conf.avail/65-khmer.conf [new file with mode: 0644]
etc/fonts/conf.avail/65-nonlatin.conf [new file with mode: 0644]
etc/fonts/conf.avail/69-language-selector-ja.conf [new file with mode: 0644]
etc/fonts/conf.avail/69-language-selector-zh-cn.conf [new file with mode: 0644]
etc/fonts/conf.avail/69-language-selector-zh-hk.conf [new file with mode: 0644]
etc/fonts/conf.avail/69-language-selector-zh-mo.conf [new file with mode: 0644]
etc/fonts/conf.avail/69-language-selector-zh-sg.conf [new file with mode: 0644]
etc/fonts/conf.avail/69-language-selector-zh-tw.conf [new file with mode: 0644]
etc/fonts/conf.avail/69-unifont.conf [new file with mode: 0644]
etc/fonts/conf.avail/70-force-bitmaps.conf [new file with mode: 0644]
etc/fonts/conf.avail/70-no-bitmaps.conf [new file with mode: 0644]
etc/fonts/conf.avail/70-yes-bitmaps.conf [new file with mode: 0644]
etc/fonts/conf.avail/80-delicious.conf [new file with mode: 0644]
etc/fonts/conf.avail/90-synthetic.conf [new file with mode: 0644]
etc/fonts/conf.avail/99-language-selector-zh.conf [new file with mode: 0644]
etc/fonts/conf.d/10-antialias.conf [new symlink]
etc/fonts/conf.d/10-hinting-slight.conf [new symlink]
etc/fonts/conf.d/10-scale-bitmap-fonts.conf [new symlink]
etc/fonts/conf.d/11-lcdfilter-default.conf [new symlink]
etc/fonts/conf.d/20-unhint-small-dejavu-lgc-sans-mono.conf [new symlink]
etc/fonts/conf.d/20-unhint-small-dejavu-lgc-sans.conf [new symlink]
etc/fonts/conf.d/20-unhint-small-dejavu-lgc-serif.conf [new symlink]
etc/fonts/conf.d/20-unhint-small-dejavu-sans-mono.conf [new symlink]
etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf [new symlink]
etc/fonts/conf.d/20-unhint-small-dejavu-serif.conf [new symlink]
etc/fonts/conf.d/20-unhint-small-vera.conf [new symlink]
etc/fonts/conf.d/30-cjk-aliases.conf [new symlink]
etc/fonts/conf.d/30-metric-aliases.conf [new symlink]
etc/fonts/conf.d/40-nonlatin.conf [new symlink]
etc/fonts/conf.d/45-generic.conf [new symlink]
etc/fonts/conf.d/45-latin.conf [new symlink]
etc/fonts/conf.d/49-sansserif.conf [new symlink]
etc/fonts/conf.d/50-user.conf [new symlink]
etc/fonts/conf.d/51-local.conf [new symlink]
etc/fonts/conf.d/56-language-selector-ar.conf [new symlink]
etc/fonts/conf.d/57-dejavu-sans-mono.conf [new symlink]
etc/fonts/conf.d/57-dejavu-sans.conf [new symlink]
etc/fonts/conf.d/57-dejavu-serif.conf [new symlink]
etc/fonts/conf.d/58-dejavu-lgc-sans-mono.conf [new symlink]
etc/fonts/conf.d/58-dejavu-lgc-sans.conf [new symlink]
etc/fonts/conf.d/58-dejavu-lgc-serif.conf [new symlink]
etc/fonts/conf.d/60-generic.conf [new symlink]
etc/fonts/conf.d/60-latin.conf [new symlink]
etc/fonts/conf.d/64-language-selector-prefer.conf [new symlink]
etc/fonts/conf.d/65-fonts-persian.conf [new symlink]
etc/fonts/conf.d/65-nonlatin.conf [new symlink]
etc/fonts/conf.d/69-language-selector-ja.conf [new symlink]
etc/fonts/conf.d/69-language-selector-zh-cn.conf [new symlink]
etc/fonts/conf.d/69-language-selector-zh-hk.conf [new symlink]
etc/fonts/conf.d/69-language-selector-zh-mo.conf [new symlink]
etc/fonts/conf.d/69-language-selector-zh-sg.conf [new symlink]
etc/fonts/conf.d/69-language-selector-zh-tw.conf [new symlink]
etc/fonts/conf.d/69-unifont.conf [new symlink]
etc/fonts/conf.d/70-no-bitmaps.conf [new symlink]
etc/fonts/conf.d/80-delicious.conf [new symlink]
etc/fonts/conf.d/90-synthetic.conf [new symlink]
etc/fonts/conf.d/99-language-selector-zh.conf [new symlink]
etc/fonts/conf.d/README [new file with mode: 0644]
etc/fonts/fonts.conf [new file with mode: 0644]
etc/fstab [new file with mode: 0644]
etc/fuse.conf [new file with mode: 0644]
etc/fwupd/daemon.conf [new file with mode: 0644]
etc/fwupd/redfish.conf [new file with mode: 0644]
etc/fwupd/remotes.d/dell-esrt.conf [new file with mode: 0644]
etc/fwupd/remotes.d/lvfs-testing.conf [new file with mode: 0644]
etc/fwupd/remotes.d/lvfs.conf [new file with mode: 0644]
etc/fwupd/remotes.d/vendor-directory.conf [new file with mode: 0644]
etc/fwupd/remotes.d/vendor.conf [new file with mode: 0644]
etc/fwupd/thunderbolt.conf [new file with mode: 0644]
etc/fwupd/uefi_capsule.conf [new file with mode: 0644]
etc/fwupd/upower.conf [new file with mode: 0644]
etc/gai.conf [new file with mode: 0644]
etc/groff/man.local [new file with mode: 0644]
etc/groff/mdoc.local [new file with mode: 0644]
etc/group [new file with mode: 0644]
etc/group- [new file with mode: 0644]
etc/grub.d/00_header [new file with mode: 0755]
etc/grub.d/05_debian_theme [new file with mode: 0755]
etc/grub.d/10_linux [new file with mode: 0755]
etc/grub.d/10_linux_zfs [new file with mode: 0755]
etc/grub.d/20_linux_xen [new file with mode: 0755]
etc/grub.d/30_os-prober [new file with mode: 0755]
etc/grub.d/30_uefi-firmware [new file with mode: 0755]
etc/grub.d/35_fwupd [new file with mode: 0755]
etc/grub.d/40_custom [new file with mode: 0755]
etc/grub.d/41_custom [new file with mode: 0755]
etc/grub.d/README [new file with mode: 0644]
etc/gshadow [new file with mode: 0644]
etc/gshadow- [new file with mode: 0644]
etc/hdparm.conf [new file with mode: 0644]
etc/host.conf [new file with mode: 0644]
etc/hostname [new file with mode: 0644]
etc/hosts [new file with mode: 0644]
etc/hosts.allow [new file with mode: 0644]
etc/hosts.deny [new file with mode: 0644]
etc/init.d/apparmor [new file with mode: 0755]
etc/init.d/apport [new file with mode: 0755]
etc/init.d/atd [new file with mode: 0755]
etc/init.d/binfmt-support [new file with mode: 0755]
etc/init.d/console-setup.sh [new file with mode: 0755]
etc/init.d/cron [new file with mode: 0755]
etc/init.d/cryptdisks [new file with mode: 0755]
etc/init.d/cryptdisks-early [new file with mode: 0755]
etc/init.d/dbus [new file with mode: 0755]
etc/init.d/grub-common [new file with mode: 0755]
etc/init.d/hwclock.sh [new file with mode: 0755]
etc/init.d/irqbalance [new file with mode: 0755]
etc/init.d/iscsid [new file with mode: 0755]
etc/init.d/keyboard-setup.sh [new file with mode: 0755]
etc/init.d/kmod [new file with mode: 0755]
etc/init.d/lvm2 [new file with mode: 0755]
etc/init.d/lvm2-lvmpolld [new file with mode: 0755]
etc/init.d/multipath-tools [new file with mode: 0755]
etc/init.d/nginx [new file with mode: 0755]
etc/init.d/open-iscsi [new file with mode: 0755]
etc/init.d/open-vm-tools [new file with mode: 0755]
etc/init.d/plymouth [new file with mode: 0755]
etc/init.d/plymouth-log [new file with mode: 0755]
etc/init.d/postgresql [new file with mode: 0755]
etc/init.d/procps [new file with mode: 0755]
etc/init.d/rsync [new file with mode: 0755]
etc/init.d/rsyslog [new file with mode: 0755]
etc/init.d/screen-cleanup [new file with mode: 0755]
etc/init.d/smartmontools [new file with mode: 0755]
etc/init.d/ssh [new file with mode: 0755]
etc/init.d/sysstat [new file with mode: 0755]
etc/init.d/udev [new file with mode: 0755]
etc/init.d/ufw [new file with mode: 0755]
etc/init.d/unattended-upgrades [new file with mode: 0755]
etc/init.d/uuidd [new file with mode: 0755]
etc/initramfs-tools/initramfs.conf [new file with mode: 0644]
etc/initramfs-tools/modules [new file with mode: 0644]
etc/initramfs-tools/update-initramfs.conf [new file with mode: 0644]
etc/inputrc [new file with mode: 0644]
etc/iproute2/bpf_pinning [new file with mode: 0644]
etc/iproute2/ematch_map [new file with mode: 0644]
etc/iproute2/group [new file with mode: 0644]
etc/iproute2/nl_protos [new file with mode: 0644]
etc/iproute2/rt_dsfield [new file with mode: 0644]
etc/iproute2/rt_protos [new file with mode: 0644]
etc/iproute2/rt_protos.d/README [new file with mode: 0644]
etc/iproute2/rt_realms [new file with mode: 0644]
etc/iproute2/rt_scopes [new file with mode: 0644]
etc/iproute2/rt_tables [new file with mode: 0644]
etc/iproute2/rt_tables.d/README [new file with mode: 0644]
etc/iscsi/initiatorname.iscsi [new file with mode: 0644]
etc/iscsi/iscsid.conf [new file with mode: 0644]
etc/issue [new file with mode: 0644]
etc/issue.net [new file with mode: 0644]
etc/kernel/postinst.d/initramfs-tools [new file with mode: 0755]
etc/kernel/postinst.d/unattended-upgrades [new file with mode: 0755]
etc/kernel/postinst.d/update-notifier [new symlink]
etc/kernel/postinst.d/xx-update-initrd-links [new file with mode: 0755]
etc/kernel/postinst.d/zz-update-grub [new file with mode: 0755]
etc/kernel/postrm.d/initramfs-tools [new file with mode: 0755]
etc/kernel/postrm.d/zz-update-grub [new file with mode: 0755]
etc/kernel/preinst.d/intel-microcode [new file with mode: 0755]
etc/ld.so.cache [new file with mode: 0644]
etc/ld.so.conf [new file with mode: 0644]
etc/ld.so.conf.d/fakeroot-x86_64-linux-gnu.conf [new file with mode: 0644]
etc/ld.so.conf.d/libc.conf [new file with mode: 0644]
etc/ld.so.conf.d/x86_64-linux-gnu.conf [new file with mode: 0644]
etc/ld.so.conf.d/zz_i386-biarch-compat.conf [new file with mode: 0644]
etc/ldap/ldap.conf [new file with mode: 0644]
etc/legal [new file with mode: 0644]
etc/libaudit.conf [new file with mode: 0644]
etc/libblockdev/conf.d/00-default.cfg [new file with mode: 0644]
etc/libnl-3/classid [new file with mode: 0644]
etc/libnl-3/pktloc [new file with mode: 0644]
etc/locale.alias [new file with mode: 0644]
etc/locale.gen [new file with mode: 0644]
etc/localtime [new symlink]
etc/logcheck/ignore.d.server/gpg-agent [new file with mode: 0644]
etc/logcheck/ignore.d.server/libsasl2-modules [new file with mode: 0644]
etc/logcheck/ignore.d.server/mdadm [new file with mode: 0644]
etc/logcheck/ignore.d.server/rsyslog [new file with mode: 0644]
etc/logcheck/violations.d/mdadm [new file with mode: 0644]
etc/login.defs [new file with mode: 0644]
etc/logrotate.conf [new file with mode: 0644]
etc/logrotate.d/alternatives [new file with mode: 0644]
etc/logrotate.d/apport [new file with mode: 0644]
etc/logrotate.d/apt [new file with mode: 0644]
etc/logrotate.d/bootlog [new file with mode: 0644]
etc/logrotate.d/btmp [new file with mode: 0644]
etc/logrotate.d/certbot [new file with mode: 0644]
etc/logrotate.d/dpkg [new file with mode: 0644]
etc/logrotate.d/nginx [new file with mode: 0644]
etc/logrotate.d/postgresql-common [new file with mode: 0644]
etc/logrotate.d/rsyslog [new file with mode: 0644]
etc/logrotate.d/ubuntu-advantage-tools [new file with mode: 0644]
etc/logrotate.d/ufw [new file with mode: 0644]
etc/logrotate.d/unattended-upgrades [new file with mode: 0644]
etc/logrotate.d/wtmp [new file with mode: 0644]
etc/lsb-release [new file with mode: 0644]
etc/ltrace.conf [new file with mode: 0644]
etc/lvm/lvm.conf [new file with mode: 0644]
etc/lvm/lvmlocal.conf [new file with mode: 0644]
etc/lvm/profile/cache-mq.profile [new file with mode: 0644]
etc/lvm/profile/cache-smq.profile [new file with mode: 0644]
etc/lvm/profile/command_profile_template.profile [new file with mode: 0644]
etc/lvm/profile/lvmdbusd.profile [new file with mode: 0644]
etc/lvm/profile/metadata_profile_template.profile [new file with mode: 0644]
etc/lvm/profile/thin-generic.profile [new file with mode: 0644]
etc/lvm/profile/thin-performance.profile [new file with mode: 0644]
etc/lvm/profile/vdo-small.profile [new file with mode: 0644]
etc/machine-id [new file with mode: 0644]
etc/magic [new file with mode: 0644]
etc/magic.mime [new file with mode: 0644]
etc/mailcap [new file with mode: 0644]
etc/mailcap.order [new file with mode: 0644]
etc/manpath.config [new file with mode: 0644]
etc/mdadm/mdadm.conf [new file with mode: 0644]
etc/mime.types [new file with mode: 0644]
etc/mke2fs.conf [new file with mode: 0644]
etc/modprobe.d/amd64-microcode-blacklist.conf [new file with mode: 0644]
etc/modprobe.d/blacklist-ath_pci.conf [new file with mode: 0644]
etc/modprobe.d/blacklist-firewire.conf [new file with mode: 0644]
etc/modprobe.d/blacklist-framebuffer.conf [new file with mode: 0644]
etc/modprobe.d/blacklist-rare-network.conf [new file with mode: 0644]
etc/modprobe.d/blacklist.conf [new file with mode: 0644]
etc/modprobe.d/intel-microcode-blacklist.conf [new file with mode: 0644]
etc/modprobe.d/iwlwifi.conf [new file with mode: 0644]
etc/modprobe.d/mdadm.conf [new file with mode: 0644]
etc/modules [new file with mode: 0644]
etc/modules-load.d/modules.conf [new symlink]
etc/mtab [new symlink]
etc/multipath.conf [new file with mode: 0644]
etc/multipath/wwids [new file with mode: 0644]
etc/nanorc [new file with mode: 0644]
etc/netplan/00-installer-config.yaml [new file with mode: 0644]
etc/network/if-pre-up.d/ethtool [new file with mode: 0755]
etc/network/if-up.d/ethtool [new file with mode: 0755]
etc/network/interfaces [new file with mode: 0644]
etc/networks [new file with mode: 0644]
etc/newt/palette [new symlink]
etc/newt/palette.original [new file with mode: 0644]
etc/newt/palette.ubuntu [new file with mode: 0644]
etc/nginx/fastcgi.conf [new file with mode: 0644]
etc/nginx/fastcgi_params [new file with mode: 0644]
etc/nginx/koi-utf [new file with mode: 0644]
etc/nginx/koi-win [new file with mode: 0644]
etc/nginx/mime.types [new file with mode: 0644]
etc/nginx/modules-enabled/50-mod-http-image-filter.conf [new symlink]
etc/nginx/modules-enabled/50-mod-http-xslt-filter.conf [new symlink]
etc/nginx/modules-enabled/50-mod-mail.conf [new symlink]
etc/nginx/modules-enabled/50-mod-stream.conf [new symlink]
etc/nginx/proxy_params [new file with mode: 0644]
etc/nginx/scgi_params [new file with mode: 0644]
etc/nginx/snippets/fastcgi-php.conf [new file with mode: 0644]
etc/nginx/snippets/snakeoil.conf [new file with mode: 0644]
etc/nginx/uwsgi_params [new file with mode: 0644]
etc/nginx/win-utf [new file with mode: 0644]
etc/nsswitch.conf [new file with mode: 0644]
etc/os-release [new symlink]
etc/overlayroot.conf [new file with mode: 0644]
etc/pam.conf [new file with mode: 0644]
etc/pam.d/atd [new file with mode: 0644]
etc/pam.d/chfn [new file with mode: 0644]
etc/pam.d/chpasswd [new file with mode: 0644]
etc/pam.d/chsh [new file with mode: 0644]
etc/pam.d/common-account [new file with mode: 0644]
etc/pam.d/common-auth [new file with mode: 0644]
etc/pam.d/common-password [new file with mode: 0644]
etc/pam.d/common-session [new file with mode: 0644]
etc/pam.d/common-session-noninteractive [new file with mode: 0644]
etc/pam.d/cron [new file with mode: 0644]
etc/pam.d/login [new file with mode: 0644]
etc/pam.d/newusers [new file with mode: 0644]
etc/pam.d/other [new file with mode: 0644]
etc/pam.d/passwd [new file with mode: 0644]
etc/pam.d/polkit-1 [new file with mode: 0644]
etc/pam.d/runuser [new file with mode: 0644]
etc/pam.d/runuser-l [new file with mode: 0644]
etc/pam.d/sshd [new file with mode: 0644]
etc/pam.d/su [new file with mode: 0644]
etc/pam.d/su-l [new file with mode: 0644]
etc/pam.d/sudo [new file with mode: 0644]
etc/pam.d/systemd-user [new file with mode: 0644]
etc/pam.d/vmtoolsd [new file with mode: 0644]
etc/passwd [new file with mode: 0644]
etc/passwd- [new file with mode: 0644]
etc/perl/Net/libnet.cfg [new file with mode: 0644]
etc/pki/fwupd-metadata/GPG-KEY-Linux-Foundation-Metadata [new file with mode: 0644]
etc/pki/fwupd-metadata/GPG-KEY-Linux-Vendor-Firmware-Service [new file with mode: 0644]
etc/pki/fwupd-metadata/LVFS-CA.pem [new file with mode: 0644]
etc/pki/fwupd/GPG-KEY-Hughski-Limited [new file with mode: 0644]
etc/pki/fwupd/GPG-KEY-Linux-Foundation-Firmware [new file with mode: 0644]
etc/pki/fwupd/GPG-KEY-Linux-Vendor-Firmware-Service [new file with mode: 0644]
etc/pki/fwupd/LVFS-CA.pem [new file with mode: 0644]
etc/pm/sleep.d/10_grub-common [new file with mode: 0755]
etc/pm/sleep.d/10_unattended-upgrades-hibernate [new file with mode: 0755]
etc/polkit-1/localauthority.conf.d/50-localauthority.conf [new file with mode: 0644]
etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf [new file with mode: 0644]
etc/pollinate/add-user-agent [new file with mode: 0644]
etc/pollinate/entropy.ubuntu.com.pem [new file with mode: 0644]
etc/popularity-contest.conf [new file with mode: 0644]
etc/postgresql-common/createcluster.conf [new file with mode: 0644]
etc/postgresql-common/root.crt [new file with mode: 0644]
etc/postgresql-common/supported_versions [new file with mode: 0644]
etc/postgresql-common/user_clusters [new file with mode: 0644]
etc/postgresql/12/main/environment [new file with mode: 0644]
etc/postgresql/12/main/pg_ctl.conf [new file with mode: 0644]
etc/postgresql/12/main/pg_ident.conf [new file with mode: 0644]
etc/postgresql/12/main/start.conf [new file with mode: 0644]
etc/profile [new file with mode: 0644]
etc/profile.d/01-locale-fix.sh [new file with mode: 0644]
etc/profile.d/Z97-byobu.sh [new file with mode: 0644]
etc/profile.d/Z99-cloud-locale-test.sh [new file with mode: 0755]
etc/profile.d/Z99-cloudinit-warnings.sh [new file with mode: 0755]
etc/profile.d/apps-bin-path.sh [new file with mode: 0644]
etc/profile.d/bash_completion.sh [new file with mode: 0644]
etc/profile.d/cedilla-portuguese.sh [new file with mode: 0644]
etc/profile.d/gawk.csh [new file with mode: 0644]
etc/profile.d/gawk.sh [new file with mode: 0644]
etc/protocols [new file with mode: 0644]
etc/python3.8/sitecustomize.py [new file with mode: 0644]
etc/python3/debian_config [new file with mode: 0644]
etc/rc0.d/K01atd [new symlink]
etc/rc0.d/K01cryptdisks [new symlink]
etc/rc0.d/K01cryptdisks-early [new symlink]
etc/rc0.d/K01irqbalance [new symlink]
etc/rc0.d/K01iscsid [new symlink]
etc/rc0.d/K01lvm2-lvmpolld [new symlink]
etc/rc0.d/K01multipath-tools [new symlink]
etc/rc0.d/K01nginx [new symlink]
etc/rc0.d/K01open-iscsi [new symlink]
etc/rc0.d/K01open-vm-tools [new symlink]
etc/rc0.d/K01plymouth [new symlink]
etc/rc0.d/K01postgresql [new symlink]
etc/rc0.d/K01rsyslog [new symlink]
etc/rc0.d/K01smartmontools [new symlink]
etc/rc0.d/K01udev [new symlink]
etc/rc0.d/K01unattended-upgrades [new symlink]
etc/rc0.d/K01uuidd [new symlink]
etc/rc1.d/K01atd [new symlink]
etc/rc1.d/K01irqbalance [new symlink]
etc/rc1.d/K01iscsid [new symlink]
etc/rc1.d/K01lvm2-lvmpolld [new symlink]
etc/rc1.d/K01multipath-tools [new symlink]
etc/rc1.d/K01nginx [new symlink]
etc/rc1.d/K01open-iscsi [new symlink]
etc/rc1.d/K01open-vm-tools [new symlink]
etc/rc1.d/K01postgresql [new symlink]
etc/rc1.d/K01rsyslog [new symlink]
etc/rc1.d/K01smartmontools [new symlink]
etc/rc1.d/K01ufw [new symlink]
etc/rc1.d/K01uuidd [new symlink]
etc/rc2.d/S01apport [new symlink]
etc/rc2.d/S01atd [new symlink]
etc/rc2.d/S01binfmt-support [new symlink]
etc/rc2.d/S01console-setup.sh [new symlink]
etc/rc2.d/S01cron [new symlink]
etc/rc2.d/S01dbus [new symlink]
etc/rc2.d/S01grub-common [new symlink]
etc/rc2.d/S01irqbalance [new symlink]
etc/rc2.d/S01lvm2-lvmpolld [new symlink]
etc/rc2.d/S01multipath-tools [new symlink]
etc/rc2.d/S01nginx [new symlink]
etc/rc2.d/S01open-vm-tools [new symlink]
etc/rc2.d/S01plymouth [new symlink]
etc/rc2.d/S01postgresql [new symlink]
etc/rc2.d/S01rsync [new symlink]
etc/rc2.d/S01rsyslog [new symlink]
etc/rc2.d/S01smartmontools [new symlink]
etc/rc2.d/S01ssh [new symlink]
etc/rc2.d/S01sysstat [new symlink]
etc/rc2.d/S01unattended-upgrades [new symlink]
etc/rc2.d/S01uuidd [new symlink]
etc/rc3.d/S01apport [new symlink]
etc/rc3.d/S01atd [new symlink]
etc/rc3.d/S01binfmt-support [new symlink]
etc/rc3.d/S01console-setup.sh [new symlink]
etc/rc3.d/S01cron [new symlink]
etc/rc3.d/S01dbus [new symlink]
etc/rc3.d/S01grub-common [new symlink]
etc/rc3.d/S01irqbalance [new symlink]
etc/rc3.d/S01lvm2-lvmpolld [new symlink]
etc/rc3.d/S01multipath-tools [new symlink]
etc/rc3.d/S01nginx [new symlink]
etc/rc3.d/S01open-vm-tools [new symlink]
etc/rc3.d/S01plymouth [new symlink]
etc/rc3.d/S01postgresql [new symlink]
etc/rc3.d/S01rsync [new symlink]
etc/rc3.d/S01rsyslog [new symlink]
etc/rc3.d/S01smartmontools [new symlink]
etc/rc3.d/S01ssh [new symlink]
etc/rc3.d/S01sysstat [new symlink]
etc/rc3.d/S01unattended-upgrades [new symlink]
etc/rc3.d/S01uuidd [new symlink]
etc/rc4.d/S01apport [new symlink]
etc/rc4.d/S01atd [new symlink]
etc/rc4.d/S01binfmt-support [new symlink]
etc/rc4.d/S01console-setup.sh [new symlink]
etc/rc4.d/S01cron [new symlink]
etc/rc4.d/S01dbus [new symlink]
etc/rc4.d/S01grub-common [new symlink]
etc/rc4.d/S01irqbalance [new symlink]
etc/rc4.d/S01lvm2-lvmpolld [new symlink]
etc/rc4.d/S01multipath-tools [new symlink]
etc/rc4.d/S01nginx [new symlink]
etc/rc4.d/S01open-vm-tools [new symlink]
etc/rc4.d/S01plymouth [new symlink]
etc/rc4.d/S01postgresql [new symlink]
etc/rc4.d/S01rsync [new symlink]
etc/rc4.d/S01rsyslog [new symlink]
etc/rc4.d/S01smartmontools [new symlink]
etc/rc4.d/S01ssh [new symlink]
etc/rc4.d/S01sysstat [new symlink]
etc/rc4.d/S01unattended-upgrades [new symlink]
etc/rc4.d/S01uuidd [new symlink]
etc/rc5.d/S01apport [new symlink]
etc/rc5.d/S01atd [new symlink]
etc/rc5.d/S01binfmt-support [new symlink]
etc/rc5.d/S01console-setup.sh [new symlink]
etc/rc5.d/S01cron [new symlink]
etc/rc5.d/S01dbus [new symlink]
etc/rc5.d/S01grub-common [new symlink]
etc/rc5.d/S01irqbalance [new symlink]
etc/rc5.d/S01lvm2-lvmpolld [new symlink]
etc/rc5.d/S01multipath-tools [new symlink]
etc/rc5.d/S01nginx [new symlink]
etc/rc5.d/S01open-vm-tools [new symlink]
etc/rc5.d/S01plymouth [new symlink]
etc/rc5.d/S01postgresql [new symlink]
etc/rc5.d/S01rsync [new symlink]
etc/rc5.d/S01rsyslog [new symlink]
etc/rc5.d/S01smartmontools [new symlink]
etc/rc5.d/S01ssh [new symlink]
etc/rc5.d/S01sysstat [new symlink]
etc/rc5.d/S01unattended-upgrades [new symlink]
etc/rc5.d/S01uuidd [new symlink]
etc/rc6.d/K01atd [new symlink]
etc/rc6.d/K01cryptdisks [new symlink]
etc/rc6.d/K01cryptdisks-early [new symlink]
etc/rc6.d/K01irqbalance [new symlink]
etc/rc6.d/K01iscsid [new symlink]
etc/rc6.d/K01lvm2-lvmpolld [new symlink]
etc/rc6.d/K01multipath-tools [new symlink]
etc/rc6.d/K01nginx [new symlink]
etc/rc6.d/K01open-iscsi [new symlink]
etc/rc6.d/K01open-vm-tools [new symlink]
etc/rc6.d/K01plymouth [new symlink]
etc/rc6.d/K01postgresql [new symlink]
etc/rc6.d/K01rsyslog [new symlink]
etc/rc6.d/K01smartmontools [new symlink]
etc/rc6.d/K01udev [new symlink]
etc/rc6.d/K01unattended-upgrades [new symlink]
etc/rc6.d/K01uuidd [new symlink]
etc/rcS.d/S01apparmor [new symlink]
etc/rcS.d/S01cryptdisks [new symlink]
etc/rcS.d/S01cryptdisks-early [new symlink]
etc/rcS.d/S01iscsid [new symlink]
etc/rcS.d/S01keyboard-setup.sh [new symlink]
etc/rcS.d/S01kmod [new symlink]
etc/rcS.d/S01lvm2 [new symlink]
etc/rcS.d/S01open-iscsi [new symlink]
etc/rcS.d/S01plymouth-log [new symlink]
etc/rcS.d/S01procps [new symlink]
etc/rcS.d/S01screen-cleanup [new symlink]
etc/rcS.d/S01udev [new symlink]
etc/rcS.d/S01ufw [new symlink]
etc/resolv.conf [new symlink]
etc/rmt [new symlink]
etc/rpc [new file with mode: 0644]
etc/rsyslog.conf [new file with mode: 0644]
etc/rsyslog.d/20-ufw.conf [new file with mode: 0644]
etc/rsyslog.d/21-cloudinit.conf [new file with mode: 0644]
etc/rsyslog.d/50-default.conf [new file with mode: 0644]
etc/screenrc [new file with mode: 0644]
etc/security/access.conf [new file with mode: 0644]
etc/security/capability.conf [new file with mode: 0644]
etc/security/faillock.conf [new file with mode: 0644]
etc/security/group.conf [new file with mode: 0644]
etc/security/limits.conf [new file with mode: 0644]
etc/security/namespace.conf [new file with mode: 0644]
etc/security/namespace.init [new file with mode: 0755]
etc/security/opasswd [new file with mode: 0644]
etc/security/pam_env.conf [new file with mode: 0644]
etc/security/sepermit.conf [new file with mode: 0644]
etc/security/time.conf [new file with mode: 0644]
etc/selinux/semanage.conf [new file with mode: 0644]
etc/sensors.d/.placeholder [new file with mode: 0644]
etc/sensors3.conf [new file with mode: 0644]
etc/services [new file with mode: 0644]
etc/shells [new file with mode: 0644]
etc/skel/.bash_logout [new file with mode: 0644]
etc/skel/.bashrc [new file with mode: 0644]
etc/skel/.profile [new file with mode: 0644]
etc/smartd.conf [new file with mode: 0644]
etc/smartmontools/run.d/10mail [new file with mode: 0755]
etc/sos.conf [new file with mode: 0644]
etc/sos/sos.conf [new file with mode: 0644]
etc/ssl/certs/002c0b4f.0 [new symlink]
etc/ssl/certs/02265526.0 [new symlink]
etc/ssl/certs/03179a64.0 [new symlink]
etc/ssl/certs/062cdee6.0 [new symlink]
etc/ssl/certs/064e0aa9.0 [new symlink]
etc/ssl/certs/06dc52d5.0 [new symlink]
etc/ssl/certs/09789157.0 [new symlink]
etc/ssl/certs/0a775a30.0 [new symlink]
etc/ssl/certs/0b1b94ef.0 [new symlink]
etc/ssl/certs/0bf05006.0 [new symlink]
etc/ssl/certs/0f5dc4f3.0 [new symlink]
etc/ssl/certs/0f6fa695.0 [new symlink]
etc/ssl/certs/1001acf7.0 [new symlink]
etc/ssl/certs/106f3e4d.0 [new symlink]
etc/ssl/certs/14bc7599.0 [new symlink]
etc/ssl/certs/1636090b.0 [new symlink]
etc/ssl/certs/18856ac4.0 [new symlink]
etc/ssl/certs/1d3472b9.0 [new symlink]
etc/ssl/certs/1e08bfd1.0 [new symlink]
etc/ssl/certs/1e09d511.0 [new symlink]
etc/ssl/certs/244b5494.0 [new symlink]
etc/ssl/certs/279e4bfd [new symlink]
etc/ssl/certs/279e4bfd.0 [new symlink]
etc/ssl/certs/2923b3f9.0 [new symlink]
etc/ssl/certs/2ae6433e.0 [new symlink]
etc/ssl/certs/2b349938.0 [new symlink]
etc/ssl/certs/32888f65.0 [new symlink]
etc/ssl/certs/349f2832.0 [new symlink]
etc/ssl/certs/3513523f.0 [new symlink]
etc/ssl/certs/3bde41ac.0 [new symlink]
etc/ssl/certs/3e44d2f7.0 [new symlink]
etc/ssl/certs/3e45d192.0 [new symlink]
etc/ssl/certs/3fb36b73.0 [new symlink]
etc/ssl/certs/40193066.0 [new symlink]
etc/ssl/certs/4042bcee.0 [new symlink]
etc/ssl/certs/40547a79.0 [new symlink]
etc/ssl/certs/406c9bb1.0 [new symlink]
etc/ssl/certs/4304c5e5.0 [new symlink]
etc/ssl/certs/48bec511.0 [new symlink]
etc/ssl/certs/4a6481c9.0 [new symlink]
etc/ssl/certs/4b718d9b.0 [new symlink]
etc/ssl/certs/4bfab552.0 [new symlink]
etc/ssl/certs/4f316efb.0 [new symlink]
etc/ssl/certs/5273a94c.0 [new symlink]
etc/ssl/certs/5443e9e3.0 [new symlink]
etc/ssl/certs/54657681.0 [new symlink]
etc/ssl/certs/57bcb2da.0 [new symlink]
etc/ssl/certs/5ad8a5d6.0 [new symlink]
etc/ssl/certs/5cd81ad7.0 [new symlink]
etc/ssl/certs/5d3033c5.0 [new symlink]
etc/ssl/certs/5e98733a.0 [new symlink]
etc/ssl/certs/5f15c80c.0 [new symlink]
etc/ssl/certs/5f618aec.0 [new symlink]
etc/ssl/certs/607986c7.0 [new symlink]
etc/ssl/certs/626dceaf.0 [new symlink]
etc/ssl/certs/653b494a.0 [new symlink]
etc/ssl/certs/68dd7389.0 [new symlink]
etc/ssl/certs/6b99d060.0 [new symlink]
etc/ssl/certs/6d41d539.0 [new symlink]
etc/ssl/certs/6fa5da56.0 [new symlink]
etc/ssl/certs/706f604c.0 [new symlink]
etc/ssl/certs/749e9e03.0 [new symlink]
etc/ssl/certs/75d1b2ed.0 [new symlink]
etc/ssl/certs/76cb8f92.0 [new symlink]
etc/ssl/certs/76faf6c0.0 [new symlink]
etc/ssl/certs/7719f463.0 [new symlink]
etc/ssl/certs/773e07ad.0 [new symlink]
etc/ssl/certs/7aaf71c0.0 [new symlink]
etc/ssl/certs/7f3d5d1d.0 [new symlink]
etc/ssl/certs/8160b96c.0 [new symlink]
etc/ssl/certs/8cb5ee0f.0 [new symlink]
etc/ssl/certs/8d86cdd1.0 [new symlink]
etc/ssl/certs/8d89cda1.0 [new symlink]
etc/ssl/certs/930ac5d2.0 [new symlink]
etc/ssl/certs/93bc0acc.0 [new symlink]
etc/ssl/certs/9482e63a.0 [new symlink]
etc/ssl/certs/988a38cb.0 [new symlink]
etc/ssl/certs/9b5697b0.0 [new symlink]
etc/ssl/certs/9c8dfbd4.0 [new symlink]
etc/ssl/certs/9d04f354.0 [new symlink]
etc/ssl/certs/ACCVRAIZ1.pem [new symlink]
etc/ssl/certs/AC_RAIZ_FNMT-RCM.pem [new symlink]
etc/ssl/certs/AC_RAIZ_FNMT-RCM_SERVIDORES_SEGUROS.pem [new symlink]
etc/ssl/certs/ANF_Secure_Server_Root_CA.pem [new symlink]
etc/ssl/certs/Actalis_Authentication_Root_CA.pem [new symlink]
etc/ssl/certs/AffirmTrust_Commercial.pem [new symlink]
etc/ssl/certs/AffirmTrust_Networking.pem [new symlink]
etc/ssl/certs/AffirmTrust_Premium.pem [new symlink]
etc/ssl/certs/AffirmTrust_Premium_ECC.pem [new symlink]
etc/ssl/certs/Amazon_Root_CA_1.pem [new symlink]
etc/ssl/certs/Amazon_Root_CA_2.pem [new symlink]
etc/ssl/certs/Amazon_Root_CA_3.pem [new symlink]
etc/ssl/certs/Amazon_Root_CA_4.pem [new symlink]
etc/ssl/certs/Atos_TrustedRoot_2011.pem [new symlink]
etc/ssl/certs/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem [new symlink]
etc/ssl/certs/Baltimore_CyberTrust_Root.pem [new symlink]
etc/ssl/certs/Buypass_Class_2_Root_CA.pem [new symlink]
etc/ssl/certs/Buypass_Class_3_Root_CA.pem [new symlink]
etc/ssl/certs/CA_Disig_Root_R2.pem [new symlink]
etc/ssl/certs/CFCA_EV_ROOT.pem [new symlink]
etc/ssl/certs/COMODO_Certification_Authority.pem [new symlink]
etc/ssl/certs/COMODO_ECC_Certification_Authority.pem [new symlink]
etc/ssl/certs/COMODO_RSA_Certification_Authority.pem [new symlink]
etc/ssl/certs/Certigna.pem [new symlink]
etc/ssl/certs/Certigna_Root_CA.pem [new symlink]
etc/ssl/certs/Certum_EC-384_CA.pem [new symlink]
etc/ssl/certs/Certum_Trusted_Network_CA.pem [new symlink]
etc/ssl/certs/Certum_Trusted_Network_CA_2.pem [new symlink]
etc/ssl/certs/Certum_Trusted_Root_CA.pem [new symlink]
etc/ssl/certs/Comodo_AAA_Services_root.pem [new symlink]
etc/ssl/certs/Cybertrust_Global_Root.pem [new symlink]
etc/ssl/certs/D-TRUST_Root_Class_3_CA_2_2009.pem [new symlink]
etc/ssl/certs/D-TRUST_Root_Class_3_CA_2_EV_2009.pem [new symlink]
etc/ssl/certs/DigiCert_Assured_ID_Root_CA.pem [new symlink]
etc/ssl/certs/DigiCert_Assured_ID_Root_G2.pem [new symlink]
etc/ssl/certs/DigiCert_Assured_ID_Root_G3.pem [new symlink]
etc/ssl/certs/DigiCert_Global_Root_CA.pem [new symlink]
etc/ssl/certs/DigiCert_Global_Root_G2.pem [new symlink]
etc/ssl/certs/DigiCert_Global_Root_G3.pem [new symlink]
etc/ssl/certs/DigiCert_High_Assurance_EV_Root_CA.pem [new symlink]
etc/ssl/certs/DigiCert_Trusted_Root_G4.pem [new symlink]
etc/ssl/certs/E-Tugra_Certification_Authority.pem [new symlink]
etc/ssl/certs/EC-ACC.pem [new symlink]
etc/ssl/certs/Entrust.net_Premium_2048_Secure_Server_CA.pem [new symlink]
etc/ssl/certs/Entrust_Root_Certification_Authority.pem [new symlink]
etc/ssl/certs/Entrust_Root_Certification_Authority_-_EC1.pem [new symlink]
etc/ssl/certs/Entrust_Root_Certification_Authority_-_G2.pem [new symlink]
etc/ssl/certs/Entrust_Root_Certification_Authority_-_G4.pem [new symlink]
etc/ssl/certs/GDCA_TrustAUTH_R5_ROOT.pem [new symlink]
etc/ssl/certs/GLOBALTRUST_2020.pem [new symlink]
etc/ssl/certs/GTS_Root_R1.pem [new symlink]
etc/ssl/certs/GTS_Root_R2.pem [new symlink]
etc/ssl/certs/GTS_Root_R3.pem [new symlink]
etc/ssl/certs/GTS_Root_R4.pem [new symlink]
etc/ssl/certs/GlobalSign_ECC_Root_CA_-_R4.pem [new symlink]
etc/ssl/certs/GlobalSign_ECC_Root_CA_-_R5.pem [new symlink]
etc/ssl/certs/GlobalSign_Root_CA.pem [new symlink]
etc/ssl/certs/GlobalSign_Root_CA_-_R2.pem [new symlink]
etc/ssl/certs/GlobalSign_Root_CA_-_R3.pem [new symlink]
etc/ssl/certs/GlobalSign_Root_CA_-_R6.pem [new symlink]
etc/ssl/certs/GlobalSign_Root_E46.pem [new symlink]
etc/ssl/certs/GlobalSign_Root_R46.pem [new symlink]
etc/ssl/certs/Go_Daddy_Class_2_CA.pem [new symlink]
etc/ssl/certs/Go_Daddy_Root_Certificate_Authority_-_G2.pem [new symlink]
etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem [new symlink]
etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem [new symlink]
etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem [new symlink]
etc/ssl/certs/Hongkong_Post_Root_CA_1.pem [new symlink]
etc/ssl/certs/Hongkong_Post_Root_CA_3.pem [new symlink]
etc/ssl/certs/ISRG_Root_X1.pem [new symlink]
etc/ssl/certs/IdenTrust_Commercial_Root_CA_1.pem [new symlink]
etc/ssl/certs/IdenTrust_Public_Sector_Root_CA_1.pem [new symlink]
etc/ssl/certs/Izenpe.com.pem [new symlink]
etc/ssl/certs/Microsec_e-Szigno_Root_CA_2009.pem [new symlink]
etc/ssl/certs/Microsoft_ECC_Root_Certificate_Authority_2017.pem [new symlink]
etc/ssl/certs/Microsoft_RSA_Root_Certificate_Authority_2017.pem [new symlink]
etc/ssl/certs/NAVER_Global_Root_Certification_Authority.pem [new symlink]
etc/ssl/certs/NetLock_Arany_=Class_Gold=_Főtanúsítvány.pem [new symlink]
etc/ssl/certs/Network_Solutions_Certificate_Authority.pem [new symlink]
etc/ssl/certs/OISTE_WISeKey_Global_Root_GB_CA.pem [new symlink]
etc/ssl/certs/OISTE_WISeKey_Global_Root_GC_CA.pem [new symlink]
etc/ssl/certs/QuoVadis_Root_CA_1_G3.pem [new symlink]
etc/ssl/certs/QuoVadis_Root_CA_2.pem [new symlink]
etc/ssl/certs/QuoVadis_Root_CA_2_G3.pem [new symlink]
etc/ssl/certs/QuoVadis_Root_CA_3.pem [new symlink]
etc/ssl/certs/QuoVadis_Root_CA_3_G3.pem [new symlink]
etc/ssl/certs/SSL.com_EV_Root_Certification_Authority_ECC.pem [new symlink]
etc/ssl/certs/SSL.com_EV_Root_Certification_Authority_RSA_R2.pem [new symlink]
etc/ssl/certs/SSL.com_Root_Certification_Authority_ECC.pem [new symlink]
etc/ssl/certs/SSL.com_Root_Certification_Authority_RSA.pem [new symlink]
etc/ssl/certs/SZAFIR_ROOT_CA2.pem [new symlink]
etc/ssl/certs/SecureSign_RootCA11.pem [new symlink]
etc/ssl/certs/SecureTrust_CA.pem [new symlink]
etc/ssl/certs/Secure_Global_CA.pem [new symlink]
etc/ssl/certs/Security_Communication_RootCA2.pem [new symlink]
etc/ssl/certs/Security_Communication_Root_CA.pem [new symlink]
etc/ssl/certs/Staat_der_Nederlanden_EV_Root_CA.pem [new symlink]
etc/ssl/certs/Starfield_Class_2_CA.pem [new symlink]
etc/ssl/certs/Starfield_Root_Certificate_Authority_-_G2.pem [new symlink]
etc/ssl/certs/Starfield_Services_Root_Certificate_Authority_-_G2.pem [new symlink]
etc/ssl/certs/SwissSign_Gold_CA_-_G2.pem [new symlink]
etc/ssl/certs/SwissSign_Silver_CA_-_G2.pem [new symlink]
etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2.pem [new symlink]
etc/ssl/certs/T-TeleSec_GlobalRoot_Class_3.pem [new symlink]
etc/ssl/certs/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.pem [new symlink]
etc/ssl/certs/TWCA_Global_Root_CA.pem [new symlink]
etc/ssl/certs/TWCA_Root_Certification_Authority.pem [new symlink]
etc/ssl/certs/TeliaSonera_Root_CA_v1.pem [new symlink]
etc/ssl/certs/TrustCor_ECA-1.pem [new symlink]
etc/ssl/certs/TrustCor_RootCert_CA-1.pem [new symlink]
etc/ssl/certs/TrustCor_RootCert_CA-2.pem [new symlink]
etc/ssl/certs/Trustwave_Global_Certification_Authority.pem [new symlink]
etc/ssl/certs/Trustwave_Global_ECC_P256_Certification_Authority.pem [new symlink]
etc/ssl/certs/Trustwave_Global_ECC_P384_Certification_Authority.pem [new symlink]
etc/ssl/certs/UCA_Extended_Validation_Root.pem [new symlink]
etc/ssl/certs/UCA_Global_G2_Root.pem [new symlink]
etc/ssl/certs/USERTrust_ECC_Certification_Authority.pem [new symlink]
etc/ssl/certs/USERTrust_RSA_Certification_Authority.pem [new symlink]
etc/ssl/certs/XRamp_Global_CA_Root.pem [new symlink]
etc/ssl/certs/a3418fda.0 [new symlink]
etc/ssl/certs/a94d09e5.0 [new symlink]
etc/ssl/certs/aee5f10d.0 [new symlink]
etc/ssl/certs/b0e59380.0 [new symlink]
etc/ssl/certs/b1159c4c.0 [new symlink]
etc/ssl/certs/b433981b.0 [new symlink]
etc/ssl/certs/b66938e9.0 [new symlink]
etc/ssl/certs/b727005e.0 [new symlink]
etc/ssl/certs/b7a5b843.0 [new symlink]
etc/ssl/certs/b81b93f0.0 [new symlink]
etc/ssl/certs/bf53fb88.0 [new symlink]
etc/ssl/certs/c01eb047.0 [new symlink]
etc/ssl/certs/c28a8a30.0 [new symlink]
etc/ssl/certs/ca-certificates.crt [new file with mode: 0644]
etc/ssl/certs/ca6e4ad9.0 [new symlink]
etc/ssl/certs/cbf06781.0 [new symlink]
etc/ssl/certs/cc450945.0 [new symlink]
etc/ssl/certs/cd58d51e.0 [new symlink]
etc/ssl/certs/cd8c0d63.0 [new symlink]
etc/ssl/certs/ce5e74ef.0 [new symlink]
etc/ssl/certs/certSIGN_ROOT_CA.pem [new symlink]
etc/ssl/certs/certSIGN_Root_CA_G2.pem [new symlink]
etc/ssl/certs/d4dae3dd.0 [new symlink]
etc/ssl/certs/d6325660.0 [new symlink]
etc/ssl/certs/d7e8dc79.0 [new symlink]
etc/ssl/certs/d887a5bb.0 [new symlink]
etc/ssl/certs/dc4d6a89.0 [new symlink]
etc/ssl/certs/dd8e9d41.0 [new symlink]
etc/ssl/certs/de6d66f3.0 [new symlink]
etc/ssl/certs/e-Szigno_Root_CA_2017.pem [new symlink]
etc/ssl/certs/e113c810.0 [new symlink]
etc/ssl/certs/e18bfb83.0 [new symlink]
etc/ssl/certs/e35234b1.0 [new symlink]
etc/ssl/certs/e36a6752.0 [new symlink]
etc/ssl/certs/e73d606e.0 [new symlink]
etc/ssl/certs/e868b802.0 [new symlink]
etc/ssl/certs/e8de2f56.0 [new symlink]
etc/ssl/certs/ePKI_Root_Certification_Authority.pem [new symlink]
etc/ssl/certs/ee64a828.0 [new symlink]
etc/ssl/certs/eed8c118.0 [new symlink]
etc/ssl/certs/ef954a4e.0 [new symlink]
etc/ssl/certs/emSign_ECC_Root_CA_-_C3.pem [new symlink]
etc/ssl/certs/emSign_ECC_Root_CA_-_G3.pem [new symlink]
etc/ssl/certs/emSign_Root_CA_-_C1.pem [new symlink]
etc/ssl/certs/emSign_Root_CA_-_G1.pem [new symlink]
etc/ssl/certs/f081611a.0 [new symlink]
etc/ssl/certs/f0c70a8d.0 [new symlink]
etc/ssl/certs/f249de83.0 [new symlink]
etc/ssl/certs/f30dd6ad.0 [new symlink]
etc/ssl/certs/f3377b1b.0 [new symlink]
etc/ssl/certs/f387163d.0 [new symlink]
etc/ssl/certs/f39fc864.0 [new symlink]
etc/ssl/certs/f51bb24c.0 [new symlink]
etc/ssl/certs/fa5da96b.0 [new symlink]
etc/ssl/certs/fc5a8f99.0 [new symlink]
etc/ssl/certs/fe8a2cd8.0 [new symlink]
etc/ssl/certs/feffd413.0 [new symlink]
etc/ssl/certs/ff34af3f.0 [new symlink]
etc/ssl/certs/ssl-cert-snakeoil.pem [new file with mode: 0644]
etc/ssl/openssl.cnf [new file with mode: 0644]
etc/ssl/private/ssl-cert-snakeoil.key [new file with mode: 0644]
etc/subgid [new file with mode: 0644]
etc/subgid- [new file with mode: 0644]
etc/subuid [new file with mode: 0644]
etc/subuid- [new file with mode: 0644]
etc/sudoers.d/README [new file with mode: 0644]
etc/sysctl.conf [new file with mode: 0644]
etc/sysctl.d/10-console-messages.conf [new file with mode: 0644]
etc/sysctl.d/10-ipv6-privacy.conf [new file with mode: 0644]
etc/sysctl.d/10-kernel-hardening.conf [new file with mode: 0644]
etc/sysctl.d/10-link-restrictions.conf [new file with mode: 0644]
etc/sysctl.d/10-magic-sysrq.conf [new file with mode: 0644]
etc/sysctl.d/10-network-security.conf [new file with mode: 0644]
etc/sysctl.d/10-ptrace.conf [new file with mode: 0644]
etc/sysctl.d/10-zeropage.conf [new file with mode: 0644]
etc/sysctl.d/30-postgresql-shm.conf [new file with mode: 0644]
etc/sysctl.d/99-sysctl.conf [new symlink]
etc/sysctl.d/README.sysctl [new file with mode: 0644]
etc/sysstat/sysstat [new file with mode: 0644]
etc/sysstat/sysstat.ioconf [new file with mode: 0644]
etc/systemd/journald.conf [new file with mode: 0644]
etc/systemd/logind.conf [new file with mode: 0644]
etc/systemd/networkd.conf [new file with mode: 0644]
etc/systemd/pstore.conf [new file with mode: 0644]
etc/systemd/resolved.conf [new file with mode: 0644]
etc/systemd/sleep.conf [new file with mode: 0644]
etc/systemd/system.conf [new file with mode: 0644]
etc/systemd/system/cloud-final.service.wants/snapd.seeded.service [new symlink]
etc/systemd/system/cloud-init.target.wants/cloud-config.service [new symlink]
etc/systemd/system/cloud-init.target.wants/cloud-final.service [new symlink]
etc/systemd/system/cloud-init.target.wants/cloud-init-hotplugd.socket [new symlink]
etc/systemd/system/cloud-init.target.wants/cloud-init-local.service [new symlink]
etc/systemd/system/cloud-init.target.wants/cloud-init.service [new symlink]
etc/systemd/system/dbus-org.freedesktop.ModemManager1.service [new symlink]
etc/systemd/system/dbus-org.freedesktop.resolve1.service [new symlink]
etc/systemd/system/dbus-org.freedesktop.thermald.service [new symlink]
etc/systemd/system/dbus-org.freedesktop.timesync1.service [new symlink]
etc/systemd/system/default.target.wants/e2scrub_reap.service [new symlink]
etc/systemd/system/emergency.target.wants/grub-initrd-fallback.service [new symlink]
etc/systemd/system/final.target.wants/snapd.system-shutdown.service [new symlink]
etc/systemd/system/getty.target.wants/getty@tty1.service [new symlink]
etc/systemd/system/graphical.target.wants/accounts-daemon.service [new symlink]
etc/systemd/system/graphical.target.wants/udisks2.service [new symlink]
etc/systemd/system/iscsi.service [new symlink]
etc/systemd/system/mdmonitor.service.wants/mdcheck_continue.timer [new symlink]
etc/systemd/system/mdmonitor.service.wants/mdcheck_start.timer [new symlink]
etc/systemd/system/mdmonitor.service.wants/mdmonitor-oneshot.timer [new symlink]
etc/systemd/system/multi-user.target.wants/ModemManager.service [new symlink]
etc/systemd/system/multi-user.target.wants/atd.service [new symlink]
etc/systemd/system/multi-user.target.wants/binfmt-support.service [new symlink]
etc/systemd/system/multi-user.target.wants/console-setup.service [new symlink]
etc/systemd/system/multi-user.target.wants/cron.service [new symlink]
etc/systemd/system/multi-user.target.wants/dmesg.service [new symlink]
etc/systemd/system/multi-user.target.wants/grub-common.service [new symlink]
etc/systemd/system/multi-user.target.wants/grub-initrd-fallback.service [new symlink]
etc/systemd/system/multi-user.target.wants/irqbalance.service [new symlink]
etc/systemd/system/multi-user.target.wants/lxd-agent-9p.service [new symlink]
etc/systemd/system/multi-user.target.wants/lxd-agent.service [new symlink]
etc/systemd/system/multi-user.target.wants/networkd-dispatcher.service [new symlink]
etc/systemd/system/multi-user.target.wants/nginx.service [new symlink]
etc/systemd/system/multi-user.target.wants/ondemand.service [new symlink]
etc/systemd/system/multi-user.target.wants/open-vm-tools.service [new symlink]
etc/systemd/system/multi-user.target.wants/pollinate.service [new symlink]
etc/systemd/system/multi-user.target.wants/postgresql.service [new symlink]
etc/systemd/system/multi-user.target.wants/remote-fs.target [new symlink]
etc/systemd/system/multi-user.target.wants/rsync.service [new symlink]
etc/systemd/system/multi-user.target.wants/rsyslog.service [new symlink]
etc/systemd/system/multi-user.target.wants/secureboot-db.service [new symlink]
etc/systemd/system/multi-user.target.wants/smartmontools.service [new symlink]
etc/systemd/system/multi-user.target.wants/snap-core18-1880.mount [new symlink]
etc/systemd/system/multi-user.target.wants/snap-core18-2409.mount [new symlink]
etc/systemd/system/multi-user.target.wants/snap-core20-1518.mount [new symlink]
etc/systemd/system/multi-user.target.wants/snap-lxd-16099.mount [new symlink]
etc/systemd/system/multi-user.target.wants/snap-lxd-22753.mount [new symlink]
etc/systemd/system/multi-user.target.wants/snap-snapd-15904.mount [new symlink]
etc/systemd/system/multi-user.target.wants/snap-snapd-16010.mount [new symlink]
etc/systemd/system/multi-user.target.wants/snap.lxd.activate.service [new symlink]
etc/systemd/system/multi-user.target.wants/snapd.apparmor.service [new symlink]
etc/systemd/system/multi-user.target.wants/snapd.autoimport.service [new symlink]
etc/systemd/system/multi-user.target.wants/snapd.core-fixup.service [new symlink]
etc/systemd/system/multi-user.target.wants/snapd.recovery-chooser-trigger.service [new symlink]
etc/systemd/system/multi-user.target.wants/snapd.seeded.service [new symlink]
etc/systemd/system/multi-user.target.wants/snapd.service [new symlink]
etc/systemd/system/multi-user.target.wants/ssh.service [new symlink]
etc/systemd/system/multi-user.target.wants/sysstat.service [new symlink]
etc/systemd/system/multi-user.target.wants/systemd-networkd.service [new symlink]
etc/systemd/system/multi-user.target.wants/systemd-resolved.service [new symlink]
etc/systemd/system/multi-user.target.wants/thermald.service [new symlink]
etc/systemd/system/multi-user.target.wants/ua-license-check.path [new symlink]
etc/systemd/system/multi-user.target.wants/ua-reboot-cmds.service [new symlink]
etc/systemd/system/multi-user.target.wants/ufw.service [new symlink]
etc/systemd/system/multi-user.target.wants/unattended-upgrades.service [new symlink]
etc/systemd/system/multipath-tools.service [new symlink]
etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service [new symlink]
etc/systemd/system/open-vm-tools.service.requires/vgauth.service [new symlink]
etc/systemd/system/paths.target.wants/apport-autoreport.path [new symlink]
etc/systemd/system/rescue.target.wants/grub-initrd-fallback.service [new symlink]
etc/systemd/system/sleep.target.wants/grub-common.service [new symlink]
etc/systemd/system/sleep.target.wants/grub-initrd-fallback.service [new symlink]
etc/systemd/system/smartd.service [new symlink]
etc/systemd/system/snap-core18-1880.mount [new file with mode: 0644]
etc/systemd/system/snap-core18-2409.mount [new file with mode: 0644]
etc/systemd/system/snap-core20-1518.mount [new file with mode: 0644]
etc/systemd/system/snap-lxd-16099.mount [new file with mode: 0644]
etc/systemd/system/snap-lxd-22753.mount [new file with mode: 0644]
etc/systemd/system/snap-snapd-15904.mount [new file with mode: 0644]
etc/systemd/system/snap-snapd-16010.mount [new file with mode: 0644]
etc/systemd/system/snap.lxd.activate.service [new file with mode: 0644]
etc/systemd/system/snap.lxd.daemon.service [new file with mode: 0644]
etc/systemd/system/snap.lxd.daemon.unix.socket [new file with mode: 0644]
etc/systemd/system/sockets.target.wants/apport-forward.socket [new symlink]
etc/systemd/system/sockets.target.wants/dm-event.socket [new symlink]
etc/systemd/system/sockets.target.wants/iscsid.socket [new symlink]
etc/systemd/system/sockets.target.wants/multipathd.socket [new symlink]
etc/systemd/system/sockets.target.wants/snap.lxd.daemon.unix.socket [new symlink]
etc/systemd/system/sockets.target.wants/snapd.socket [new symlink]
etc/systemd/system/sockets.target.wants/systemd-networkd.socket [new symlink]
etc/systemd/system/sockets.target.wants/uuidd.socket [new symlink]
etc/systemd/system/sshd-keygen@.service.d/disable-sshd-keygen-if-cloud-init-active.conf [new file with mode: 0644]
etc/systemd/system/sshd.service [new symlink]
etc/systemd/system/sysinit.target.wants/apparmor.service [new symlink]
etc/systemd/system/sysinit.target.wants/blk-availability.service [new symlink]
etc/systemd/system/sysinit.target.wants/finalrd.service [new symlink]
etc/systemd/system/sysinit.target.wants/keyboard-setup.service [new symlink]
etc/systemd/system/sysinit.target.wants/lvm2-lvmpolld.socket [new symlink]
etc/systemd/system/sysinit.target.wants/lvm2-monitor.service [new symlink]
etc/systemd/system/sysinit.target.wants/multipathd.service [new symlink]
etc/systemd/system/sysinit.target.wants/open-iscsi.service [new symlink]
etc/systemd/system/sysinit.target.wants/setvtrgb.service [new symlink]
etc/systemd/system/sysinit.target.wants/systemd-pstore.service [new symlink]
etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service [new symlink]
etc/systemd/system/syslog.service [new symlink]
etc/systemd/system/timers.target.wants/apt-daily-upgrade.timer [new symlink]
etc/systemd/system/timers.target.wants/apt-daily.timer [new symlink]
etc/systemd/system/timers.target.wants/certbot.timer [new symlink]
etc/systemd/system/timers.target.wants/e2scrub_all.timer [new symlink]
etc/systemd/system/timers.target.wants/fstrim.timer [new symlink]
etc/systemd/system/timers.target.wants/fwupd-refresh.timer [new symlink]
etc/systemd/system/timers.target.wants/logrotate.timer [new symlink]
etc/systemd/system/timers.target.wants/man-db.timer [new symlink]
etc/systemd/system/timers.target.wants/motd-news.timer [new symlink]
etc/systemd/system/timers.target.wants/snapd.snap-repair.timer [new symlink]
etc/systemd/system/timers.target.wants/ua-timer.timer [new symlink]
etc/systemd/system/vmtoolsd.service [new symlink]
etc/systemd/timesyncd.conf [new file with mode: 0644]
etc/systemd/user.conf [new file with mode: 0644]
etc/systemd/user/sockets.target.wants/dirmngr.socket [new symlink]
etc/systemd/user/sockets.target.wants/gpg-agent-browser.socket [new symlink]
etc/systemd/user/sockets.target.wants/gpg-agent-extra.socket [new symlink]
etc/systemd/user/sockets.target.wants/gpg-agent-ssh.socket [new symlink]
etc/systemd/user/sockets.target.wants/gpg-agent.socket [new symlink]
etc/systemd/user/sockets.target.wants/pk-debconf-helper.socket [new symlink]
etc/terminfo/README [new file with mode: 0644]
etc/thermald/thermal-cpu-cdev-order.xml [new file with mode: 0644]
etc/timezone [new file with mode: 0644]
etc/tmpfiles.d/screen-cleanup.conf [new file with mode: 0644]
etc/ubuntu-advantage/help_data.yaml [new file with mode: 0644]
etc/ubuntu-advantage/uaclient.conf [new file with mode: 0644]
etc/ucf.conf [new file with mode: 0644]
etc/udev/rules.d/70-snap.snapd.rules [new file with mode: 0644]
etc/udev/udev.conf [new file with mode: 0644]
etc/udisks2/udisks2.conf [new file with mode: 0644]
etc/ufw/after.init [new file with mode: 0644]
etc/ufw/after.rules [new file with mode: 0644]
etc/ufw/after6.rules [new file with mode: 0644]
etc/ufw/applications.d/nginx [new file with mode: 0644]
etc/ufw/applications.d/openssh-server [new file with mode: 0644]
etc/ufw/before.init [new file with mode: 0644]
etc/ufw/before.rules [new file with mode: 0644]
etc/ufw/before6.rules [new file with mode: 0644]
etc/ufw/sysctl.conf [new file with mode: 0644]
etc/ufw/ufw.conf [new file with mode: 0644]
etc/ufw/user.rules [new file with mode: 0644]
etc/ufw/user6.rules [new file with mode: 0644]
etc/update-manager/meta-release [new file with mode: 0644]
etc/update-manager/release-upgrades [new file with mode: 0644]
etc/update-manager/release-upgrades.d/ubuntu-advantage-upgrades.cfg [new file with mode: 0644]
etc/update-motd.d/00-header [new file with mode: 0644]
etc/update-motd.d/10-help-text [new file with mode: 0644]
etc/update-motd.d/50-landscape-sysinfo [new symlink]
etc/update-motd.d/50-motd-news [new file with mode: 0644]
etc/update-motd.d/85-fwupd [new file with mode: 0644]
etc/update-motd.d/88-esm-announce [new file with mode: 0644]
etc/update-motd.d/90-updates-available [new file with mode: 0644]
etc/update-motd.d/91-contract-ua-esm-status [new file with mode: 0644]
etc/update-motd.d/91-release-upgrade [new file with mode: 0644]
etc/update-motd.d/92-unattended-upgrades [new file with mode: 0644]
etc/update-motd.d/95-hwe-eol [new file with mode: 0644]
etc/update-motd.d/97-overlayroot [new file with mode: 0644]
etc/update-motd.d/98-fsck-at-reboot [new file with mode: 0644]
etc/update-motd.d/98-reboot-required [new file with mode: 0644]
etc/usb_modeswitch.conf [new file with mode: 0644]
etc/vim/vimrc [new file with mode: 0644]
etc/vim/vimrc.tiny [new file with mode: 0644]
etc/vmware-tools/poweroff-vm-default [new file with mode: 0755]
etc/vmware-tools/poweron-vm-default [new file with mode: 0755]
etc/vmware-tools/resume-vm-default [new file with mode: 0755]
etc/vmware-tools/scripts/vmware/network [new file with mode: 0755]
etc/vmware-tools/statechange.subr [new file with mode: 0644]
etc/vmware-tools/suspend-vm-default [new file with mode: 0755]
etc/vmware-tools/tools.conf [new file with mode: 0644]
etc/vmware-tools/tools.conf.example [new file with mode: 0644]
etc/vmware-tools/vgauth.conf [new file with mode: 0644]
etc/vmware-tools/vgauth/schemas/XMLSchema-hasFacetAndProperty.xsd [new file with mode: 0644]
etc/vmware-tools/vgauth/schemas/XMLSchema-instance.xsd [new file with mode: 0644]
etc/vmware-tools/vgauth/schemas/XMLSchema.dtd [new file with mode: 0644]
etc/vmware-tools/vgauth/schemas/XMLSchema.xsd [new file with mode: 0644]
etc/vmware-tools/vgauth/schemas/catalog.xml [new file with mode: 0644]
etc/vmware-tools/vgauth/schemas/datatypes.dtd [new file with mode: 0644]
etc/vmware-tools/vgauth/schemas/saml-schema-assertion-2.0.xsd [new file with mode: 0644]
etc/vmware-tools/vgauth/schemas/xenc-schema.xsd [new file with mode: 0644]
etc/vmware-tools/vgauth/schemas/xml.xsd [new file with mode: 0644]
etc/vmware-tools/vgauth/schemas/xmldsig-core-schema.xsd [new file with mode: 0644]
etc/vtrgb [new symlink]
etc/wgetrc [new file with mode: 0644]
etc/xattr.conf [new file with mode: 0644]
etc/xdg/autostart/snap-userd-autostart.desktop [new file with mode: 0644]
etc/xdg/autostart/xdg-user-dirs.desktop [new file with mode: 0644]
etc/xdg/systemd/user [new symlink]
etc/xdg/user-dirs.conf [new file with mode: 0644]
etc/xdg/user-dirs.defaults [new file with mode: 0644]
etc/zsh_command_not_found [new file with mode: 0644]

diff --git a/etc/.pwd.lock b/etc/.pwd.lock
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/NetworkManager/dispatcher.d/hook-network-manager b/etc/NetworkManager/dispatcher.d/hook-network-manager
new file mode 100755 (executable)
index 0000000..67d9044
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+# This file is part of cloud-init. See LICENSE file for license information.
+
+# This script hooks into NetworkManager(8) via its scripts
+# arguments are 'interface-name' and 'action'
+#
+is_azure() {
+    local dmi_path="/sys/class/dmi/id/board_vendor" vendor=""
+    if [ -e "$dmi_path" ] && read vendor < "$dmi_path"; then
+        [ "$vendor" = "Microsoft Corporation" ] && return 0
+    fi
+    return 1
+}
+
+is_enabled() {
+    # only execute hooks if cloud-init is enabled and on azure
+    [ -e /run/cloud-init/enabled ] || return 1
+    is_azure
+}
+
+if is_enabled; then
+    case "$1:$2" in
+        *:up) exec cloud-init dhclient-hook up "$1";;
+        *:down) exec cloud-init dhclient-hook down "$1";;
+    esac
+fi
diff --git a/etc/PackageKit/PackageKit.conf b/etc/PackageKit/PackageKit.conf
new file mode 100644 (file)
index 0000000..41b487b
--- /dev/null
@@ -0,0 +1,21 @@
+# Only the system administrator should modify this file, ordinary users
+# should not have to change anything.
+
+[Daemon]
+
+# Default backends, as chosen in the configure script. This will be used
+# where no --backend="foo" option is given to the daemon.
+#
+# The order they are specified is the order they are tried, so for the
+# value "foo,bar" first "foo" will be attempted and then "bar" if the
+# libpk_backend_foo.so module load failed.
+#DefaultBackend=auto
+
+# Unlock the backend after this many seconds idle.
+#BackendShutdownTimeout=5
+
+# Shut down the daemon after this many seconds idle. 0 means don't shutdown.
+#ShutdownTimeout=300
+
+# Keep the packages after they have been downloaded
+#KeepCache=false
diff --git a/etc/PackageKit/Vendor.conf b/etc/PackageKit/Vendor.conf
new file mode 100644 (file)
index 0000000..752b8fd
--- /dev/null
@@ -0,0 +1,48 @@
+# Only the system vendor should modify this file, ordinary users
+# should not have to change anything.
+
+[PackagesNotFound]
+
+# This is a link to a vendor URL which is shown when a suitable package
+# could not be found in any remote software repository.
+# The page set here should explain how to add new software repositories if required.
+#
+# If the value is set to 'none' then no link is shown.
+#
+# default=http://www.packagekit.org/pk-package-not-found.html
+DefaultUrl=https://help.ubuntu.com/community/Repositories/
+
+# The URL which is shown to the user when a codec could not be found.
+# It should explain why certain codecs cannot be used, and perhaps show
+# links to web stores where the codec can be legally purchased.
+#
+# If the value is set to 'none' then the value of DefaultUrl is used.
+#
+# default=none
+CodecUrl=http://shop.canonical.com/index.php?cPath=19&osCsid=f1e370ea7563ed5e654c10450364ff24
+
+# The URL which is shown to the user when hardware drivers could not be found.
+# It should explain why some hardware is not supported, and links to futher
+# information.
+#
+# If the value is set to 'none' then the value of DefaultUrl is used.
+#
+# default=none
+HardwareUrl=none
+
+# The URL which is shown to the user when fonts could not be found.
+# Alternatives should probably be suggested where possible.
+#
+# If the value is set to 'none' then the value of DefaultUrl is used.
+#
+# default=none
+FontUrl=none
+
+# The URL which is shown to the user when programs handing a mime tpye could not
+# be found. It should probably explain how to use wine if the program is a
+# Windows program, or suggest alternatives.
+#
+# If the value is set to 'none' then the value of DefaultUrl is used.
+#
+# default=none
+MimeUrl=none
diff --git a/etc/UPower/UPower.conf b/etc/UPower/UPower.conf
new file mode 100644 (file)
index 0000000..e2c6a69
--- /dev/null
@@ -0,0 +1,94 @@
+# Only the system vendor should modify this file, ordinary users
+# should not have to change anything.
+
+[UPower]
+
+# Enable the Watts Up Pro device.
+#
+# The Watts Up Pro contains a generic FTDI USB device without a specific
+# vendor and product ID. When we probe for WUP devices, we can cause
+# the user to get a perplexing "Device or resource busy" error when
+# attempting to use their non-WUP device.
+#
+# The generic FTDI device is known to also be used on:
+#
+# - Sparkfun FT232 breakout board
+# - Parallax Propeller
+#
+# default=false
+EnableWattsUpPro=false
+
+# Don't poll the kernel for battery level changes.
+#
+# Some hardware will send us battery level changes through
+# events, rather than us having to poll for it. This option
+# allows disabling polling for hardware that sends out events.
+#
+# default=false
+NoPollBatteries=false
+
+# Do we ignore the lid state
+#
+# Some laptops are broken. The lid state is either inverted, or stuck
+# on or off. We can't do much to fix these problems, but this is a way
+# for users to make the laptop panel vanish, a state that might be used
+# by a couple of user-space daemons. On Linux systems, see also
+# logind.conf(5).
+#
+# default=false
+IgnoreLid=false
+
+# Policy for warnings and action based on battery levels
+#
+# Whether battery percentage based policy should be used. The default
+# is to use the time left, change to true to use the percentage, which
+# should work around broken firmwares. It is also more reliable than
+# the time left (frantically saving all your files is going to use more
+# battery than letting it rest for example).
+# default=true
+UsePercentageForPolicy=true
+
+# When UsePercentageForPolicy is true, the levels at which UPower will
+# consider the battery low, critical, or take action for the critical
+# battery level.
+#
+# This will also be used for batteries which don't have time information
+# such as that of peripherals.
+#
+# If any value is invalid, or not in descending order, the defaults
+# will be used.
+#
+# Defaults:
+# PercentageLow=10
+# PercentageCritical=3
+# PercentageAction=2
+PercentageLow=10
+PercentageCritical=3
+PercentageAction=2
+
+# When UsePercentageForPolicy is false, the time remaining at which UPower
+# will consider the battery low, critical, or take action for the critical
+# battery level.
+#
+# If any value is invalid, or not in descending order, the defaults
+# will be used.
+#
+# Defaults:
+# TimeLow=1200
+# TimeCritical=300
+# TimeAction=120
+TimeLow=1200
+TimeCritical=300
+TimeAction=120
+
+# The action to take when "TimeAction" or "PercentageAction" above has been
+# reached for the batteries (UPS or laptop batteries) supplying the computer
+#
+# Possible values are:
+# PowerOff
+# Hibernate
+# HybridSleep
+#
+# If HybridSleep isn't available, Hibernate will be used
+# If Hibernate isn't available, PowerOff will be used
+CriticalPowerAction=HybridSleep
diff --git a/etc/X11/Xsession.d/20dbus_xdg-runtime b/etc/X11/Xsession.d/20dbus_xdg-runtime
new file mode 100644 (file)
index 0000000..c541727
--- /dev/null
@@ -0,0 +1,24 @@
+# vim:set ft=sh sw=2 sts=2 et:
+
+if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && [ -n "$XDG_RUNTIME_DIR" ] && \
+    [ "$XDG_RUNTIME_DIR" = "/run/user/`id -u`" ] && \
+    [ -S "$XDG_RUNTIME_DIR/bus" ]; then
+  # We are under systemd-logind or something remarkably similar, and
+  # a user-session socket has already been set up.
+  #
+  # Be nice to non-libdbus, non-sd-bus implementations by using
+  # that as the session bus address in the environment. The check for
+  # XDG_RUNTIME_DIR = "/run/user/`id -u`" is because we know that
+  # form of the address, from systemd-logind, doesn't need escaping,
+  # whereas arbitrary addresses might.
+  DBUS_SESSION_BUS_ADDRESS="unix:path=$XDG_RUNTIME_DIR/bus"
+  export DBUS_SESSION_BUS_ADDRESS
+fi
+
+if [ -x "/usr/bin/dbus-update-activation-environment" ]; then
+  # tell dbus-daemon --session (and systemd --user, if running)
+  # to put a minimal subset of the Xsession's environment in activated
+  # services' environments
+  dbus-update-activation-environment --verbose --systemd \
+    DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY
+fi
diff --git a/etc/X11/Xsession.d/90gpg-agent b/etc/X11/Xsession.d/90gpg-agent
new file mode 100644 (file)
index 0000000..8b45b05
--- /dev/null
@@ -0,0 +1,22 @@
+# On systems with systemd running, we expect the agent to be launched
+# via systemd's user mode (see
+# /usr/lib/systemd/user/gpg-agent.{socket,service} and
+# systemd.unit(5)).  This allows systemd to clean up the agent
+# automatically at logout.
+
+# If systemd is absent from your system, or you do not permit it to
+# run in user mode, then you may need to manually launch gpg-agent
+# from your session initialization with something like "gpgconf
+# --launch gpg-agent"
+
+# Nonetheless, ssh and older versions of gpg require environment
+# variables to be set in order to find the agent, so we will set those
+# here.
+
+agent_sock=$(gpgconf --list-dirs agent-socket)
+export GPG_AGENT_INFO=${agent_sock}:0:1
+if [ -n "$(gpgconf --list-options gpg-agent | \
+      awk -F: '/^enable-ssh-support:/{ print $10 }')" ]; then
+    export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
+fi
+
diff --git a/etc/adduser.conf b/etc/adduser.conf
new file mode 100644 (file)
index 0000000..d1e9e90
--- /dev/null
@@ -0,0 +1,88 @@
+# /etc/adduser.conf: `adduser' configuration.
+# See adduser(8) and adduser.conf(5) for full documentation.
+
+# The DSHELL variable specifies the default login shell on your
+# system.
+DSHELL=/bin/bash
+
+# The DHOME variable specifies the directory containing users' home
+# directories.
+DHOME=/home
+
+# If GROUPHOMES is "yes", then the home directories will be created as
+# /home/groupname/user.
+GROUPHOMES=no
+
+# If LETTERHOMES is "yes", then the created home directories will have
+# an extra directory - the first letter of the user name. For example:
+# /home/u/user.
+LETTERHOMES=no
+
+# The SKEL variable specifies the directory containing "skeletal" user
+# files; in other words, files such as a sample .profile that will be
+# copied to the new user's home directory when it is created.
+SKEL=/etc/skel
+
+# FIRST_SYSTEM_[GU]ID to LAST_SYSTEM_[GU]ID inclusive is the range for UIDs
+# for dynamically allocated administrative and system accounts/groups.
+# Please note that system software, such as the users allocated by the base-passwd
+# package, may assume that UIDs less than 100 are unallocated.
+FIRST_SYSTEM_UID=100
+LAST_SYSTEM_UID=999
+
+FIRST_SYSTEM_GID=100
+LAST_SYSTEM_GID=999
+
+# FIRST_[GU]ID to LAST_[GU]ID inclusive is the range of UIDs of dynamically
+# allocated user accounts/groups.
+FIRST_UID=1000
+LAST_UID=59999
+
+FIRST_GID=1000
+LAST_GID=59999
+
+# The USERGROUPS variable can be either "yes" or "no".  If "yes" each
+# created user will be given their own group to use as a default.  If
+# "no", each created user will be placed in the group whose gid is
+# USERS_GID (see below).
+USERGROUPS=yes
+
+# If USERGROUPS is "no", then USERS_GID should be the GID of the group
+# `users' (or the equivalent group) on your system.
+USERS_GID=100
+
+# If DIR_MODE is set, directories will be created with the specified
+# mode. Otherwise the default mode 0755 will be used.
+DIR_MODE=0755
+
+# If SETGID_HOME is "yes" home directories for users with their own
+# group the setgid bit will be set. This was the default for
+# versions << 3.13 of adduser. Because it has some bad side effects we
+# no longer do this per default. If you want it nevertheless you can
+# still set it here.
+SETGID_HOME=no
+
+# If QUOTAUSER is set, a default quota will be set from that user with
+# `edquota -p QUOTAUSER newuser'
+QUOTAUSER=""
+
+# If SKEL_IGNORE_REGEX is set, adduser will ignore files matching this
+# regular expression when creating a new home directory
+SKEL_IGNORE_REGEX="dpkg-(old|new|dist|save)"
+
+# Set this if you want the --add_extra_groups option to adduser to add
+# new users to other groups.
+# This is the list of groups that new non-system users will be added to
+# Default:
+#EXTRA_GROUPS="dialout cdrom floppy audio video plugdev users"
+
+# If ADD_EXTRA_GROUPS is set to something non-zero, the EXTRA_GROUPS
+# option above will be default behavior for adding new, non-system users
+#ADD_EXTRA_GROUPS=1
+
+
+# check user and group names also against this regular expression.
+#NAME_REGEX="^[a-z][-a-z0-9_]*\$"
+
+# use extrausers by default
+#USE_EXTRAUSERS=1
diff --git a/etc/alternatives/ABORT.7.gz b/etc/alternatives/ABORT.7.gz
new file mode 120000 (symlink)
index 0000000..caf9e0f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ABORT.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_AGGREGATE.7.gz b/etc/alternatives/ALTER_AGGREGATE.7.gz
new file mode 120000 (symlink)
index 0000000..d4d1328
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_AGGREGATE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_COLLATION.7.gz b/etc/alternatives/ALTER_COLLATION.7.gz
new file mode 120000 (symlink)
index 0000000..46563ad
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_COLLATION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_CONVERSION.7.gz b/etc/alternatives/ALTER_CONVERSION.7.gz
new file mode 120000 (symlink)
index 0000000..f60c156
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_CONVERSION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_DATABASE.7.gz b/etc/alternatives/ALTER_DATABASE.7.gz
new file mode 120000 (symlink)
index 0000000..ecbc44e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_DATABASE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_DEFAULT_PRIVILEGES.7.gz b/etc/alternatives/ALTER_DEFAULT_PRIVILEGES.7.gz
new file mode 120000 (symlink)
index 0000000..b943d3c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_DEFAULT_PRIVILEGES.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_DOMAIN.7.gz b/etc/alternatives/ALTER_DOMAIN.7.gz
new file mode 120000 (symlink)
index 0000000..fa8ffd0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_DOMAIN.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_EVENT_TRIGGER.7.gz b/etc/alternatives/ALTER_EVENT_TRIGGER.7.gz
new file mode 120000 (symlink)
index 0000000..534399e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_EVENT_TRIGGER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_EXTENSION.7.gz b/etc/alternatives/ALTER_EXTENSION.7.gz
new file mode 120000 (symlink)
index 0000000..fbe7b37
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_EXTENSION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_FOREIGN_DATA_WRAPPER.7.gz b/etc/alternatives/ALTER_FOREIGN_DATA_WRAPPER.7.gz
new file mode 120000 (symlink)
index 0000000..c0c4f21
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_FOREIGN_DATA_WRAPPER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_FOREIGN_TABLE.7.gz b/etc/alternatives/ALTER_FOREIGN_TABLE.7.gz
new file mode 120000 (symlink)
index 0000000..8978332
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_FOREIGN_TABLE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_FUNCTION.7.gz b/etc/alternatives/ALTER_FUNCTION.7.gz
new file mode 120000 (symlink)
index 0000000..fb7d4a1
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_FUNCTION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_GROUP.7.gz b/etc/alternatives/ALTER_GROUP.7.gz
new file mode 120000 (symlink)
index 0000000..2f947cf
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_GROUP.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_INDEX.7.gz b/etc/alternatives/ALTER_INDEX.7.gz
new file mode 120000 (symlink)
index 0000000..9c14677
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_INDEX.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_LANGUAGE.7.gz b/etc/alternatives/ALTER_LANGUAGE.7.gz
new file mode 120000 (symlink)
index 0000000..9b4f699
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_LANGUAGE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_LARGE_OBJECT.7.gz b/etc/alternatives/ALTER_LARGE_OBJECT.7.gz
new file mode 120000 (symlink)
index 0000000..1496e56
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_LARGE_OBJECT.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_MATERIALIZED_VIEW.7.gz b/etc/alternatives/ALTER_MATERIALIZED_VIEW.7.gz
new file mode 120000 (symlink)
index 0000000..0a56127
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_MATERIALIZED_VIEW.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_OPERATOR.7.gz b/etc/alternatives/ALTER_OPERATOR.7.gz
new file mode 120000 (symlink)
index 0000000..1fdd3d0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_OPERATOR.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_OPERATOR_CLASS.7.gz b/etc/alternatives/ALTER_OPERATOR_CLASS.7.gz
new file mode 120000 (symlink)
index 0000000..e4d7707
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_OPERATOR_CLASS.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_OPERATOR_FAMILY.7.gz b/etc/alternatives/ALTER_OPERATOR_FAMILY.7.gz
new file mode 120000 (symlink)
index 0000000..e54cb5f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_OPERATOR_FAMILY.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_POLICY.7.gz b/etc/alternatives/ALTER_POLICY.7.gz
new file mode 120000 (symlink)
index 0000000..5f90047
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_POLICY.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_PROCEDURE.7.gz b/etc/alternatives/ALTER_PROCEDURE.7.gz
new file mode 120000 (symlink)
index 0000000..b8a59fe
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_PROCEDURE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_PUBLICATION.7.gz b/etc/alternatives/ALTER_PUBLICATION.7.gz
new file mode 120000 (symlink)
index 0000000..8e63d89
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_PUBLICATION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_ROLE.7.gz b/etc/alternatives/ALTER_ROLE.7.gz
new file mode 120000 (symlink)
index 0000000..77009b1
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_ROLE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_ROUTINE.7.gz b/etc/alternatives/ALTER_ROUTINE.7.gz
new file mode 120000 (symlink)
index 0000000..68f85ae
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_ROUTINE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_RULE.7.gz b/etc/alternatives/ALTER_RULE.7.gz
new file mode 120000 (symlink)
index 0000000..e63e954
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_RULE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_SCHEMA.7.gz b/etc/alternatives/ALTER_SCHEMA.7.gz
new file mode 120000 (symlink)
index 0000000..7acc207
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_SCHEMA.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_SEQUENCE.7.gz b/etc/alternatives/ALTER_SEQUENCE.7.gz
new file mode 120000 (symlink)
index 0000000..490bfe8
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_SEQUENCE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_SERVER.7.gz b/etc/alternatives/ALTER_SERVER.7.gz
new file mode 120000 (symlink)
index 0000000..7c8038c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_SERVER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_STATISTICS.7.gz b/etc/alternatives/ALTER_STATISTICS.7.gz
new file mode 120000 (symlink)
index 0000000..ecf8d3c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_STATISTICS.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_SUBSCRIPTION.7.gz b/etc/alternatives/ALTER_SUBSCRIPTION.7.gz
new file mode 120000 (symlink)
index 0000000..983b08d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_SUBSCRIPTION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_SYSTEM.7.gz b/etc/alternatives/ALTER_SYSTEM.7.gz
new file mode 120000 (symlink)
index 0000000..3482f27
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_SYSTEM.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_TABLE.7.gz b/etc/alternatives/ALTER_TABLE.7.gz
new file mode 120000 (symlink)
index 0000000..dec138c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_TABLE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_TABLESPACE.7.gz b/etc/alternatives/ALTER_TABLESPACE.7.gz
new file mode 120000 (symlink)
index 0000000..7110f2a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_TABLESPACE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_TEXT_SEARCH_CONFIGURATION.7.gz b/etc/alternatives/ALTER_TEXT_SEARCH_CONFIGURATION.7.gz
new file mode 120000 (symlink)
index 0000000..3fcd204
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_TEXT_SEARCH_CONFIGURATION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_TEXT_SEARCH_DICTIONARY.7.gz b/etc/alternatives/ALTER_TEXT_SEARCH_DICTIONARY.7.gz
new file mode 120000 (symlink)
index 0000000..18194bb
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_TEXT_SEARCH_DICTIONARY.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_TEXT_SEARCH_PARSER.7.gz b/etc/alternatives/ALTER_TEXT_SEARCH_PARSER.7.gz
new file mode 120000 (symlink)
index 0000000..3435a0b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_TEXT_SEARCH_PARSER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_TEXT_SEARCH_TEMPLATE.7.gz b/etc/alternatives/ALTER_TEXT_SEARCH_TEMPLATE.7.gz
new file mode 120000 (symlink)
index 0000000..79cf350
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_TEXT_SEARCH_TEMPLATE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_TRIGGER.7.gz b/etc/alternatives/ALTER_TRIGGER.7.gz
new file mode 120000 (symlink)
index 0000000..f91bbe4
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_TRIGGER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_TYPE.7.gz b/etc/alternatives/ALTER_TYPE.7.gz
new file mode 120000 (symlink)
index 0000000..b684d26
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_TYPE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_USER.7.gz b/etc/alternatives/ALTER_USER.7.gz
new file mode 120000 (symlink)
index 0000000..2753f93
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_USER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_USER_MAPPING.7.gz b/etc/alternatives/ALTER_USER_MAPPING.7.gz
new file mode 120000 (symlink)
index 0000000..86bad76
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_USER_MAPPING.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ALTER_VIEW.7.gz b/etc/alternatives/ALTER_VIEW.7.gz
new file mode 120000 (symlink)
index 0000000..e1164e7
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ALTER_VIEW.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ANALYZE.7.gz b/etc/alternatives/ANALYZE.7.gz
new file mode 120000 (symlink)
index 0000000..d92707c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ANALYZE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/BEGIN.7.gz b/etc/alternatives/BEGIN.7.gz
new file mode 120000 (symlink)
index 0000000..02af5de
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/BEGIN.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CALL.7.gz b/etc/alternatives/CALL.7.gz
new file mode 120000 (symlink)
index 0000000..9814054
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CALL.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CHECKPOINT.7.gz b/etc/alternatives/CHECKPOINT.7.gz
new file mode 120000 (symlink)
index 0000000..077d8b8
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CHECKPOINT.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CLOSE.7.gz b/etc/alternatives/CLOSE.7.gz
new file mode 120000 (symlink)
index 0000000..15e7e00
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CLOSE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CLUSTER.7.gz b/etc/alternatives/CLUSTER.7.gz
new file mode 120000 (symlink)
index 0000000..de6cfbe
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CLUSTER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/COMMENT.7.gz b/etc/alternatives/COMMENT.7.gz
new file mode 120000 (symlink)
index 0000000..4894b43
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/COMMENT.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/COMMIT.7.gz b/etc/alternatives/COMMIT.7.gz
new file mode 120000 (symlink)
index 0000000..a7b9344
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/COMMIT.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/COMMIT_PREPARED.7.gz b/etc/alternatives/COMMIT_PREPARED.7.gz
new file mode 120000 (symlink)
index 0000000..17b0f73
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/COMMIT_PREPARED.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/COPY.7.gz b/etc/alternatives/COPY.7.gz
new file mode 120000 (symlink)
index 0000000..62e1dd8
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/COPY.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_ACCESS_METHOD.7.gz b/etc/alternatives/CREATE_ACCESS_METHOD.7.gz
new file mode 120000 (symlink)
index 0000000..2bd2c51
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_ACCESS_METHOD.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_AGGREGATE.7.gz b/etc/alternatives/CREATE_AGGREGATE.7.gz
new file mode 120000 (symlink)
index 0000000..1c8baf1
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_AGGREGATE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_CAST.7.gz b/etc/alternatives/CREATE_CAST.7.gz
new file mode 120000 (symlink)
index 0000000..e254003
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_CAST.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_COLLATION.7.gz b/etc/alternatives/CREATE_COLLATION.7.gz
new file mode 120000 (symlink)
index 0000000..456ea1c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_COLLATION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_CONVERSION.7.gz b/etc/alternatives/CREATE_CONVERSION.7.gz
new file mode 120000 (symlink)
index 0000000..f0eb37a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_CONVERSION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_DATABASE.7.gz b/etc/alternatives/CREATE_DATABASE.7.gz
new file mode 120000 (symlink)
index 0000000..77e5091
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_DATABASE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_DOMAIN.7.gz b/etc/alternatives/CREATE_DOMAIN.7.gz
new file mode 120000 (symlink)
index 0000000..effc484
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_DOMAIN.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_EVENT_TRIGGER.7.gz b/etc/alternatives/CREATE_EVENT_TRIGGER.7.gz
new file mode 120000 (symlink)
index 0000000..cb530c1
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_EVENT_TRIGGER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_EXTENSION.7.gz b/etc/alternatives/CREATE_EXTENSION.7.gz
new file mode 120000 (symlink)
index 0000000..e77abea
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_EXTENSION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_FOREIGN_DATA_WRAPPER.7.gz b/etc/alternatives/CREATE_FOREIGN_DATA_WRAPPER.7.gz
new file mode 120000 (symlink)
index 0000000..dc11737
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_FOREIGN_DATA_WRAPPER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_FOREIGN_TABLE.7.gz b/etc/alternatives/CREATE_FOREIGN_TABLE.7.gz
new file mode 120000 (symlink)
index 0000000..699760b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_FOREIGN_TABLE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_FUNCTION.7.gz b/etc/alternatives/CREATE_FUNCTION.7.gz
new file mode 120000 (symlink)
index 0000000..023bcc0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_FUNCTION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_GROUP.7.gz b/etc/alternatives/CREATE_GROUP.7.gz
new file mode 120000 (symlink)
index 0000000..aa7dadb
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_GROUP.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_INDEX.7.gz b/etc/alternatives/CREATE_INDEX.7.gz
new file mode 120000 (symlink)
index 0000000..7a88f66
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_INDEX.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_LANGUAGE.7.gz b/etc/alternatives/CREATE_LANGUAGE.7.gz
new file mode 120000 (symlink)
index 0000000..2bc3a01
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_LANGUAGE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_MATERIALIZED_VIEW.7.gz b/etc/alternatives/CREATE_MATERIALIZED_VIEW.7.gz
new file mode 120000 (symlink)
index 0000000..5ade164
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_MATERIALIZED_VIEW.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_OPERATOR.7.gz b/etc/alternatives/CREATE_OPERATOR.7.gz
new file mode 120000 (symlink)
index 0000000..d29760f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_OPERATOR.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_OPERATOR_CLASS.7.gz b/etc/alternatives/CREATE_OPERATOR_CLASS.7.gz
new file mode 120000 (symlink)
index 0000000..4f19d1b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_OPERATOR_CLASS.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_OPERATOR_FAMILY.7.gz b/etc/alternatives/CREATE_OPERATOR_FAMILY.7.gz
new file mode 120000 (symlink)
index 0000000..531170f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_OPERATOR_FAMILY.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_POLICY.7.gz b/etc/alternatives/CREATE_POLICY.7.gz
new file mode 120000 (symlink)
index 0000000..6a5ac1d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_POLICY.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_PROCEDURE.7.gz b/etc/alternatives/CREATE_PROCEDURE.7.gz
new file mode 120000 (symlink)
index 0000000..6d0e6ed
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_PROCEDURE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_PUBLICATION.7.gz b/etc/alternatives/CREATE_PUBLICATION.7.gz
new file mode 120000 (symlink)
index 0000000..1080077
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_PUBLICATION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_ROLE.7.gz b/etc/alternatives/CREATE_ROLE.7.gz
new file mode 120000 (symlink)
index 0000000..46dfea9
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_ROLE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_RULE.7.gz b/etc/alternatives/CREATE_RULE.7.gz
new file mode 120000 (symlink)
index 0000000..9e02aed
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_RULE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_SCHEMA.7.gz b/etc/alternatives/CREATE_SCHEMA.7.gz
new file mode 120000 (symlink)
index 0000000..7081f52
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_SCHEMA.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_SEQUENCE.7.gz b/etc/alternatives/CREATE_SEQUENCE.7.gz
new file mode 120000 (symlink)
index 0000000..bce88bc
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_SEQUENCE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_SERVER.7.gz b/etc/alternatives/CREATE_SERVER.7.gz
new file mode 120000 (symlink)
index 0000000..70c65f5
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_SERVER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_STATISTICS.7.gz b/etc/alternatives/CREATE_STATISTICS.7.gz
new file mode 120000 (symlink)
index 0000000..854175e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_STATISTICS.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_SUBSCRIPTION.7.gz b/etc/alternatives/CREATE_SUBSCRIPTION.7.gz
new file mode 120000 (symlink)
index 0000000..0d284cf
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_SUBSCRIPTION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_TABLE.7.gz b/etc/alternatives/CREATE_TABLE.7.gz
new file mode 120000 (symlink)
index 0000000..a25f0d5
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_TABLE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_TABLESPACE.7.gz b/etc/alternatives/CREATE_TABLESPACE.7.gz
new file mode 120000 (symlink)
index 0000000..6b26554
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_TABLESPACE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_TABLE_AS.7.gz b/etc/alternatives/CREATE_TABLE_AS.7.gz
new file mode 120000 (symlink)
index 0000000..db9cc67
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_TABLE_AS.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_TEXT_SEARCH_CONFIGURATION.7.gz b/etc/alternatives/CREATE_TEXT_SEARCH_CONFIGURATION.7.gz
new file mode 120000 (symlink)
index 0000000..f4225dd
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_TEXT_SEARCH_CONFIGURATION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_TEXT_SEARCH_DICTIONARY.7.gz b/etc/alternatives/CREATE_TEXT_SEARCH_DICTIONARY.7.gz
new file mode 120000 (symlink)
index 0000000..f25805f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_TEXT_SEARCH_DICTIONARY.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_TEXT_SEARCH_PARSER.7.gz b/etc/alternatives/CREATE_TEXT_SEARCH_PARSER.7.gz
new file mode 120000 (symlink)
index 0000000..81412c7
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_TEXT_SEARCH_PARSER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_TEXT_SEARCH_TEMPLATE.7.gz b/etc/alternatives/CREATE_TEXT_SEARCH_TEMPLATE.7.gz
new file mode 120000 (symlink)
index 0000000..e14ee0e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_TEXT_SEARCH_TEMPLATE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_TRANSFORM.7.gz b/etc/alternatives/CREATE_TRANSFORM.7.gz
new file mode 120000 (symlink)
index 0000000..5f24fd2
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_TRANSFORM.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_TRIGGER.7.gz b/etc/alternatives/CREATE_TRIGGER.7.gz
new file mode 120000 (symlink)
index 0000000..e0fe3c9
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_TRIGGER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_TYPE.7.gz b/etc/alternatives/CREATE_TYPE.7.gz
new file mode 120000 (symlink)
index 0000000..dabfb84
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_TYPE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_USER.7.gz b/etc/alternatives/CREATE_USER.7.gz
new file mode 120000 (symlink)
index 0000000..98c55cd
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_USER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_USER_MAPPING.7.gz b/etc/alternatives/CREATE_USER_MAPPING.7.gz
new file mode 120000 (symlink)
index 0000000..2c9bff7
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_USER_MAPPING.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/CREATE_VIEW.7.gz b/etc/alternatives/CREATE_VIEW.7.gz
new file mode 120000 (symlink)
index 0000000..87bccba
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/CREATE_VIEW.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DEALLOCATE.7.gz b/etc/alternatives/DEALLOCATE.7.gz
new file mode 120000 (symlink)
index 0000000..b6ae17e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DEALLOCATE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DECLARE.7.gz b/etc/alternatives/DECLARE.7.gz
new file mode 120000 (symlink)
index 0000000..557bb21
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DECLARE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DELETE.7.gz b/etc/alternatives/DELETE.7.gz
new file mode 120000 (symlink)
index 0000000..01677df
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DELETE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DISCARD.7.gz b/etc/alternatives/DISCARD.7.gz
new file mode 120000 (symlink)
index 0000000..9d92721
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DISCARD.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DO.7.gz b/etc/alternatives/DO.7.gz
new file mode 120000 (symlink)
index 0000000..f56f0d0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DO.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_ACCESS_METHOD.7.gz b/etc/alternatives/DROP_ACCESS_METHOD.7.gz
new file mode 120000 (symlink)
index 0000000..b2a02de
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_ACCESS_METHOD.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_AGGREGATE.7.gz b/etc/alternatives/DROP_AGGREGATE.7.gz
new file mode 120000 (symlink)
index 0000000..989dade
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_AGGREGATE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_CAST.7.gz b/etc/alternatives/DROP_CAST.7.gz
new file mode 120000 (symlink)
index 0000000..3814b05
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_CAST.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_COLLATION.7.gz b/etc/alternatives/DROP_COLLATION.7.gz
new file mode 120000 (symlink)
index 0000000..1056c1d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_COLLATION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_CONVERSION.7.gz b/etc/alternatives/DROP_CONVERSION.7.gz
new file mode 120000 (symlink)
index 0000000..a6b6cbc
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_CONVERSION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_DATABASE.7.gz b/etc/alternatives/DROP_DATABASE.7.gz
new file mode 120000 (symlink)
index 0000000..5173ab2
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_DATABASE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_DOMAIN.7.gz b/etc/alternatives/DROP_DOMAIN.7.gz
new file mode 120000 (symlink)
index 0000000..ad4c54e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_DOMAIN.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_EVENT_TRIGGER.7.gz b/etc/alternatives/DROP_EVENT_TRIGGER.7.gz
new file mode 120000 (symlink)
index 0000000..4ff6f92
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_EVENT_TRIGGER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_EXTENSION.7.gz b/etc/alternatives/DROP_EXTENSION.7.gz
new file mode 120000 (symlink)
index 0000000..5584bcc
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_EXTENSION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_FOREIGN_DATA_WRAPPER.7.gz b/etc/alternatives/DROP_FOREIGN_DATA_WRAPPER.7.gz
new file mode 120000 (symlink)
index 0000000..606565f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_FOREIGN_DATA_WRAPPER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_FOREIGN_TABLE.7.gz b/etc/alternatives/DROP_FOREIGN_TABLE.7.gz
new file mode 120000 (symlink)
index 0000000..dbe7ccb
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_FOREIGN_TABLE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_FUNCTION.7.gz b/etc/alternatives/DROP_FUNCTION.7.gz
new file mode 120000 (symlink)
index 0000000..20bd1e8
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_FUNCTION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_GROUP.7.gz b/etc/alternatives/DROP_GROUP.7.gz
new file mode 120000 (symlink)
index 0000000..a0079aa
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_GROUP.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_INDEX.7.gz b/etc/alternatives/DROP_INDEX.7.gz
new file mode 120000 (symlink)
index 0000000..c377ed2
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_INDEX.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_LANGUAGE.7.gz b/etc/alternatives/DROP_LANGUAGE.7.gz
new file mode 120000 (symlink)
index 0000000..5c371cf
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_LANGUAGE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_MATERIALIZED_VIEW.7.gz b/etc/alternatives/DROP_MATERIALIZED_VIEW.7.gz
new file mode 120000 (symlink)
index 0000000..2b51f7a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_MATERIALIZED_VIEW.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_OPERATOR.7.gz b/etc/alternatives/DROP_OPERATOR.7.gz
new file mode 120000 (symlink)
index 0000000..7d6f7ff
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_OPERATOR.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_OPERATOR_CLASS.7.gz b/etc/alternatives/DROP_OPERATOR_CLASS.7.gz
new file mode 120000 (symlink)
index 0000000..21e60a0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_OPERATOR_CLASS.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_OPERATOR_FAMILY.7.gz b/etc/alternatives/DROP_OPERATOR_FAMILY.7.gz
new file mode 120000 (symlink)
index 0000000..c8fd417
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_OPERATOR_FAMILY.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_OWNED.7.gz b/etc/alternatives/DROP_OWNED.7.gz
new file mode 120000 (symlink)
index 0000000..76f8fca
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_OWNED.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_POLICY.7.gz b/etc/alternatives/DROP_POLICY.7.gz
new file mode 120000 (symlink)
index 0000000..adc2635
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_POLICY.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_PROCEDURE.7.gz b/etc/alternatives/DROP_PROCEDURE.7.gz
new file mode 120000 (symlink)
index 0000000..27627fd
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_PROCEDURE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_PUBLICATION.7.gz b/etc/alternatives/DROP_PUBLICATION.7.gz
new file mode 120000 (symlink)
index 0000000..e619206
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_PUBLICATION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_ROLE.7.gz b/etc/alternatives/DROP_ROLE.7.gz
new file mode 120000 (symlink)
index 0000000..f808078
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_ROLE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_ROUTINE.7.gz b/etc/alternatives/DROP_ROUTINE.7.gz
new file mode 120000 (symlink)
index 0000000..a24b995
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_ROUTINE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_RULE.7.gz b/etc/alternatives/DROP_RULE.7.gz
new file mode 120000 (symlink)
index 0000000..369bd4a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_RULE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_SCHEMA.7.gz b/etc/alternatives/DROP_SCHEMA.7.gz
new file mode 120000 (symlink)
index 0000000..9c167f8
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_SCHEMA.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_SEQUENCE.7.gz b/etc/alternatives/DROP_SEQUENCE.7.gz
new file mode 120000 (symlink)
index 0000000..fd7b9ac
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_SEQUENCE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_SERVER.7.gz b/etc/alternatives/DROP_SERVER.7.gz
new file mode 120000 (symlink)
index 0000000..5d55bcc
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_SERVER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_STATISTICS.7.gz b/etc/alternatives/DROP_STATISTICS.7.gz
new file mode 120000 (symlink)
index 0000000..f2daa43
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_STATISTICS.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_SUBSCRIPTION.7.gz b/etc/alternatives/DROP_SUBSCRIPTION.7.gz
new file mode 120000 (symlink)
index 0000000..eb1a450
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_SUBSCRIPTION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_TABLE.7.gz b/etc/alternatives/DROP_TABLE.7.gz
new file mode 120000 (symlink)
index 0000000..e60d20e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_TABLE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_TABLESPACE.7.gz b/etc/alternatives/DROP_TABLESPACE.7.gz
new file mode 120000 (symlink)
index 0000000..8ce36ee
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_TABLESPACE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_TEXT_SEARCH_CONFIGURATION.7.gz b/etc/alternatives/DROP_TEXT_SEARCH_CONFIGURATION.7.gz
new file mode 120000 (symlink)
index 0000000..9c309c8
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_TEXT_SEARCH_CONFIGURATION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_TEXT_SEARCH_DICTIONARY.7.gz b/etc/alternatives/DROP_TEXT_SEARCH_DICTIONARY.7.gz
new file mode 120000 (symlink)
index 0000000..256d3bd
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_TEXT_SEARCH_DICTIONARY.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_TEXT_SEARCH_PARSER.7.gz b/etc/alternatives/DROP_TEXT_SEARCH_PARSER.7.gz
new file mode 120000 (symlink)
index 0000000..d2de648
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_TEXT_SEARCH_PARSER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_TEXT_SEARCH_TEMPLATE.7.gz b/etc/alternatives/DROP_TEXT_SEARCH_TEMPLATE.7.gz
new file mode 120000 (symlink)
index 0000000..e52dbb0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_TEXT_SEARCH_TEMPLATE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_TRANSFORM.7.gz b/etc/alternatives/DROP_TRANSFORM.7.gz
new file mode 120000 (symlink)
index 0000000..6943c81
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_TRANSFORM.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_TRIGGER.7.gz b/etc/alternatives/DROP_TRIGGER.7.gz
new file mode 120000 (symlink)
index 0000000..2a89519
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_TRIGGER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_TYPE.7.gz b/etc/alternatives/DROP_TYPE.7.gz
new file mode 120000 (symlink)
index 0000000..a0b61d3
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_TYPE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_USER.7.gz b/etc/alternatives/DROP_USER.7.gz
new file mode 120000 (symlink)
index 0000000..885aed4
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_USER.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_USER_MAPPING.7.gz b/etc/alternatives/DROP_USER_MAPPING.7.gz
new file mode 120000 (symlink)
index 0000000..09c8fd9
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_USER_MAPPING.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/DROP_VIEW.7.gz b/etc/alternatives/DROP_VIEW.7.gz
new file mode 120000 (symlink)
index 0000000..a906e5a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/DROP_VIEW.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/END.7.gz b/etc/alternatives/END.7.gz
new file mode 120000 (symlink)
index 0000000..88f467c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/END.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/EXECUTE.7.gz b/etc/alternatives/EXECUTE.7.gz
new file mode 120000 (symlink)
index 0000000..21afce4
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/EXECUTE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/EXPLAIN.7.gz b/etc/alternatives/EXPLAIN.7.gz
new file mode 120000 (symlink)
index 0000000..d63edbe
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/EXPLAIN.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/FETCH.7.gz b/etc/alternatives/FETCH.7.gz
new file mode 120000 (symlink)
index 0000000..9f21329
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/FETCH.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/GRANT.7.gz b/etc/alternatives/GRANT.7.gz
new file mode 120000 (symlink)
index 0000000..2287170
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/GRANT.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/IMPORT_FOREIGN_SCHEMA.7.gz b/etc/alternatives/IMPORT_FOREIGN_SCHEMA.7.gz
new file mode 120000 (symlink)
index 0000000..8ecf53f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/IMPORT_FOREIGN_SCHEMA.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/INSERT.7.gz b/etc/alternatives/INSERT.7.gz
new file mode 120000 (symlink)
index 0000000..1f6a63f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/INSERT.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/LISTEN.7.gz b/etc/alternatives/LISTEN.7.gz
new file mode 120000 (symlink)
index 0000000..488e5aa
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/LISTEN.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/LOAD.7.gz b/etc/alternatives/LOAD.7.gz
new file mode 120000 (symlink)
index 0000000..fc6e92d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/LOAD.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/LOCK.7.gz b/etc/alternatives/LOCK.7.gz
new file mode 120000 (symlink)
index 0000000..7731ef8
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/LOCK.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/MOVE.7.gz b/etc/alternatives/MOVE.7.gz
new file mode 120000 (symlink)
index 0000000..0d3b1da
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/MOVE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/NOTIFY.7.gz b/etc/alternatives/NOTIFY.7.gz
new file mode 120000 (symlink)
index 0000000..034b543
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/NOTIFY.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/PREPARE.7.gz b/etc/alternatives/PREPARE.7.gz
new file mode 120000 (symlink)
index 0000000..04eb794
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/PREPARE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/PREPARE_TRANSACTION.7.gz b/etc/alternatives/PREPARE_TRANSACTION.7.gz
new file mode 120000 (symlink)
index 0000000..5005ee6
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/PREPARE_TRANSACTION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/README b/etc/alternatives/README
new file mode 100644 (file)
index 0000000..4c4d215
--- /dev/null
@@ -0,0 +1,2 @@
+Please read the update-alternatives(1) man page for information on this
+directory and its contents.
diff --git a/etc/alternatives/REASSIGN_OWNED.7.gz b/etc/alternatives/REASSIGN_OWNED.7.gz
new file mode 120000 (symlink)
index 0000000..cecbd86
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/REASSIGN_OWNED.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/REFRESH_MATERIALIZED_VIEW.7.gz b/etc/alternatives/REFRESH_MATERIALIZED_VIEW.7.gz
new file mode 120000 (symlink)
index 0000000..efcf372
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/REFRESH_MATERIALIZED_VIEW.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/REINDEX.7.gz b/etc/alternatives/REINDEX.7.gz
new file mode 120000 (symlink)
index 0000000..2313c49
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/REINDEX.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/RELEASE_SAVEPOINT.7.gz b/etc/alternatives/RELEASE_SAVEPOINT.7.gz
new file mode 120000 (symlink)
index 0000000..873611a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/RELEASE_SAVEPOINT.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/RESET.7.gz b/etc/alternatives/RESET.7.gz
new file mode 120000 (symlink)
index 0000000..c53b0de
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/RESET.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/REVOKE.7.gz b/etc/alternatives/REVOKE.7.gz
new file mode 120000 (symlink)
index 0000000..4c54a6f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/REVOKE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ROLLBACK.7.gz b/etc/alternatives/ROLLBACK.7.gz
new file mode 120000 (symlink)
index 0000000..16a274b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ROLLBACK.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ROLLBACK_PREPARED.7.gz b/etc/alternatives/ROLLBACK_PREPARED.7.gz
new file mode 120000 (symlink)
index 0000000..7588cb9
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ROLLBACK_PREPARED.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/ROLLBACK_TO_SAVEPOINT.7.gz b/etc/alternatives/ROLLBACK_TO_SAVEPOINT.7.gz
new file mode 120000 (symlink)
index 0000000..b105494
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/ROLLBACK_TO_SAVEPOINT.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/SAVEPOINT.7.gz b/etc/alternatives/SAVEPOINT.7.gz
new file mode 120000 (symlink)
index 0000000..d4882d9
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/SAVEPOINT.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/SECURITY_LABEL.7.gz b/etc/alternatives/SECURITY_LABEL.7.gz
new file mode 120000 (symlink)
index 0000000..9f03e63
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/SECURITY_LABEL.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/SELECT.7.gz b/etc/alternatives/SELECT.7.gz
new file mode 120000 (symlink)
index 0000000..2e3d395
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/SELECT.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/SELECT_INTO.7.gz b/etc/alternatives/SELECT_INTO.7.gz
new file mode 120000 (symlink)
index 0000000..c1f8ca0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/SELECT_INTO.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/SET.7.gz b/etc/alternatives/SET.7.gz
new file mode 120000 (symlink)
index 0000000..fecc15c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/SET.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/SET_CONSTRAINTS.7.gz b/etc/alternatives/SET_CONSTRAINTS.7.gz
new file mode 120000 (symlink)
index 0000000..cfd325b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/SET_CONSTRAINTS.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/SET_ROLE.7.gz b/etc/alternatives/SET_ROLE.7.gz
new file mode 120000 (symlink)
index 0000000..2a8dd4a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/SET_ROLE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/SET_SESSION_AUTHORIZATION.7.gz b/etc/alternatives/SET_SESSION_AUTHORIZATION.7.gz
new file mode 120000 (symlink)
index 0000000..57b2f7b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/SET_SESSION_AUTHORIZATION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/SET_TRANSACTION.7.gz b/etc/alternatives/SET_TRANSACTION.7.gz
new file mode 120000 (symlink)
index 0000000..7928271
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/SET_TRANSACTION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/SHOW.7.gz b/etc/alternatives/SHOW.7.gz
new file mode 120000 (symlink)
index 0000000..b86817d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/SHOW.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/START_TRANSACTION.7.gz b/etc/alternatives/START_TRANSACTION.7.gz
new file mode 120000 (symlink)
index 0000000..cb90b41
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/START_TRANSACTION.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/TABLE.7.gz b/etc/alternatives/TABLE.7.gz
new file mode 120000 (symlink)
index 0000000..7238814
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/TABLE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/TRUNCATE.7.gz b/etc/alternatives/TRUNCATE.7.gz
new file mode 120000 (symlink)
index 0000000..fdafbac
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/TRUNCATE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/UNLISTEN.7.gz b/etc/alternatives/UNLISTEN.7.gz
new file mode 120000 (symlink)
index 0000000..1fed7f3
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/UNLISTEN.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/UPDATE.7.gz b/etc/alternatives/UPDATE.7.gz
new file mode 120000 (symlink)
index 0000000..9d5b234
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/UPDATE.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/VACUUM.7.gz b/etc/alternatives/VACUUM.7.gz
new file mode 120000 (symlink)
index 0000000..ed4408d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/VACUUM.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/VALUES.7.gz b/etc/alternatives/VALUES.7.gz
new file mode 120000 (symlink)
index 0000000..626869c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/VALUES.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/WITH.7.gz b/etc/alternatives/WITH.7.gz
new file mode 120000 (symlink)
index 0000000..72beb91
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man7/WITH.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/arptables b/etc/alternatives/arptables
new file mode 120000 (symlink)
index 0000000..f8fcc7b
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/arptables-nft
\ No newline at end of file
diff --git a/etc/alternatives/arptables-restore b/etc/alternatives/arptables-restore
new file mode 120000 (symlink)
index 0000000..95e87dc
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/arptables-nft-restore
\ No newline at end of file
diff --git a/etc/alternatives/arptables-save b/etc/alternatives/arptables-save
new file mode 120000 (symlink)
index 0000000..9bb1596
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/arptables-nft-save
\ No newline at end of file
diff --git a/etc/alternatives/awk b/etc/alternatives/awk
new file mode 120000 (symlink)
index 0000000..19ba657
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/gawk
\ No newline at end of file
diff --git a/etc/alternatives/awk.1.gz b/etc/alternatives/awk.1.gz
new file mode 120000 (symlink)
index 0000000..134262b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/gawk.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/builtins.7.gz b/etc/alternatives/builtins.7.gz
new file mode 120000 (symlink)
index 0000000..96d1b74
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man7/bash-builtins.7.gz
\ No newline at end of file
diff --git a/etc/alternatives/c++ b/etc/alternatives/c++
new file mode 120000 (symlink)
index 0000000..e51afad
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/g++
\ No newline at end of file
diff --git a/etc/alternatives/c++.1.gz b/etc/alternatives/c++.1.gz
new file mode 120000 (symlink)
index 0000000..1c4ac1e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/g++.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/c89 b/etc/alternatives/c89
new file mode 120000 (symlink)
index 0000000..9e67d74
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/c89-gcc
\ No newline at end of file
diff --git a/etc/alternatives/c89.1.gz b/etc/alternatives/c89.1.gz
new file mode 120000 (symlink)
index 0000000..3a74238
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/c89-gcc.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/c99 b/etc/alternatives/c99
new file mode 120000 (symlink)
index 0000000..323b6db
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/c99-gcc
\ No newline at end of file
diff --git a/etc/alternatives/c99.1.gz b/etc/alternatives/c99.1.gz
new file mode 120000 (symlink)
index 0000000..e033f2d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/c99-gcc.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/cc b/etc/alternatives/cc
new file mode 120000 (symlink)
index 0000000..cd91449
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/gcc
\ No newline at end of file
diff --git a/etc/alternatives/cc.1.gz b/etc/alternatives/cc.1.gz
new file mode 120000 (symlink)
index 0000000..406b60d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/gcc.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/clusterdb.1.gz b/etc/alternatives/clusterdb.1.gz
new file mode 120000 (symlink)
index 0000000..d73b731
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/clusterdb.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/cpp b/etc/alternatives/cpp
new file mode 120000 (symlink)
index 0000000..00fc3c4
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/cpp
\ No newline at end of file
diff --git a/etc/alternatives/createdb.1.gz b/etc/alternatives/createdb.1.gz
new file mode 120000 (symlink)
index 0000000..acb8b23
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/createdb.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/createuser.1.gz b/etc/alternatives/createuser.1.gz
new file mode 120000 (symlink)
index 0000000..7f9a7f7
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/createuser.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/dropdb.1.gz b/etc/alternatives/dropdb.1.gz
new file mode 120000 (symlink)
index 0000000..78fcc31
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/dropdb.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/dropuser.1.gz b/etc/alternatives/dropuser.1.gz
new file mode 120000 (symlink)
index 0000000..3d342d9
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/dropuser.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/ebtables b/etc/alternatives/ebtables
new file mode 120000 (symlink)
index 0000000..8d5f660
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/ebtables-nft
\ No newline at end of file
diff --git a/etc/alternatives/ebtables-restore b/etc/alternatives/ebtables-restore
new file mode 120000 (symlink)
index 0000000..c2e5813
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/ebtables-nft-restore
\ No newline at end of file
diff --git a/etc/alternatives/ebtables-save b/etc/alternatives/ebtables-save
new file mode 120000 (symlink)
index 0000000..600f8c2
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/ebtables-nft-save
\ No newline at end of file
diff --git a/etc/alternatives/editor b/etc/alternatives/editor
new file mode 120000 (symlink)
index 0000000..7a06612
--- /dev/null
@@ -0,0 +1 @@
+/bin/nano
\ No newline at end of file
diff --git a/etc/alternatives/editor.1.gz b/etc/alternatives/editor.1.gz
new file mode 120000 (symlink)
index 0000000..bb2d082
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/nano.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/ex b/etc/alternatives/ex
new file mode 120000 (symlink)
index 0000000..1d112da
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/vim.basic
\ No newline at end of file
diff --git a/etc/alternatives/ex.1.gz b/etc/alternatives/ex.1.gz
new file mode 120000 (symlink)
index 0000000..e02a6af
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/ex.da.1.gz b/etc/alternatives/ex.da.1.gz
new file mode 120000 (symlink)
index 0000000..c90068f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/da/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/ex.de.1.gz b/etc/alternatives/ex.de.1.gz
new file mode 120000 (symlink)
index 0000000..d89833a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/de/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/ex.fr.1.gz b/etc/alternatives/ex.fr.1.gz
new file mode 120000 (symlink)
index 0000000..af52858
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/fr/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/ex.it.1.gz b/etc/alternatives/ex.it.1.gz
new file mode 120000 (symlink)
index 0000000..4498a3d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/it/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/ex.ja.1.gz b/etc/alternatives/ex.ja.1.gz
new file mode 120000 (symlink)
index 0000000..071acfb
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/ja/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/ex.pl.1.gz b/etc/alternatives/ex.pl.1.gz
new file mode 120000 (symlink)
index 0000000..345590a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/pl/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/ex.ru.1.gz b/etc/alternatives/ex.ru.1.gz
new file mode 120000 (symlink)
index 0000000..ea9aa16
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/ru/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/faked.1.gz b/etc/alternatives/faked.1.gz
new file mode 120000 (symlink)
index 0000000..0682984
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/faked-sysv.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/faked.es.1.gz b/etc/alternatives/faked.es.1.gz
new file mode 120000 (symlink)
index 0000000..2a0233d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/es/man1/faked-sysv.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/faked.fr.1.gz b/etc/alternatives/faked.fr.1.gz
new file mode 120000 (symlink)
index 0000000..9950991
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/fr/man1/faked-sysv.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/faked.sv.1.gz b/etc/alternatives/faked.sv.1.gz
new file mode 120000 (symlink)
index 0000000..7d76ada
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/sv/man1/faked-sysv.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/fakeroot b/etc/alternatives/fakeroot
new file mode 120000 (symlink)
index 0000000..0b2f1ee
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/fakeroot-sysv
\ No newline at end of file
diff --git a/etc/alternatives/fakeroot.1.gz b/etc/alternatives/fakeroot.1.gz
new file mode 120000 (symlink)
index 0000000..6abf7c3
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/fakeroot-sysv.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/fakeroot.es.1.gz b/etc/alternatives/fakeroot.es.1.gz
new file mode 120000 (symlink)
index 0000000..6c5981a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/es/man1/fakeroot-sysv.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/fakeroot.fr.1.gz b/etc/alternatives/fakeroot.fr.1.gz
new file mode 120000 (symlink)
index 0000000..ab31fe0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/fr/man1/fakeroot-sysv.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/fakeroot.sv.1.gz b/etc/alternatives/fakeroot.sv.1.gz
new file mode 120000 (symlink)
index 0000000..73d056f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/sv/man1/fakeroot-sysv.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/from b/etc/alternatives/from
new file mode 120000 (symlink)
index 0000000..3ee6643
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/bsd-from
\ No newline at end of file
diff --git a/etc/alternatives/from.1.gz b/etc/alternatives/from.1.gz
new file mode 120000 (symlink)
index 0000000..9c0d8d3
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/bsd-from.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/ftp b/etc/alternatives/ftp
new file mode 120000 (symlink)
index 0000000..f0ae93f
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/netkit-ftp
\ No newline at end of file
diff --git a/etc/alternatives/ftp.1.gz b/etc/alternatives/ftp.1.gz
new file mode 120000 (symlink)
index 0000000..5b3a00b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/netkit-ftp.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/futurize b/etc/alternatives/futurize
new file mode 120000 (symlink)
index 0000000..7d32d09
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/python3-futurize
\ No newline at end of file
diff --git a/etc/alternatives/infobrowser b/etc/alternatives/infobrowser
new file mode 120000 (symlink)
index 0000000..2404fe4
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/info
\ No newline at end of file
diff --git a/etc/alternatives/infobrowser.1.gz b/etc/alternatives/infobrowser.1.gz
new file mode 120000 (symlink)
index 0000000..7152786
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/info.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/initdb.1.gz b/etc/alternatives/initdb.1.gz
new file mode 120000 (symlink)
index 0000000..acf9c83
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/initdb.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/ip6tables b/etc/alternatives/ip6tables
new file mode 120000 (symlink)
index 0000000..0b2891f
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/ip6tables-legacy
\ No newline at end of file
diff --git a/etc/alternatives/ip6tables-restore b/etc/alternatives/ip6tables-restore
new file mode 120000 (symlink)
index 0000000..7bedefc
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/ip6tables-legacy-restore
\ No newline at end of file
diff --git a/etc/alternatives/ip6tables-save b/etc/alternatives/ip6tables-save
new file mode 120000 (symlink)
index 0000000..502f99a
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/ip6tables-legacy-save
\ No newline at end of file
diff --git a/etc/alternatives/iptables b/etc/alternatives/iptables
new file mode 120000 (symlink)
index 0000000..cc39472
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/iptables-legacy
\ No newline at end of file
diff --git a/etc/alternatives/iptables-restore b/etc/alternatives/iptables-restore
new file mode 120000 (symlink)
index 0000000..2293ced
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/iptables-legacy-restore
\ No newline at end of file
diff --git a/etc/alternatives/iptables-save b/etc/alternatives/iptables-save
new file mode 120000 (symlink)
index 0000000..eaf74bb
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/iptables-legacy-save
\ No newline at end of file
diff --git a/etc/alternatives/jsondiff b/etc/alternatives/jsondiff
new file mode 120000 (symlink)
index 0000000..fae88ee
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/jsonpatch-jsondiff
\ No newline at end of file
diff --git a/etc/alternatives/lzcat b/etc/alternatives/lzcat
new file mode 120000 (symlink)
index 0000000..1482e0d
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/xzcat
\ No newline at end of file
diff --git a/etc/alternatives/lzcat.1.gz b/etc/alternatives/lzcat.1.gz
new file mode 120000 (symlink)
index 0000000..c078545
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/xzcat.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/lzcmp b/etc/alternatives/lzcmp
new file mode 120000 (symlink)
index 0000000..5cdef99
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/xzcmp
\ No newline at end of file
diff --git a/etc/alternatives/lzcmp.1.gz b/etc/alternatives/lzcmp.1.gz
new file mode 120000 (symlink)
index 0000000..f0bafbe
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/xzcmp.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/lzdiff b/etc/alternatives/lzdiff
new file mode 120000 (symlink)
index 0000000..0e42921
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/xzdiff
\ No newline at end of file
diff --git a/etc/alternatives/lzdiff.1.gz b/etc/alternatives/lzdiff.1.gz
new file mode 120000 (symlink)
index 0000000..5687b0a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/xzdiff.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/lzegrep b/etc/alternatives/lzegrep
new file mode 120000 (symlink)
index 0000000..5fee024
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/xzegrep
\ No newline at end of file
diff --git a/etc/alternatives/lzegrep.1.gz b/etc/alternatives/lzegrep.1.gz
new file mode 120000 (symlink)
index 0000000..c9ad6de
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/xzegrep.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/lzfgrep b/etc/alternatives/lzfgrep
new file mode 120000 (symlink)
index 0000000..1b64c1b
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/xzfgrep
\ No newline at end of file
diff --git a/etc/alternatives/lzfgrep.1.gz b/etc/alternatives/lzfgrep.1.gz
new file mode 120000 (symlink)
index 0000000..b292ba9
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/xzfgrep.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/lzgrep b/etc/alternatives/lzgrep
new file mode 120000 (symlink)
index 0000000..05ef59b
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/xzgrep
\ No newline at end of file
diff --git a/etc/alternatives/lzgrep.1.gz b/etc/alternatives/lzgrep.1.gz
new file mode 120000 (symlink)
index 0000000..8ccd2c5
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/xzgrep.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/lzless b/etc/alternatives/lzless
new file mode 120000 (symlink)
index 0000000..5415736
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/xzless
\ No newline at end of file
diff --git a/etc/alternatives/lzless.1.gz b/etc/alternatives/lzless.1.gz
new file mode 120000 (symlink)
index 0000000..bc81750
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/xzless.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/lzma b/etc/alternatives/lzma
new file mode 120000 (symlink)
index 0000000..cdc9bb5
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/xz
\ No newline at end of file
diff --git a/etc/alternatives/lzma.1.gz b/etc/alternatives/lzma.1.gz
new file mode 120000 (symlink)
index 0000000..16e4bcc
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/xz.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/lzmore b/etc/alternatives/lzmore
new file mode 120000 (symlink)
index 0000000..1fad361
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/xzmore
\ No newline at end of file
diff --git a/etc/alternatives/lzmore.1.gz b/etc/alternatives/lzmore.1.gz
new file mode 120000 (symlink)
index 0000000..e79dfa4
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/xzmore.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/mt b/etc/alternatives/mt
new file mode 120000 (symlink)
index 0000000..46c2596
--- /dev/null
@@ -0,0 +1 @@
+/bin/mt-gnu
\ No newline at end of file
diff --git a/etc/alternatives/mt.1.gz b/etc/alternatives/mt.1.gz
new file mode 120000 (symlink)
index 0000000..cac0e18
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/mt-gnu.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/nawk b/etc/alternatives/nawk
new file mode 120000 (symlink)
index 0000000..19ba657
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/gawk
\ No newline at end of file
diff --git a/etc/alternatives/nawk.1.gz b/etc/alternatives/nawk.1.gz
new file mode 120000 (symlink)
index 0000000..134262b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/gawk.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/nc b/etc/alternatives/nc
new file mode 120000 (symlink)
index 0000000..42844ed
--- /dev/null
@@ -0,0 +1 @@
+/bin/nc.openbsd
\ No newline at end of file
diff --git a/etc/alternatives/nc.1.gz b/etc/alternatives/nc.1.gz
new file mode 120000 (symlink)
index 0000000..e288d80
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/nc_openbsd.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/netcat b/etc/alternatives/netcat
new file mode 120000 (symlink)
index 0000000..42844ed
--- /dev/null
@@ -0,0 +1 @@
+/bin/nc.openbsd
\ No newline at end of file
diff --git a/etc/alternatives/netcat.1.gz b/etc/alternatives/netcat.1.gz
new file mode 120000 (symlink)
index 0000000..e288d80
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/nc_openbsd.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/netrc.5.gz b/etc/alternatives/netrc.5.gz
new file mode 120000 (symlink)
index 0000000..5702a2c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man5/netkit-netrc.5.gz
\ No newline at end of file
diff --git a/etc/alternatives/newt-palette b/etc/alternatives/newt-palette
new file mode 120000 (symlink)
index 0000000..952208f
--- /dev/null
@@ -0,0 +1 @@
+/etc/newt/palette.ubuntu
\ No newline at end of file
diff --git a/etc/alternatives/oid2name.1.gz b/etc/alternatives/oid2name.1.gz
new file mode 120000 (symlink)
index 0000000..2893334
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/oid2name.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pager b/etc/alternatives/pager
new file mode 120000 (symlink)
index 0000000..a967155
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/less
\ No newline at end of file
diff --git a/etc/alternatives/pager.1.gz b/etc/alternatives/pager.1.gz
new file mode 120000 (symlink)
index 0000000..c1430af
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/less.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pasteurize b/etc/alternatives/pasteurize
new file mode 120000 (symlink)
index 0000000..5263f7f
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/python3-pasteurize
\ No newline at end of file
diff --git a/etc/alternatives/pbr b/etc/alternatives/pbr
new file mode 120000 (symlink)
index 0000000..0ac3fb3
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/python3-pbr
\ No newline at end of file
diff --git a/etc/alternatives/pftp b/etc/alternatives/pftp
new file mode 120000 (symlink)
index 0000000..f0ae93f
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/netkit-ftp
\ No newline at end of file
diff --git a/etc/alternatives/pftp.1.gz b/etc/alternatives/pftp.1.gz
new file mode 120000 (symlink)
index 0000000..5b3a00b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/netkit-ftp.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_archivecleanup.1.gz b/etc/alternatives/pg_archivecleanup.1.gz
new file mode 120000 (symlink)
index 0000000..7b72be9
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_archivecleanup.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_basebackup.1.gz b/etc/alternatives/pg_basebackup.1.gz
new file mode 120000 (symlink)
index 0000000..cad8aee
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_basebackup.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_checksums.1.gz b/etc/alternatives/pg_checksums.1.gz
new file mode 120000 (symlink)
index 0000000..acbfeb2
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_checksums.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_controldata.1.gz b/etc/alternatives/pg_controldata.1.gz
new file mode 120000 (symlink)
index 0000000..f183266
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_controldata.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_ctl.1.gz b/etc/alternatives/pg_ctl.1.gz
new file mode 120000 (symlink)
index 0000000..38653ca
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_ctl.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_dump.1.gz b/etc/alternatives/pg_dump.1.gz
new file mode 120000 (symlink)
index 0000000..50d14b4
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_dump.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_dumpall.1.gz b/etc/alternatives/pg_dumpall.1.gz
new file mode 120000 (symlink)
index 0000000..70dc980
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_dumpall.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_isready.1.gz b/etc/alternatives/pg_isready.1.gz
new file mode 120000 (symlink)
index 0000000..31ee5e7
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_isready.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_receivewal.1.gz b/etc/alternatives/pg_receivewal.1.gz
new file mode 120000 (symlink)
index 0000000..d307a75
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_receivewal.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_recvlogical.1.gz b/etc/alternatives/pg_recvlogical.1.gz
new file mode 120000 (symlink)
index 0000000..118b71d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_recvlogical.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_resetwal.1.gz b/etc/alternatives/pg_resetwal.1.gz
new file mode 120000 (symlink)
index 0000000..6b3fe1c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_resetwal.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_restore.1.gz b/etc/alternatives/pg_restore.1.gz
new file mode 120000 (symlink)
index 0000000..92abc69
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_restore.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_rewind.1.gz b/etc/alternatives/pg_rewind.1.gz
new file mode 120000 (symlink)
index 0000000..1ac6c7e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_rewind.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_standby.1.gz b/etc/alternatives/pg_standby.1.gz
new file mode 120000 (symlink)
index 0000000..d4cfae1
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_standby.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_test_fsync.1.gz b/etc/alternatives/pg_test_fsync.1.gz
new file mode 120000 (symlink)
index 0000000..01fedad
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_test_fsync.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_test_timing.1.gz b/etc/alternatives/pg_test_timing.1.gz
new file mode 120000 (symlink)
index 0000000..6f9f3d7
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_test_timing.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_upgrade.1.gz b/etc/alternatives/pg_upgrade.1.gz
new file mode 120000 (symlink)
index 0000000..53966d1
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_upgrade.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pg_waldump.1.gz b/etc/alternatives/pg_waldump.1.gz
new file mode 120000 (symlink)
index 0000000..73ae81f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pg_waldump.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pgbench.1.gz b/etc/alternatives/pgbench.1.gz
new file mode 120000 (symlink)
index 0000000..6cec748
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/pgbench.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pico b/etc/alternatives/pico
new file mode 120000 (symlink)
index 0000000..7a06612
--- /dev/null
@@ -0,0 +1 @@
+/bin/nano
\ No newline at end of file
diff --git a/etc/alternatives/pico.1.gz b/etc/alternatives/pico.1.gz
new file mode 120000 (symlink)
index 0000000..bb2d082
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/nano.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/pinentry b/etc/alternatives/pinentry
new file mode 120000 (symlink)
index 0000000..01990a3
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/pinentry-curses
\ No newline at end of file
diff --git a/etc/alternatives/pinentry.1.gz b/etc/alternatives/pinentry.1.gz
new file mode 120000 (symlink)
index 0000000..8e9ab4f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/pinentry-curses.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/postgres.1.gz b/etc/alternatives/postgres.1.gz
new file mode 120000 (symlink)
index 0000000..d0852de
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/postgres.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/postmaster.1.gz b/etc/alternatives/postmaster.1.gz
new file mode 120000 (symlink)
index 0000000..4a62e63
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/postmaster.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/psql.1.gz b/etc/alternatives/psql.1.gz
new file mode 120000 (symlink)
index 0000000..37eb035
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/psql.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/rcp b/etc/alternatives/rcp
new file mode 120000 (symlink)
index 0000000..594df9e
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/scp
\ No newline at end of file
diff --git a/etc/alternatives/rcp.1.gz b/etc/alternatives/rcp.1.gz
new file mode 120000 (symlink)
index 0000000..63bfff3
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/scp.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/reindexdb.1.gz b/etc/alternatives/reindexdb.1.gz
new file mode 120000 (symlink)
index 0000000..f10088a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/reindexdb.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/rlogin b/etc/alternatives/rlogin
new file mode 120000 (symlink)
index 0000000..8db89a8
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/slogin
\ No newline at end of file
diff --git a/etc/alternatives/rlogin.1.gz b/etc/alternatives/rlogin.1.gz
new file mode 120000 (symlink)
index 0000000..be0c6db
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/slogin.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/rmt b/etc/alternatives/rmt
new file mode 120000 (symlink)
index 0000000..82958a9
--- /dev/null
@@ -0,0 +1 @@
+/usr/sbin/rmt-tar
\ No newline at end of file
diff --git a/etc/alternatives/rmt.8.gz b/etc/alternatives/rmt.8.gz
new file mode 120000 (symlink)
index 0000000..8c87e21
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man8/rmt-tar.8.gz
\ No newline at end of file
diff --git a/etc/alternatives/rsh b/etc/alternatives/rsh
new file mode 120000 (symlink)
index 0000000..50a1cff
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/ssh
\ No newline at end of file
diff --git a/etc/alternatives/rsh.1.gz b/etc/alternatives/rsh.1.gz
new file mode 120000 (symlink)
index 0000000..b3b36c0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/ssh.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/rview b/etc/alternatives/rview
new file mode 120000 (symlink)
index 0000000..1d112da
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/vim.basic
\ No newline at end of file
diff --git a/etc/alternatives/rvim b/etc/alternatives/rvim
new file mode 120000 (symlink)
index 0000000..1d112da
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/vim.basic
\ No newline at end of file
diff --git a/etc/alternatives/sar b/etc/alternatives/sar
new file mode 120000 (symlink)
index 0000000..5498641
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/sar.sysstat
\ No newline at end of file
diff --git a/etc/alternatives/sar.1.gz b/etc/alternatives/sar.1.gz
new file mode 120000 (symlink)
index 0000000..06a4f21
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/sar.sysstat.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/telnet b/etc/alternatives/telnet
new file mode 120000 (symlink)
index 0000000..9276ced
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/telnet.netkit
\ No newline at end of file
diff --git a/etc/alternatives/telnet.1.gz b/etc/alternatives/telnet.1.gz
new file mode 120000 (symlink)
index 0000000..9cd371e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/telnet.netkit.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/text.plymouth b/etc/alternatives/text.plymouth
new file mode 120000 (symlink)
index 0000000..74f8b90
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/plymouth/themes/ubuntu-text/ubuntu-text.plymouth
\ No newline at end of file
diff --git a/etc/alternatives/traceroute6 b/etc/alternatives/traceroute6
new file mode 120000 (symlink)
index 0000000..7554b55
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/traceroute6.iputils
\ No newline at end of file
diff --git a/etc/alternatives/traceroute6.8.gz b/etc/alternatives/traceroute6.8.gz
new file mode 120000 (symlink)
index 0000000..e69934c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man8/traceroute6.iputils.8.gz
\ No newline at end of file
diff --git a/etc/alternatives/unlzma b/etc/alternatives/unlzma
new file mode 120000 (symlink)
index 0000000..c730a4a
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/unxz
\ No newline at end of file
diff --git a/etc/alternatives/unlzma.1.gz b/etc/alternatives/unlzma.1.gz
new file mode 120000 (symlink)
index 0000000..c772f41
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/unxz.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/vacuumdb.1.gz b/etc/alternatives/vacuumdb.1.gz
new file mode 120000 (symlink)
index 0000000..93bc1aa
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/vacuumdb.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/vacuumlo.1.gz b/etc/alternatives/vacuumlo.1.gz
new file mode 120000 (symlink)
index 0000000..15b565d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/postgresql/12/man/man1/vacuumlo.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/vi b/etc/alternatives/vi
new file mode 120000 (symlink)
index 0000000..1d112da
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/vim.basic
\ No newline at end of file
diff --git a/etc/alternatives/vi.1.gz b/etc/alternatives/vi.1.gz
new file mode 120000 (symlink)
index 0000000..e02a6af
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/vi.da.1.gz b/etc/alternatives/vi.da.1.gz
new file mode 120000 (symlink)
index 0000000..c90068f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/da/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/vi.de.1.gz b/etc/alternatives/vi.de.1.gz
new file mode 120000 (symlink)
index 0000000..d89833a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/de/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/vi.fr.1.gz b/etc/alternatives/vi.fr.1.gz
new file mode 120000 (symlink)
index 0000000..af52858
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/fr/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/vi.it.1.gz b/etc/alternatives/vi.it.1.gz
new file mode 120000 (symlink)
index 0000000..4498a3d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/it/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/vi.ja.1.gz b/etc/alternatives/vi.ja.1.gz
new file mode 120000 (symlink)
index 0000000..071acfb
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/ja/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/vi.pl.1.gz b/etc/alternatives/vi.pl.1.gz
new file mode 120000 (symlink)
index 0000000..345590a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/pl/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/vi.ru.1.gz b/etc/alternatives/vi.ru.1.gz
new file mode 120000 (symlink)
index 0000000..ea9aa16
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/ru/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/view b/etc/alternatives/view
new file mode 120000 (symlink)
index 0000000..1d112da
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/vim.basic
\ No newline at end of file
diff --git a/etc/alternatives/view.1.gz b/etc/alternatives/view.1.gz
new file mode 120000 (symlink)
index 0000000..e02a6af
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/view.da.1.gz b/etc/alternatives/view.da.1.gz
new file mode 120000 (symlink)
index 0000000..c90068f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/da/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/view.de.1.gz b/etc/alternatives/view.de.1.gz
new file mode 120000 (symlink)
index 0000000..d89833a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/de/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/view.fr.1.gz b/etc/alternatives/view.fr.1.gz
new file mode 120000 (symlink)
index 0000000..af52858
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/fr/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/view.it.1.gz b/etc/alternatives/view.it.1.gz
new file mode 120000 (symlink)
index 0000000..4498a3d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/it/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/view.ja.1.gz b/etc/alternatives/view.ja.1.gz
new file mode 120000 (symlink)
index 0000000..071acfb
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/ja/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/view.pl.1.gz b/etc/alternatives/view.pl.1.gz
new file mode 120000 (symlink)
index 0000000..345590a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/pl/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/view.ru.1.gz b/etc/alternatives/view.ru.1.gz
new file mode 120000 (symlink)
index 0000000..ea9aa16
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/ru/man1/vim.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/vim b/etc/alternatives/vim
new file mode 120000 (symlink)
index 0000000..1d112da
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/vim.basic
\ No newline at end of file
diff --git a/etc/alternatives/vimdiff b/etc/alternatives/vimdiff
new file mode 120000 (symlink)
index 0000000..1d112da
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/vim.basic
\ No newline at end of file
diff --git a/etc/alternatives/vtrgb b/etc/alternatives/vtrgb
new file mode 120000 (symlink)
index 0000000..c1ccb64
--- /dev/null
@@ -0,0 +1 @@
+/etc/console-setup/vtrgb
\ No newline at end of file
diff --git a/etc/alternatives/w b/etc/alternatives/w
new file mode 120000 (symlink)
index 0000000..11c34c4
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/w.procps
\ No newline at end of file
diff --git a/etc/alternatives/w.1.gz b/etc/alternatives/w.1.gz
new file mode 120000 (symlink)
index 0000000..7391b64
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/w.procps.1.gz
\ No newline at end of file
diff --git a/etc/alternatives/write b/etc/alternatives/write
new file mode 120000 (symlink)
index 0000000..121ab03
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/bsd-write
\ No newline at end of file
diff --git a/etc/alternatives/write.1.gz b/etc/alternatives/write.1.gz
new file mode 120000 (symlink)
index 0000000..9bcde45
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/man/man1/bsd-write.1.gz
\ No newline at end of file
diff --git a/etc/apparmor.d/abstractions/X b/etc/apparmor.d/abstractions/X
new file mode 100644 (file)
index 0000000..db3521e
--- /dev/null
@@ -0,0 +1,57 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009-2011 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  #include <abstractions/dri-common>
+
+
+  # .ICEauthority files required for X authentication, per user
+  owner @{HOME}/.ICEauthority r,
+
+  # .Xauthority files required for X connections, per user
+  owner @{HOME}/.Xauthority r,
+  owner @{HOME}/.local/share/sddm/.Xauthority r,
+  owner /{,var/}run/gdm{,3}/*/database r,
+  owner /{,var/}run/lightdm/authority/[0-9]* r,
+  owner /{,var/}run/lightdm/*/xauthority r,
+  owner /{,var/}run/user/*/gdm/Xauthority r,
+  owner /{,var/}run/user/*/X11/Xauthority r,
+
+  # the unix socket to use to connect to the display
+  /tmp/.X11-unix/* rw,
+  unix (connect, receive, send)
+       type=stream
+       peer=(addr="@/tmp/.X11-unix/X[0-9]*"),
+  unix (connect, receive, send)
+       type=stream
+       peer=(addr="@/tmp/.ICE-unix/[0-9]*"),
+
+  /usr/include/X11/               r,
+  /usr/include/X11/**             r,
+
+  # The X tree changes and is large -- grant read access to the whole thing
+  /usr/X11R6/**                   r,
+  /usr/share/X11/                 r,
+  /usr/share/X11/**               r,
+  /usr/X11R6/**.so*               mr,
+
+  # EGL
+  /usr/lib/@{multiarch}/egl/*.so* mr,
+
+  # Xcompose
+  owner @{HOME}/.XCompose         r,
+
+  # mouse themes
+  /etc/X11/cursors/               r,
+  /etc/X11/cursors/**             r,
+
+  # Xwayland
+  owner /run/user/*/.mutter-Xwaylandauth.* r,
diff --git a/etc/apparmor.d/abstractions/apache2-common b/etc/apparmor.d/abstractions/apache2-common
new file mode 100644 (file)
index 0000000..850dd89
--- /dev/null
@@ -0,0 +1,34 @@
+# vim:syntax=apparmor
+
+# This file contains basic permissions for Apache and every vHost
+
+  #include <abstractions/nameservice>
+
+  # Allow unconfined processes to send us signals by default
+  signal (receive) peer=unconfined,
+  # Allow apache to send us signals by default
+  signal (receive) peer=apache2,
+  # Allow other hats to signal by default
+  signal peer=apache2//*,
+  # Allow us to signal ourselves
+  signal peer=@{profile_name},
+
+  # Apache
+  network inet stream,
+  network inet6 stream,
+  # apache manual, error pages and icons
+  /usr/share/apache2/** r,
+
+  # changehat itself
+  @{PROC}/@{pid}/attr/current                        rw,
+
+  # htaccess files - for what ever it is worth
+  /**/.htaccess            r,
+
+  /dev/urandom            r,
+
+  # sasl-auth
+  /run/saslauthd/mux rw,
+
+  # OCSP stapling
+  /var/log/apache2/stapling-cache rw,
diff --git a/etc/apparmor.d/abstractions/apparmor_api/change_profile b/etc/apparmor.d/abstractions/apparmor_api/change_profile
new file mode 100644 (file)
index 0000000..30f6b70
--- /dev/null
@@ -0,0 +1,11 @@
+#    Copyright (C) 2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+#include <abstractions/apparmor_api/introspect>
+
+@{PROC}/@{tid}/attr/{current,exec} w,
diff --git a/etc/apparmor.d/abstractions/apparmor_api/examine b/etc/apparmor.d/abstractions/apparmor_api/examine
new file mode 100644 (file)
index 0000000..2f2ea15
--- /dev/null
@@ -0,0 +1,12 @@
+#    Copyright (C) 2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# Make sure to include at least tunables/proc and tunables/kernelvars
+# when using this abstraction, if not tunables/global.
+
+@{PROC}/@{pids}/attr/{current,prev,exec} r,
diff --git a/etc/apparmor.d/abstractions/apparmor_api/find_mountpoint b/etc/apparmor.d/abstractions/apparmor_api/find_mountpoint
new file mode 100644 (file)
index 0000000..b8ac54d
--- /dev/null
@@ -0,0 +1,14 @@
+#    Copyright (C) 2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+#permissions needed for aa_find_mountpoint
+
+# Make sure to include at least tunables/proc and tunables/kernelvars
+# when using this abstraction, if not tunables/global.
+
+@{PROC}/@{pids}/mounts r,
diff --git a/etc/apparmor.d/abstractions/apparmor_api/introspect b/etc/apparmor.d/abstractions/apparmor_api/introspect
new file mode 100644 (file)
index 0000000..e110c84
--- /dev/null
@@ -0,0 +1,12 @@
+#    Copyright (C) 2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# Make sure to include at least tunables/proc and tunables/kernelvars
+# when using this abstraction, if not tunables/global.
+
+@{PROC}/@{tid}/attr/{current,prev,exec} r,
diff --git a/etc/apparmor.d/abstractions/apparmor_api/is_enabled b/etc/apparmor.d/abstractions/apparmor_api/is_enabled
new file mode 100644 (file)
index 0000000..a637d3c
--- /dev/null
@@ -0,0 +1,17 @@
+#    Copyright (C) 2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# permissions needed for aa_is_enabled
+
+# Make sure to include tunables/apparmorfs and tunables/global
+# when using this abstraction
+
+#include <abstractions/apparmor_api/find_mountpoint>
+@{sys}/module/apparmor/parameters/enabled r,
+
+# TODO: add alternate apparmorfs interface for enabled
diff --git a/etc/apparmor.d/abstractions/aspell b/etc/apparmor.d/abstractions/aspell
new file mode 100644 (file)
index 0000000..9547689
--- /dev/null
@@ -0,0 +1,13 @@
+# vim:syntax=apparmor
+# aspell permissions
+
+  # per-user settings and dictionaries
+  owner @{HOME}/.aspell.*.{pws,prepl} rwk,
+
+  # system libraries and dictionaries
+  /usr/lib/aspell/ r,
+  /usr/lib/aspell/* r,
+  /usr/lib/aspell/*.so m,
+  /usr/share/aspell/ r,
+  /usr/share/aspell/* r,
+  /var/lib/aspell/* r,
diff --git a/etc/apparmor.d/abstractions/audio b/etc/apparmor.d/abstractions/audio
new file mode 100644 (file)
index 0000000..f4dbaac
--- /dev/null
@@ -0,0 +1,83 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+
+
+/dev/admmidi*   rw,
+/dev/adsp*      rw,
+/dev/aload*     rw,
+/dev/amidi*     rw,
+/dev/audio*     rw,
+/dev/dmfm*      rw,
+/dev/dmmidi*    rw,
+/dev/dsp*       rw,
+/dev/midi*      rw,
+/dev/mixer*     rw,
+/dev/mpu401data rw,
+/dev/mpu401stat rw,
+/dev/patmgr*    rw,
+/dev/phone*     rw,
+/dev/radio*     rw,
+/dev/rmidi*     rw,
+/dev/sequencer  rw,
+/dev/sequencer2 rw,
+/dev/smpte*     rw,
+
+/dev/snd/*      rw,
+/dev/sound/*    rw,
+
+@{PROC}/asound/** rw,
+
+/usr/share/alsa/** r,
+/usr/share/sounds/** r,
+
+owner @{HOME}/.esd_auth r,
+/etc/asound.conf r,
+owner @{HOME}/.asoundrc r,
+/etc/esound/esd.conf r,
+
+# libao
+/etc/libao.conf r,
+owner @{HOME}/.libao r,
+
+# libcanberra
+owner @{HOME}/.cache/event-sound-cache.* rwk,
+
+# pulse
+/etc/pulse/ r,
+/etc/pulse/** r,
+/{run,dev}/shm/ r,
+owner /{run,dev}/shm/pulse-shm* rwk,
+owner @{HOME}/.pulse-cookie rwk,
+owner @{HOME}/.pulse/ rw,
+owner @{HOME}/.pulse/* rwk,
+owner /{,var/}run/user/*/pulse/  rw,
+owner /{,var/}run/user/*/pulse/{native,pid} rwk,
+owner @{HOME}/.config/pulse/*.conf r,
+owner @{HOME}/.config/pulse/client.conf.d/{,*.conf} r,
+owner @{HOME}/.config/pulse/cookie rwk,
+owner /tmp/pulse-*/ rw,
+owner /tmp/pulse-*/* rw,
+
+# libgnome2
+/etc/sound/ r,
+/etc/sound/** r,
+
+# openal
+/etc/alsa/conf.d/{,*} r,
+/etc/openal/alsoft.conf r,
+owner @{HOME}/.alsoftrc r,
+/usr/{,local/}share/openal/hrtf/{,**} r,
+owner @{HOME}/.local/share/openal/hrtf/{,**} r,
+
+# wildmidi
+/etc/wildmidi/wildmidi.cfg r,
diff --git a/etc/apparmor.d/abstractions/authentication b/etc/apparmor.d/abstractions/authentication
new file mode 100644 (file)
index 0000000..adc338b
--- /dev/null
@@ -0,0 +1,51 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009-2012 Canonical Ltd
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+
+
+  # Some services need to perform authentication of users
+  # Such authentication almost certainly needs access to the local users
+  # databases containing passwords, PAM configuration files, PAM libraries
+  /etc/nologin                r,
+  /etc/pam.d/*                r,
+  /etc/securetty              r,
+  /etc/security/*             r,
+  /etc/shadow                 r,
+  /etc/gshadow                r,
+  /etc/pwdb.conf              r,
+
+  /{usr/,}lib{,32,64}/security/pam_filter/*  mr,
+  /{usr/,}lib{,32,64}/security/pam_*.so      mr,
+  /{usr/,}lib{,32,64}/security/              r,
+  /{usr/,}lib/@{multiarch}/security/pam_filter/*  mr,
+  /{usr/,}lib/@{multiarch}/security/pam_*.so      mr,
+  /{usr/,}lib/@{multiarch}/security/              r,
+
+  # kerberos
+  #include <abstractions/kerberosclient>
+  # SuSE's pwdutils are different:
+  /etc/default/passwd         r,
+  /etc/login.defs             r,
+
+  # nis
+  #include <abstractions/nis>
+
+  # winbind
+  #include <abstractions/winbind>
+
+  # likewise
+  #include <abstractions/likewise>
+
+  # smbpass
+  #include <abstractions/smbpass>
+
+  # p11-kit (PKCS#11 modules configuration)
+  #include <abstractions/p11-kit>
diff --git a/etc/apparmor.d/abstractions/base b/etc/apparmor.d/abstractions/base
new file mode 100644 (file)
index 0000000..1dc77a3
--- /dev/null
@@ -0,0 +1,168 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009-2011 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+
+
+  # (Note that the ldd profile has inlined this file; if you make
+  # modifications here, please consider including them in the ldd
+  # profile as well.)
+
+  # The __canary_death_handler function writes a time-stamped log
+  # message to /dev/log for logging by syslogd. So, /dev/log, timezones,
+  # and localisations of date should be available EVERYWHERE, so
+  # StackGuard, FormatGuard, etc., alerts can be properly logged.
+  /dev/log                       w,
+  /dev/random                    r,
+  /dev/urandom                   r,
+  # Allow access to the uuidd daemon (this daemon is a thin wrapper around
+  # time and getrandom()/{,u}random and, when available, runs under an
+  # unprivilged, dedicated user).
+  /run/uuidd/request             r,
+  /etc/locale/**                 r,
+  /etc/locale.alias              r,
+  /etc/localtime                 r,
+  /etc/writable/localtime        r,
+  /usr/share/locale-bundle/**    r,
+  /usr/share/locale-langpack/**  r,
+  /usr/share/locale/**           r,
+  /usr/share/**/locale/**        r,
+  /usr/share/zoneinfo/           r,
+  /usr/share/zoneinfo/**         r,
+  /usr/share/X11/locale/**       r,
+  /run/systemd/journal/dev-log w,
+  # systemd native journal API (see sd_journal_print(4))
+  /run/systemd/journal/socket w,
+  # Nested containers and anything using systemd-cat need this. 'r' shouldn't
+  # be required but applications fail without it. journald doesn't leak
+  # anything when reading so this is ok.
+  /run/systemd/journal/stdout rw,
+
+  /usr/lib{,32,64}/locale/**             mr,
+  /usr/lib{,32,64}/gconv/*.so            mr,
+  /usr/lib{,32,64}/gconv/gconv-modules*  mr,
+  /usr/lib/@{multiarch}/gconv/*.so           mr,
+  /usr/lib/@{multiarch}/gconv/gconv-modules* mr,
+
+  # used by glibc when binding to ephemeral ports
+  /etc/bindresvport.blacklist    r,
+
+  # ld.so.cache and ld are used to load shared libraries; they are best
+  # available everywhere
+  /etc/ld.so.cache               mr,
+  /etc/ld.so.conf                r,
+  /etc/ld.so.conf.d/{,*.conf}    r,
+  /etc/ld.so.preload             r,
+  /{usr/,}lib{,32,64}/ld{,32,64}-*.so   mr,
+  /{usr/,}lib/@{multiarch}/ld{,32,64}-*.so    mr,
+  /{usr/,}lib/tls/i686/{cmov,nosegneg}/ld-*.so     mr,
+  /{usr/,}lib/i386-linux-gnu/tls/i686/{cmov,nosegneg}/ld-*.so     mr,
+  /opt/*-linux-uclibc/lib/ld-uClibc*so* mr,
+
+  # we might as well allow everything to use common libraries
+  /{usr/,}lib{,32,64}/**                r,
+  /{usr/,}lib{,32,64}/**.so*       mr,
+  /{usr/,}lib/@{multiarch}/**            r,
+  /{usr/,}lib/@{multiarch}/**.so*   mr,
+  /{usr/,}lib/tls/i686/{cmov,nosegneg}/*.so*    mr,
+  /{usr/,}lib/i386-linux-gnu/tls/i686/{cmov,nosegneg}/*.so*    mr,
+
+  # /dev/null is pretty harmless and frequently used
+  /dev/null                      rw,
+  # as is /dev/zero
+  /dev/zero                      rw,
+  # recent glibc uses /dev/full in preference to /dev/null for programs
+  # that don't have open fds at exec()
+  /dev/full                      rw,
+
+  # Sometimes used to determine kernel/user interfaces to use
+  @{PROC}/sys/kernel/version     r,
+  # Depending on which glibc routine uses this file, base may not be the
+  # best place -- but many profiles require it, and it is quite harmless.
+  @{PROC}/sys/kernel/ngroups_max r,
+
+  # glibc's sysconf(3) routine to determine free memory, etc
+  @{PROC}/meminfo                r,
+  @{PROC}/stat                   r,
+  @{PROC}/cpuinfo                r,
+  @{sys}/devices/system/cpu/       r,
+  @{sys}/devices/system/cpu/online r,
+
+  # glibc's *printf protections read the maps file
+  @{PROC}/@{pid}/{maps,auxv,status} r,
+
+  # libgcrypt reads some flags from /proc
+  @{PROC}/sys/crypto/*           r,
+
+  # some applications will display license information
+  /usr/share/common-licenses/**  r,
+
+  # glibc statvfs
+  @{PROC}/filesystems            r,
+
+  # glibc malloc (man 5 proc)
+  @{PROC}/sys/vm/overcommit_memory r,
+
+  # Allow determining the highest valid capability of the running kernel
+  @{PROC}/sys/kernel/cap_last_cap r,
+
+  # Allow other processes to read our /proc entries, futexes, perf tracing and
+  # kcmp for now (they will need 'read' in the first place). Administrators can
+  # override with:
+  #   deny ptrace (readby) ...
+  ptrace (readby),
+
+  # Allow other processes to trace us by default (they will need 'trace' in
+  # the first place). Administrators can override with:
+  #   deny ptrace (tracedby) ...
+  ptrace (tracedby),
+
+  # Allow us to ptrace read ourselves
+  ptrace (read) peer=@{profile_name},
+
+  # Allow unconfined processes to send us signals by default
+  signal (receive) peer=unconfined,
+
+  # Allow us to signal ourselves
+  signal peer=@{profile_name},
+
+  # Checking for PID existence is quite common so add it by default for now
+  signal (receive, send) set=("exists"),
+
+  # Allow us to create and use abstract and anonymous sockets
+  unix peer=(label=@{profile_name}),
+
+  # Allow unconfined processes to us via unix sockets
+  unix (receive) peer=(label=unconfined),
+
+  # Allow us to create abstract and anonymous sockets
+  unix (create),
+
+  # Allow us to getattr, getopt, setop and shutdown on unix sockets
+  unix (getattr, getopt, setopt, shutdown),
+
+  # Workaround https://launchpad.net/bugs/359338 until upstream handles stacked
+  # filesystems generally. This does not appreciably decrease security with
+  # Ubuntu profiles because the user is expected to have access to files owned
+  # by him/her. Exceptions to this are explicit in the profiles. While this rule
+  # grants access to those exceptions, the intended privacy is maintained due to
+  # the encrypted contents of the files in this directory. Files in this
+  # directory will also use filename encryption by default, so the files are
+  # further protected. Also, with the use of 'owner', this rule properly
+  # prevents access to the files from processes running under a different uid.
+
+  # encrypted ~/.Private and old-style encrypted $HOME
+  owner @{HOME}/.Private/ r,
+  owner @{HOME}/.Private/** mrixwlk,
+  # new-style encrypted $HOME
+  owner @{HOMEDIRS}/.ecryptfs/*/.Private/ r,
+  owner @{HOMEDIRS}/.ecryptfs/*/.Private/** mrixwlk,
+
diff --git a/etc/apparmor.d/abstractions/bash b/etc/apparmor.d/abstractions/bash
new file mode 100644 (file)
index 0000000..e8dcd75
--- /dev/null
@@ -0,0 +1,44 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # user-specific bash files
+  @{HOMEDIRS}                      r,
+  @{HOME}/.bashrc                  r,
+  @{HOME}/.profile                 r,
+  @{HOME}/.bash_profile            r,
+  @{HOME}/.bash_history            rw,
+
+  # system-wide bash configuration
+  /etc/profile.dos                 r,
+  /etc/profile                     r,
+  /etc/profile.d/                  r,
+  /etc/profile.d/*                 r,
+  /etc/bashrc                      r,
+  /etc/bash.bashrc                 r,
+  /etc/bash.bashrc.local           r,
+  /etc/bash_completion             r,
+  /etc/bash_completion.d/          r,
+  /etc/bash_completion.d/*         r,
+
+  # bash relies on system-wide readline configuration
+  /etc/inputrc                     r,
+
+  # bash inspects filesystems at startup
+  /etc/mtab                        r,
+  @{PROC}/@{pid}/mounts            r,
+  @{PROC}/filesystems              r,
+
+  # probably readline wants to know terminal capabilities
+  /usr/share/terminfo/**           r,
+
+  # run out of /etc/bash.bashrc
+  /etc/DIR_COLORS                  r,
+  /{usr/,}bin/ls                   mix,
+  /usr/bin/dircolors               mix,
diff --git a/etc/apparmor.d/abstractions/consoles b/etc/apparmor.d/abstractions/consoles
new file mode 100644 (file)
index 0000000..d6c30be
--- /dev/null
@@ -0,0 +1,23 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2005 Novell/SUSE
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+
+
+  # there are three common ways to refer to consoles
+  /dev/console rw,
+  /dev/tty     rw,
+  # this next entry is a tad unfortunate; /dev/tty will always be
+  # associated with the controlling terminal by the kernel, but if a
+  # program uses the /dev/pts/ interface, it actually has access to
+  # -all- xterm, sshd, etc, terminals on the system.
+  /dev/pts/[0-9]*   rw,
+  /dev/pts/         r,
+
diff --git a/etc/apparmor.d/abstractions/cups-client b/etc/apparmor.d/abstractions/cups-client
new file mode 100644 (file)
index 0000000..f38ac09
--- /dev/null
@@ -0,0 +1,18 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2009-2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # discoverable system configuration for non-local cupsd
+  /etc/cups/client.conf   r,
+  # client should be able to talk the local cupsd
+  /{,var/}run/cups/cups.sock rw,
+  # client should be able to read user-specified cups configuration
+  owner @{HOME}/.cups/client.conf r,
+  owner @{HOME}/.cups/lpoptions r,
diff --git a/etc/apparmor.d/abstractions/dbus b/etc/apparmor.d/abstractions/dbus
new file mode 100644 (file)
index 0000000..c670fc2
--- /dev/null
@@ -0,0 +1,16 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2009-2013 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # This abstraction grants full system bus access. Consider using the
+  # dbus-strict abstraction for fine-grained bus mediation.
+
+  #include <abstractions/dbus-strict>
+  dbus bus=system,
diff --git a/etc/apparmor.d/abstractions/dbus-accessibility b/etc/apparmor.d/abstractions/dbus-accessibility
new file mode 100644 (file)
index 0000000..40a3308
--- /dev/null
@@ -0,0 +1,16 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2013 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # This abstraction grants full accessibility bus access. Consider using the
+  # dbus-accessibility-strict abstraction for fine-grained bus mediation.
+
+  #include <abstractions/dbus-accessibility-strict>
+  dbus bus=accessibility,
diff --git a/etc/apparmor.d/abstractions/dbus-accessibility-strict b/etc/apparmor.d/abstractions/dbus-accessibility-strict
new file mode 100644 (file)
index 0000000..a853ce2
--- /dev/null
@@ -0,0 +1,17 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2013 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  dbus send
+       bus=accessibility
+       path=/org/freedesktop/DBus
+       interface=org.freedesktop.DBus
+       member={Hello,AddMatch,RemoveMatch,GetNameOwner,NameHasOwner,StartServiceByName}
+       peer=(name=org.freedesktop.DBus),
diff --git a/etc/apparmor.d/abstractions/dbus-session b/etc/apparmor.d/abstractions/dbus-session
new file mode 100644 (file)
index 0000000..eb1ed91
--- /dev/null
@@ -0,0 +1,17 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2011-2013 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # This abstraction grants full session bus access. Consider using the
+  # dbus-session-strict abstraction for fine-grained bus mediation.
+
+  #include <abstractions/dbus-session-strict>
+  /usr/bin/dbus-launch ix,
+  dbus bus=session,
diff --git a/etc/apparmor.d/abstractions/dbus-session-strict b/etc/apparmor.d/abstractions/dbus-session-strict
new file mode 100644 (file)
index 0000000..1600554
--- /dev/null
@@ -0,0 +1,29 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2011-2013 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # unique per-machine identifier
+  /etc/machine-id r,
+  /var/lib/dbus/machine-id r,
+  owner /run/user/*/bus rw,
+
+  unix (connect, receive, send)
+       type=stream
+       peer=(addr="@/tmp/dbus-*"),
+
+  # dbus with systemd and --enable-user-session
+  owner /run/user/[0-9]*/bus rw,
+
+  dbus send
+       bus=session
+       path=/org/freedesktop/DBus
+       interface=org.freedesktop.DBus
+       member={Hello,AddMatch,RemoveMatch,GetNameOwner,NameHasOwner,StartServiceByName}
+       peer=(name=org.freedesktop.DBus),
diff --git a/etc/apparmor.d/abstractions/dbus-strict b/etc/apparmor.d/abstractions/dbus-strict
new file mode 100644 (file)
index 0000000..01a426e
--- /dev/null
@@ -0,0 +1,19 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2009-2013 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  /{,var/}run/dbus/system_bus_socket rw,
+
+  dbus send
+       bus=system
+       path=/org/freedesktop/DBus
+       interface=org.freedesktop.DBus
+       member={Hello,AddMatch,RemoveMatch,GetNameOwner,NameHasOwner,StartServiceByName}
+       peer=(name=org.freedesktop.DBus),
diff --git a/etc/apparmor.d/abstractions/dconf b/etc/apparmor.d/abstractions/dconf
new file mode 100644 (file)
index 0000000..7ef6978
--- /dev/null
@@ -0,0 +1,8 @@
+# vim:syntax=apparmor
+
+# permissions for querying dconf settings; granting write access should
+# be specified in a specific application's profile.
+
+  /etc/dconf/** r,
+  owner /{,var/}run/user/*/dconf/user r,
+  owner @{HOME}/.config/dconf/user r,
diff --git a/etc/apparmor.d/abstractions/dovecot-common b/etc/apparmor.d/abstractions/dovecot-common
new file mode 100644 (file)
index 0000000..e1681d9
--- /dev/null
@@ -0,0 +1,19 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2014 Canonical, Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+# used with dovecot/*
+
+  capability setgid,
+
+  deny capability block_suspend,
+
+  # dovecot's master can send us signals
+  signal receive peer=dovecot,
+
+  /{var/,}run/dovecot/config rw,
diff --git a/etc/apparmor.d/abstractions/dri-common b/etc/apparmor.d/abstractions/dri-common
new file mode 100644 (file)
index 0000000..b5e0a5c
--- /dev/null
@@ -0,0 +1,14 @@
+# vim:syntax=apparmor
+
+# This file contains common DRI-specific rules useful for GUI applications
+# (needed by libdrm and similar).
+
+  /usr/lib{,32,64}/dri/**         mr,
+  /usr/lib/@{multiarch}/dri/**    mr,
+  /usr/lib/fglrx/dri/**           mr,
+  /dev/dri/                       r,
+  /dev/dri/**                     rw,
+  /etc/drirc                      r,
+  /usr/share/drirc.d/{,*.conf}    r,
+  owner @{HOME}/.drirc            r,
+
diff --git a/etc/apparmor.d/abstractions/dri-enumerate b/etc/apparmor.d/abstractions/dri-enumerate
new file mode 100644 (file)
index 0000000..e101be5
--- /dev/null
@@ -0,0 +1,8 @@
+# vim:syntax=apparmor
+
+# This file contains common DRI-specific rules useful for GUI applications that
+# needs to enumerate graphic devices (as with drmParsePciDeviceInfo() from
+# libdrm).
+
+  @{sys}/devices/pci[0-9]*/**/{device,subsystem_device,subsystem_vendor,uevent,vendor} r,
+
diff --git a/etc/apparmor.d/abstractions/enchant b/etc/apparmor.d/abstractions/enchant
new file mode 100644 (file)
index 0000000..fd3c813
--- /dev/null
@@ -0,0 +1,56 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2010 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # abstraction for Enchant spellchecking frontend
+
+  /usr/share/enchant/                              r,
+  /usr/share/enchant/enchant.ordering              r,
+
+  # aspell
+  #include <abstractions/aspell>
+  /var/lib/dictionaries-common/aspell/             r,
+  /var/lib/dictionaries-common/aspell/*            r,
+
+  # hspell
+  /usr/share/hspell/                               r,
+  /usr/share/hspell/*.wgz.*                        r,
+
+  # hunspell
+  /usr/share/hunspell/                             r,
+  /usr/share/hunspell/*                            r,
+
+  # ispell
+  /usr/lib/ispell/                                 r,
+  /usr/lib/ispell/*.hash                           r,
+  /usr/share/dict/                                 r,
+  /usr/share/dict/*                                r,
+  /var/lib/dictionaries-common/                    r,
+  /var/lib/dictionaries-common/{ispell,wordlist}/  r,
+  /var/lib/dictionaries-common/{ispell,wordlist}/* r,
+
+  # myspell
+  /usr/share/myspell/                              r,
+  /usr/share/myspell/**                            r,
+
+  # voikko
+  /usr/lib/voikko/                                 r,
+  /usr/lib/voikko/2/                               r,
+  /usr/lib/voikko/2/mor-standard/                  r,
+  /usr/lib/voikko/2/mor-standard/voikko*           r,
+
+  # zemberek
+  /usr/share/java/                                 r,
+  /usr/share/java/zemberek-[0-9]*.jar              r,
+  /usr/share/java/zemberek-tr-[0-9]*.jar           r,
+
+  # per-user dictionaries
+  owner @{HOME}/.config/enchant/                   rw,
+  owner @{HOME}/.config/enchant/*                  rwk,
diff --git a/etc/apparmor.d/abstractions/fcitx b/etc/apparmor.d/abstractions/fcitx
new file mode 100644 (file)
index 0000000..3d26cc9
--- /dev/null
@@ -0,0 +1,13 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2016 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  #include <abstractions/fcitx-strict>
+  dbus bus=fcitx,
diff --git a/etc/apparmor.d/abstractions/fcitx-strict b/etc/apparmor.d/abstractions/fcitx-strict
new file mode 100644 (file)
index 0000000..d773734
--- /dev/null
@@ -0,0 +1,21 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2016 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  #include <abstractions/dbus-session-strict>
+
+  dbus send
+      bus=fcitx
+      path=/org/freedesktop/DBus
+      interface=org.freedesktop.DBus
+      member={Hello,AddMatch,RemoveMatch,GetNameOwner,NameHasOwner,StartServiceByName}
+      peer=(name=org.freedesktop.DBus),
+
+  owner @{HOME}/.config/fcitx/dbus/* r,
diff --git a/etc/apparmor.d/abstractions/fonts b/etc/apparmor.d/abstractions/fonts
new file mode 100644 (file)
index 0000000..222aa5a
--- /dev/null
@@ -0,0 +1,61 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  /usr/share/AbiSuite/fonts/**          r,
+
+  /usr/lib/xorg/modules/fonts/**.so*    mr,
+
+  /usr/share/fonts/                     r,
+  /usr/share/fonts/**                   r,
+
+  /etc/fonts/**                         r,
+  # Debian, openSUSE paths are different
+  /usr/share/{fontconfig,fonts-config,*-fonts}/conf.avail/{,**} r,
+  /usr/share/ghostscript/fonts/{,**}    r,
+
+  /opt/kde3/share/fonts/**              r,
+
+  /usr/lib{,32,64}/openoffice/share/fonts/**    r,
+
+  /var/cache/fonts/**                   r,
+  /var/cache/fontconfig/**              mr,
+  /var/lib/defoma/**                    mr,
+
+  /usr/share/a2ps/fonts/**              r,
+  /usr/share/xfce/fonts/**              r,
+  /usr/share/ghostscript/fonts/**       r,
+  /usr/share/javascript/*/fonts/**      r,
+  /usr/share/texmf/{,*/}fonts/**        r,
+  /usr/share/texlive/texmf-dist/fonts/** r,
+  /var/lib/ghostscript/**               r,
+
+  owner @{HOME}/.fonts.conf             r,
+  owner @{HOME}/.fonts/                 r,
+  owner @{HOME}/.fonts/**               r,
+  owner @{HOME}/.local/share/fonts/     r,
+  owner @{HOME}/.local/share/fonts/**   r,
+  owner @{HOME}/.fonts.cache-2          mr,
+  owner @{HOME}/.{,cache/}fontconfig/   rw,
+  owner @{HOME}/.{,cache/}fontconfig/** mrl,
+  owner @{HOME}/.fonts.conf.d/          r,
+  owner @{HOME}/.fonts.conf.d/**        r,
+  owner @{HOME}/.config/fontconfig/     r,
+  owner @{HOME}/.config/fontconfig/**   r,
+
+  /usr/local/share/fonts/               r,
+  /usr/local/share/fonts/**             r,
+
+  # poppler CMap tables
+  /usr/share/poppler/cMap/**            r,
+
+  # data files for LibThai
+  /usr/share/libthai/thbrk.tri          r,
diff --git a/etc/apparmor.d/abstractions/freedesktop.org b/etc/apparmor.d/abstractions/freedesktop.org
new file mode 100644 (file)
index 0000000..4ec1745
--- /dev/null
@@ -0,0 +1,36 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2009 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # system configuration
+  @{system_share_dirs}/applications/{**,} r,
+  @{system_share_dirs}/icons/{**,}        r,
+  @{system_share_dirs}/pixmaps/{**,}      r,
+
+  # communitheme snap
+  /snap/communitheme/*/share/icons/   r,
+  /snap/communitheme/*/share/icons/** r,
+
+  # mimeinfo and desktop files for snaps
+  /var/lib/snapd/desktop/applications/mimeinfo.cache r,
+  /var/lib/snapd/desktop/applications/{,*.desktop} r,
+
+  # this should probably go elsewhere
+  @{system_share_dirs}/mime/** r,
+
+  # per-user configurations
+  owner @{HOME}/.icons/                 r,
+  owner @{HOME}/.recently-used.xbel*    rw,
+  owner @{HOME}/.local/share/recently-used.xbel* rw,
+  owner @{HOME}/.config/user-dirs.dirs  r,
+  owner @{HOME}/.config/mimeapps.list   r,
+  owner @{user_share_dirs}/applications/{**,} r,
+  owner @{user_share_dirs}/icons/{**,}        r,
+  owner @{user_share_dirs}/mime/{**,}         r,
diff --git a/etc/apparmor.d/abstractions/gnome b/etc/apparmor.d/abstractions/gnome
new file mode 100644 (file)
index 0000000..a0459c3
--- /dev/null
@@ -0,0 +1,113 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009-2011 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+#include <abstractions/base>
+#include <abstractions/fonts>
+#include <abstractions/X>
+#include <abstractions/freedesktop.org>
+#include <abstractions/xdg-desktop>
+#include <abstractions/user-tmp>
+#include <abstractions/wayland>
+
+  # systemwide gtk defaults
+  /etc/gnome/gtkrc*               r,
+  /etc/gtk/*                      r,
+  /usr/lib{,32,64}/gtk/**         mr,
+  /usr/lib/@{multiarch}/gtk/**    mr,
+  /usr/lib{,32,64}/gtk-[0-9]*/**  mr,
+  /usr/lib/@{multiarch}/gtk-[0-9]*/** mr,
+  /usr/share/themes/              r,
+  /usr/share/themes/**            r,
+
+  # communitheme snap
+  /snap/communitheme/*/share/themes/   r,
+  /snap/communitheme/*/share/themes/** r,
+
+  # for gnome 1 applications
+  /etc/orbitrc                    r,
+
+  # gtk-2 needed some new rights
+  /etc/fonts/*                    r,
+  /etc/gtk-*/*                    r,
+  /etc/pango/*                    r,
+  /usr/lib{,32,64}/pango/**       mr,
+  /usr/lib{,32,64}/gtk-*/**       mr,
+  /usr/lib{,32,64}/gdk-pixbuf-*/** mr,
+  /usr/lib/@{multiarch}/pango/**        mr,
+  /usr/lib/@{multiarch}/gtk-*/**        mr,
+  /usr/lib/@{multiarch}/gdk-pixbuf-*/** mr,
+
+  # per-user gtk configuration
+  owner @{HOME}/.config/gtk-3.0/        w,
+  owner @{HOME}/.config/gtk-3.0/*       r,
+  owner @{HOME}/.gnome/Gnome            r,
+  owner @{HOME}/.gtk                    r,
+  owner @{HOME}/.gtkrc                  r,
+  owner @{HOME}/.gtkrc-2.0              r,
+  owner @{HOME}/.gtk-bookmarks          r,
+  owner @{HOME}/.themes/                r,
+  owner @{HOME}/.themes/**              r,
+  owner @{user_share_dirs}/themes/      r,
+  owner @{user_share_dirs}/themes/**    r,
+
+  # for gtk file dialog
+  owner @{HOME}/.config/gtk-2.0/                    w,
+  owner @{HOME}/.config/gtk-2.0/**                  r,
+  owner @{HOME}/.config/gtk-2.0/gtkfilechooser.ini* rw,
+
+  # from evolution-mail
+  owner @{HOME}/.gconfd/lock/*                      r,
+  owner @{HOME}/.gnome/application-info             r,
+
+  # per-user font business
+  owner @{HOME}/.fonts.cache-*    rwl,
+
+  # GtkComposeTable
+  owner @{HOME}/.cache/gtk-3.0/** r,
+
+  # icon caches
+  /var/cache/**/icon-theme.cache  r,
+  /usr/share/**/icon-theme.cache  r,
+
+  # GLib schemas
+  /usr/{local/,}share/glib-[0-9]*/schemas/   r,
+  /usr/{local/,}share/glib-[0-9]*/schemas/** r,
+
+  # gnome VFS modules
+  /etc/gnome-vfs-2.0/modules/ r,
+  /etc/gnome-vfs-2.0/modules/* r,
+  /usr/lib/gnome-vfs-2.0/modules/*.so mr,
+  /usr/lib/@{multiarch}/gnome-vfs-2.0/modules/*.so mr,
+
+  # gvfs
+  /usr/share/gvfs/remote-volume-monitors/  r,
+  /usr/share/gvfs/remote-volume-monitors/* r,
+  @{PROC}/@{pid}/mounts                    r,
+
+  # printing
+  /etc/papersize                   r,
+  /etc/cups/lpoptions              r,
+  /usr/share/cups/charmaps/**      r,
+
+  # holds MIT-MAGIC-COOKIE for gnome
+  owner /{,var/}run/gdm/auth*/database r,
+
+  # mime-types
+  /etc/gnome/defaults.list r,
+  /etc/xdg/{,*-}mimeapps.list r,
+  /usr/share/gnome/applications/ r,
+  /usr/share/gnome/applications/mimeinfo.cache r,
+
+  # Allow connecting to the GNOME vfs socket (still need corresponding DBus
+  # rules)
+  unix (send, receive, connect)
+       type=stream
+       peer=(addr="@/dbus-vfs-daemon/socket-*"),
diff --git a/etc/apparmor.d/abstractions/gnupg b/etc/apparmor.d/abstractions/gnupg
new file mode 100644 (file)
index 0000000..d04c920
--- /dev/null
@@ -0,0 +1,11 @@
+# vim:syntax=apparmor
+# gnupg sub-process running permissions
+
+  # user configurations
+  owner @{HOME}/.gnupg/options     r,
+  owner @{HOME}/.gnupg/pubring.gpg r,
+  owner @{HOME}/.gnupg/pubring.kbx r,
+  owner @{HOME}/.gnupg/random_seed rw,
+  owner @{HOME}/.gnupg/secring.gpg r,
+  owner @{HOME}/.gnupg/so/*.x86_64 mr,
+  owner @{HOME}/.gnupg/trustdb.gpg rw,
diff --git a/etc/apparmor.d/abstractions/ibus b/etc/apparmor.d/abstractions/ibus
new file mode 100644 (file)
index 0000000..a4431b9
--- /dev/null
@@ -0,0 +1,29 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2010 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # abstraction for ibus input methods
+  owner @{HOME}/.config/ibus/ r,
+  owner @{HOME}/.config/ibus/bus/ rw,
+  owner @{HOME}/.config/ibus/bus/* rw,
+
+  # abstract path in ibus < 1.5.22 uses /tmp
+  unix (connect, receive, send)
+       type=stream
+       peer=(addr="@/tmp/ibus/dbus-*"),
+
+  # abstract path in ibus >= 1.5.22 uses $XDG_CACHE_HOME (ie, @{HOME}/.cache)
+  # This should use this, but due to LP: #1856738 we cannot
+  #unix (connect, receive, send)
+  #    type=stream
+  #    peer=(addr="@@{HOME}/.cache/ibus/dbus-*"),
+  unix (connect, receive, send)
+       type=stream
+       peer=(addr="@/home/*/.cache/ibus/dbus-*"),
diff --git a/etc/apparmor.d/abstractions/kde b/etc/apparmor.d/abstractions/kde
new file mode 100644 (file)
index 0000000..cad5c7d
--- /dev/null
@@ -0,0 +1,77 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#    Copyright (C) 2009-2011 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+#include <abstractions/base>
+#include <abstractions/fonts>
+#include <abstractions/X>
+#include <abstractions/freedesktop.org>
+#include <abstractions/xdg-desktop>
+#include <abstractions/user-tmp>
+#include <abstractions/qt5>
+
+/etc/qt3/kstylerc r,
+/etc/qt3/qt_plugins_3.3rc r,
+/etc/qt3/qtrc r,
+/etc/kderc r,
+/etc/kde3/* r,
+/etc/kde4rc r,
+/etc/xdg/kdeglobals r,
+/etc/xdg/Trolltech.conf r,
+/usr/share/knotifications5/*.notifyrc r, # KNotification::sendEvent()
+/usr/share/kubuntu-default-settings/kf5-settings/* r,
+
+owner @{HOME}/.DCOPserver_* r,
+owner @{HOME}/.ICEauthority r,
+owner @{HOME}/.fonts.* lrw,
+owner @{HOME}/.kde{,4}/share/config/kdeglobals rw,
+owner @{HOME}/.kde{,4}/share/config/*.lock rwl,
+owner @{HOME}/.qt/** rw,
+owner @{HOME}/.cache/ksycoca5_??_* r, # KDE System Configuration Cache
+owner @{HOME}/.config/Trolltech.conf rwk,
+owner @{HOME}/.config/baloofilerc r, # indexing options (excludes, etc), used by KFileWidget
+owner @{HOME}/.config/dolphinrc r, # settings used by KFileWidget
+owner @{HOME}/.config/kde.org/libphonon.conf r, # for KNotifications::sendEvent()
+owner @{HOME}/.config/kdeglobals r, # global settings, used by Breeze style, etc.
+owner @{HOME}/.config/klanguageoverridesrc r, # per-application languages, for KDEPrivate::initializeLanguages() from libKF5XmlGui.so
+owner @{HOME}/.config/trashrc r, # Used by KFileWidget
+
+/usr/share/X11/XKeysymDB r,
+
+# kde3
+/usr/lib*/kde3/plugins/styles/ r,
+/usr/lib*/kde3/plugins/styles/* mr,
+/usr/lib*/kde3/lib*so* mr,
+/usr/lib/@{multiarch}/kde3/plugins/styles/ r,
+/usr/lib/@{multiarch}/kde3/plugins/styles/* mr,
+/usr/lib/@{multiarch}/kde3/lib*so* mr,
+/usr/lib*/qt3/lib*/lib*so* mr,
+/usr/lib*/qt3/plugins/**  mr,
+/usr/lib/@{multiarch}/qt3/lib*/lib*so* mr,
+/usr/lib/@{multiarch}/qt3/plugins/**  mr,
+/usr/lib*/libqt-mt*so* mr,
+/usr/lib*/libqui*so* mr,
+/usr/lib/@{multiarch}/libqt-mt*so* mr,
+/usr/lib/@{multiarch}/libqui*so* mr,
+/usr/share/qt3/lib*/libqt-mt*so* mr,
+/usr/share/qt3/lib*/libqui*so* mr,
+
+# kde4
+/usr/lib*/kde4/plugins/*/*.so mr,
+/usr/lib*/kde4/plugins/*/ r,
+/usr/lib*/kde4/lib*so* mr,
+/usr/lib/@{multiarch}/kde4/plugins/*/*.so mr,
+/usr/lib/@{multiarch}/kde4/plugins/*/ r,
+/usr/lib/@{multiarch}/kde4/lib*so* mr,
+/usr/lib*/qt4/lib*/lib*so* mr,
+/usr/lib*/qt4/plugins/**  mr,
+/usr/lib/@{multiarch}/qt4/lib*/lib*so* mr,
+/usr/lib/@{multiarch}/qt4/plugins/**  mr,
+/usr/share/qt4/** r,
diff --git a/etc/apparmor.d/abstractions/kde-globals-write b/etc/apparmor.d/abstractions/kde-globals-write
new file mode 100644 (file)
index 0000000..5f878e8
--- /dev/null
@@ -0,0 +1,10 @@
+# vim:syntax=apparmor
+# Rules for changing KDE settings (for KFileDialog and other).
+
+  # User files
+  owner @{HOME}/.config/#[0-9]* rw,
+  owner @{HOME}/.config/kdeglobals rw,
+  owner @{HOME}/.config/kdeglobals.?????? rwl -> @{HOME}/.config/#[0-9]*,
+  owner @{HOME}/.config/kdeglobals.lock rwk,
+
diff --git a/etc/apparmor.d/abstractions/kde-icon-cache-write b/etc/apparmor.d/abstractions/kde-icon-cache-write
new file mode 100644 (file)
index 0000000..d37fb3b
--- /dev/null
@@ -0,0 +1,7 @@
+# vim:syntax=apparmor
+# Rules for writing KDE icon cache
+
+  # User files
+
+  owner @{HOME}/.cache/icon-cache.kcache rw, # for KIconLoader
+
diff --git a/etc/apparmor.d/abstractions/kde-language-write b/etc/apparmor.d/abstractions/kde-language-write
new file mode 100644 (file)
index 0000000..8e95399
--- /dev/null
@@ -0,0 +1,12 @@
+# vim:syntax=apparmor
+# Rules for changing per-application language settings on KDE. Some KDE
+# applications have "Help -> Switch Application Language..." option, that needs
+# write access to language settings file.
+
+  # User files
+
+  owner @{HOME}/.config/#[0-9]* rw,
+  owner @{HOME}/.config/klanguageoverridesrc rw,
+  owner @{HOME}/.config/klanguageoverridesrc.?????? rwl -> @{HOME}/.config/#[0-9]*,
+  owner @{HOME}/.config/klanguageoverridesrc.lock rwk,
+
diff --git a/etc/apparmor.d/abstractions/kerberosclient b/etc/apparmor.d/abstractions/kerberosclient
new file mode 100644 (file)
index 0000000..5b79e3d
--- /dev/null
@@ -0,0 +1,34 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009-2011 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # files required by kerberos client programs
+  /usr/lib{,32,64}/krb5/plugins/libkrb5/ r,
+  /usr/lib{,32,64}/krb5/plugins/libkrb5/* mr,
+  /usr/lib/@{multiarch}/krb5/plugins/libkrb5/ r,
+  /usr/lib/@{multiarch}/krb5/plugins/libkrb5/* mr,
+
+  /usr/lib{,32,64}/krb5/plugins/preauth/ r,
+  /usr/lib{,32,64}/krb5/plugins/preauth/* mr,
+  /usr/lib/@{multiarch}/krb5/plugins/preauth/ r,
+  /usr/lib/@{multiarch}/krb5/plugins/preauth/* mr,
+
+  /etc/krb5.keytab            rk,
+  /etc/krb5.conf              r,
+  /etc/krb5.conf.d/           r,
+  /etc/krb5.conf.d/*          r,
+
+  # config files found via strings on libs
+  /etc/krb.conf               r,
+  /etc/krb.realms             r,
+  /etc/srvtab                 r,
+
+  # credential caches
+  /tmp/krb5cc* r,
diff --git a/etc/apparmor.d/abstractions/ldapclient b/etc/apparmor.d/abstractions/ldapclient
new file mode 100644 (file)
index 0000000..0c52728
--- /dev/null
@@ -0,0 +1,24 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2011 Novell/SUSE
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # files required by LDAP clients (e.g. nss_ldap/pam_ldap)
+  /etc/ldap.conf            r,
+  /etc/ldap.secret          r,
+  /etc/openldap/*           r,
+  /etc/openldap/cacerts/*   r,
+
+  # SASL plugins and config
+  /etc/sasl2/*              r,
+  /usr/lib{,32,64}/sasl2/*  r,
+
+  # local LDAP name service daemon
+  /{,var/}run/nslcd/socket  rw,
+
+  #include <abstractions/ssl_certs>
diff --git a/etc/apparmor.d/abstractions/libpam-systemd b/etc/apparmor.d/abstractions/libpam-systemd
new file mode 100644 (file)
index 0000000..76ee869
--- /dev/null
@@ -0,0 +1,19 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2015-2016 Simon Deziel
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+#include <abstractions/dbus-strict>
+
+  # libpam-systemd notifies systemd-logind about session logins/logouts
+  dbus send
+    bus=system
+    path=/org/freedesktop/login1
+    interface=org.freedesktop.login1.Manager
+    member={CreateSession,ReleaseSession},
diff --git a/etc/apparmor.d/abstractions/likewise b/etc/apparmor.d/abstractions/likewise
new file mode 100644 (file)
index 0000000..7482842
--- /dev/null
@@ -0,0 +1,13 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2009 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  /tmp/.lwidentity/pipe       rw,
+  /var/lib/likewise-open/lwidentity_privileged/pipe rw,
diff --git a/etc/apparmor.d/abstractions/mdns b/etc/apparmor.d/abstractions/mdns
new file mode 100644 (file)
index 0000000..14c31b8
--- /dev/null
@@ -0,0 +1,14 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # mdnsd
+  /etc/mdns.allow r,
+  /etc/nss_mdns.conf r,
+  /{,var/}run/mdnsd w,
diff --git a/etc/apparmor.d/abstractions/mesa b/etc/apparmor.d/abstractions/mesa
new file mode 100644 (file)
index 0000000..be699c7
--- /dev/null
@@ -0,0 +1,17 @@
+# vim:syntax=apparmor
+# Rules for Mesa implementation of the OpenGL API
+
+  # System files
+  /dev/dri/ r, # libGLX_mesa.so calls drmGetDevice2()
+
+  # Needed to check if the kernel supports the i915 perf interface
+  # (src/intel/perf/gen_perf.c, load_oa_metrics())
+  @{PROC}/sys/dev/i915/perf_stream_paranoid r,
+
+  # User files
+  owner @{HOME}/.cache/ w, # if user clears all caches
+  owner @{HOME}/.cache/mesa_shader_cache/ w,
+  owner @{HOME}/.cache/mesa_shader_cache/index rw,
+  owner @{HOME}/.cache/mesa_shader_cache/??/ w,
+  owner @{HOME}/.cache/mesa_shader_cache/??/* rwk,
+
diff --git a/etc/apparmor.d/abstractions/mir b/etc/apparmor.d/abstractions/mir
new file mode 100644 (file)
index 0000000..16c57ec
--- /dev/null
@@ -0,0 +1,17 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2015 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # mir libraries sometimes do not have a lib prefix
+  # see LP: #1422521
+  /usr/lib/@{multiarch}/mir/*.so* mr,
+  /usr/lib/@{multiarch}/mir/**/*.so* mr,
+
+  # unprivileged mir socket for clients
diff --git a/etc/apparmor.d/abstractions/mozc b/etc/apparmor.d/abstractions/mozc
new file mode 100644 (file)
index 0000000..f736bc2
--- /dev/null
@@ -0,0 +1,12 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2016 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  unix (connect, receive, send) type=stream peer=(addr="@tmp/.mozc.*"),
diff --git a/etc/apparmor.d/abstractions/mysql b/etc/apparmor.d/abstractions/mysql
new file mode 100644 (file)
index 0000000..fed759b
--- /dev/null
@@ -0,0 +1,15 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#    Copyright (C) 2013 Christian Boltz
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+   /var/lib/mysql{,d}/mysql{,d}.sock rw,
+   /{var/,}run/mysql{,d}/mysql{,d}.sock rw,
+   /usr/share/{mysql,mysql-community-server,mariadb}/charsets/ r,
+   /usr/share/{mysql,mysql-community-server,mariadb}/charsets/*.xml r,
diff --git a/etc/apparmor.d/abstractions/nameservice b/etc/apparmor.d/abstractions/nameservice
new file mode 100644 (file)
index 0000000..357eaa8
--- /dev/null
@@ -0,0 +1,148 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009-2011 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # Many programs wish to perform nameservice-like operations, such as
+  # looking up users by name or id, groups by name or id, hosts by name
+  # or IP, etc. These operations may be performed through files, dns,
+  # NIS, NIS+, LDAP, hesiod, wins, etc. Allow them all here.
+  /etc/group              r,
+  /etc/host.conf          r,
+  /etc/hosts              r,
+  /etc/nsswitch.conf      r,
+  /etc/gai.conf           r,
+  /etc/passwd             r,
+  /etc/protocols          r,
+
+  # libtirpc (used for NIS/YP login) needs this
+  /etc/netconfig r,
+
+  # When using libnss-extrausers, the passwd and group files are merged from
+  # an alternate path
+  /var/lib/extrausers/group  r,
+  /var/lib/extrausers/passwd r,
+
+  # NSS records from systemd-userdbd.service
+  /{,var/}run/systemd/userdb/ r,
+  /{,var/}run/systemd/userdb/io.systemd.{NameServiceSwitch,Multiplexer,DynamicUser,Home} r,
+  @{PROC}/sys/kernel/random/boot_id r,
+
+  # When using sssd, the passwd and group files are stored in an alternate path
+  # and the nss plugin also needs to talk to a pipe
+  /var/lib/sss/mc/group   r,
+  /var/lib/sss/mc/initgroups r,
+  /var/lib/sss/mc/passwd  r,
+  /var/lib/sss/pipes/nss  rw,
+
+  /etc/resolv.conf        r,
+  # On systems where /etc/resolv.conf is managed programmatically, it is
+  # a symlink to /{,var/}run/(whatever program is managing it)/resolv.conf.
+  /{,var/}run/{resolvconf,NetworkManager,systemd/resolve,connman,netconfig}/resolv.conf r,
+  /etc/resolvconf/run/resolv.conf r,
+  /{,var/}run/systemd/resolve/stub-resolv.conf r,
+
+  /etc/samba/lmhosts      r,
+  /etc/services           r,
+  # db backend
+  /var/lib/misc/*.db      r,
+  # The Name Service Cache Daemon can cache lookups, sometimes leading
+  # to vast speed increases when working with network-based lookups.
+  /{,var/}run/.nscd_socket   rw,
+  /{,var/}run/nscd/socket    rw,
+  /{var/db,var/cache,var/lib,var/run,run}/nscd/{passwd,group,services,hosts}    r,
+  # nscd renames and unlinks files in it's operation that clients will
+  # have open
+  /{,var/}run/nscd/db*  rmix,
+
+  # The nss libraries are sometimes used in addition to PAM; make sure
+  # they are available
+  /{usr/,}lib{,32,64}/libnss_*.so*      mr,
+  /{usr/,}lib/@{multiarch}/libnss_*.so*      mr,
+  /etc/default/nss               r,
+
+  # avahi-daemon is used for mdns4 resolution
+  /{,var/}run/avahi-daemon/socket rw,
+
+  # libnl-3-200 via libnss-gw-name
+  @{PROC}/@{pid}/net/psched r,
+  /etc/libnl-*/classid r,
+
+  # nis
+  #include <abstractions/nis>
+
+  # ldap
+  #include <abstractions/ldapclient>
+
+  # winbind
+  #include <abstractions/winbind>
+
+  # likewise
+  #include <abstractions/likewise>
+
+  # mdnsd
+  #include <abstractions/mdns>
+
+  # kerberos
+  #include <abstractions/kerberosclient>
+
+  # resolve
+  #
+  # Allow access to the safe members of the systemd-resolved D-Bus API:
+  #
+  #   https://www.freedesktop.org/wiki/Software/systemd/resolved/
+  #
+  # This API may be used directly over the D-Bus system bus or it may be used
+  # indirectly via the nss-resolve plugin:
+  #
+  #   https://www.freedesktop.org/software/systemd/man/nss-resolve.html
+  #
+  #include <abstractions/dbus-strict>
+  dbus send
+       bus=system
+       path="/org/freedesktop/resolve1"
+       interface="org.freedesktop.resolve1.Manager"
+       member="Resolve{Address,Hostname,Record,Service}"
+       peer=(name="org.freedesktop.resolve1"),
+
+  # libnss-systemd
+  #
+  #   https://systemd.io/USER_GROUP_API/
+  #   https://systemd.io/USER_RECORD/
+  #   https://www.freedesktop.org/software/systemd/man/nss-systemd.html
+  #
+  # Allow User/Group lookups via common VarLink socket APIs. Applications need
+  # to either consult all of them or the io.systemd.Multiplexer frontend.
+  /run/systemd/userdb/ r,
+  /run/systemd/userdb/io.systemd.Multiplexer rw,
+  /run/systemd/userdb/io.systemd.DynamicUser rw,        # systemd-exec users
+  /run/systemd/userdb/io.systemd.Home rw,               # systemd-home dirs
+  /run/systemd/userdb/io.systemd.NameServiceSwitch rw,  # UNIX/glibc NSS
+
+  # Also allow lookups for systemd-exec's DynamicUsers via D-Bus
+  #   https://www.freedesktop.org/software/systemd/man/systemd.exec.html
+  dbus send
+       bus=system
+       path="/org/freedesktop/systemd1"
+       interface="org.freedesktop.systemd1.Manager"
+       member="{GetDynamicUsers,LookupDynamicUserByName,LookupDynamicUserByUID}"
+       peer=(name="org.freedesktop.systemd1"),
+
+  # TCP/UDP network access
+  network inet  stream,
+  network inet6 stream,
+  network inet  dgram,
+  network inet6 dgram,
+
+  # TODO: adjust when support finer-grained netlink rules
+  # Netlink raw needed for nscd
+  network netlink raw,
+
+  # interface details
+  @{PROC}/@{pid}/net/route r,
diff --git a/etc/apparmor.d/abstractions/nis b/etc/apparmor.d/abstractions/nis
new file mode 100644 (file)
index 0000000..690e679
--- /dev/null
@@ -0,0 +1,15 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # NIS rules
+  /var/yp/binding/*           r,
+  # portmapper may ask root processes to do nis/ldap at low ports
+  capability net_bind_service,
+
diff --git a/etc/apparmor.d/abstractions/nvidia b/etc/apparmor.d/abstractions/nvidia
new file mode 100644 (file)
index 0000000..b01ef8b
--- /dev/null
@@ -0,0 +1,28 @@
+# vim:syntax=apparmor
+# nvidia access requirements
+  
+  # configuration queries
+  capability ipc_lock,
+
+  /usr/share/nvidia/nvidia-application-profiles* r,
+
+  # libvdpau config file for nvidia workarounds
+  /etc/vdpau_wrapper.cfg r,
+
+  # device files
+  /dev/nvidiactl rw,
+  /dev/nvidia-modeset rw,
+  /dev/nvidia[0-9]* rw,
+
+  @{PROC}/interrupts r,
+  @{PROC}/sys/vm/max_map_count r,
+  @{PROC}/driver/nvidia/params r,
+  @{PROC}/modules r,
+
+  @{sys}/devices/system/memory/block_size_bytes r,
+
+  owner @{HOME}/.nv/ w,
+  owner @{HOME}/.nv/GLCache/ rw,
+  owner @{HOME}/.nv/GLCache/** rwk,
+
+  unix (send, receive) type=dgram peer=(addr="@nvidia[0-9a-f]*"),
diff --git a/etc/apparmor.d/abstractions/opencl b/etc/apparmor.d/abstractions/opencl
new file mode 100644 (file)
index 0000000..32a21b2
--- /dev/null
@@ -0,0 +1,9 @@
+# vim:syntax=apparmor
+# OpenCL access requirements
+
+  # TODO: use conditionals to select allowed implementations
+  #include <abstractions/opencl-intel>
+  #include <abstractions/opencl-mesa>
+  #include <abstractions/opencl-nvidia>
+  #include <abstractions/opencl-pocl>
+
diff --git a/etc/apparmor.d/abstractions/opencl-common b/etc/apparmor.d/abstractions/opencl-common
new file mode 100644 (file)
index 0000000..0ad3d55
--- /dev/null
@@ -0,0 +1,10 @@
+# vim:syntax=apparmor
+# implementation-independent OpenCL access requirements
+
+  # System files
+
+  /etc/OpenCL/** r,
+  @{sys}/bus/pci/devices/ r, # libpocl.so -> libhwlock.so, libnvidia-opencl.so, beignet/libcl.so -> libdrm_intel.so
+  @{sys}/devices/system/node/ r, # for clGetPlatformIDs() from libOpenCL.so
+  @{sys}/devices/system/node/node[0-9]*/meminfo r, # for clGetPlatformIDs() from libOpenCL.so
+
diff --git a/etc/apparmor.d/abstractions/opencl-intel b/etc/apparmor.d/abstractions/opencl-intel
new file mode 100644 (file)
index 0000000..353eeca
--- /dev/null
@@ -0,0 +1,17 @@
+# vim:syntax=apparmor
+# OpenCL access requirements for Intel implementation
+
+  #include <abstractions/opencl-common>
+
+  # for libcl.so (libOpenCL.so -> beignet/libcl.so calls XOpenDisplay())
+  #include <abstractions/X>
+
+  # for libOpenCL.so -> beignet/libcl.so -> libpciaccess.so
+  #include <abstractions/dri-enumerate>
+
+  # System files
+
+  /dev/dri/card[0-9]* rw, # beignet/libcl.so
+  @{sys}/devices/pci[0-9]*/**/{class,config,resource,revision} r, # libcl.so -> libdrm_intel.so -> libpciaccess.so (move to dri-enumerate ?)
+  /usr/lib/@{multiarch}/beignet/** r,
+
diff --git a/etc/apparmor.d/abstractions/opencl-mesa b/etc/apparmor.d/abstractions/opencl-mesa
new file mode 100644 (file)
index 0000000..9d7f82b
--- /dev/null
@@ -0,0 +1,20 @@
+# vim:syntax=apparmor
+# OpenCL access requirements for Mesa implementation
+
+  #include <abstractions/opencl-common>
+
+  # Additional libraries
+
+  /usr/lib/@{multiarch}/gallium-pipe/*.so mr, # libMesaOpenCL.so
+  /usr/lib{,64}/gallium-pipe/*.so mr, # libMesaOpenCL.so on openSUSE
+
+  # System files
+
+  /dev/dri/ r, # libMesaOpenCL.so -> libdrm.so
+  /dev/dri/render* rw, # libMesaOpenCL.so
+  /etc/drirc r, # libMesaOpenCL.so
+
+  # User files
+
+  owner @{HOME}/.cache/mesa_shader_cache/{,**} rw, # libMesaOpenCL.so -> pipe_nouveau.so
+
diff --git a/etc/apparmor.d/abstractions/opencl-nvidia b/etc/apparmor.d/abstractions/opencl-nvidia
new file mode 100644 (file)
index 0000000..8a4764e
--- /dev/null
@@ -0,0 +1,30 @@
+# vim:syntax=apparmor
+# OpenCL access requirements for NVIDIA implementation
+
+  #include <abstractions/nvidia>
+  #include <abstractions/opencl-common>
+
+  # Executables
+
+  # https://github.com/NVIDIA/nvidia-modprobe
+  # This setuid executable is used to create various device files and load the
+  # the nvidia kernel module.
+  /usr/bin/nvidia-modprobe Px -> nvidia_modprobe,
+
+  # System files
+
+  # libnvidia-opencl.so rules:
+  /dev/nvidia-uvm rw,
+  /dev/nvidia-uvm-tools rw,
+  @{sys}/devices/pci[0-9]*/**/config r,
+  @{sys}/devices/system/memory/block_size_bytes r,
+  /usr/share/nvidia/** r,
+  @{PROC}/devices r,
+  @{PROC}/sys/vm/mmap_min_addr r,
+
+  # User files
+
+  owner @{HOME}/.nv/ComputeCache/ w,
+  owner @{HOME}/.nv/ComputeCache/** rw,
+  owner @{HOME}/.nv/ComputeCache/index rwk,
+
diff --git a/etc/apparmor.d/abstractions/opencl-pocl b/etc/apparmor.d/abstractions/opencl-pocl
new file mode 100644 (file)
index 0000000..054689a
--- /dev/null
@@ -0,0 +1,76 @@
+# vim:syntax=apparmor
+# OpenCL access requirements for POCL implementation
+
+  #include <abstractions/opencl-common>
+
+  # Executables
+
+  /usr/bin/{,@{multiarch}-}ld.bfd Cx -> opencl_pocl_ld,
+  /usr/lib/llvm-[0-9]*.[0-9]*/bin/clang Cx -> opencl_pocl_clang,
+
+  # System files
+
+  / r, # libpocl.so -> libhwloc.so
+  @{sys}/bus/pci/slots/ r, # libpocl.so -> hwloc_topology_load() from libhwloc.so
+  @{sys}/bus/{cpu,node}/devices/ r, # libpocl.so -> libhwlock.so
+  @{sys}/class/net/ r, # libpocl.so -> hwloc_pci_traverse_lookuposdevices_cb() from libhwloc.so
+  @{sys}/devices/pci[0-9]*/**/ r, # for libpocl ->  hwloc_linux_lookup_block_class() from libhwloc.so
+  @{sys}/devices/pci[0-9]*/**/block/*/dev r, # libpocl.so -> hwloc_linux_lookup_host_block_class() from libhwloc.so
+  @{sys}/devices/pci[0-9]*/**/{class,local_cpus} r, # libpocl.so -> libhwlock.so
+  @{sys}/devices/pci[0-9]*/*/net/*/address r, # libpocl.so ->  hwloc_pci_traverse_lookuposdevices_cb() from libhwloc.so
+  @{sys}/devices/system/cpu/ r, # libpocl.so -> libnuma.so
+  @{sys}/devices/system/cpu/cpu[0-9]*/cache/index[0-9]*/* r, # libpocl.so -> libhwloc.so
+  @{sys}/devices/system/cpu/cpu[0-9]*/online r, # libpocl.so -> libhwlock.so
+  @{sys}/devices/system/cpu/cpu[0-9]*/topology/* r, # *_siblings, physical_package_id and lot's of others, for libpocl.so -> libhwloc.so
+  @{sys}/devices/system/cpu/cpufreq/policy[0-9]*/* r, # for clGetPlatformIDs() from libpocl.so
+  @{sys}/devices/system/cpu/possible r, # libpocl.so -> libhwloc.so
+  @{sys}/devices/virtual/dmi/id/{,*} r, # libpocl.so -> libhwloc.so
+  @{sys}/fs/cgroup/cpuset/cpuset.{cpus,mems} r, # libpocl.so -> libhwloc.so
+  @{sys}/kernel/mm/hugepages{/,/**} r, # libpocl.so -> libhwloc.so
+  /usr/share/pocl/** r,
+  /{,var/}run/udev/data/*:* r, # libpocl.so -> hwloc_linux_block_class_fillinfos() from libhwloc.so
+
+  # User files
+
+  owner @{HOME}/.cache/pocl/ w,
+  owner @{HOME}/.cache/pocl/kcache/ w,
+  owner @{HOME}/.cache/pocl/kcache/** rw,
+  owner @{HOME}/.cache/pocl/kcache/**.so mrw, # dangerous!
+  owner @{PROC}/@{pid}/{cgroup,cpuset,status} r, # libpocl.so -> libhwloc.so, status for libpocl.so -> libnuma.so
+
+  # Child profiles
+
+  profile opencl_pocl_ld {
+    #include <abstractions/base>
+
+    # Main executables
+
+    /usr/bin/{,@{multiarch}-}ld.bfd mr,
+
+    # User files
+
+    owner @{HOME}/.cache/pocl/kcache/tempfile*.so rw,
+    owner @{HOME}/.cache/pocl/kcache/**.so.o r,
+  }
+
+  profile opencl_pocl_clang {
+    #include <abstractions/base>
+
+    # Main executables
+
+    /usr/lib/llvm-[0-9]*.[0-9]*/bin/clang mr,
+
+    # Additional executables
+
+    /usr/bin/{,@{multiarch}-}ld.bfd ix, # TODO: transfer to opencl_ld child profile?
+
+    # System files
+
+    /etc/debian-version r,
+    /etc/lsb-release r,
+
+    # User files
+
+    owner @{HOME}/.cache/pocl/kcache/*/*/*/*/*.so{,.o} rw,
+  }
+
diff --git a/etc/apparmor.d/abstractions/openssl b/etc/apparmor.d/abstractions/openssl
new file mode 100644 (file)
index 0000000..697da7a
--- /dev/null
@@ -0,0 +1,14 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2011 Novell/SUSE
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  /etc/ssl/openssl.cnf r,
+  /usr/share/ssl/openssl.cnf r,
+  @{PROC}/sys/crypto/fips_enabled r,
+
diff --git a/etc/apparmor.d/abstractions/orbit2 b/etc/apparmor.d/abstractions/orbit2
new file mode 100644 (file)
index 0000000..b8df9df
--- /dev/null
@@ -0,0 +1,5 @@
+# vim:syntax=apparmor
+# orbit2 permissions
+
+  # system library
+  /usr/lib/orbit-2.0/*.so mr,
diff --git a/etc/apparmor.d/abstractions/p11-kit b/etc/apparmor.d/abstractions/p11-kit
new file mode 100644 (file)
index 0000000..84b7b11
--- /dev/null
@@ -0,0 +1,27 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  /etc/pkcs11/ r,
+  /etc/pkcs11/pkcs11.conf r,
+  /etc/pkcs11/modules/ r,
+  /etc/pkcs11/modules/* r,
+
+  /usr/lib{,32,64}/pkcs11/*.so mr,
+  /usr/lib/@{multiarch}/pkcs11/*.so mr,
+
+  /usr/share/p11-kit/modules/  r,
+  /usr/share/p11-kit/modules/* r,
+
+  # gnome-keyring pkcs11 module
+  owner /{,var/}run/user/[0-9]*/keyring*/pkcs11 rw,
+
+  # p11-kit also supports reading user configuration from ~/.pkcs11 depending
+  # on how /etc/pkcs11/pkcs11.conf is configured. This should generally not be
+  # included in this abstraction.
diff --git a/etc/apparmor.d/abstractions/perl b/etc/apparmor.d/abstractions/perl
new file mode 100644 (file)
index 0000000..0e20aeb
--- /dev/null
@@ -0,0 +1,23 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # a few files typically required for perl scripts
+  /usr/bin/perl                  rmix,
+  /usr/bin/perl[0-9].[0-9].[0-9] rmix,
+
+  /usr/lib{,32,64}/perl5/**                    r,
+  /usr/lib{,32,64}/perl{,5}/**.so*             mr,
+  /usr/lib/@{multiarch}/perl{,5,-base}/**            r,
+  /usr/lib/@{multiarch}/perl{,5,-base}/[0-9]*/**.so* mr,
+
+  /usr/share/perl/**             r,
+  /usr/share/perl5/**            r,
+  /etc/perl/**                   r,
diff --git a/etc/apparmor.d/abstractions/php b/etc/apparmor.d/abstractions/php
new file mode 100644 (file)
index 0000000..4aba241
--- /dev/null
@@ -0,0 +1,39 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#    Copyright (C) 2009-2010 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # shared snippets for config files
+  /etc/php{,5,7}/**/ r,
+  /etc/php{,5,7}/**.ini r,
+
+  # Xlibs
+  /usr/X11R6/lib{,32,64}/lib*.so* mr,
+  # php extensions
+  /usr/lib{64,}/php{,5,7}/*/*.so mr,
+
+  # ICU (unicode support) data tables
+  /usr/share/icu/*/*.dat r,
+
+  # php session mmap socket
+  /var/lib/php{,5,7}/session_mm_* rwlk,
+  # file based session handler
+  /var/lib/php{,5,7}/sess_* rwlk,
+  /var/lib/php{,5,7}/sessions/* rwlk,
+
+  # php libraries
+  /usr/share/php{,5,7}/ r,
+  /usr/share/php{,5,7}/** mr,
+
+  # MySQL extension
+  /usr/share/mysql/** r,
+
+  # Zend opcache
+  /tmp/.ZendSem.* rwlk,
diff --git a/etc/apparmor.d/abstractions/php5 b/etc/apparmor.d/abstractions/php5
new file mode 100644 (file)
index 0000000..9f5355f
--- /dev/null
@@ -0,0 +1,3 @@
+#backwards compatibility include, actual abstraction moved from php5 to php
+
+#include <abstractions/php>
diff --git a/etc/apparmor.d/abstractions/postfix-common b/etc/apparmor.d/abstractions/postfix-common
new file mode 100644 (file)
index 0000000..3dc599a
--- /dev/null
@@ -0,0 +1,37 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2005 Novell/SUSE
+#    Copyright (C) 2015 Canonical, Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+# used with postfix/*
+
+
+  capability            setuid,
+  capability            setgid,
+  capability            sys_chroot,
+
+  # postfix's master can send us signals
+  signal receive peer=/usr/lib/postfix/master,
+  signal receive peer=postfix-master,
+
+  unix (send, receive) peer=(label=/usr/lib/postfix/master),
+  unix (send, receive) peer=(label=postfix-master),
+
+  /etc/mailname         r,
+  /etc/postfix/*.cf     r,
+  /etc/postfix/*.db     rk,
+  @{PROC}/net/if_inet6  r,
+  /usr/lib/postfix/*.so mr,
+  /usr/lib{,32,64}/sasl2/*    mr,
+  /usr/lib{,32,64}/sasl2/     r,
+  /usr/lib/@{multiarch}/sasl2/*      mr,
+  /usr/lib/@{multiarch}/sasl2/       r,
+
+  /var/spool/postfix/etc/*        r,
+  /var/spool/postfix/lib/lib*.so* mr,
+  /var/spool/postfix/lib/@{multiarch}/lib*.so* mr,
diff --git a/etc/apparmor.d/abstractions/private-files b/etc/apparmor.d/abstractions/private-files
new file mode 100644 (file)
index 0000000..09f6d9b
--- /dev/null
@@ -0,0 +1,47 @@
+# vim:syntax=apparmor
+# privacy-violations contains rules for common files that you want to
+# explicitly deny access
+
+  # privacy violations (don't audit files under $HOME otherwise get a
+  # lot of false positives when reading contents of directories)
+  deny @{HOME}/.*history mrwkl,
+  deny @{HOME}/.fetchmail* mrwkl,
+  deny @{HOME}/.mutt** mrwkl,
+  deny @{HOME}/.viminfo* mrwkl,
+  deny @{HOME}/.*~ mrwkl,
+  deny @{HOME}/.*.swp mrwkl,
+  deny @{HOME}/.*~1~ mrwkl,
+  deny @{HOME}/.*.bak mrwkl,
+
+  # special attention to (potentially) executable files
+  audit deny @{HOME}/bin/{,**} wl,
+  audit deny @{HOME}/.config/ w,
+  audit deny @{HOME}/.config/autostart/{,**} wl,
+  audit deny @{HOME}/.config/upstart/{,**} wl,
+  audit deny @{HOME}/.init/{,**} wl,
+  audit deny @{HOME}/.kde{,4}/ w,
+  audit deny @{HOME}/.kde{,4}/Autostart/{,**} wl,
+  audit deny @{HOME}/.kde{,4}/env/{,**} wl,
+  audit deny @{HOME}/.local/{,share/} w,
+  audit deny @{HOME}/.local/share/thumbnailers/{,**} wl,
+  audit deny @{HOME}/.pki/ w,
+  audit deny @{HOME}/.pki/nssdb/{,*.so{,.[0-9]*}} wl,
+
+  # don't allow reading/updating of run control files
+  deny @{HOME}/.*rc mrk,
+  audit deny @{HOME}/.*rc wl,
+
+  # bash
+  deny @{HOME}/.bash* mrk,
+  audit deny @{HOME}/.bash* wl,
+  deny @{HOME}/.inputrc mrk,
+  audit deny @{HOME}/.inputrc wl,
+
+  # sh/dash/csh/tcsh/pdksh/zsh
+  deny @{HOME}/.{,z}profile* mrk,
+  audit deny @{HOME}/.{,z}profile* wl,
+  deny @{HOME}/.{,z}log{in,out} mrk,
+  audit deny @{HOME}/.{,z}log{in,out} wl,
+
+  deny @{HOME}/.zshenv mrk,
+  audit deny @{HOME}/.zshenv wl,
diff --git a/etc/apparmor.d/abstractions/private-files-strict b/etc/apparmor.d/abstractions/private-files-strict
new file mode 100644 (file)
index 0000000..3193431
--- /dev/null
@@ -0,0 +1,25 @@
+# vim:syntax=apparmor
+# privacy-violations-strict contains additional rules for sensitive
+# files that you want to explicitly deny access
+
+  #include <abstractions/private-files>
+
+  # potentially extremely sensitive files
+  audit deny @{HOME}/.aws/{,**} mrwkl,
+  audit deny @{HOME}/.gnupg/{,**} mrwkl,
+  audit deny @{HOME}/.ssh/{,**} mrwkl,
+  audit deny @{HOME}/.gnome2_private/{,**} mrwkl,
+  audit deny @{HOME}/.gnome2/ w,
+  audit deny @{HOME}/.gnome2/keyrings/{,**} mrwkl,
+  # don't allow access to any gnome-keyring modules
+  audit deny /{,var/}run/user/[0-9]*/keyring** mrwkl,
+  audit deny @{HOME}/.mozilla/{,**} mrwkl,
+  audit deny @{HOME}/.config/ w,
+  audit deny @{HOME}/.config/chromium/{,**} mrwkl,
+  audit deny @{HOME}/.config/evolution/{,**} mrwkl,
+  audit deny @{HOME}/.evolution/{,**} mrwkl,
+  audit deny @{HOME}/.{,mozilla-}thunderbird/{,**} mrwkl,
+  audit deny @{HOME}/.kde{,4}/{,share/,share/apps/} w,
+  audit deny @{HOME}/.kde{,4}/share/apps/kmail{,2}/{,**} mrwkl,
+  audit deny @{HOME}/.kde{,4}/share/apps/kwallet/{,**} mrwkl,
+
diff --git a/etc/apparmor.d/abstractions/python b/etc/apparmor.d/abstractions/python
new file mode 100644 (file)
index 0000000..925161c
--- /dev/null
@@ -0,0 +1,37 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#    Copyright (C) 2009 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  /usr/lib{,32,64}/python{2.[4-7],3.[0-9]}/**.{pyc,so}           mr,
+  /usr/lib{,32,64}/python{2.[4-7],3.[0-9]}/**.{egg,py,pth}       r,
+  /usr/lib{,32,64}/python{2.[4-7],3.[0-9]}/{site,dist}-packages/ r,
+  /usr/lib{,32,64}/python3.[0-9]/lib-dynload/*.so            mr,
+
+  /usr/local/lib{,32,64}/python{2.[4-7],3,3.[0-9]}/**.{pyc,so}           mr,
+  /usr/local/lib{,32,64}/python{2.[4-7],3,3.[0-9]}/**.{egg,py,pth}       r,
+  /usr/local/lib{,32,64}/python{2.[4-7],3,3.[0-9]}/{site,dist}-packages/ r,
+  /usr/local/lib{,32,64}/python3.[0-9]/lib-dynload/*.so            mr,
+
+  # Site-wide configuration
+  /etc/python{2.[4-7],3.[0-9]}/** r,
+
+  # shared python paths
+  /usr/share/{pyshared,pycentral,python-support}/**      r,
+  /{var,usr}/lib/{pyshared,pycentral,python-support}/**  r,
+  /usr/lib/{pyshared,pycentral,python-support}/**.so     mr,
+  /var/lib/{pyshared,pycentral,python-support}/**.pyc    mr,
+  /usr/lib/python3/dist-packages/**.so          mr,
+
+  # wx paths
+  /usr/lib/wx/python/*.pth r,
+
+  # python build configuration and headers
+  /usr/include/python{2.[4-7],3.[0-9]}*/pyconfig.h r,
diff --git a/etc/apparmor.d/abstractions/qt5 b/etc/apparmor.d/abstractions/qt5
new file mode 100644 (file)
index 0000000..66a574b
--- /dev/null
@@ -0,0 +1,22 @@
+# vim:syntax=apparmor
+# Common rules for Qt5-based applications
+
+  # Additional libraries
+
+  /usr/lib{,64,/@{multiarch}}/qt5/plugins/**.so mr,
+  /usr/lib{,64,/@{multiarch}}/qt5/qml/**.so mr,
+  /usr/lib{,64,/@{multiarch}}/qt5/qml/**.{qmlc,jsc} mr, # Precompiled QML/JavaScript modules
+
+  # System files
+
+  /etc/xdg/QtProject/qtlogging.ini r,
+  /usr/share/qt5/translations/*.qm r,
+  /usr/lib{,64,/@{multiarch}}/qt5/plugins/** r,
+  /usr/lib{,64,/@{multiarch}}/qt5/qml/** r,
+
+  # User files
+
+  owner @{HOME}/.config/QtProject/qtlogging.ini r,
+  owner @{HOME}/.config/QtProject.conf r, # common settings for QFileDialog, etc (application might need write access)
+  owner @{HOME}/.cache/qt_compose_cache_{little,big}_endian_* r, # for "platforminputcontexts" plugins
+
diff --git a/etc/apparmor.d/abstractions/qt5-compose-cache-write b/etc/apparmor.d/abstractions/qt5-compose-cache-write
new file mode 100644 (file)
index 0000000..38cb234
--- /dev/null
@@ -0,0 +1,8 @@
+# vim:syntax=apparmor
+# Allow writing cache for Qt5 "platforminputcontexts" plugins
+
+  # User files
+
+  owner @{HOME}/.cache/qt_compose_cache_{little,big}_endian_* rwl -> @{HOME}/.cache/#[0-9]*[0-9],
+  owner @{HOME}/.cache/#[0-9]*[0-9] rw, # QSaveFile (anonymous shared memory)
+
diff --git a/etc/apparmor.d/abstractions/qt5-settings-write b/etc/apparmor.d/abstractions/qt5-settings-write
new file mode 100644 (file)
index 0000000..07d1097
--- /dev/null
@@ -0,0 +1,11 @@
+# vim:syntax=apparmor
+# Allow writing shared settings for Qt-based applications
+
+  # User files
+
+  owner @{HOME}/.config/#[0-9]*[0-9] rw,
+  owner @{HOME}/.config/QtProject.conf rwl -> @{HOME}/.config/#[0-9]*[0-9],
+  # for temporary files like QtProject.conf.Aqrgeb
+  owner @{HOME}/.config/QtProject.conf.?????? rwl -> @{HOME}/.config/#[0-9]*[0-9],
+  owner @{HOME}/.config/QtProject.conf.lock rwk,
+
diff --git a/etc/apparmor.d/abstractions/recent-documents-write b/etc/apparmor.d/abstractions/recent-documents-write
new file mode 100644 (file)
index 0000000..d95febb
--- /dev/null
@@ -0,0 +1,10 @@
+# vim:syntax=apparmor
+# Allow updating recent documents
+
+  # User files
+
+  owner @{HOME}/.local/share/RecentDocuments/ rw,
+  owner @{HOME}/.local/share/RecentDocuments/#[0-9]* rw,
+  owner @{HOME}/.local/share/RecentDocuments/*.desktop rwl -> @{HOME}/.local/share/RecentDocuments/#[0-9]*,
+  owner @{HOME}/.local/share/RecentDocuments/*.lock rwk,
+
diff --git a/etc/apparmor.d/abstractions/ruby b/etc/apparmor.d/abstractions/ruby
new file mode 100644 (file)
index 0000000..ff4ac9f
--- /dev/null
@@ -0,0 +1,21 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#    Copyright (C) 2009 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  /usr/lib{,32,64}/ruby/1.[89]{.[0-9],}/ r,
+  /usr/lib{,32,64}/ruby/1.[89]{.[0-9],}/**.rb r,
+  /usr/lib{,32,64}/ruby/1.[89]{.[0-9],}/*-linux/**.so mr,
+
+  /usr/{,local/}lib{,32,64}/ruby/{site,vendor}_ruby/1.[89]{.[0-9],}/ r,
+  /usr/{,local/}lib{,32,64}/ruby/{site,vendor}_ruby/1.[89]{.[0-9],}/**.rb r,
+  /usr/{,local/}lib{,32,64}/ruby/{site,vendor}_ruby/1.[89]{.[0-9],}/*-linux/**.so mr,
+
+  /usr/lib{,32,64}/ruby/gems/1.[89]{.[0-9],}/ r,
+  /usr/lib{,32,64}/ruby/gems/1.[89]{.[0-9],}/** r,
diff --git a/etc/apparmor.d/abstractions/samba b/etc/apparmor.d/abstractions/samba
new file mode 100644 (file)
index 0000000..1cab730
--- /dev/null
@@ -0,0 +1,27 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2009-2010 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  /etc/samba/* r,
+  /usr/lib*/ldb/*.so mr,
+  /usr/lib*/samba/ldb/*.so mr,
+  /usr/share/samba/*.dat r,
+  /usr/share/samba/codepages/{lowcase,upcase,valid}.dat r,
+  /var/cache/samba/ w,
+  /var/cache/samba/lck/* rwk,
+  /var/lib/samba/** rwk,
+  /var/log/samba/cores/ rw,
+  /var/log/samba/cores/** rw,
+  /var/log/samba/* w,
+  /{,var/}run/samba/ w,
+  /{,var/}run/samba/*.tdb rw,
+
+  # required for clustering
+  /var/lib/ctdb/** rwk,
diff --git a/etc/apparmor.d/abstractions/smbpass b/etc/apparmor.d/abstractions/smbpass
new file mode 100644 (file)
index 0000000..eb4cf26
--- /dev/null
@@ -0,0 +1,13 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2009 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # libpam-smbpass/pam_smbpass.so permissions
+  /var/lib/samba/*.[lt]db rwk,
diff --git a/etc/apparmor.d/abstractions/ssl_certs b/etc/apparmor.d/abstractions/ssl_certs
new file mode 100644 (file)
index 0000000..b5382ec
--- /dev/null
@@ -0,0 +1,40 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2005 Novell/SUSE
+#    Copyright (C) 2010-2011 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  /etc/ssl/ r,
+  /etc/ssl/certs/ r,
+  /etc/ssl/certs/* r,
+  /etc/pki/trust/ r,
+  /etc/pki/trust/* r,
+  /etc/pki/trust/anchors/ r,
+  /etc/pki/trust/anchors/** r,
+  /usr/share/ca-certificates/ r,
+  /usr/share/ca-certificates/** r,
+  /usr/share/ssl/certs/ca-bundle.crt          r,
+  /usr/local/share/ca-certificates/ r,
+  /usr/local/share/ca-certificates/** r,
+  /var/lib/ca-certificates/ r,
+  /var/lib/ca-certificates/** r,
+
+  # acmetool
+  /var/lib/acme/certs/*/chain r,
+  /var/lib/acme/certs/*/cert r,
+
+  # dehydrated
+  /{etc,var/lib}/dehydrated/certs/*/cert*.pem r,
+  /{etc,var/lib}/dehydrated/certs/*/chain*.pem r,
+  /{etc,var/lib}/dehydrated/certs/*/fullchain*.pem r,
+  /{etc,var/lib}/dehydrated/certs/*/ocsp*.der r,
+
+  # certbot
+  /etc/letsencrypt/archive/*/cert*.pem r,
+  /etc/letsencrypt/archive/*/chain*.pem r,
+  /etc/letsencrypt/archive/*/fullchain*.pem r,
diff --git a/etc/apparmor.d/abstractions/ssl_keys b/etc/apparmor.d/abstractions/ssl_keys
new file mode 100644 (file)
index 0000000..84f5c50
--- /dev/null
@@ -0,0 +1,28 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2009 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # private ssl permissions
+
+  # Just include the whole /etc/ssl directory if we should have access to
+  # private keys too
+  /etc/ssl/ r,
+  /etc/ssl/** r,
+
+  # acmetool
+  /var/lib/acme/live/* r,
+  /var/lib/acme/certs/** r,
+  /var/lib/acme/keys/** r,
+
+  # dehydrated
+  /{etc,var/lib}/dehydrated/certs/*/privkey*.pem r,
+
+  # certbot / letsencrypt
+  /etc/letsencrypt/archive/*/privkey*.pem r,
diff --git a/etc/apparmor.d/abstractions/svn-repositories b/etc/apparmor.d/abstractions/svn-repositories
new file mode 100644 (file)
index 0000000..68ac5e0
--- /dev/null
@@ -0,0 +1,52 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # This little snippet should abstract the read/write access to a repository.
+  # it is intended to be included in profiles for svnserve/apache2 and maybe
+  # some repository viewers like trac/viewvc
+
+  # no hooks exec by default; please define whatever you need explicitely.
+
+  /srv/svn/**/conf/* r,
+  /srv/svn/**/format r,
+  /srv/svn/**/db/fs-type r,
+  /srv/svn/**/db/format r,
+
+  # FSFS
+  /srv/svn/**/db/ r,
+  /srv/svn/**/db/uuid r,
+  /srv/svn/**/db/write-lock rwl,
+  /srv/svn/**/db/current rwl,
+  /srv/svn/**/db/current*.tmp rwl,
+  /srv/svn/**/db/revs/ r,
+  /srv/svn/**/db/revs/* rw,
+  /srv/svn/**/db/revprops/ r,
+  /srv/svn/**/db/revprops/* rw,
+  /srv/svn/**/db/transactions/** rw,
+
+  # BDB
+  /srv/svn/**/db/DB_CONFIG       r,
+  /srv/svn/**/db/__db.[0-9]*     rwl,
+  /srv/svn/**/db/log.[0-9]*      rwl,
+  /srv/svn/**/db/nodes           rwl,
+  /srv/svn/**/db/revisions       rwl,
+  /srv/svn/**/db/transactions    rwl,
+  /srv/svn/**/db/copies          rwl,
+  /srv/svn/**/db/changes         rwl,
+  /srv/svn/**/db/representations rwl,
+  /srv/svn/**/db/strings         rwl,
+  /srv/svn/**/db/uuids           rwl,
+  /srv/svn/**/db/locks           rwl,
+  /srv/svn/**/db/lock-tokens     rwl,
+
+  # temp files
+  /tmp/apr* rwl,
+  /var/tmp/apr* rwl,
+  /tmp/report*.tmp rwl,
diff --git a/etc/apparmor.d/abstractions/ubuntu-bittorrent-clients b/etc/apparmor.d/abstractions/ubuntu-bittorrent-clients
new file mode 100644 (file)
index 0000000..fb820c5
--- /dev/null
@@ -0,0 +1,17 @@
+# vim:syntax=apparmor
+#
+# abstraction for allowing graphical bittorrent clients in Ubuntu
+#
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  /usr/bin/azureus Cxr -> sanitized_helper,
+  /usr/bin/bitstormlite Cxr -> sanitized_helper,
+  /usr/bin/btmaketorrentgui Cxr -> sanitized_helper,
+  /usr/bin/deluge{,-gtk,-console} Cxr -> sanitized_helper,
+  /usr/bin/gnome-btdownload Cxr -> sanitized_helper,
+  /usr/bin/kget Cxr -> sanitized_helper,
+  /usr/bin/ktorrent Cxr -> sanitized_helper,
+  /usr/bin/qbittorrent Cxr -> sanitized_helper,
+  /usr/bin/transmission{,-gtk,-qt,-cli} Cxr -> sanitized_helper,
diff --git a/etc/apparmor.d/abstractions/ubuntu-browsers b/etc/apparmor.d/abstractions/ubuntu-browsers
new file mode 100644 (file)
index 0000000..d4438ad
--- /dev/null
@@ -0,0 +1,42 @@
+# vim:syntax=apparmor
+#
+# abstraction for allowing access to graphical browsers in Ubuntu
+#
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  /usr/bin/arora Cx -> sanitized_helper,
+  /usr/bin/conkeror Cx -> sanitized_helper,
+  /usr/bin/dillo Cx -> sanitized_helper,
+  /usr/bin/Dooble Cx -> sanitized_helper,
+  /usr/bin/epiphany Cx -> sanitized_helper,
+  /usr/bin/epiphany-browser Cx -> sanitized_helper,
+  /usr/bin/epiphany-webkit Cx -> sanitized_helper,
+  /usr/lib/fennec-*/fennec Cx -> sanitized_helper,
+  /usr/bin/galeon Cx -> sanitized_helper,
+  /usr/bin/kazehakase Cx -> sanitized_helper,
+  /usr/bin/konqueror Cx -> sanitized_helper,
+  /usr/bin/midori Cx -> sanitized_helper,
+  /usr/bin/netsurf Cx -> sanitized_helper,
+  /usr/bin/prism Cx -> sanitized_helper,
+  /usr/bin/rekonq Cx -> sanitized_helper,
+  /usr/bin/seamonkey Cx -> sanitized_helper,
+  /usr/bin/sensible-browser Pixr,
+
+  /usr/bin/chromium{,-browser} Cx -> sanitized_helper,
+  /usr/lib{,64}/chromium{,-browser}/chromium{,-browser} Cx -> sanitized_helper,
+
+  # this should cover all firefox browsers and versions (including shiretoko
+  # and abrowser)
+  /usr/bin/firefox Cxr -> sanitized_helper,
+  /usr/lib{,64}/firefox*/firefox* Cx -> sanitized_helper,
+
+  # Iceweasel
+  /usr/bin/iceweasel Cxr -> sanitized_helper,
+  /usr/lib/iceweasel/iceweasel Cx -> sanitized_helper,
+
+  # some unpackaged, but popular browsers
+  /usr/lib/icecat-*/icecat Cx -> sanitized_helper,
+  /usr/bin/opera Cx -> sanitized_helper,
+  /opt/google/chrome{,-beta,-unstable}/google-chrome{,-beta,-unstable} Cx -> sanitized_helper,
diff --git a/etc/apparmor.d/abstractions/ubuntu-browsers.d/java b/etc/apparmor.d/abstractions/ubuntu-browsers.d/java
new file mode 100644 (file)
index 0000000..e0a67cf
--- /dev/null
@@ -0,0 +1,118 @@
+# vim:syntax=apparmor
+
+  # Java plugin
+  owner @{HOME}/.java/deployment/deployment.properties k,
+  /etc/java-*/ r,
+  /etc/java-*/** r,
+  /usr/lib/jvm/java-[1-9]{,[0-9]}-openjdk/{,jre/}lib/*/IcedTeaPlugin.so mr,
+  /usr/lib/jvm/java-[1-9]{,[0-9]}-openjdk-{amd64,armel,armhf,i386,powerpc}/{,jre/}lib/*/IcedTeaPlugin.so mr,
+  /usr/lib/jvm/java-[1-9]{,[0-9]}-openjdk/{,jre/}bin/java cx -> browser_openjdk,
+  /usr/lib/jvm/java-[1-9]{,[0-9]}-openjdk-{amd64,armel,armhf,i386,powerpc}/{,jre/}bin/java cx -> browser_openjdk,
+  /usr/lib/jvm/java-*-sun-1.*/jre/bin/java{,_vm} cx -> browser_java,
+  /usr/lib/jvm/java-*-sun-1.*/jre/lib/*/libnp*.so cx -> browser_java,
+  /usr/lib/j2*-ibm/jre/bin/java cx -> browser_java,
+  owner /{,var/}run/user/*/icedteaplugin-*/   rw,
+  owner /{,var/}run/user/*/icedteaplugin-*/** rwk,
+
+  # Profile for the supported OpenJDK in Ubuntu. This doesn't require the
+  # unfortunate workarounds of the proprietary Javas, so have a separate
+  # profile.
+  profile browser_openjdk {
+    #include <abstractions/base>
+    #include <abstractions/fonts>
+    #include <abstractions/gnome>
+    #include <abstractions/kde>
+    #include <abstractions/nameservice>
+    #include <abstractions/ssl_certs>
+    #include <abstractions/user-tmp>
+    #include <abstractions/private-files-strict>
+
+    network inet stream,
+    network inet6 stream,
+    @{PROC}/@{pid}/net/if_inet6 r,
+    @{PROC}/@{pid}/net/ipv6_route r,
+
+    /etc/java-*/ r,
+    /etc/java-*/** r,
+    /etc/lsb-release r,
+    /etc/ssl/certs/java/* r,
+    /etc/timezone r,
+    /etc/writable/timezone r,
+
+    @{PROC}/@{pid}/ r,
+    @{PROC}/@{pid}/fd/ r,
+    @{PROC}/filesystems r,
+    @{sys}/devices/system/cpu/ r,
+    @{sys}/devices/system/cpu/** r,
+    /usr/share/** r,
+    /var/lib/dbus/machine-id r,
+
+    /usr/bin/env ix,
+    /usr/lib/jvm/java-[1-9]{,[0-9]}-openjdk/{,jre/}bin/java ix,
+    /usr/lib/jvm/java-[1-9]{,[0-9]}-openjdk-{amd64,armel,armhf,i386,powerpc}/{,jre/}bin/java ix,
+    /usr/lib/jvm/java-{6,7}-openjdk*/jre/lib/i386/client/classes.jsa m,
+
+    # Why would java need this?
+    deny /usr/bin/gconftool-2 x,
+
+    owner /{,var/}run/user/[0-9]*/icedteaplugin-*-*/[0-9]*-icedteanp-appletviewer-to-plugin rw,
+    owner /{,var/}run/user/[0-9]*/icedteaplugin-*-*/[0-9]*-icedteanp-plugin-{,debug-}to-appletviewer r,
+    owner @{HOME}/ r,
+    owner @{HOME}/** rwk,
+  }
+
+  # Profile for commercial Javas. These need workarounds to work right (eg
+  # Sun's forcing of an executable stack (LP: #535247)).
+  profile browser_java {
+    #include <abstractions/base>
+    #include <abstractions/fonts>
+    #include <abstractions/gnome>
+    #include <abstractions/kde>
+    #include <abstractions/nameservice>
+    #include <abstractions/ssl_certs>
+    #include <abstractions/user-tmp>
+    #include <abstractions/private-files-strict>
+
+    network inet stream,
+    network inet6 stream,
+    @{PROC}/@{pid}/net/if_inet6 r,
+    @{PROC}/@{pid}/net/ipv6_route r,
+    @{PROC}/loadavg r,
+
+    /etc/debian_version r,
+    /etc/java-*/ r,
+    /etc/java-*/** r,
+    /etc/lsb-release r,
+    /etc/ssl/certs/java/* r,
+    /etc/timezone r,
+    /etc/writable/timezone r,
+
+    @{PROC}/@{pid}/ r,
+    @{PROC}/@{pid}/fd/ r,
+    @{PROC}/filesystems r,
+    @{sys}/devices/system/cpu/ r,
+    @{sys}/devices/system/cpu/** r,
+    /usr/share/** r,
+    /var/lib/dbus/machine-id r,
+
+    /usr/bin/env ix,
+    /usr/lib/jvm/java-*-sun-1.*/jre/bin/java{,_vm} ix,
+    /usr/lib/jvm/java-*-sun-1.*/jre/lib/i386/client/classes.jsa m,
+    /usr/lib/j2*-ibm/jre/bin/java ix,
+
+    # noisy, can't write here anyway
+    deny /etc/.java/ w,
+    deny /etc/.java/** w,
+
+    deny /usr/bin/gconftool-2 x,
+
+    owner @{HOME}/ r,
+    owner @{HOME}/** rwk,
+
+    # These are seriously unfortunate, but required due to LP: #535247
+    /etc/passwd m,
+    owner @{HOME}/.java/**/cache/** m,
+    owner /tmp/** m,
+    /usr/lib{,32,64}/jvm/**/*.jar mr,
+    /usr/share/fonts/** m,
+  }
diff --git a/etc/apparmor.d/abstractions/ubuntu-browsers.d/kde b/etc/apparmor.d/abstractions/ubuntu-browsers.d/kde
new file mode 100644 (file)
index 0000000..038952a
--- /dev/null
@@ -0,0 +1,7 @@
+# vim:syntax=apparmor
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  #include <abstractions/kde>
+  /usr/bin/kde4-config Cx -> sanitized_helper,
diff --git a/etc/apparmor.d/abstractions/ubuntu-browsers.d/mailto b/etc/apparmor.d/abstractions/ubuntu-browsers.d/mailto
new file mode 100644 (file)
index 0000000..40236a7
--- /dev/null
@@ -0,0 +1,9 @@
+# vim:syntax=apparmor
+
+  # for mailto:
+  #include <abstractions/ubuntu-email>
+  #include <abstractions/ubuntu-console-email>
+
+  # Terminals for using console applications. These abstractions should ideally
+  # have 'ix' to restrct access to what only firefox is allowed to do
+  #include <abstractions/ubuntu-gnome-terminal>
diff --git a/etc/apparmor.d/abstractions/ubuntu-browsers.d/multimedia b/etc/apparmor.d/abstractions/ubuntu-browsers.d/multimedia
new file mode 100644 (file)
index 0000000..591d6b8
--- /dev/null
@@ -0,0 +1,66 @@
+# vim:syntax=apparmor
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  #include <abstractions/X>
+
+  # Pulseaudio
+  /usr/bin/pulseaudio Pixr,
+
+  # Image viewers
+  /usr/bin/eog Cxr -> sanitized_helper,
+  /usr/bin/gimp* Cxr -> sanitized_helper,
+  /usr/bin/shotwell Cxr -> sanitized_helper,
+  /usr/bin/digikam Cxr -> sanitized_helper,
+  /usr/bin/f-spot Cxr -> sanitized_helper,
+  /usr/bin/gwenview Cxr -> sanitized_helper,
+
+  #include <abstractions/ubuntu-media-players>
+  owner @{HOME}/.adobe/ w,
+  owner @{HOME}/.adobe/** rw,
+  owner @{HOME}/.macromedia/ w,
+  owner @{HOME}/.macromedia/** rw,
+  /opt/real/RealPlayer/mozilla/nphelix.so rm,
+  /usr/bin/lpstat Cxr -> sanitized_helper,
+  /usr/bin/lpr Cxr -> sanitized_helper,
+
+  # npviewer
+  /usr/lib/nspluginwrapper/i386/linux/npviewer{,.bin} ixr,
+  /var/lib/ r,
+  /var/lib/**/*.so mr,
+  /usr/bin/setarch ixr,
+
+  # Bittorrent clients
+  #include <abstractions/ubuntu-bittorrent-clients>
+
+  # Mozplugger
+  /etc/mozpluggerrc r,
+  /usr/bin/mozplugger-helper Cxr -> sanitized_helper,
+
+  # Archivers
+  /usr/bin/ark Cxr -> sanitized_helper,
+  /usr/bin/file-roller Cxr -> sanitized_helper,
+  /usr/bin/xarchiver Cxr -> sanitized_helper,
+  /usr/local/lib{,32,64}/*.so* mr,
+
+  # News feed readers
+  #include <abstractions/ubuntu-feed-readers>
+
+  # Googletalk
+  /opt/google/talkplugin/*.so mr,
+  /opt/google/talkplugin/lib/*.so mr,
+  /opt/google/talkplugin/GoogleTalkPlugin ixr,
+  owner @{HOME}/.config/google-googletalkplugin/** rw,
+
+  # If we allow the above, nvidia based systems will also need this
+  #include <abstractions/nvidia>
+
+  # Virus scanners
+  /usr/bin/clamscan Cx -> sanitized_helper,
+
+  # gxine (LP: #1057642)
+  /var/lib/xine/gxine.desktop r,
+
+  # For WebRTC camera access (LP: #1665535)
+  /dev/video[0-9]* rw,
diff --git a/etc/apparmor.d/abstractions/ubuntu-browsers.d/plugins-common b/etc/apparmor.d/abstractions/ubuntu-browsers.d/plugins-common
new file mode 100644 (file)
index 0000000..c928f92
--- /dev/null
@@ -0,0 +1,16 @@
+# vim:syntax=apparmor
+
+  #
+  # Plugins/helpers
+  #
+  @{PROC}/@{pid}/fd/ r,
+  /usr/lib/** rm,
+  /{,usr/}bin/bash ixr,
+  /{,usr/}bin/dash ixr,
+  /{,usr/}bin/grep ixr,
+  /{,usr/}bin/sed ixr,
+  /usr/bin/m4 ixr,
+
+  # Since all the ubuntu-browsers.d abstractions need this, just include it
+  # here
+  #include <abstractions/ubuntu-helpers>
diff --git a/etc/apparmor.d/abstractions/ubuntu-browsers.d/productivity b/etc/apparmor.d/abstractions/ubuntu-browsers.d/productivity
new file mode 100644 (file)
index 0000000..2c898d1
--- /dev/null
@@ -0,0 +1,28 @@
+# vim:syntax=apparmor
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  # Openoffice.org
+  /usr/bin/ooffice Cxr -> sanitized_helper,
+  /usr/bin/oocalc Cxr -> sanitized_helper,
+  /usr/bin/oodraw Cxr -> sanitized_helper,
+  /usr/bin/ooimpress Cxr -> sanitized_helper,
+  /usr/bin/oowriter Cxr -> sanitized_helper,
+  /usr/lib/openoffice/program/soffice Cxr -> sanitized_helper,
+
+  # LibreOffice
+  /usr/bin/libreoffice Cxr -> sanitized_helper,
+  /usr/bin/localc Cxr -> sanitized_helper,
+  /usr/bin/lodraw Cxr -> sanitized_helper,
+  /usr/bin/loimpress Cxr -> sanitized_helper,
+  /usr/bin/lowriter Cxr -> sanitized_helper,
+  /usr/lib/libreoffice/program/soffice Cxr -> sanitized_helper,
+
+  # PDFs
+  /usr/bin/evince Cxr -> sanitized_helper,
+  /usr/bin/okular Cxr -> sanitized_helper,
+
+  owner @{HOME}/.adobe/** rw,
+  /opt/Adobe/Reader9/bin/acroread Cxr -> sanitized_helper,
+  /opt/Adobe/Reader9/** r,
diff --git a/etc/apparmor.d/abstractions/ubuntu-browsers.d/text-editors b/etc/apparmor.d/abstractions/ubuntu-browsers.d/text-editors
new file mode 100644 (file)
index 0000000..bf5eb1d
--- /dev/null
@@ -0,0 +1,14 @@
+# vim:syntax=apparmor
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  # Text editors (It's All Text [https://addons.mozilla.org/en-US/firefox/addon/4125])
+  /usr/bin/emacsclient.emacs-snapshot Cxr -> sanitized_helper,
+  /usr/bin/emacsclient.emacs2[2-9] Cxr -> sanitized_helper,
+  /usr/bin/emacs-snapshot-gtk Cxr -> sanitized_helper,
+  /usr/bin/gedit Cxr -> sanitized_helper,
+  /usr/bin/vim.gnome Cxr -> sanitized_helper,
+  /usr/bin/leafpad Cxr -> sanitized_helper,
+  /usr/bin/mousepad Cxr -> sanitized_helper,
+  /usr/bin/kate Cxr -> sanitized_helper,
diff --git a/etc/apparmor.d/abstractions/ubuntu-browsers.d/ubuntu-integration b/etc/apparmor.d/abstractions/ubuntu-browsers.d/ubuntu-integration
new file mode 100644 (file)
index 0000000..0cd0928
--- /dev/null
@@ -0,0 +1,41 @@
+# vim:syntax=apparmor
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  # Apport
+  /usr/bin/apport-bug Cx -> sanitized_helper,
+
+  # Package installation
+  /usr/bin/apturl Cxr -> sanitized_helper,
+  /usr/bin/gnome-codec-install Cxr -> sanitized_helper,
+  /usr/lib/gstreamer0.10/gstreamer-0.10/gst-plugin-scanner ix,
+  /usr/lib/@{multiarch}/gstreamer0.10/gstreamer-0.10/gst-plugin-scanner ix,
+  /usr/share/software-center/software-center Cxr -> sanitized_helper,
+
+  # Input Methods
+  /usr/bin/scim Cx -> sanitized_helper,
+  /usr/bin/scim-bridge Cx -> sanitized_helper,
+
+  # File managers
+  /usr/bin/nautilus Cxr -> sanitized_helper,
+  /usr/bin/{t,T}hunar Cxr -> sanitized_helper,
+  /usr/bin/dolphin Cxr -> sanitized_helper,
+
+  # Themes
+  /usr/bin/gnome-appearance-properties Cxr -> sanitized_helper,
+
+  # Kubuntu
+  /usr/lib/mozilla/kmozillahelper Cxr -> sanitized_helper,
+
+  # Exo-aware applications
+  /usr/bin/exo-open ixr,
+  /usr/lib/@{multiarch}/xfce4/exo-1/exo-helper-1 ixr,
+  /etc/xdg/xdg-xubuntu/xfce4/helpers.rc r,
+  /etc/xdg/xfce4/helpers.rc r,
+
+  # unity webapps integration. Could go in its own abstraction
+  owner /run/user/*/dconf/user rw,
+  owner @{HOME}/.local/share/unity-webapps/availableapps*.db rwk,
+  /usr/bin/debconf-communicate Cxr -> sanitized_helper,
+  owner @{HOME}/.config/libaccounts-glib/accounts.db rk,
diff --git a/etc/apparmor.d/abstractions/ubuntu-browsers.d/ubuntu-integration-xul b/etc/apparmor.d/abstractions/ubuntu-browsers.d/ubuntu-integration-xul
new file mode 100644 (file)
index 0000000..0429c13
--- /dev/null
@@ -0,0 +1,6 @@
+# vim:syntax=apparmor
+
+  # firefox-notify
+  #include <abstractions/python>
+  /usr/bin/python2.[4567] ix,
+  /usr/share/xul-ext/notify/**/download_complete_notify.py ix,
diff --git a/etc/apparmor.d/abstractions/ubuntu-browsers.d/user-files b/etc/apparmor.d/abstractions/ubuntu-browsers.d/user-files
new file mode 100644 (file)
index 0000000..ffe6824
--- /dev/null
@@ -0,0 +1,28 @@
+# vim:syntax=apparmor
+
+  # Allow read to all files user has DAC access to and write access to all
+  # files owned by the user in $HOME.
+  @{HOME}/ r,
+  @{HOME}/** r,
+  owner @{HOME}/** w,
+
+  # Do not allow read and/or write to particularly sensitive/problematic files
+  #include <abstractions/private-files>
+  audit deny @{HOME}/.ssh/{,**} mrwkl,
+  audit deny @{HOME}/.gnome2_private/{,**} mrwkl,
+  audit deny @{HOME}/.kde{,4}/{,share/,share/apps/} w,
+  audit deny @{HOME}/.kde{,4}/share/apps/kwallet/{,**} mrwkl,
+
+  # Comment this out if using gpg plugin/addons
+  audit deny @{HOME}/.gnupg/{,**} mrwkl,
+
+  # Allow read to all files user has DAC access to and write for files the user
+  # owns on removable media and filesystems.
+  /media/** r,
+  /mnt/** r,
+  /srv/** r,
+  /net/** r,
+  owner /media/** w,
+  owner /mnt/** w,
+  owner /srv/** w,
+  owner /net/** w,
diff --git a/etc/apparmor.d/abstractions/ubuntu-console-browsers b/etc/apparmor.d/abstractions/ubuntu-console-browsers
new file mode 100644 (file)
index 0000000..554469e
--- /dev/null
@@ -0,0 +1,18 @@
+# vim:syntax=apparmor
+#
+# abstraction for allowing access to text-only browsers in Ubuntu. These will
+# typically also need a terminal, so when using this abstraction, should also
+# do something like:
+#
+# #include <abstractions/ubuntu-gnome-terminal>
+#
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  /usr/bin/elinks Cx -> sanitized_helper,
+  /usr/bin/links Cx -> sanitized_helper,
+  /usr/bin/lynx.cur Cx -> sanitized_helper,
+  /usr/bin/netrik Cx -> sanitized_helper,
+  /usr/bin/w3m Cx -> sanitized_helper,
+
diff --git a/etc/apparmor.d/abstractions/ubuntu-console-email b/etc/apparmor.d/abstractions/ubuntu-console-email
new file mode 100644 (file)
index 0000000..f77c9bd
--- /dev/null
@@ -0,0 +1,18 @@
+# vim:syntax=apparmor
+#
+# abstraction for allowing console email clients in Ubuntu. These will
+# typically also need a terminal, so when using this abstraction, should also
+# do something like:
+#
+# #include <abstractions/ubuntu-gnome-terminal>
+#
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  /usr/bin/alpine Cx -> sanitized_helper,
+  /usr/bin/citadel Cx -> sanitized_helper,
+  /usr/bin/cone Cx -> sanitized_helper,
+  /usr/bin/elmo Cx -> sanitized_helper,
+  /usr/bin/mutt Cx -> sanitized_helper,
+
diff --git a/etc/apparmor.d/abstractions/ubuntu-email b/etc/apparmor.d/abstractions/ubuntu-email
new file mode 100644 (file)
index 0000000..48e0c6f
--- /dev/null
@@ -0,0 +1,24 @@
+# vim:syntax=apparmor
+#
+# abstraction for allowing graphical email clients in Ubuntu
+#
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  /usr/bin/anjal Cx -> sanitized_helper,
+  /usr/bin/balsa Cx -> sanitized_helper,
+  /usr/bin/claws-mail Cx -> sanitized_helper,
+  /usr/bin/evolution Cx -> sanitized_helper,
+  /usr/bin/geary Cx -> sanitized_helper,
+  /usr/bin/gnome-gmail Cx -> sanitized_helper,
+  /usr/lib/GNUstep/Applications/GNUMail.app/GNUMail Cx -> sanitized_helper,
+  /usr/bin/kmail Cx -> sanitized_helper,
+  /usr/bin/mailody Cx -> sanitized_helper,
+  /usr/bin/modest Cx -> sanitized_helper,
+  /usr/bin/seamonkey Cx -> sanitized_helper,
+  /usr/bin/sylpheed Cx -> sanitized_helper,
+  /usr/bin/tkrat Cx -> sanitized_helper,
+
+  /usr/bin/thunderbird Cx -> sanitized_helper, # used by gio-launch-desktop
+  /usr/lib/thunderbird*/thunderbird{,.sh,-bin} Cx -> sanitized_helper,
diff --git a/etc/apparmor.d/abstractions/ubuntu-feed-readers b/etc/apparmor.d/abstractions/ubuntu-feed-readers
new file mode 100644 (file)
index 0000000..85379e3
--- /dev/null
@@ -0,0 +1,10 @@
+# vim:syntax=apparmor
+#
+# abstraction for allowing graphical news feed readers in Ubuntu
+#
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  /usr/bin/akregator Cxr -> sanitized_helper,
+  /usr/bin/liferea-add-feed Cxr -> sanitized_helper,
diff --git a/etc/apparmor.d/abstractions/ubuntu-gnome-terminal b/etc/apparmor.d/abstractions/ubuntu-gnome-terminal
new file mode 100644 (file)
index 0000000..7604df1
--- /dev/null
@@ -0,0 +1,10 @@
+# vim:syntax=apparmor
+#
+# for allowing access to gnome-terminal
+#
+
+  #include <abstractions/gnome>
+
+  # do not use ux or PUx here. Use at a minimum ix
+  /usr/bin/gnome-terminal ix,
+
diff --git a/etc/apparmor.d/abstractions/ubuntu-helpers b/etc/apparmor.d/abstractions/ubuntu-helpers
new file mode 100644 (file)
index 0000000..a1ab7bc
--- /dev/null
@@ -0,0 +1,83 @@
+# Lenient profile that is intended to be used when 'Ux' is desired but
+# does not provide enough environment sanitizing. This effectively is an
+# open profile that blacklists certain known dangerous files and also
+# does not allow any capabilities. For example, it will not allow 'm' on files
+# owned be the user invoking the program. While this provides some additional
+# protection, please use with care as applications running under this profile
+# are effectively running without any AppArmor protection. Use this profile
+# only if the process absolutely must be run (effectively) unconfined.
+#
+# Usage:
+# Because this abstraction defines the sanitized_helper profile, it must only
+# be #included once. Therefore this abstraction should typically not be
+# included in other abstractions so as to avoid parser errors regarding
+# multiple definitions.
+#
+# Limitations:
+# 1. This does not work for root owned processes, because of the way we use
+#    owner matching in the sanitized helper. We could do a better job with
+#    this to support root, but it would make the policy harder to understand
+#    and going unconfined as root is not desirable any way.
+#
+# 2. For this sanitized_helper to work, the program running in the sanitized
+#    environment must open symlinks directly in order for AppArmor to mediate
+#    it. This is confirmed to work with:
+#     - compiled code which can load shared libraries
+#     - python imports
+#    It is known not to work with:
+#     - perl includes
+# 3. Sanitizing ruby and java
+#
+# Use at your own risk. This profile was developed as an interim workaround for
+# LP: #851986 until AppArmor utilizes proper environment filtering.
+
+profile sanitized_helper {
+  #include <abstractions/base>
+  #include <abstractions/X>
+
+  # Allow all networking
+  network inet,
+  network inet6,
+
+  # Allow all DBus communications
+  #include <abstractions/dbus-session-strict>
+  #include <abstractions/dbus-strict>
+  dbus,
+
+  # Needed for Google Chrome
+  ptrace (trace) peer=**//sanitized_helper,
+
+  # Allow exec of anything, but under this profile. Allow transition
+  # to other profiles if they exist.
+  /{usr/,usr/local/,}{bin,sbin}/* Pixr,
+
+  # Allow exec of libexec applications in /usr/lib* and /usr/local/lib*
+  /usr/{,local/}lib*/{,**/}* Pixr,
+
+  # Allow exec of software-center scripts. We may need to allow wider
+  # permissions for /usr/share, but for now just do this. (LP: #972367)
+  /usr/share/software-center/* Pixr,
+
+  # Allow exec of texlive font build scripts (LP: #1010909)
+  /usr/share/texlive/texmf{,-dist}/web2c/{,**/}* Pixr,
+
+  # While the chromium and chrome sandboxes are setuid root, they only link
+  # in limited libraries so glibc's secure execution should be enough to not
+  # require the santized_helper (ie, LD_PRELOAD will only use standard system
+  # paths (man ld.so)).
+  /usr/lib/chromium-browser/chromium-browser-sandbox PUxr,
+  /usr/lib/chromium{,-browser}/chrome-sandbox PUxr,
+  /opt/google/chrome{,-beta,-unstable}/chrome-sandbox PUxr,
+  /opt/google/chrome{,-beta,-unstable}/google-chrome Pixr,
+  /opt/google/chrome{,-beta,-unstable}/chrome Pixr,
+  /opt/google/chrome{,-beta,-unstable}/{,**/}lib*.so{,.*} m,
+
+  # Full access
+  / r,
+  /** rwkl,
+  /{,usr/,usr/local/}lib{,32,64}/{,**/}*.so{,.*} m,
+
+  # Dangerous files
+  audit deny owner /**/* m,              # compiled libraries
+  audit deny owner /**/*.py* r,          # python imports
+}
diff --git a/etc/apparmor.d/abstractions/ubuntu-konsole b/etc/apparmor.d/abstractions/ubuntu-konsole
new file mode 100644 (file)
index 0000000..baa8fb3
--- /dev/null
@@ -0,0 +1,17 @@
+# vim:syntax=apparmor
+#
+# for allowing access to konsole
+#
+
+  #include <abstractions/consoles>
+  #include <abstractions/kde>
+  capability sys_ptrace,
+  @{PROC}/@{pid}/status r,
+  @{PROC}/@{pid}/stat r,
+  @{PROC}/@{pid}/cmdline r,
+  /{,var/}run/utmp r,
+  /dev/ptmx rw,
+
+  # do not use ux or Ux here. Use at a minimum ix
+  /usr/bin/konsole ix,
+
diff --git a/etc/apparmor.d/abstractions/ubuntu-media-players b/etc/apparmor.d/abstractions/ubuntu-media-players
new file mode 100644 (file)
index 0000000..5918cb8
--- /dev/null
@@ -0,0 +1,60 @@
+# vim:syntax=apparmor
+#
+# abstraction for allowing access to media players in Ubuntu
+#
+# Users of this abstraction need to #include the ubuntu-helpers abstraction
+# in the toplevel profile. Eg:
+# #include <abstractions/ubuntu-helpers>
+
+  /usr/bin/amarok Cxr -> sanitized_helper,
+  /usr/bin/audacious2 Cxr -> sanitized_helper,
+  /usr/bin/audacity Cxr -> sanitized_helper,
+  /usr/bin/bangarang Cxr -> sanitized_helper,
+  /usr/bin/banshee Cxr -> sanitized_helper,
+  /usr/bin/banshee-1 Cxr -> sanitized_helper,
+  /usr/bin/decibel Cxr -> sanitized_helper,
+  /usr/bin/dragon Cxr -> sanitized_helper,
+  /usr/bin/esperanza Cxr -> sanitized_helper,
+  /usr/bin/exaile Cxr -> sanitized_helper,
+  /usr/bin/freevo Cxr -> sanitized_helper,
+  /usr/bin/gmerlin Cxr -> sanitized_helper,
+  /usr/bin/gxmms Cxr -> sanitized_helper,
+  /usr/bin/gxmms2 Cxr -> sanitized_helper,
+  /usr/bin/hornsey Cxr -> sanitized_helper,
+  /usr/bin/jlgui Cxr -> sanitized_helper,
+  /usr/bin/juk Cxr -> sanitized_helper,
+  /usr/bin/kaffeine Cxr -> sanitized_helper,
+  /usr/bin/listen Cxr -> sanitized_helper,
+  /usr/share/minirok/minirok.py Cxr -> sanitized_helper,
+
+  # mplayer
+  /etc/mplayerplug-in.conf r,
+  /usr/bin/gmplayer Cxr -> sanitized_helper,
+  /usr/bin/gnome-mplayer Cxr -> sanitized_helper,
+  /usr/bin/kmplayer Cxr -> sanitized_helper,
+  /usr/bin/mplayer Cxr -> sanitized_helper,
+  /usr/bin/smplayer Cxr -> sanitized_helper,
+
+  /usr/bin/muine Cxr -> sanitized_helper,
+  /usr/bin/potamus Cxr -> sanitized_helper,
+  /usr/bin/promoe Cxr -> sanitized_helper,
+  /usr/bin/qmmp Cxr -> sanitized_helper,
+  /usr/bin/quodlibet Cxr -> sanitized_helper,
+  /usr/bin/rhythmbox Cxr -> sanitized_helper,
+  /usr/bin/strange-quark Cxr -> sanitized_helper,
+  /usr/bin/swfdec-player Cxr -> sanitized_helper,
+  /usr/bin/timidity Cxr -> sanitized_helper,
+  /usr/lib/totem/** ixr,
+  /usr/bin/totem-gstreamer Cxr -> sanitized_helper,
+  /usr/bin/totem-xine Cxr -> sanitized_helper,
+  /usr/bin/totem Cxr -> sanitized_helper,
+  /usr/bin/vlc Cxr -> sanitized_helper,
+  /usr/bin/xfmedia Cxr -> sanitized_helper,
+  /usr/bin/xmms Cxr -> sanitized_helper,
+
+  # gnash
+  /usr/bin/gtk-gnash ixr,
+  /etc/gnashrc r,
+  /etc/gnashpluginrc r,
+  owner @{HOME}/.gnash/ rw,
+  owner @{HOME}/.gnash/** rw,
diff --git a/etc/apparmor.d/abstractions/ubuntu-unity7-base b/etc/apparmor.d/abstractions/ubuntu-unity7-base
new file mode 100644 (file)
index 0000000..25e88b6
--- /dev/null
@@ -0,0 +1,100 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2013-2014 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+#
+# Rules common to applications running under Unity 7
+#
+
+#include <abstractions/gnome>
+
+#include <abstractions/dbus-session-strict>
+#include <abstractions/dbus-strict>
+
+  #
+  # Access required for connecting to/communication with Unity HUD
+  #
+  dbus (send)
+       bus=session
+       path="/com/canonical/hud",
+  dbus (send)
+       bus=session
+       interface="com.canonical.hud.*",
+  dbus (send)
+       bus=session
+       path="/com/canonical/hud/applications/*",
+  dbus (receive)
+       bus=session
+       path="/com/canonical/hud",
+  dbus (receive)
+       bus=session
+       interface="com.canonical.hud.*",
+
+  #
+  # Allow access for connecting to/communication with the appmenu
+  #
+  # dbusmenu
+  dbus (send)
+       bus=session
+       interface="com.canonical.AppMenu.*",
+  dbus (receive, send)
+        bus=session
+        path=/com/canonical/menu/**,
+
+  # gmenu
+  dbus (receive, send)
+       bus=session
+       interface=org.gtk.Actions,
+  dbus (receive, send)
+       bus=session
+       interface=org.gtk.Menus,
+
+  #
+  # Access required for using freedesktop notifications
+  #
+  dbus (send)
+       bus=session
+       path=/org/freedesktop/Notifications
+       member=GetCapabilities,
+  dbus (send)
+       bus=session
+       path=/org/freedesktop/Notifications
+       member=GetServerInformation,
+  dbus (send)
+       bus=session
+       path=/org/freedesktop/Notifications
+       member=Notify,
+  dbus (receive)
+       bus=session
+       member="Notify"
+       peer=(name="org.freedesktop.DBus"),
+  dbus (receive)
+       bus=session
+       path=/org/freedesktop/Notifications
+       member=NotificationClosed,
+  dbus (send)
+       bus=session
+       path=/org/freedesktop/Notifications
+       member=CloseNotification,
+
+  # accessibility
+  dbus (send)
+       bus=session
+       peer=(name=org.a11y.Bus),
+  dbus (receive)
+       bus=session
+       interface=org.a11y.atspi*,
+  dbus (receive, send)
+       bus=accessibility,
+
+  #
+  # Deny potentially dangerous access
+  #
+  deny dbus bus=session path=/com/canonical/[Uu]nity/[Dd]ebug**,
diff --git a/etc/apparmor.d/abstractions/ubuntu-unity7-launcher b/etc/apparmor.d/abstractions/ubuntu-unity7-launcher
new file mode 100644 (file)
index 0000000..52f6cd4
--- /dev/null
@@ -0,0 +1,7 @@
+  #
+  # Access required for connecting to/communicating with the Unity Launcher
+  #
+  dbus (send)
+      bus=session
+      interface="com.canonical.Unity.LauncherEntry"
+      member="Update",
diff --git a/etc/apparmor.d/abstractions/ubuntu-unity7-messaging b/etc/apparmor.d/abstractions/ubuntu-unity7-messaging
new file mode 100644 (file)
index 0000000..828592e
--- /dev/null
@@ -0,0 +1,7 @@
+  #
+  # Access required for connecting to/communicating with the Unity messaging
+  # indicator
+  #
+  dbus (receive, send)
+       bus=session
+       path="/com/canonical/indicator/messages/*",
diff --git a/etc/apparmor.d/abstractions/ubuntu-xterm b/etc/apparmor.d/abstractions/ubuntu-xterm
new file mode 100644 (file)
index 0000000..a062cc7
--- /dev/null
@@ -0,0 +1,13 @@
+# vim:syntax=apparmor
+#
+# for allowing access to xterm
+#
+
+  #include <abstractions/consoles>
+  /dev/ptmx rw,
+  /{,var/}run/utmp r,
+  /etc/X11/app-defaults/XTerm r,
+
+  # do not use ux or Ux here. Use at a minimum ix
+  /usr/bin/xterm ix,
+
diff --git a/etc/apparmor.d/abstractions/user-download b/etc/apparmor.d/abstractions/user-download
new file mode 100644 (file)
index 0000000..ea1043a
--- /dev/null
@@ -0,0 +1,24 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#    Copyright (C) 2014 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# Description: Where common programs should allow users to download
+# files
+
+  owner @{HOME}/tmp/**                 rwl,
+  owner @{HOME}/[dD]ownload{,s}/       r,
+  owner @{HOME}/[dD]ownload{,s}/**     rwl,
+  owner @{HOME}/[^.]*                  rwl,
+  owner @{HOME}/@{XDG_DESKTOP_DIR}/    r,
+  owner @{HOME}/@{XDG_DESKTOP_DIR}/*   rwl,
+  owner @{HOME}/@{XDG_DOWNLOAD_DIR}/   r,
+  owner @{HOME}/@{XDG_DOWNLOAD_DIR}/*  rwl,
+  owner "@{HOME}/My Downloads/"        r,
+  owner "@{HOME}/My Downloads/**"      rwl,
diff --git a/etc/apparmor.d/abstractions/user-mail b/etc/apparmor.d/abstractions/user-mail
new file mode 100644 (file)
index 0000000..b799ffc
--- /dev/null
@@ -0,0 +1,23 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#    Copyright (C) 2014 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # location of user mail, spool and mboxes
+  owner @{HOME}/[mM]ail/      r,
+  owner @{HOME}/[mM]ail/**    rwl,
+  owner @{HOME}/postponed*    rwl,
+  /var/{,spool/}mail/         r,
+  owner /var/{,spool/}mail/*  rwl,
+  owner @{HOME}/mbox.lock*    rwl,
+  owner @{HOME}/mbox          rw,
+  owner @{HOME}/inbox         rw,
+  owner @{HOME}/.forward      r,
+  owner @{HOME}/Maildir/      r,
+  owner @{HOME}/Maildir/**    rwl,
diff --git a/etc/apparmor.d/abstractions/user-manpages b/etc/apparmor.d/abstractions/user-manpages
new file mode 100644 (file)
index 0000000..b7cc0cb
--- /dev/null
@@ -0,0 +1,24 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # perhaps your configuration has users elsewhere, or you don't wish
+  # them to read their own manpages
+  owner @{HOME}/man/                          r,
+  owner @{HOME}/man/**                        r,
+  owner @{HOME}/tmp/groff*                    rwl,
+
+  # kindof required
+  owner /tmp/groff*                           rwl,
+
+  # standard system manpages
+  /usr/local/share/man/man?/            r,
+  /usr/local/share/man/man?/**          r,
+  /usr/{share,X11R6,local,kerberos}/man/**      r,
+  /usr/man/**                          r,
diff --git a/etc/apparmor.d/abstractions/user-tmp b/etc/apparmor.d/abstractions/user-tmp
new file mode 100644 (file)
index 0000000..63993d6
--- /dev/null
@@ -0,0 +1,20 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009-2010 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # per-user tmp directories
+  owner @{HOME}/tmp/**  rwkl,
+  owner @{HOME}/tmp/    rw,
+
+  # global tmp directories
+  owner /var/tmp/**     rwkl,
+  /var/tmp/             rw,
+  owner /tmp/**         rwkl,
+  /tmp/                 rw,
diff --git a/etc/apparmor.d/abstractions/user-write b/etc/apparmor.d/abstractions/user-write
new file mode 100644 (file)
index 0000000..c6ea29b
--- /dev/null
@@ -0,0 +1,21 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#    Copyright (C) 2014 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # per-user write  directories
+  owner @{HOME}/                          r,
+  owner @{HOME}/@{XDG_DESKTOP_DIR}/       r,
+  owner @{HOME}/@{XDG_DOCUMENTS_DIR}/     r,
+  owner @{HOME}/@{XDG_PUBLICSHARE_DIR}/   r,
+  owner @{HOME}/[^.]*/                    rw,
+  owner @{HOME}/[^.]*                     rwl,
+  owner @{HOME}/@{XDG_DESKTOP_DIR}/**     rwl,
+  owner @{HOME}/@{XDG_DOCUMENTS_DIR}/**   rwl,
+  owner @{HOME}/@{XDG_PUBLICSHARE_DIR}/** rwl,
diff --git a/etc/apparmor.d/abstractions/video b/etc/apparmor.d/abstractions/video
new file mode 100644 (file)
index 0000000..00a8346
--- /dev/null
@@ -0,0 +1,6 @@
+# vim:syntax=apparmor
+# video device access
+
+  # System devices
+  @{sys}/class/video4linux r,
+  @{sys}/class/video4linux/** r,
diff --git a/etc/apparmor.d/abstractions/vulkan b/etc/apparmor.d/abstractions/vulkan
new file mode 100644 (file)
index 0000000..7f0d8cb
--- /dev/null
@@ -0,0 +1,15 @@
+# vim:syntax=apparmor
+# Vulkan access requirements
+
+  # System files
+  /dev/dri/ r, # libvulkan_radeon.so, libvulkan_intel.so (Mesa)
+  /etc/vulkan/icd.d/{,*.json} r,
+  /etc/vulkan/{explicit,implicit}_layer.d/{,*.json} r,
+  # for drmGetMinorNameForFD() from libvulkan_intel.so (Mesa)
+  @{sys}/devices/pci[0-9]*/*/drm/ r,
+  /usr/share/vulkan/icd.d/{,*.json} r,
+  /usr/share/vulkan/{explicit,implicit}_layer.d/{,*.json} r,
+
+  # User files
+  owner @{HOME}/.local/share/vulkan/implicit_layer.d/{,*.json} r,
+
diff --git a/etc/apparmor.d/abstractions/wayland b/etc/apparmor.d/abstractions/wayland
new file mode 100644 (file)
index 0000000..f5290b2
--- /dev/null
@@ -0,0 +1,14 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2016 intrigeri <intrigeri@boum.org>
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  owner /var/run/user/*/weston-shared-* rw,
+  owner /run/user/*/wayland-[0-9]* rw,
+  owner /run/user/*/{mesa,mutter,sdl,wayland-cursor,weston,xwayland}-shared-* rw,
diff --git a/etc/apparmor.d/abstractions/web-data b/etc/apparmor.d/abstractions/web-data
new file mode 100644 (file)
index 0000000..0baf299
--- /dev/null
@@ -0,0 +1,25 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2006 Novell/SUSE
+#    Copyright (C) 2014 Canonical Ltd
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  /srv/www/htdocs/ r,
+  /srv/www/htdocs/** r,
+  # virtual hosting
+  /srv/www/vhosts/ r,
+  /srv/www/vhosts/** r,
+  # mod_userdir
+  @{HOME}/public_html/ r,
+  @{HOME}/public_html/** r,
+
+  /srv/www/rails/*/public/ r,
+  /srv/www/rails/*/public/** r,
+
+  /var/www/html/ r,
+  /var/www/html/** r,
diff --git a/etc/apparmor.d/abstractions/winbind b/etc/apparmor.d/abstractions/winbind
new file mode 100644 (file)
index 0000000..e982889
--- /dev/null
@@ -0,0 +1,21 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # pam_winbindd
+  /tmp/.winbindd/pipe  rw,
+  /var/{lib,run}/samba/winbindd_privileged/pipe rw,
+  /etc/samba/smb.conf         r,
+  /etc/samba/dhcp.conf        r,
+  /usr/lib*/samba/valid.dat   r,
+  /usr/lib*/samba/upcase.dat  r,
+  /usr/lib*/samba/lowcase.dat r,
+  /usr/share/samba/codepages/{lowcase,upcase,valid}.dat r,
+
diff --git a/etc/apparmor.d/abstractions/wutmp b/etc/apparmor.d/abstractions/wutmp
new file mode 100644 (file)
index 0000000..d750955
--- /dev/null
@@ -0,0 +1,16 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2002-2009 Novell/SUSE
+#    Copyright (C) 2009 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # some services update wtmp, utmp, and lastlog with per-user
+  # connection information
+  /var/log/lastlog  rwk,
+  /var/log/wtmp     wk,
+  /{,var/}run/utmp     rwk,
diff --git a/etc/apparmor.d/abstractions/xad b/etc/apparmor.d/abstractions/xad
new file mode 100644 (file)
index 0000000..54b0f40
--- /dev/null
@@ -0,0 +1,25 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2007 Novell/SUSE
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  /opt/novell/xad/lib/ r,
+  /opt/novell/xad/lib/lib*.so* mr,
+  /opt/novell/xad/lib/gss/*.so* mr,
+  /opt/novell/lib/libpthread_ext*.so* mr,
+  /opt/novell/lib/libccs2.so* mr,
+  /opt/novell/xad/lib64/ r,
+  /opt/novell/xad/lib64/lib*.so* mr,
+  /opt/novell/xad/lib64/gss/*.so* mr,
+  /opt/novell/lib64/libpthread_ext*.so* mr,
+  /opt/novell/lib64/libccs2.so* mr,
+  /etc/opt/novell/xad/krb5.conf r,
+  /etc/opt/novell/nici.cfg r,
+  /var/opt/novell/nici/* r,
+  /var/opt/novell/nici/*/ r,
+  /var/opt/novell/nici/*/* rw,
diff --git a/etc/apparmor.d/abstractions/xdg-desktop b/etc/apparmor.d/abstractions/xdg-desktop
new file mode 100644 (file)
index 0000000..bc8f6a0
--- /dev/null
@@ -0,0 +1,24 @@
+# vim:syntax=apparmor
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+  # Entries based on:
+  # http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
+
+  owner @{HOME}/.cache/ rw,
+
+  owner @{HOME}/.config/ rw,
+
+  owner @{HOME}/.local/ rw,
+  owner @{HOME}/.local/share/ rw,
+
+  # fallbacks
+  /usr/share/ r,
+  /usr/local/share/ r,
diff --git a/etc/apparmor.d/disable/usr.sbin.rsyslogd b/etc/apparmor.d/disable/usr.sbin.rsyslogd
new file mode 120000 (symlink)
index 0000000..58ef243
--- /dev/null
@@ -0,0 +1 @@
+/etc/apparmor.d/usr.sbin.rsyslogd
\ No newline at end of file
diff --git a/etc/apparmor.d/local/README b/etc/apparmor.d/local/README
new file mode 100644 (file)
index 0000000..a3cf2e4
--- /dev/null
@@ -0,0 +1,24 @@
+# This directory is intended to contain profile additions and overrides for
+# inclusion by distributed profiles to aid in packaging AppArmor for
+# distributions.
+#
+# The shipped profiles in /etc/apparmor.d can still be modified by an
+# administrator and people should modify the shipped profile when making
+# large policy changes, rather than trying to make those adjustments here.
+#
+# For simple access additions or the occasional deny override, adjusting them
+# here can prevent the package manager of the distribution from interfering
+# with local modifications. As always, new policy should be reviewed to ensure
+# it is appropriate for your site.
+#
+# For example, if the shipped /etc/apparmor.d/usr.sbin.smbd profile has:
+#   #include <local/usr.sbin.smbd>
+#
+# then an administrator can adjust /etc/apparmor.d/local/usr.sbin.smbd to
+# contain any additional paths to be allowed, such as:
+#
+#   /var/exports/** lrwk,
+#
+# Keep in mind that 'deny' rules are evaluated after allow rules, so you won't
+# be able to allow access to files that are explicitly denied by the shipped
+# profile using this mechanism.
diff --git a/etc/apparmor.d/local/lsb_release b/etc/apparmor.d/local/lsb_release
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/apparmor.d/local/nvidia_modprobe b/etc/apparmor.d/local/nvidia_modprobe
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/apparmor.d/local/sbin.dhclient b/etc/apparmor.d/local/sbin.dhclient
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/apparmor.d/local/usr.bin.man b/etc/apparmor.d/local/usr.bin.man
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/apparmor.d/local/usr.lib.snapd.snap-confine.real b/etc/apparmor.d/local/usr.lib.snapd.snap-confine.real
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/apparmor.d/local/usr.sbin.rsyslogd b/etc/apparmor.d/local/usr.sbin.rsyslogd
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/apparmor.d/local/usr.sbin.tcpdump b/etc/apparmor.d/local/usr.sbin.tcpdump
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/apparmor.d/lsb_release b/etc/apparmor.d/lsb_release
new file mode 100644 (file)
index 0000000..5c05ba4
--- /dev/null
@@ -0,0 +1,50 @@
+# Note: This profile does not specify an attachment path because it is
+# intended to be used only via "Px -> lsb_release" exec transitions from
+# other profiles. We want to confine the lsb_release(1) utility when it
+# is invoked from other confined applications, but not when it is used
+# in regular (unconfined) shell scripts or run directly by the user.
+
+#include <tunables/global>
+
+# Do not attach to /usr/bin/lsb_release by default
+profile lsb_release {
+  #include <abstractions/base>
+  #include <abstractions/python>
+
+  owner @{PROC}/@{pid}/fd/ r,
+
+  /dev/tty rw,
+
+  /usr/bin/lsb_release r,
+  /usr/bin/python3.[0-9] mr,
+
+  /etc/debian_version r,
+  /etc/default/apport r,
+  /etc/dpkg/origins/** r,
+  /etc/lsb-release r,
+  /etc/lsb-release.d/ r,
+
+  /{usr/,}bin/bash ixr,
+  /{usr/,}bin/dash ixr,
+  /usr/bin/basename ixr,
+  /usr/bin/dpkg-query ixr,
+  /usr/bin/getopt ixr,
+  /usr/bin/sed ixr,
+  /usr/bin/tr ixr,
+
+  # TODO - many more permissions needed for this to work
+  deny /usr/bin/apt-cache x,
+
+  /usr/bin/ r,
+  /usr/include/python*/pyconfig.h r,
+  /usr/share/distro-info/** r,
+  /usr/share/dpkg/** r,
+  /usr/share/terminfo/** r,
+  /var/lib/dpkg/** r,
+
+  # file_inherit
+  deny /tmp/gtalkplugin.log w,
+
+  # Site-specific additions and overrides. See local/README for details.
+  #include <local/lsb_release>
+}
diff --git a/etc/apparmor.d/nvidia_modprobe b/etc/apparmor.d/nvidia_modprobe
new file mode 100644 (file)
index 0000000..01f714c
--- /dev/null
@@ -0,0 +1,63 @@
+# vim:syntax=apparmor
+
+#include <tunables/global>
+
+profile nvidia_modprobe {
+  #include <abstractions/base>
+
+  # Capabilities
+
+  capability chown,
+  capability mknod,
+  capability setuid,
+  capability sys_admin,
+
+  # Main executable
+
+  /usr/bin/nvidia-modprobe mr,
+
+  # Other executables
+
+  /usr/bin/kmod Cx -> kmod,
+
+  # System files
+
+  /dev/nvidia-uvm w,
+  /dev/nvidia-uvm-tools w,
+  @{sys}/bus/pci/devices/ r,
+  @{sys}/devices/pci[0-9]*/**/config r,
+  @{PROC}/devices r,
+  @{PROC}/modules r,
+  @{PROC}/sys/kernel/modprobe r,
+
+  # Child profiles
+
+  profile kmod {
+    #include <abstractions/base>
+
+    # Capabilities
+
+    capability sys_module,
+
+    # Main executable
+
+    /usr/bin/kmod mrix,
+
+    # Other executables
+
+    /{,usr/}bin/{,ba,da}sh ix,
+
+    # System files
+
+    /etc/modprobe.d/{,*.conf} r,
+    /etc/nvidia/current/*.conf r,
+    @{sys}/module/ipmi_devintf/initstate r,
+    @{sys}/module/ipmi_msghandler/initstate r,
+    @{sys}/module/nvidia/initstate r,
+    @{PROC}/cmdline r,
+  }
+
+  # Site-specific additions and overrides. See local/README for details.
+  #include <local/nvidia_modprobe>
+}
+
diff --git a/etc/apparmor.d/sbin.dhclient b/etc/apparmor.d/sbin.dhclient
new file mode 100644 (file)
index 0000000..b6e2b9d
--- /dev/null
@@ -0,0 +1,105 @@
+# vim:syntax=apparmor
+#include <tunables/global>
+
+/{,usr/}sbin/dhclient flags=(attach_disconnected) {
+  #include <abstractions/base>
+  #include <abstractions/nameservice>
+  #include <abstractions/openssl>
+
+  capability net_bind_service,
+  capability net_raw,
+  capability dac_override,
+  capability net_admin,
+
+  network packet,
+  network raw,
+
+  @{PROC}/[0-9]*/net/ r,
+  @{PROC}/[0-9]*/net/** r,
+
+  /{,usr/}sbin/dhclient mr,
+  # LP: #1197484 and LP: #1202203 - why is this needed? :(
+  /{,usr/}bin/bash mr,
+
+  /etc/dhclient.conf r,
+  /etc/dhcp/ r,
+  /etc/dhcp/** r,
+
+  /var/lib/dhcp{,3}/dhclient* lrw,
+  /{,var/}run/dhclient*.pid lrw,
+  /{,var/}run/dhclient*.lease* lrw,
+
+  # NetworkManager
+  /{,var/}run/nm*conf r,
+  /{,var/}run/sendsigs.omit.d/network-manager.dhclient*.pid lrw,
+  /var/lib/NetworkManager/dhclient*.conf lrw,
+  /var/lib/NetworkManager/dhclient*.lease* lrw,
+  signal (receive) peer=/usr/sbin/NetworkManager,
+  ptrace (readby) peer=/usr/sbin/NetworkManager,
+
+  # connman
+  /{,var/}run/connman/dhclient*.pid lrw,
+  /{,var/}run/connman/dhclient*.leases lrw,
+
+  # synce-hal
+  /usr/share/synce-hal/dhclient.conf r,
+
+  # if there is a custom script, let it run unconfined
+  /etc/dhcp/dhclient-script Uxr,
+
+  # The dhclient-script shell script sources other shell scripts rather than
+  # executing them, so we can't just use a separate profile for dhclient-script
+  # with 'Uxr' on the hook scripts. However, for the long-running dhclient3
+  # daemon to run arbitrary code via /sbin/dhclient-script, it would need to be
+  # able to subvert dhclient-script or write to the hooks.d directories. As
+  # such, if the dhclient3 daemon is subverted, this effectively limits it to
+  # only being able to run the hooks scripts.
+  /{,usr/}sbin/dhclient-script                           Uxr,
+
+  # Run the ELF executables under their own unrestricted profiles
+  /usr/lib/NetworkManager/nm-dhcp-client.action   Pxrm,
+  /usr/lib/connman/scripts/dhclient-script        Pxrm,
+
+  # Support the new executable helper from NetworkManager.
+  /usr/lib/NetworkManager/nm-dhcp-helper          Pxrm,
+  signal (receive) peer=/usr/lib/NetworkManager/nm-dhcp-helper,
+
+  # Site-specific additions and overrides. See local/README for details.
+  #include <local/sbin.dhclient>
+}
+
+/usr/lib/NetworkManager/nm-dhcp-client.action {
+  #include <abstractions/base>
+  #include <abstractions/dbus>
+  /usr/lib/NetworkManager/nm-dhcp-client.action mr,
+
+  /var/lib/NetworkManager/*lease r,
+  signal (receive) peer=/usr/sbin/NetworkManager,
+  ptrace (readby) peer=/usr/sbin/NetworkManager,
+  network inet dgram,
+  network inet6 dgram,
+}
+
+/usr/lib/NetworkManager/nm-dhcp-helper {
+  #include <abstractions/base>
+  #include <abstractions/dbus>
+  /usr/lib/NetworkManager/nm-dhcp-helper mr,
+
+  /run/NetworkManager/private-dhcp rw,
+  signal (send) peer=/sbin/dhclient,
+
+  /var/lib/NetworkManager/*lease r,
+  signal (receive) peer=/usr/sbin/NetworkManager,
+  ptrace (readby) peer=/usr/sbin/NetworkManager,
+  network inet dgram,
+  network inet6 dgram,
+}
+
+/usr/lib/connman/scripts/dhclient-script {
+  #include <abstractions/base>
+  #include <abstractions/dbus>
+  /usr/lib/connman/scripts/dhclient-script      mr,
+  network inet dgram,
+  network inet6 dgram,
+}
+
diff --git a/etc/apparmor.d/tunables/alias b/etc/apparmor.d/tunables/alias
new file mode 100644 (file)
index 0000000..a0c55c4
--- /dev/null
@@ -0,0 +1,16 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2010 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# Alias rules can be used to rewrite paths and are done after variable
+# resolution. For example, if '/usr' is on removable media:
+# alias /usr/ -> /mnt/usr/,
+#
+# Or if mysql databases are stored in /home:
+# alias /var/lib/mysql/ -> /home/mysql/,
diff --git a/etc/apparmor.d/tunables/apparmorfs b/etc/apparmor.d/tunables/apparmorfs
new file mode 100644 (file)
index 0000000..8df8675
--- /dev/null
@@ -0,0 +1,11 @@
+#    Copyright (C) 2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+#include <tunables/securityfs>
+
+@{apparmorfs}=@{securityfs}/apparmor/
diff --git a/etc/apparmor.d/tunables/dovecot b/etc/apparmor.d/tunables/dovecot
new file mode 100644 (file)
index 0000000..702da58
--- /dev/null
@@ -0,0 +1,20 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2013 Christian Boltz
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+# vim:ft=apparmor
+
+# @{DOVECOT_MAILSTORE} is a space-separated list of all directories
+# where dovecot is allowed to store and read mails
+# 
+# The default value is quite broad to avoid breaking existing setups.
+# Please change @{DOVECOT_MAILSTORE} to (only) contain the directory
+# you use, and remove everything else.
+
+@{DOVECOT_MAILSTORE}=@{HOME}/Maildir/ @{HOME}/mail/ @{HOME}/Mail/ /var/vmail/ /var/mail/ /var/spool/mail/
+
diff --git a/etc/apparmor.d/tunables/global b/etc/apparmor.d/tunables/global
new file mode 100644 (file)
index 0000000..28d6fc6
--- /dev/null
@@ -0,0 +1,21 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2006-2009 Novell/SUSE
+#    Copyright (C) 2010-2014 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# All the tunables definitions that should be available to every profile
+# should be included here
+
+#include <tunables/home>
+#include <tunables/multiarch>
+#include <tunables/proc>
+#include <tunables/alias>
+#include <tunables/kernelvars>
+#include <tunables/xdg-user-dirs>
+#include <tunables/share>
diff --git a/etc/apparmor.d/tunables/home b/etc/apparmor.d/tunables/home
new file mode 100644 (file)
index 0000000..550ccd5
--- /dev/null
@@ -0,0 +1,25 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2006-2009 Novell/SUSE
+#    Copyright (C) 2010 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# @{HOME} is a space-separated list of all user home directories. While
+# it doesn't refer to a specific home directory (AppArmor doesn't
+# enforce discretionary access controls) it can be used as if it did
+# refer to a specific home directory
+@{HOME}=@{HOMEDIRS}/*/ /root/
+
+# @{HOMEDIRS} is a space-separated list of where user home directories
+# are stored, for programs that must enumerate all home directories on a
+# system.
+@{HOMEDIRS}=/home/
+
+# Also, include files in tunables/home.d for site-specific adjustments to
+# @{HOMEDIRS}.
+#include <tunables/home.d>
diff --git a/etc/apparmor.d/tunables/home.d/site.local b/etc/apparmor.d/tunables/home.d/site.local
new file mode 100644 (file)
index 0000000..e6796a0
--- /dev/null
@@ -0,0 +1,13 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2010 Canonical Ltd.
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# The following is a space-separated list of where additional user home
+# directories are stored, each must have a trailing '/'. Directories added
+# here are appended to @{HOMEDIRS}.  See tunables/home for details. Eg:
+#@{HOMEDIRS}+=/srv/nfs/home/ /mnt/home/
diff --git a/etc/apparmor.d/tunables/home.d/ubuntu b/etc/apparmor.d/tunables/home.d/ubuntu
new file mode 100644 (file)
index 0000000..32db092
--- /dev/null
@@ -0,0 +1,7 @@
+# This file is auto-generated. It is recommended you update it using:
+# $ sudo dpkg-reconfigure apparmor
+#
+# The following is a space-separated list of where additional user home
+# directories are stored, each must have a trailing '/'. Directories added
+# here are appended to @{HOMEDIRS}.  See tunables/home for details.
+#@{HOMEDIRS}+=
diff --git a/etc/apparmor.d/tunables/kernelvars b/etc/apparmor.d/tunables/kernelvars
new file mode 100644 (file)
index 0000000..65ee266
--- /dev/null
@@ -0,0 +1,33 @@
+#    Copyright (C) 2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# This file should contain declarations to kernel vars or variables
+# that will become kernel vars at some point
+
+# until kernel vars are implemented
+# and until the parser supports nested groupings like
+#   @{pid}=[1-9]{[0-9]{[0-9]{[0-9]{[0-9]{[0-9],},},},},}
+# use
+@{pid}={[1-9],[1-9][0-9],[1-9][0-9][0-9],[1-9][0-9][0-9][0-9],[1-9][0-9][0-9][0-9][0-9],[1-9][0-9][0-9][0-9][0-9][0-9],[1-4][0-9][0-9][0-9][0-9][0-9][0-9]}
+
+#same pattern as @{pid} for now
+@{tid}=@{pid}
+
+#A pattern for pids that can appear
+@{pids}=@{pid}
+
+# Placeholder for user id until kernel var is implemented to match
+# current user of the confined application.
+# Values are 0...4,294,967,295 (32-bit unsigned, 10 digits).
+@{uid}={[0-9],[1-9][0-9],[1-9][0-9][0-9],[1-9][0-9][0-9][0-9],[1-9][0-9][0-9][0-9][0-9],[1-9][0-9][0-9][0-9][0-9][0-9],[1-9][0-9][0-9][0-9][0-9][0-9][0-9],[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9],[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9],[1-4][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]}
+
+#same pattern as @{uid} for now
+@{uids}=@{uid}
+
+# until kernel var is implemented
+@{sys}=/sys/
diff --git a/etc/apparmor.d/tunables/multiarch b/etc/apparmor.d/tunables/multiarch
new file mode 100644 (file)
index 0000000..c54082e
--- /dev/null
@@ -0,0 +1,17 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2010 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# @{multiarch} is the set of patterns matching multi-arch library
+# install prefixes.
+@{multiarch}=*-linux-gnu*
+
+# Also, include files in tunables/multiarch.d for site and packaging
+# specific adjustments to @{multiarch}.
+#include <tunables/multiarch.d>
diff --git a/etc/apparmor.d/tunables/multiarch.d/site.local b/etc/apparmor.d/tunables/multiarch.d/site.local
new file mode 100644 (file)
index 0000000..91877e2
--- /dev/null
@@ -0,0 +1,14 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2011 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# The following is a space-separated list of where additional multipath
+# prefixes are stored, each should not have a trailing '/'. Directories
+# added here are appended to @{multiarch}. See tunables/mutliarch for details. Eg:
+#@{multiarch}+=*-freebsd* s390-hurd-zomg
diff --git a/etc/apparmor.d/tunables/proc b/etc/apparmor.d/tunables/proc
new file mode 100644 (file)
index 0000000..25a1964
--- /dev/null
@@ -0,0 +1,12 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2006 Novell/SUSE
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# @{PROC} is the location where procfs is mounted.
+@{PROC}=/proc/
diff --git a/etc/apparmor.d/tunables/securityfs b/etc/apparmor.d/tunables/securityfs
new file mode 100644 (file)
index 0000000..c572139
--- /dev/null
@@ -0,0 +1,10 @@
+#    Copyright (C) 2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# @{securityfs} is the location where securityfs is mounted.
+@{securityfs}=@{sys}/kernel/security/
diff --git a/etc/apparmor.d/tunables/share b/etc/apparmor.d/tunables/share
new file mode 100644 (file)
index 0000000..f41121c
--- /dev/null
@@ -0,0 +1,15 @@
+@{flatpak_exports_root} = {flatpak/exports,flatpak/{app,runtime}/*/*/*/*/export}
+
+# System-wide directories with behaviour analogous to /usr/share
+# in patterns like the freedesktop.org basedir spec. These are
+# owned by root or a system user, appear in XDG_DATA_DIRS, and
+# are the parent directory for `applications`, `themes`,
+# `dbus-1/services`, etc.
+@{system_share_dirs} = /{usr,usr/local,var/lib/@{flatpak_exports_root}}/share
+
+# Per-user/personal directories with behaviour analogous to
+# ~/.local/share in patterns like the freedesktop.org basedir spec.
+# These are owned by the user running an application, appear in
+# XDG_DATA_DIRS or XDG_DATA_HOME, and are the parent directory
+# for the same subdirectories as @{system_share_dirs}
+@{user_share_dirs} = @{HOME}/.local{,/share/@{flatpak_exports_root}}/share
diff --git a/etc/apparmor.d/tunables/sys b/etc/apparmor.d/tunables/sys
new file mode 100644 (file)
index 0000000..c5257e3
--- /dev/null
@@ -0,0 +1,9 @@
+#    Copyright (C) 2012 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+#This file is DEPRECATED! @{sys} is defined in tunables/kernelvars now.
diff --git a/etc/apparmor.d/tunables/xdg-user-dirs b/etc/apparmor.d/tunables/xdg-user-dirs
new file mode 100644 (file)
index 0000000..fcaf8d4
--- /dev/null
@@ -0,0 +1,24 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2014 Canonical Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# Define the common set of XDG user directories (usually defined in
+# /etc/xdg/user-dirs.defaults)
+@{XDG_DESKTOP_DIR}="Desktop"
+@{XDG_DOWNLOAD_DIR}="Downloads"
+@{XDG_TEMPLATES_DIR}="Templates"
+@{XDG_PUBLICSHARE_DIR}="Public"
+@{XDG_DOCUMENTS_DIR}="Documents"
+@{XDG_MUSIC_DIR}="Music"
+@{XDG_PICTURES_DIR}="Pictures"
+@{XDG_VIDEOS_DIR}="Videos"
+
+# Also, include files in tunables/xdg-user-dirs.d for site-specific adjustments
+# to the various XDG directories
+#include <tunables/xdg-user-dirs.d>
diff --git a/etc/apparmor.d/tunables/xdg-user-dirs.d/site.local b/etc/apparmor.d/tunables/xdg-user-dirs.d/site.local
new file mode 100644 (file)
index 0000000..8fcabfa
--- /dev/null
@@ -0,0 +1,21 @@
+# ------------------------------------------------------------------
+#
+#    Copyright (C) 2014 Canonical Ltd.
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+# ------------------------------------------------------------------
+
+# The following may be used to add additional entries such as for
+# translations. See tunables/xdg-user-dirs for details. Eg:
+#@{XDG_MUSIC_DIR}+="Musique"
+
+#@{XDG_DESKTOP_DIR}+=""
+#@{XDG_DOWNLOAD_DIR}+=""
+#@{XDG_TEMPLATES_DIR}+=""
+#@{XDG_PUBLICSHARE_DIR}+=""
+#@{XDG_DOCUMENTS_DIR}+=""
+#@{XDG_MUSIC_DIR}+=""
+#@{XDG_PICTURES_DIR}+=""
+#@{XDG_VIDEOS_DIR}+=""
diff --git a/etc/apparmor.d/usr.bin.man b/etc/apparmor.d/usr.bin.man
new file mode 100644 (file)
index 0000000..b016052
--- /dev/null
@@ -0,0 +1,105 @@
+# vim:syntax=apparmor
+
+#include <tunables/global>
+
+/usr/bin/man {
+  #include <abstractions/base>
+
+  # Use a special profile when man calls anything groff-related.  We only
+  # include the programs that actually parse input data in a non-trivial
+  # way, not wrappers such as groff and nroff, since the latter would need a
+  # broader profile.
+  /usr/bin/eqn rmCx -> &man_groff,
+  /usr/bin/grap rmCx -> &man_groff,
+  /usr/bin/pic rmCx -> &man_groff,
+  /usr/bin/preconv rmCx -> &man_groff,
+  /usr/bin/refer rmCx -> &man_groff,
+  /usr/bin/tbl rmCx -> &man_groff,
+  /usr/bin/troff rmCx -> &man_groff,
+  /usr/bin/vgrind rmCx -> &man_groff,
+
+  # Similarly, use a special profile when man calls decompressors and other
+  # simple filters.
+  /{,usr/}bin/bzip2 rmCx -> &man_filter,
+  /{,usr/}bin/gzip rmCx -> &man_filter,
+  /usr/bin/col rmCx -> &man_filter,
+  /usr/bin/compress rmCx -> &man_filter,
+  /usr/bin/iconv rmCx -> &man_filter,
+  /usr/bin/lzip.lzip rmCx -> &man_filter,
+  /usr/bin/tr rmCx -> &man_filter,
+  /usr/bin/xz rmCx -> &man_filter,
+
+  # Allow basically anything in terms of file system access, subject to DAC.
+  # The purpose of this profile isn't to confine man itself (that might be
+  # nice in the future, but is tricky since it's quite configurable), but to
+  # confine the processes it calls that parse untrusted data.
+  /** mrixwlk,
+  unix,
+
+  capability setuid,
+  capability setgid,
+
+  signal peer=@{profile_name},
+  signal peer=/usr/bin/man//&man_groff,
+  signal peer=/usr/bin/man//&man_filter,
+
+  # Site-specific additions and overrides.  See local/README for details.
+  #include <local/usr.bin.man>
+}
+
+profile man_groff {
+  #include <abstractions/base>
+  # Recent kernels revalidate open FDs, and there are often some still
+  # open on TTYs.  This is temporary until man learns to close irrelevant
+  # open FDs before execve.
+  #include <abstractions/consoles>
+  # man always runs its groff pipeline with the input file open on stdin,
+  # so we can skip <abstractions/user-manpages>.
+
+  /usr/bin/eqn rm,
+  /usr/bin/grap rm,
+  /usr/bin/pic rm,
+  /usr/bin/preconv rm,
+  /usr/bin/refer rm,
+  /usr/bin/tbl rm,
+  /usr/bin/troff rm,
+  /usr/bin/vgrind rm,
+
+  /etc/groff/** r,
+  /etc/papersize r,
+  /usr/lib/groff/site-tmac/** r,
+  /usr/share/groff/** r,
+
+  signal peer=/usr/bin/man,
+  # @{profile_name} doesn't seem to work here.
+  signal peer=/usr/bin/man//&man_groff,
+}
+
+profile man_filter {
+  #include <abstractions/base>
+  # Recent kernels revalidate open FDs, and there are often some still
+  # open on TTYs.  This is temporary until man learns to close irrelevant
+  # open FDs before execve.
+  #include <abstractions/consoles>
+
+  /{,usr/}bin/bzip2 rm,
+  /{,usr/}bin/gzip rm,
+  /usr/bin/col rm,
+  /usr/bin/compress rm,
+  /usr/bin/iconv rm,
+  /usr/bin/lzip.lzip rm,
+  /usr/bin/tr rm,
+  /usr/bin/xz rm,
+
+  # Manual pages can be more or less anywhere, especially with "man -l", and
+  # there's no harm in allowing wide read access here since the worst it can
+  # do is feed data to the invoking man process.
+  /** r,
+
+  # Allow writing cat pages.
+  /var/cache/man/** w,
+
+  signal peer=/usr/bin/man,
+  # @{profile_name} doesn't seem to work here.
+  signal peer=/usr/bin/man//&man_filter,
+}
diff --git a/etc/apparmor.d/usr.lib.snapd.snap-confine.real b/etc/apparmor.d/usr.lib.snapd.snap-confine.real
new file mode 100644 (file)
index 0000000..a569e1c
--- /dev/null
@@ -0,0 +1,613 @@
+# Author: Jamie Strandboge <jamie@canonical.com>
+#include <tunables/global>
+
+/usr/lib/snapd/snap-confine (attach_disconnected) {
+    # Include any additional files that snapd chose to generate.
+    # - for $HOME on NFS
+    # - for $HOME on encrypted media
+    #
+    # Those are discussed on https://forum.snapcraft.io/t/snapd-vs-upstream-kernel-vs-apparmor
+    # and https://forum.snapcraft.io/t/snaps-and-nfs-home/
+    #include "/var/lib/snapd/apparmor/snap-confine"
+
+    # We run privileged, so be fanatical about what we include and don't use
+    # any abstractions
+    /etc/ld.so.cache r,
+    /etc/ld.so.preload r,
+
+    # Do not assume that the interpreter is always named like
+    # ld-linux-x86_64.so, as on some architectures there can be a version after
+    # the .so suffix, eg. ld-linux-aarch64.so.1
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}ld{-*,64}.so* mrix,
+    # libc, you are funny
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}libc{,-[0-9]*}.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}libpthread{,-[0-9]*}.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libreadline{,-[0-9]*}.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}librt{,-[0-9]*}.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libgcc_s.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libncursesw{,-[0-9]*}.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}libresolv{,-[0-9]*}.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libselinux.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libpcre{,2}{,-[0-9]*}.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libmount.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libblkid.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libuuid.so* mr,
+    # normal libs in order
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libapparmor.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libcgmanager.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}libdl{,-[0-9]*}.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libnih.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libnih-dbus.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libdbus-1.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libudev.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libseccomp.so* mr,
+    /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libcap.so* mr,
+
+    /usr/lib/snapd/snap-confine mr,
+
+    # This rule is needed when executing from a "base: core" devmode snap on 
+    # UC18 and newer where the /usr/lib/snapd/snap-confine inside the 
+    # "base: core" mount namespace always comes from the snapd snap, and thus
+    # we will execute snap-confine via this path, and thus need to be able to
+    # read this path when executing. It's also necessary on classic where both
+    # the snapd and the core snap are installed at the same time.
+    # TODO: remove this rule when we stop supporting executing other snaps from
+    # inside devmode snaps, ideally even in the short term we would only include
+    # this rule on core only, and specifically uc18 and newer where we need it
+    #@VERBATIM_LIBEXECDIR_SNAP_CONFINE@ mr,
+
+    /dev/null rw,
+    /dev/full rw,
+    /dev/zero rw,
+    /dev/random r,
+    /dev/urandom r,
+    /dev/pts/[0-9]* rw,
+    /dev/tty rw,
+
+    # cgroup: devices
+    capability sys_admin,
+    capability dac_read_search,
+    capability dac_override,
+    /sys/fs/cgroup/ r,
+    /sys/fs/cgroup/devices/ r,
+    /sys/fs/cgroup/devices/snap.*/ rw,
+    /sys/fs/cgroup/devices/snap.*/cgroup.procs w,
+    /sys/fs/cgroup/devices/snap.*/devices.{allow,deny} w,
+
+    # cgroup: freezer
+    # Allow creating per-snap cgroup freezers and adding snap command (task)
+    # invocations to the freezer. This allows for reliably enumerating all
+    # running processes for the snap. In addition, allow enumerating processes
+    # in the cgroup to determine if it is occupied.
+    /sys/fs/cgroup/freezer/ r,
+    /sys/fs/cgroup/freezer/snap.*/ w,
+    /sys/fs/cgroup/freezer/snap.*/cgroup.procs rw,
+    /sys/fs/cgroup/ r,
+    /sys/fs/cgroup/** r,
+
+    # cgroup: reading own cgroup
+    @{PROC}/@{pid}/cgroup r,
+
+    # cgroup: manage bpf map for device cgroup
+    /sys/fs/bpf/ r,
+    /sys/fs/bpf/snap/ rw,
+    /sys/fs/bpf/snap/* rw,
+    # s-c may need to raise the memlock limit
+    capability sys_resource,
+
+    # querying udev
+    /etc/udev/udev.conf r,
+    /sys/**/uevent r,
+    /run/udev/** rw,
+    /{,usr/}bin/tr ixr,
+    /usr/lib/locale/** r,
+    /usr/lib/@{multiarch}/gconv/gconv-modules r,
+    /usr/lib/@{multiarch}/gconv/gconv-modules.cache r,
+
+    # priv dropping
+    capability setuid,
+    capability setgid,
+
+    # changing profile
+    @{PROC}/[0-9]*/attr/{,apparmor/}exec w,
+    # Reading current profile
+    @{PROC}/[0-9]*/attr/{,apparmor/}current r,
+    # Reading available filesystems
+    @{PROC}/filesystems r,
+
+    # To find where apparmor is mounted
+    @{PROC}/[0-9]*/mounts r,
+    # To find if apparmor is enabled
+    /sys/module/apparmor/parameters/enabled r,
+
+    # Don't allow changing profile to unconfined or profiles that start with
+    # '/'. Use 'unsafe' to support snap-exec on armhf and its reliance on
+    # the environment for determining the capabilities of the architecture.
+    # 'unsafe' is ok here because the kernel will have already cleared the
+    # environment as part of launching snap-confine with CAP_SYS_ADMIN. This
+    # does leave directories as configured by ld.so.preload as well as
+    # LD_PRELOAD to be set to a library which is in a directory configured by
+    # ld.so.conf, but access to those locations is mediated by this profile
+    # (which requires rules for specific locations).
+    change_profile unsafe /** -> [^u/]**,
+    change_profile unsafe /** -> u[^n]**,
+    change_profile unsafe /** -> un[^c]**,
+    change_profile unsafe /** -> unc[^o]**,
+    change_profile unsafe /** -> unco[^n]**,
+    change_profile unsafe /** -> uncon[^f]**,
+    change_profile unsafe /** -> unconf[^i]**,
+    change_profile unsafe /** -> unconfi[^n]**,
+    change_profile unsafe /** -> unconfin[^e]**,
+    change_profile unsafe /** -> unconfine[^d]**,
+    change_profile unsafe /** -> unconfined?**,
+
+    # allow changing to a few not caught above
+    change_profile unsafe /** -> {u,un,unc,unco,uncon,unconf,unconfi,unconfin,unconfine},
+
+    # LP: #1446794 - when this bug is fixed, change the above to:
+    # deny change_profile unsafe /** -> {unconfined,/**},
+    # change_profile unsafe /** -> **,
+
+    # reading seccomp filters
+    /{tmp/snap.rootfs_*/,}var/lib/snapd/seccomp/bpf/*.bin r,
+
+    # LP: #1668659 and parallel instaces of classic snaps
+    mount options=(rw rbind) /snap/ -> /snap/,
+    mount options=(rw rshared) -> /snap/,
+    mount options=(rw rbind) /var/lib/snapd/snap/ -> /var/lib/snapd/snap/,
+    mount options=(rw rshared) -> /var/lib/snapd/snap/,
+
+    # boostrapping the mount namespace
+    mount options=(rw rshared) -> /,
+    mount options=(rw bind) /tmp/snap.rootfs_*/ -> /tmp/snap.rootfs_*/,
+    mount options=(rw unbindable) -> /tmp/snap.rootfs_*/,
+    # the next line is for classic system
+    mount options=(rw rbind) /snap/*/*/ -> /tmp/snap.rootfs_*/,
+    # the next line is for core system
+    mount options=(rw rbind) / -> /tmp/snap.rootfs_*/,
+    # all of the constructed rootfs is a rslave
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/,
+    # bidirectional mounts (for both classic and core)
+    # NOTE: this doesn't capture the MERGED_USR configuration option so that
+    # when a distro with merged /usr and / that uses apparmor shows up it
+    # should be handled here.
+    /{,run/}media/ w,
+    mount options=(rw rbind) /{,run/}media/ -> /tmp/snap.rootfs_*/{,run/}media/,
+    /run/netns/ w,
+    mount options=(rw rbind) /run/netns/ -> /tmp/snap.rootfs_*/run/netns/,
+    # unidirectional mounts (only for classic system)
+    mount options=(rw rbind) /dev/ -> /tmp/snap.rootfs_*/dev/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/dev/,
+
+    mount options=(rw rbind) /etc/ -> /tmp/snap.rootfs_*/etc/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/etc/,
+
+    mount options=(rw rbind) /home/ -> /tmp/snap.rootfs_*/home/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/home/,
+
+    mount options=(rw rbind) /root/ -> /tmp/snap.rootfs_*/root/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/root/,
+
+    mount options=(rw rbind) /proc/ -> /tmp/snap.rootfs_*/proc/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/proc/,
+
+    mount options=(rw rbind) /sys/ -> /tmp/snap.rootfs_*/sys/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/sys/,
+
+    mount options=(rw rbind) /tmp/ -> /tmp/snap.rootfs_*/tmp/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/tmp/,
+
+    mount options=(rw rbind) /var/lib/dhcp/ -> /tmp/snap.rootfs_*/var/lib/dhcp/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/var/lib/dhcp/,
+
+    mount options=(rw rbind) /var/lib/snapd/ -> /tmp/snap.rootfs_*/var/lib/snapd/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/var/lib/snapd/,
+
+    mount options=(rw rbind) /var/snap/ -> /tmp/snap.rootfs_*/var/snap/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/var/snap/,
+
+    mount options=(rw rbind) /var/tmp/ -> /tmp/snap.rootfs_*/var/tmp/,
+    # /var/volatile is the default volatile location on Yocto/Poky, typically used with read-only rootfs setups
+    mount options=(rw rbind) /var/volatile/tmp/ -> /tmp/snap.rootfs_*/var/tmp/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/var/tmp/,
+
+    mount options=(rw rbind) /run/ -> /tmp/snap.rootfs_*/run/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/run/,
+
+    mount options=(rw rbind) /var/lib/extrausers/ -> /tmp/snap.rootfs_*/var/lib/extrausers/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/var/lib/extrausers/,
+
+    mount options=(rw rbind) {,/usr}/lib{,32,64,x32}/modules/ -> /tmp/snap.rootfs_*{,/usr}/lib/modules/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*{,/usr}/lib/modules/,
+
+    mount options=(rw rbind) {,/usr}/lib{,32,64,x32}/firmware/ -> /tmp/snap.rootfs_*{,/usr}/lib/firmware/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*{,/usr}/lib/firmware/,
+
+    mount options=(rw rbind) /var/log/ -> /tmp/snap.rootfs_*/var/log/,
+    # /var/volatile is the default volatile location on Yocto/Poky, typically used with read-only rootfs setups
+    mount options=(rw rbind) /var/volatile/log/ -> /tmp/snap.rootfs_*/var/log/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/var/log/,
+
+    mount options=(rw rbind) /usr/src/ -> /tmp/snap.rootfs_*/usr/src/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/usr/src/,
+
+    mount options=(rw rbind) /mnt/ -> /tmp/snap.rootfs_*/mnt/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/mnt/,
+
+    # allow making host snap-exec available inside base snaps
+    mount options=(rw bind) /usr/lib/snapd/ -> /tmp/snap.rootfs_*/usr/lib/snapd/,
+    mount options=(rw slave) -> /tmp/snap.rootfs_*/usr/lib/snapd/,
+
+    # allow making re-execed host snap-exec available inside base snaps
+    mount options=(ro bind) /snap/core/*/usr/lib/snapd/ -> /tmp/snap.rootfs_*/usr/lib/snapd/,
+    # allow making snapd snap tools available inside base snaps
+    mount options=(ro bind) /snap/snapd/*/usr/lib/snapd/ -> /tmp/snap.rootfs_*/usr/lib/snapd/,
+
+    mount options=(rw bind) /usr/bin/snapctl -> /tmp/snap.rootfs_*/usr/bin/snapctl,
+    mount options=(rw slave) -> /tmp/snap.rootfs_*/usr/bin/snapctl,
+
+    # /etc/alternatives (classic and normal mode)
+    mount options=(rw bind) /snap/*/*/etc/alternatives/ -> /tmp/snap.rootfs_*/etc/alternatives/,
+    mount options=(rw bind) /snap/*/*/etc/ssl/ -> /tmp/snap.rootfs_*/etc/ssl/,
+    mount options=(rw bind) /snap/*/*/etc/nsswitch.conf -> /tmp/snap.rootfs_*/etc/nsswitch.conf,
+    mount options=(rw bind) /snap/*/*/etc/apparmor/ -> /tmp/snap.rootfs_*/etc/apparmor/,
+    mount options=(rw bind) /snap/*/*/etc/apparmor.d/ -> /tmp/snap.rootfs_*/etc/apparmor.d/,
+
+    # /etc/alternatives (core/legacy mode)
+    mount options=(rw bind) /etc/alternatives/ -> /tmp/snap.rootfs_*/etc/alternatives/,
+
+    # making all those directories slave shared.
+    mount options=(rw slave) -> /tmp/snap.rootfs_*/etc/alternatives/,
+    mount options=(rw slave) -> /tmp/snap.rootfs_*/etc/ssl/,
+    mount options=(rw slave) -> /tmp/snap.rootfs_*/etc/nsswitch.conf,
+    mount options=(rw slave) -> /tmp/snap.rootfs_*/etc/apparmor/,
+    mount options=(rw slave) -> /tmp/snap.rootfs_*/etc/apparmor.d/,
+
+    # the /snap directory
+    mount options=(rw rbind) /snap/ -> /tmp/snap.rootfs_*/snap/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/snap/,
+    # pivot_root preparation and execution
+    mount options=(rw bind) /tmp/snap.rootfs_*/var/lib/snapd/hostfs/ -> /tmp/snap.rootfs_*/var/lib/snapd/hostfs/,
+    mount options=(rw private) -> /tmp/snap.rootfs_*/var/lib/snapd/hostfs/,
+
+    # pivot_root mediation in AppArmor is not complete. See LP: #1791711.
+    # However, we can mediate the new_root and put_old to be what we expect,
+    # and then deny directory creation within old_root to prevent trivial
+    # pivoting into a whitelisted path.
+    pivot_root oldroot=/tmp/snap.rootfs_*/var/lib/snapd/hostfs/ /tmp/snap.rootfs_*/,
+    # Explicitly deny creating the old_root directory in case it is
+    # inadvertently added somewhere else. While this doesn't resolve
+    # LP: #1791711, it provides some hardening.
+    audit deny /tmp/snap.rootfs_*/{var/,var/lib/,var/lib/snapd/,var/lib/snapd/hostfs/} w,
+
+    # cleanup
+    umount /var/lib/snapd/hostfs/tmp/snap.rootfs_*/,
+    umount /var/lib/snapd/hostfs/sys/,
+    umount /var/lib/snapd/hostfs/dev/,
+    umount /var/lib/snapd/hostfs/proc/,
+    mount options=(rw rslave) -> /var/lib/snapd/hostfs/,
+
+    # Hide /writable from view of snaps.
+    mount options=(rprivate) -> /{,var/lib/snapd/hostfs/}writable/,
+    umount /{,var/lib/snapd/hostfs/}writable/,
+
+    # set up user mount namespace
+    mount options=(rslave) -> /,
+
+    # set up mount namespace for parallel instances of classic snaps
+    mount options=(rw rbind) /snap/{,*/} -> /snap/{,*/},
+    mount options=(rslave) -> /snap/,
+    mount options=(rslave) -> /var/snap/,
+    mount options=(rw rbind) /var/snap/{,*/} -> /var/snap/{,*/},
+    mount options=(rw rshared) -> /var/snap/,
+
+    # Allow reading the os-release file (possibly a symlink to /usr/lib).
+    /{etc/,usr/lib/}os-release r,
+
+    # Allow creating /var/lib/snapd/hostfs, if missing
+    /var/lib/snapd/hostfs/ rw,
+
+    # set up snap-specific private /tmp dir
+    capability chown,
+    /tmp/ rw,
+    /tmp/snap.*/ rw,
+    /tmp/snap.*/tmp/ rw,
+    mount options=(rw private) ->  /tmp/,
+    mount options=(rw bind) /tmp/snap.*/tmp/ -> /tmp/,
+    mount fstype=devpts options=(rw) devpts -> /dev/pts/,
+    mount options=(rw bind) /dev/pts/ptmx -> /dev/ptmx,     # for bind mounting
+    mount options=(rw bind) /dev/pts/ptmx -> /dev/pts/ptmx, # for bind mounting under LXD
+    # Workaround for LP: #1584456 on older kernels that mistakenly think
+    # /dev/pts/ptmx needs a trailing '/'
+    mount options=(rw bind) /dev/pts/ptmx/ -> /dev/ptmx/,
+    mount options=(rw bind) /dev/pts/ptmx/ -> /dev/pts/ptmx/,
+
+    # for running snaps on classic
+    /snap/ r,
+    /snap/** r,
+    /snap/ r,
+    /snap/** r,
+
+    # NOTE: at this stage the /snap directory is stable as we have called
+    # pivot_root already.
+
+    # nvidia handling, glob needs /usr/** and the launcher must be
+    # able to bind mount the nvidia dir
+    /sys/module/nvidia/version r,
+    /sys/**/drivers/nvidia{,_*}/* r,
+    /sys/**/nvidia*/uevent r,
+    /sys/module/nvidia{,_*}/* r,
+    /dev/nvidia[0-9]* r,
+    /dev/nvidiactl r,
+    /dev/nvidia-uvm r,
+    /usr/** r,
+    mount options=(rw bind) /usr/lib{,32}/nvidia-*/ -> /{tmp/snap.rootfs_*/,}var/lib/snapd/lib/gl{,32}/,
+    mount options=(rw bind) /usr/lib{,32}/nvidia-*/ -> /{tmp/snap.rootfs_*/,}var/lib/snapd/lib/gl{,32}/,
+    /tmp/snap.rootfs_*/var/lib/snapd/lib/gl{,32}/{,*} w,
+    mount fstype=tmpfs options=(rw nodev noexec) none -> /tmp/snap.rootfs_*/var/lib/snapd/lib/gl{,32}/,
+    mount options=(remount ro bind) -> /tmp/snap.rootfs_*/var/lib/snapd/lib/gl{,32}/,
+
+    # Vulkan support
+    /tmp/snap.rootfs_*/var/lib/snapd/lib/vulkan/{,*} w,
+    mount fstype=tmpfs options=(rw nodev noexec) none -> /tmp/snap.rootfs_*/var/lib/snapd/lib/vulkan/,
+    mount options=(remount ro bind) -> /tmp/snap.rootfs_*/var/lib/snapd/lib/vulkan/,
+
+    # GLVND EGL vendor
+    /tmp/snap.rootfs_*/var/lib/snapd/lib/glvnd/{,*} w,
+    mount fstype=tmpfs options=(rw nodev noexec) none -> /tmp/snap.rootfs_*/var/lib/snapd/lib/glvnd/,
+    mount options=(remount ro bind) -> /tmp/snap.rootfs_*/var/lib/snapd/lib/glvnd/,
+
+    # create gl dirs as needed
+    /tmp/snap.rootfs_*/ r,
+    /tmp/snap.rootfs_*/var/ r,
+    /tmp/snap.rootfs_*/var/lib/ r,
+    /tmp/snap.rootfs_*/var/lib/snapd/ r,
+    /tmp/snap.rootfs_*/var/lib/snapd/lib/ r,
+    /tmp/snap.rootfs_*/var/lib/snapd/lib/gl{,32}/ r,
+    /tmp/snap.rootfs_*/var/lib/snapd/lib/gl{,32}/** rw,
+    /tmp/snap.rootfs_*/var/lib/snapd/lib/vulkan/ r,
+    /tmp/snap.rootfs_*/var/lib/snapd/lib/vulkan/** rw,
+    /tmp/snap.rootfs_*/var/lib/snapd/lib/glvnd/ r,
+    /tmp/snap.rootfs_*/var/lib/snapd/lib/glvnd/** rw,
+
+    # for chroot on steroids, we use pivot_root as a better chroot that makes
+    # apparmor rules behave the same on classic and outside of classic.
+
+    # for creating the user data directories: ~/snap, ~/snap/<name> and
+    # ~/snap/<name>/<version>
+    / r,
+    @{HOMEDIRS}/ r,
+    # These should both have 'owner' match but due to LP: #1466234, we can't
+    # yet
+    @{HOME}/ r,
+    @{HOME}/snap/{,*/,*/*/} rw,
+
+    # experimental
+    @{HOME}/.snap/                rw,
+    @{HOME}/.snap/data/{,*/,*/*/} rw,
+
+    # Special case for *classic* snaps that are used by users with existing dirs
+    # in /var/lib/. Like jenkins, postgresql, mysql, puppet, ...
+    # (see https://forum.snapcraft.io/t/9717)
+    # TODO: this can be removed once we support home-dirs outside of /home
+    #       better
+    /var/ r,
+    /var/lib/ r,
+    # These should both have 'owner' match but due to LP: #1466234, we can't
+    # yet
+    /var/lib/*/ r,
+    /var/lib/*/snap/{,*/,*/*/} rw,
+
+    # for creating the user shared memory directories
+    /{dev,run}/{,shm/} r,
+    # This should both have 'owner' match but due to LP: #1466234, we can't yet
+    /{dev,run}/shm/{,*/,*/*/} rw,
+
+    # for creating the user XDG_RUNTIME_DIR: /run/user, /run/user/UID and
+    # /run/user/UID/<name>
+    /run/user/{,[0-9]*/,[0-9]*/*/} rw,
+
+    # Workaround https://launchpad.net/bugs/359338 until upstream handles
+    # stacked filesystems generally.
+    # encrypted ~/.Private and old-style encrypted $HOME
+    @{HOME}/.Private/ r,
+    @{HOME}/.Private/** mrwlk,
+    # new-style encrypted $HOME
+    @{HOMEDIRS}/.ecryptfs/*/.Private/ r,
+    @{HOMEDIRS}/.ecryptfs/*/.Private/** mrwlk,
+
+    # Allow snap-confine to move to the void, creating it if necessary.
+    /var/lib/snapd/void/ rw,
+
+    # Allow snap-confine to read snap contexts
+    /var/lib/snapd/context/snap.* r,
+
+    # Allow snap-confine to unmount stale mount namespaces.
+    umount /run/snapd/ns/*.mnt,
+    /run/snapd/ns/snap.*.fstab w,
+    # Allow snap-confine to read and write mount namespace information files.
+    /run/snapd/ns/snap.*.info rw,
+    # Required to correctly unmount bound mount namespace.
+    # See LP: #1735459 for details.
+    umount /,
+
+    # support for locking
+    /run/snapd/lock/ rw,
+    /run/snapd/lock/*.lock rwk,
+
+    # support for the mount namespace sharing
+    capability sys_ptrace,
+    # allow snap-confine to read /proc/1/ns/mnt
+    ptrace read peer=unconfined,
+    # https://forum.snapcraft.io/t/custom-kernel-error-on-readlinkat-in-mount-namespace/6097/21
+    ptrace trace peer=unconfined,
+
+    mount options=(rw rbind) /run/snapd/ns/ -> /run/snapd/ns/,
+    mount options=(private) -> /run/snapd/ns/,
+    / rw,
+    /run/ rw,
+    /run/snapd/ rw,
+    /run/snapd/ns/ rw,
+    /run/snapd/ns/*.lock rwk,
+    /run/snapd/ns/*.mnt rw,
+    ptrace (read, readby, tracedby) peer=/usr/lib/snapd/snap-confine//mount-namespace-capture-helper,
+    @{PROC}/*/mountinfo r,
+    capability sys_chroot,
+    capability sys_admin,
+    signal (send, receive) set=(abrt) peer=/usr/lib/snapd/snap-confine,
+    signal (send) set=(int) peer=/usr/lib/snapd/snap-confine//mount-namespace-capture-helper,
+    signal (send, receive) set=(int, alrm, exists) peer=/usr/lib/snapd/snap-confine,
+    signal (receive) set=(exists) peer=/usr/lib/snapd/snap-confine//mount-namespace-capture-helper,
+
+    # workaround for linux 4.13/upstream, see
+    # https://forum.snapcraft.io/t/snapd-2-27-6-2-in-debian-sid-blocked-on-apparmor-in-kernel-4-13-0-1/2813/3
+    ptrace (trace, tracedby) peer=/usr/lib/snapd/snap-confine,
+
+    # Allow reading snap cookies.
+    /var/lib/snapd/cookie/snap.* r,
+
+    # For aa_change_hat() to go into ^mount-namespace-capture-helper
+    @{PROC}/[0-9]*/attr/{,apparmor/}current w,
+
+    # As a special exception allow snap-confine to write to anything in /var/lib.
+    # This code should be changed to allow delegation so that snap-confine can
+    # inherit any file descriptor and pass it to the invoked application but
+    # this is not possible in apparmor yet.
+    # See https://bugs.launchpad.net/snapd/+bug/1815869
+    /var/lib/** rw,
+
+    ^mount-namespace-capture-helper (attach_disconnected) {
+        # We run privileged, so be fanatical about what we include and don't use
+        # any abstractions
+        /etc/ld.so.cache r,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}ld{-*,64}.so* mrix,
+        # libc, you are funny
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}libc{,-[0-9]*}.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}libpthread{,-[0-9]*}.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libreadline{,-[0-9]*}.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}librt{,-[0-9]*}.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libgcc_s.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libncursesw{,-[0-9]*}.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}libresolv{,-[0-9]*}.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libselinux.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libpcre.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libmount.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libblkid.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libuuid.so* mr,
+        # normal libs in order
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libapparmor.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libcgmanager.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/{,atomics/}}libdl{,-[0-9]*}.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libnih.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libnih-dbus.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libdbus-1.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libudev.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libseccomp.so* mr,
+        /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libcap.so* mr,
+
+        /usr/lib/snapd/snap-confine mr,
+
+        /dev/null rw,
+        /dev/full rw,
+        /dev/zero rw,
+        /dev/random r,
+        /dev/urandom r,
+
+        capability sys_ptrace,
+        capability sys_admin,
+        # This allows us to read and bind mount the namespace file
+        / r,
+        @{PROC}/ r,
+        @{PROC}/*/ r,
+        @{PROC}/*/ns/ r,
+        @{PROC}/*/ns/mnt r,
+        /run/ r,
+        /run/snapd/ r,
+        /run/snapd/ns/ r,
+        /run/snapd/ns/*.mnt rw,
+        # NOTE: the source name is / even though we map /proc/123/ns/mnt
+        mount options=(rw bind) / -> /run/snapd/ns/*.mnt,
+        # This is the SIGALRM that we send and receive if a timeout expires
+        signal (send, receive) set=(alrm) peer=/usr/lib/snapd/snap-confine//mount-namespace-capture-helper,
+        # Those two rules are exactly the same but we don't know if the parent process is still alive
+        # and hence has the appropriate label or is already dead and hence has no label.
+        signal (send) set=(exists) peer=/usr/lib/snapd/snap-confine,
+        signal (send) set=(exists) peer=unconfined,
+        # This is so that we can abort
+        signal (send, receive) set=(abrt) peer=/usr/lib/snapd/snap-confine//mount-namespace-capture-helper,
+        #  This is the signal we get if snap-confine dies (we subscribe to it with prctl)
+        signal (receive) set=(int) peer=/usr/lib/snapd/snap-confine,
+        # This allows snap-confine to be killed from the outside.
+        signal (receive) peer=unconfined,
+        # This allows snap-confine to wait for us
+        ptrace (read, trace, tracedby) peer=/usr/lib/snapd/snap-confine,
+    }
+
+    # Allow snap-confine to be killed
+    signal (receive) peer=unconfined,
+
+    # Allow switching to snap-update-ns with a per-snap profile.
+    change_profile -> snap-update-ns.*,
+
+    # Allow executing snap-update-ns when...
+
+    # ...snap-confine is, conceptually, re-executing and uses snap-update-ns
+    # from the distribution package. This is also the location used when using
+    # the core/base snap on all-snap systems. The variants here represent
+    # various locations of libexecdir across distributions.
+    /usr/lib{,exec,64}/snapd/snap-update-ns r,
+
+    # ...snap-confine is not, conceptually, re-executing and uses
+    # snap-update-ns from the distribution package but we are already inside
+    # the constructed mount namespace so we must traverse "hostfs". The
+    # variants here represent various locations of libexecdir across
+    # distributions.
+    /var/lib/snapd/hostfs/usr/lib{,exec,64}/snapd/snap-update-ns r,
+
+    # ..snap-confine is, conceptually, re-executing and uses snap-update-ns
+    # from the core or snapd snaps. Note that the location of the actual snap
+    # varies from distribution to distribution. The variants here represent
+    # different locations of snap mount directory across distributions.
+    /{,var/lib/snapd/}snap/{core,snapd}/*/usr/lib/snapd/snap-update-ns r,
+
+    # ...snap-confine is, conceptually, re-executing and uses snap-update-ns
+    # from the core snap or snapd snap, but we are already inside the
+    # constructed mount namespace. Here the apparmor kernel module
+    # re-constructs the path to snap-update-ns using the "hostfs" mount entry
+    # rather than the more "natural" /snap mount entry but we have no control
+    # over that.  This is reported as (LP: #1716339). The variants here
+    # represent different locations of snap mount directory across
+    # distributions.
+    /var/lib/snapd/hostfs/{,var/lib/snapd/}snap/{core,snapd}/*/usr/lib/snapd/snap-update-ns r,
+
+    # Allow executing snap-discard-ns, just like the set for snap-update-ns
+    # above but with the key difference that snap-discard-ns does not
+    # have a dedicated profile so we need to inherit snap-confine's profile.
+
+    /usr/lib{,exec,64}/snapd/snap-discard-ns rix,
+    /var/lib/snapd/hostfs/usr/lib{,exec,64}/snapd/snap-discard-ns rix,
+    /{,var/lib/snapd/}snap/{core,snapd}/*/usr/lib/snapd/snap-discard-ns rix,
+    /var/lib/snapd/hostfs/{,var/lib/snapd/}snap/{core,snapd}/*/usr/lib/snapd/snap-discard-ns rix,
+
+    # Allow mounting /var/lib/jenkins from the host into the snap.
+    mount options=(rw rbind) /var/lib/jenkins/ -> /tmp/snap.rootfs_*/var/lib/jenkins/,
+    mount options=(rw rslave) -> /tmp/snap.rootfs_*/var/lib/jenkins/,
+
+    # Suppress noisy file_inherit denials (LP: #1850552) until LP: #1849753 is
+    # fixed.
+    deny /dev/shm/.org.chromium.Chromium.* rw,
+
+    # While snap-confine itself doesn't require unix rules and therefore all
+    # unix rules are implicitly denied, adding an explicit deny for unix to
+    # silence noisy denials breaks nested lxd. Until the cause is determined,
+    # do not use an explicit deny for unix. (LP: #1855355)
+    #deny unix,
+
+    # Explicitly deny these accesses which show up on Arch to silence the
+    # denials for this unneeded access.
+    deny /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libnss_files-[0-9]*.so* mr,
+    deny /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libnss_mymachines.[0-9]*.so* mr,
+    deny /{,usr/}lib{,32,64,x32}/{,@{multiarch}/}libnss_systemd.[0-9]*.so* mr,
+    deny /etc/nsswitch.conf r,
+    deny /etc/passwd r,
+}
diff --git a/etc/apparmor.d/usr.sbin.rsyslogd b/etc/apparmor.d/usr.sbin.rsyslogd
new file mode 100644 (file)
index 0000000..3e74588
--- /dev/null
@@ -0,0 +1,59 @@
+# Last Modified: Sun Sep 25 08:58:35 2011
+#include <tunables/global>
+
+# Debugging the syslogger can be difficult if it can't write to the file
+# that the kernel is logging denials to. In these cases, you can do the
+# following:
+# watch -n 1 'dmesg | tail -5'
+
+/usr/sbin/rsyslogd {
+  #include <abstractions/base>
+  #include <abstractions/nameservice>
+
+  capability sys_tty_config,
+  capability dac_override,
+  capability dac_read_search,
+  capability setuid,
+  capability setgid,
+  capability sys_nice,
+  capability syslog,
+
+  unix (receive) type=dgram,
+  unix (receive) type=stream,
+
+  # rsyslog configuration
+  /etc/rsyslog.conf r,
+  /etc/rsyslog.d/ r,
+  /etc/rsyslog.d/** r,
+  /{,var/}run/rsyslogd.pid{,.tmp} rwk,
+  /var/spool/rsyslog/ r,
+  /var/spool/rsyslog/** rwk,
+
+  /usr/sbin/rsyslogd mr,
+  /usr/lib{,32,64}/{,@{multiarch}/}rsyslog/*.so mr,
+
+  /dev/tty*                     rw,
+  /dev/xconsole                 rw,
+  @{PROC}/kmsg                  r,
+
+  /dev/log                      rwl,
+  /{,var/}run/utmp              rk,
+  /var/lib/*/dev/log            rwl,
+  /var/spool/postfix/dev/log    rwl,
+  /{,var/}run/systemd/notify    w,
+
+  # 'r' is needed when using imfile
+  /var/log/**                   rw,
+
+  # Add these for mysql support
+  #/etc/mysql/my.cnf r,
+  #/{,var/}run/mysqld/mysqld.sock rw,
+
+  # Add thes for postgresql support
+  ##include <abstractions/openssl>
+  ##include <abstractions/ssl_certs>
+  #/{,var/}run/postgresql/.s.PGSQL.*[0-9] rw,
+
+  # Site-specific additions and overrides. See local/README for details.
+  #include <local/usr.sbin.rsyslogd>
+}
diff --git a/etc/apparmor.d/usr.sbin.tcpdump b/etc/apparmor.d/usr.sbin.tcpdump
new file mode 100644 (file)
index 0000000..d0a7037
--- /dev/null
@@ -0,0 +1,65 @@
+# vim:syntax=apparmor
+#include <tunables/global>
+
+/usr/sbin/tcpdump {
+  #include <abstractions/base>
+  #include <abstractions/nameservice>
+  #include <abstractions/user-tmp>
+
+  capability net_raw,
+  capability setuid,
+  capability setgid,
+  capability dac_override,
+  capability chown,
+  network raw,
+  network packet,
+
+  # for -D
+  @{PROC}/bus/usb/ r,
+  @{PROC}/bus/usb/** r,
+
+  # for finding an interface
+  /dev/ r,
+  @{PROC}/[0-9]*/net/dev r,
+  /sys/bus/usb/devices/ r,
+  /sys/class/net/ r,
+  /sys/devices/**/net/** r,
+
+  # for -j
+  capability net_admin,
+
+  # for tracing USB bus, which libpcap supports
+  /dev/usbmon* r,
+  /dev/bus/usb/ r,
+  /dev/bus/usb/** r,
+
+  # for init_etherarray(), with -e
+  /etc/ethers r,
+
+  # for USB probing (see libpcap-1.1.x/pcap-usb-linux.c:probe_devices())
+  /dev/bus/usb/**/[0-9]* w,
+
+  # for -z
+  /{usr/,}bin/gzip ixr,
+  /{usr/,}bin/bzip2 ixr,
+
+  # for -F and -w
+  audit deny @{HOME}/.* mrwkl,
+  audit deny @{HOME}/.*/ rw,
+  audit deny @{HOME}/.*/** mrwkl,
+  audit deny @{HOME}/bin/ rw,
+  audit deny @{HOME}/bin/** mrwkl,
+  owner @{HOME}/ r,
+  owner @{HOME}/** rw,
+
+  # for -r, -F and -w
+  /**.[pP][cC][aA][pP] rw,
+
+  # for convenience with -r (ie, read pcap files from other sources)
+  /var/log/snort/*log* r,
+
+  /usr/sbin/tcpdump mr,
+
+  # Site-specific additions and overrides. See local/README for details.
+  #include <local/usr.sbin.tcpdump>
+}
diff --git a/etc/apparmor/init/network-interface-security/sbin.dhclient b/etc/apparmor/init/network-interface-security/sbin.dhclient
new file mode 120000 (symlink)
index 0000000..ccdcb14
--- /dev/null
@@ -0,0 +1 @@
+../../../apparmor.d/sbin.dhclient
\ No newline at end of file
diff --git a/etc/apparmor/parser.conf b/etc/apparmor/parser.conf
new file mode 100644 (file)
index 0000000..641cf1d
--- /dev/null
@@ -0,0 +1,61 @@
+# parser.conf is a global AppArmor config file for the apparmor_parser
+#
+# It can be used to specify the default options for the parser, which
+# can then be overriden by options passed on the command line.
+#
+# Leading whitespace is ignored and lines that begin with # are treated
+# as comments.
+#
+# Config options are specified one per line using the same format as the
+# longform command line options (without the preceding --).
+#
+# If a value is specified twice the last version to appear is used.
+
+## Suppress Warnings
+#quiet
+
+## Be verbose
+#verbose
+
+## Set additional include path
+#Include /etc/apparmor.d/
+# or
+#Include /usr/share/apparmor
+
+
+## Set location of apparmor filesystem
+#subdomainfs /sys/kernel/security/apparmor
+
+## Set match-string to use - for forcing compiler to treat different kernels
+## the same
+# match-string "pattern=aadfa audit perms=crwxamlk/ user::other"
+
+## Turn creating/updating of the cache on by default
+#write-cache
+
+## Show cache hits
+#show-cache
+
+## skip cached policy
+#skip-cache
+
+## skip reading cache but allow updating
+#skip-read-cache
+
+
+#### Set Optimizaions.  Multiple Optimizations can be set, one per line ####
+# For supported optimizations see
+#   apparmor_parser --help=O
+
+## Turn on equivalence classes
+#equiv
+
+## Turn off expr tree simplification
+#Optimize=no-expr-simplify
+
+## Turn off DFA minimization
+#Optimize=no-minimize
+
+## Adjust compression
+#Optimize=compress-small
+#Optimize=compress-fast
diff --git a/etc/apport/blacklist.d/README.blacklist b/etc/apport/blacklist.d/README.blacklist
new file mode 100644 (file)
index 0000000..a6adace
--- /dev/null
@@ -0,0 +1,4 @@
+# Blacklist for apport
+# If an executable path appears on any line in any file in
+# /etc/apport/blacklist.d/, apport will not generate a crash report
+# for it. Matches are exact only at the moment (no globbing etc.).
diff --git a/etc/apport/blacklist.d/apport b/etc/apport/blacklist.d/apport
new file mode 100644 (file)
index 0000000..53b1fa5
--- /dev/null
@@ -0,0 +1 @@
+/usr/bin/wine-preloader
diff --git a/etc/apport/crashdb.conf b/etc/apport/crashdb.conf
new file mode 100644 (file)
index 0000000..a365fa7
--- /dev/null
@@ -0,0 +1,38 @@
+# map crash database names to CrashDatabase implementations and URLs
+
+default = 'ubuntu'
+
+def get_oem_project():
+    '''Determine OEM project name from Distribution Channel Descriptor
+
+    Return None if it cannot be determined or does not exist.
+    '''
+    try:
+        dcd = open('/var/lib/ubuntu_dist_channel').read()
+        if dcd.startswith('canonical-oem-'):
+            return dcd.split('-')[2]
+    except IOError:
+        return None
+
+databases = {
+    'ubuntu': {
+        'impl': 'launchpad',
+        'bug_pattern_url': 'http://people.canonical.com/~ubuntu-archive/bugpatterns/bugpatterns.xml',
+        'dupdb_url': 'http://people.canonical.com/~ubuntu-archive/apport-duplicates',
+        'distro': 'ubuntu',
+        'problem_types': ['Bug', 'Package'],
+        'escalation_tag': 'bugpattern-needed',
+        'escalated_tag': 'bugpattern-written',
+    },
+    'canonical-oem': {
+        'impl': 'launchpad',
+        'bug_pattern_url': 'http://people.canonical.com/~ubuntu-archive/bugpatterns/bugpatterns.xml',
+        'project': get_oem_project(),
+    },
+    'debug': {
+        # for debugging
+        'impl': 'memory',
+        'bug_pattern_url': '/tmp/bugpatterns.xml',
+        'distro': 'debug'
+    },
+}
diff --git a/etc/apt/apt.conf.d/01-vendor-ubuntu b/etc/apt/apt.conf.d/01-vendor-ubuntu
new file mode 100644 (file)
index 0000000..30d25a7
--- /dev/null
@@ -0,0 +1,2 @@
+Acquire::Changelogs::AlwaysOnline "true";
+Acquire::http::User-Agent-Non-Interactive "true";
diff --git a/etc/apt/apt.conf.d/01autoremove b/etc/apt/apt.conf.d/01autoremove
new file mode 100644 (file)
index 0000000..478c571
--- /dev/null
@@ -0,0 +1,41 @@
+APT
+{
+  NeverAutoRemove
+  {
+       "^firmware-linux.*";
+       "^linux-firmware$";
+       "^linux-image-[a-z0-9]*$";
+       "^linux-image-[a-z0-9]*-[a-z0-9]*$";
+  };
+
+  VersionedKernelPackages
+  {
+       # kernels
+       "linux-.*";
+       "kfreebsd-.*";
+       "gnumach-.*";
+       # (out-of-tree) modules
+       ".*-modules";
+       ".*-kernel";
+  };
+
+  Never-MarkAuto-Sections
+  {
+       "metapackages";
+       "contrib/metapackages";
+       "non-free/metapackages";
+       "restricted/metapackages";
+       "universe/metapackages";
+       "multiverse/metapackages";
+  };
+
+  Move-Autobit-Sections
+  {
+       "oldlibs";
+       "contrib/oldlibs";
+       "non-free/oldlibs";
+       "restricted/oldlibs";
+       "universe/oldlibs";
+       "multiverse/oldlibs";
+  };
+};
diff --git a/etc/apt/apt.conf.d/01autoremove-postgresql b/etc/apt/apt.conf.d/01autoremove-postgresql
new file mode 100644 (file)
index 0000000..3f473d1
--- /dev/null
@@ -0,0 +1,17 @@
+// File installed by postgresql-common. Currently not updated automatically,
+// but might be in future releases.
+//
+// We mark all PostgreSQL packages as NeverAutoRemove because otherwise apt
+// would remove the old postgresql-NN package when the "postgresql" meta
+// package changes its dependencies to a new version, rendering the old
+// database cluster inaccessible. As access to the cluster might depend on
+// other modules (like datatypes), we use a pretty wide pattern here. We might
+// tighten this to match only actually used PostgreSQL versions in the future.
+
+APT
+{
+  NeverAutoRemove
+  {
+    "^postgresql-";
+  };
+};
diff --git a/etc/apt/apt.conf.d/10periodic b/etc/apt/apt.conf.d/10periodic
new file mode 100644 (file)
index 0000000..d1922e3
--- /dev/null
@@ -0,0 +1,3 @@
+APT::Periodic::Update-Package-Lists "1";
+APT::Periodic::Download-Upgradeable-Packages "0";
+APT::Periodic::AutocleanInterval "0";
diff --git a/etc/apt/apt.conf.d/15update-stamp b/etc/apt/apt.conf.d/15update-stamp
new file mode 100644 (file)
index 0000000..14ead83
--- /dev/null
@@ -0,0 +1 @@
+APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};
diff --git a/etc/apt/apt.conf.d/20apt-esm-hook.conf b/etc/apt/apt.conf.d/20apt-esm-hook.conf
new file mode 100644 (file)
index 0000000..0cc6823
--- /dev/null
@@ -0,0 +1,15 @@
+APT::Update::Post-Invoke-Stats {
+       "[ ! -f /usr/lib/ubuntu-advantage/apt-esm-hook ] || /usr/lib/ubuntu-advantage/apt-esm-hook post-invoke-stats || true";
+};
+
+APT::Install::Post-Invoke-Success {
+       "[ ! -f /usr/lib/ubuntu-advantage/apt-esm-hook ] || /usr/lib/ubuntu-advantage/apt-esm-hook post-invoke-success || true";
+}; 
+
+APT::Install::Pre-Invoke {
+       "[ ! -f /usr/lib/ubuntu-advantage/apt-esm-hook ] || /usr/lib/ubuntu-advantage/apt-esm-hook pre-invoke || true";
+};
+
+AptCli::Hooks::Upgrade {
+       "[ ! -f /usr/lib/ubuntu-advantage/apt-esm-json-hook ] || /usr/lib/ubuntu-advantage/apt-esm-json-hook || true";
+};
diff --git a/etc/apt/apt.conf.d/20archive b/etc/apt/apt.conf.d/20archive
new file mode 100644 (file)
index 0000000..a2ad262
--- /dev/null
@@ -0,0 +1,3 @@
+APT::Archives::MaxAge "30";
+APT::Archives::MinAge "2";
+APT::Archives::MaxSize "500";
diff --git a/etc/apt/apt.conf.d/20auto-upgrades b/etc/apt/apt.conf.d/20auto-upgrades
new file mode 100644 (file)
index 0000000..8d6d7c8
--- /dev/null
@@ -0,0 +1,2 @@
+APT::Periodic::Update-Package-Lists "1";
+APT::Periodic::Unattended-Upgrade "1";
diff --git a/etc/apt/apt.conf.d/20packagekit b/etc/apt/apt.conf.d/20packagekit
new file mode 100644 (file)
index 0000000..705cc2f
--- /dev/null
@@ -0,0 +1,13 @@
+// THIS FILE IS USED TO INFORM PACKAGEKIT
+// THAT THE UPDATE-INFO MIGHT HAVE CHANGED
+
+// Whenever dpkg is called we might have different updates
+// i.e. if an user removes a package that had an update
+DPkg::Post-Invoke {
+"/usr/bin/test -e /usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service && /usr/bin/test -S /var/run/dbus/system_bus_socket && /usr/bin/gdbus call --system --dest org.freedesktop.PackageKit --object-path /org/freedesktop/PackageKit --timeout 4 --method org.freedesktop.PackageKit.StateHasChanged cache-update > /dev/null; /bin/echo > /dev/null";
+};
+
+// When Apt's cache is updated (i.e. apt-cache update)
+APT::Update::Post-Invoke-Success {
+"/usr/bin/test -e /usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service && /usr/bin/test -S /var/run/dbus/system_bus_socket && /usr/bin/gdbus call --system --dest org.freedesktop.PackageKit --object-path /org/freedesktop/PackageKit --timeout 4 --method org.freedesktop.PackageKit.StateHasChanged cache-update > /dev/null; /bin/echo > /dev/null";
+};
diff --git a/etc/apt/apt.conf.d/20snapd.conf b/etc/apt/apt.conf.d/20snapd.conf
new file mode 100644 (file)
index 0000000..11f9721
--- /dev/null
@@ -0,0 +1 @@
+AptCli::Hooks::Install { "[ ! -f /usr/bin/snap ] || /usr/bin/snap advise-snap --from-apt 2>/dev/null || true"; };
diff --git a/etc/apt/apt.conf.d/50command-not-found b/etc/apt/apt.conf.d/50command-not-found
new file mode 100644 (file)
index 0000000..320662b
--- /dev/null
@@ -0,0 +1,16 @@
+## This file is provided by command-not-found(1) to download
+## Commands metadata files.
+
+Acquire::IndexTargets {
+    # The deb822 metadata files
+    deb::CNF  {
+        MetaKey "$(COMPONENT)/cnf/Commands-$(NATIVE_ARCHITECTURE)";
+        ShortDescription "Commands-$(NATIVE_ARCHITECTURE)";
+        Description "$(RELEASE)/$(COMPONENT) $(NATIVE_ARCHITECTURE) c-n-f Metadata";
+    };
+};
+
+# Refresh AppStream cache when APT's cache is updated (i.e. apt update)
+APT::Update::Post-Invoke-Success {
+    "if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi";
+};
diff --git a/etc/apt/apt.conf.d/50unattended-upgrades b/etc/apt/apt.conf.d/50unattended-upgrades
new file mode 100644 (file)
index 0000000..4e5ff8b
--- /dev/null
@@ -0,0 +1,131 @@
+// Automatically upgrade packages from these (origin:archive) pairs
+//
+// Note that in Ubuntu security updates may pull in new dependencies
+// from non-security sources (e.g. chromium). By allowing the release
+// pocket these get automatically pulled in.
+Unattended-Upgrade::Allowed-Origins {
+       "${distro_id}:${distro_codename}";
+       "${distro_id}:${distro_codename}-security";
+       // Extended Security Maintenance; doesn't necessarily exist for
+       // every release and this system may not have it installed, but if
+       // available, the policy for updates is such that unattended-upgrades
+       // should also install from here by default.
+       "${distro_id}ESMApps:${distro_codename}-apps-security";
+       "${distro_id}ESM:${distro_codename}-infra-security";
+//     "${distro_id}:${distro_codename}-updates";
+//     "${distro_id}:${distro_codename}-proposed";
+//     "${distro_id}:${distro_codename}-backports";
+};
+
+// Python regular expressions, matching packages to exclude from upgrading
+Unattended-Upgrade::Package-Blacklist {
+    // The following matches all packages starting with linux-
+//  "linux-";
+
+    // Use $ to explicitely define the end of a package name. Without
+    // the $, "libc6" would match all of them.
+//  "libc6$";
+//  "libc6-dev$";
+//  "libc6-i686$";
+
+    // Special characters need escaping
+//  "libstdc\+\+6$";
+
+    // The following matches packages like xen-system-amd64, xen-utils-4.1,
+    // xenstore-utils and libxenstore3.0
+//  "(lib)?xen(store)?";
+
+    // For more information about Python regular expressions, see
+    // https://docs.python.org/3/howto/regex.html
+};
+
+// This option controls whether the development release of Ubuntu will be
+// upgraded automatically. Valid values are "true", "false", and "auto".
+Unattended-Upgrade::DevRelease "auto";
+
+// This option allows you to control if on a unclean dpkg exit
+// unattended-upgrades will automatically run 
+//   dpkg --force-confold --configure -a
+// The default is true, to ensure updates keep getting installed
+//Unattended-Upgrade::AutoFixInterruptedDpkg "true";
+
+// Split the upgrade into the smallest possible chunks so that
+// they can be interrupted with SIGTERM. This makes the upgrade
+// a bit slower but it has the benefit that shutdown while a upgrade
+// is running is possible (with a small delay)
+//Unattended-Upgrade::MinimalSteps "true";
+
+// Install all updates when the machine is shutting down
+// instead of doing it in the background while the machine is running.
+// This will (obviously) make shutdown slower.
+// Unattended-upgrades increases logind's InhibitDelayMaxSec to 30s.
+// This allows more time for unattended-upgrades to shut down gracefully
+// or even install a few packages in InstallOnShutdown mode, but is still a
+// big step back from the 30 minutes allowed for InstallOnShutdown previously.
+// Users enabling InstallOnShutdown mode are advised to increase
+// InhibitDelayMaxSec even further, possibly to 30 minutes.
+//Unattended-Upgrade::InstallOnShutdown "false";
+
+// Send email to this address for problems or packages upgrades
+// If empty or unset then no email is sent, make sure that you
+// have a working mail setup on your system. A package that provides
+// 'mailx' must be installed. E.g. "user@example.com"
+//Unattended-Upgrade::Mail "";
+
+// Set this value to one of:
+//    "always", "only-on-error" or "on-change"
+// If this is not set, then any legacy MailOnlyOnError (boolean) value
+// is used to chose between "only-on-error" and "on-change"
+//Unattended-Upgrade::MailReport "on-change";
+
+// Remove unused automatically installed kernel-related packages
+// (kernel images, kernel headers and kernel version locked tools).
+//Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
+
+// Do automatic removal of newly unused dependencies after the upgrade
+//Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
+
+// Do automatic removal of unused packages after the upgrade
+// (equivalent to apt-get autoremove)
+//Unattended-Upgrade::Remove-Unused-Dependencies "false";
+
+// Automatically reboot *WITHOUT CONFIRMATION* if
+//  the file /var/run/reboot-required is found after the upgrade
+//Unattended-Upgrade::Automatic-Reboot "false";
+
+// Automatically reboot even if there are users currently logged in
+// when Unattended-Upgrade::Automatic-Reboot is set to true
+//Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
+
+// If automatic reboot is enabled and needed, reboot at the specific
+// time instead of immediately
+//  Default: "now"
+//Unattended-Upgrade::Automatic-Reboot-Time "02:00";
+
+// Use apt bandwidth limit feature, this example limits the download
+// speed to 70kb/sec
+//Acquire::http::Dl-Limit "70";
+
+// Enable logging to syslog. Default is False
+// Unattended-Upgrade::SyslogEnable "false";
+
+// Specify syslog facility. Default is daemon
+// Unattended-Upgrade::SyslogFacility "daemon";
+
+// Download and install upgrades only on AC power
+// (i.e. skip or gracefully stop updates on battery)
+// Unattended-Upgrade::OnlyOnACPower "true";
+
+// Download and install upgrades only on non-metered connection
+// (i.e. skip or gracefully stop updates on a metered connection)
+// Unattended-Upgrade::Skip-Updates-On-Metered-Connections "true";
+
+// Verbose logging
+// Unattended-Upgrade::Verbose "false";
+
+// Print debugging information both in unattended-upgrades and
+// in unattended-upgrade-shutdown
+// Unattended-Upgrade::Debug "false";
+
+// Allow package downgrade if Pin-Priority exceeds 1000
+// Unattended-Upgrade::Allow-downgrade "false";
diff --git a/etc/apt/apt.conf.d/70debconf b/etc/apt/apt.conf.d/70debconf
new file mode 100644 (file)
index 0000000..0c8b4ca
--- /dev/null
@@ -0,0 +1,3 @@
+// Pre-configure all packages with debconf before they are installed.
+// If you don't like it, comment it out.
+DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt || true";};
diff --git a/etc/apt/apt.conf.d/99update-notifier b/etc/apt/apt.conf.d/99update-notifier
new file mode 100644 (file)
index 0000000..21acb0c
--- /dev/null
@@ -0,0 +1,2 @@
+DPkg::Post-Invoke {"if [ -d /var/lib/update-notifier ]; then touch /var/lib/update-notifier/dpkg-run-stamp; fi; /usr/lib/update-notifier/update-motd-updates-available 2>/dev/null || true";};
+APT::Update::Post-Invoke-Success {"/usr/lib/update-notifier/update-motd-updates-available 2>/dev/null || true";};
diff --git a/etc/apt/sources.list b/etc/apt/sources.list
new file mode 100644 (file)
index 0000000..5b5b3d2
--- /dev/null
@@ -0,0 +1,49 @@
+# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
+# newer versions of the distribution.
+deb http://us.archive.ubuntu.com/ubuntu focal main restricted
+# deb-src http://us.archive.ubuntu.com/ubuntu focal main restricted
+
+## Major bug fix updates produced after the final release of the
+## distribution.
+deb http://us.archive.ubuntu.com/ubuntu focal-updates main restricted
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-updates main restricted
+
+## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
+## team. Also, please note that software in universe WILL NOT receive any
+## review or updates from the Ubuntu security team.
+deb http://us.archive.ubuntu.com/ubuntu focal universe
+# deb-src http://us.archive.ubuntu.com/ubuntu focal universe
+deb http://us.archive.ubuntu.com/ubuntu focal-updates universe
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-updates universe
+
+## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
+## team, and may not be under a free licence. Please satisfy yourself as to
+## your rights to use the software. Also, please note that software in
+## multiverse WILL NOT receive any review or updates from the Ubuntu
+## security team.
+deb http://us.archive.ubuntu.com/ubuntu focal multiverse
+# deb-src http://us.archive.ubuntu.com/ubuntu focal multiverse
+deb http://us.archive.ubuntu.com/ubuntu focal-updates multiverse
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-updates multiverse
+
+## N.B. software from this repository may not have been tested as
+## extensively as that contained in the main release, although it includes
+## newer versions of some applications which may provide useful features.
+## Also, please note that software in backports WILL NOT receive any review
+## or updates from the Ubuntu security team.
+deb http://us.archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
+
+## Uncomment the following two lines to add software from Canonical's
+## 'partner' repository.
+## This software is not part of Ubuntu, but is offered by Canonical and the
+## respective vendors as a service to Ubuntu users.
+# deb http://archive.canonical.com/ubuntu focal partner
+# deb-src http://archive.canonical.com/ubuntu focal partner
+
+deb http://us.archive.ubuntu.com/ubuntu focal-security main restricted
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-security main restricted
+deb http://us.archive.ubuntu.com/ubuntu focal-security universe
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-security universe
+deb http://us.archive.ubuntu.com/ubuntu focal-security multiverse
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-security multiverse
diff --git a/etc/apt/sources.list.curtin.old b/etc/apt/sources.list.curtin.old
new file mode 100644 (file)
index 0000000..6898cca
--- /dev/null
@@ -0,0 +1,49 @@
+# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
+# newer versions of the distribution.
+deb http://archive.ubuntu.com/ubuntu/ focal main restricted
+# deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted
+
+## Major bug fix updates produced after the final release of the
+## distribution.
+deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
+# deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
+
+## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
+## team. Also, please note that software in universe WILL NOT receive any
+## review or updates from the Ubuntu security team.
+deb http://archive.ubuntu.com/ubuntu/ focal universe
+# deb-src http://archive.ubuntu.com/ubuntu/ focal universe
+deb http://archive.ubuntu.com/ubuntu/ focal-updates universe
+# deb-src http://archive.ubuntu.com/ubuntu/ focal-updates universe
+
+## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
+## team, and may not be under a free licence. Please satisfy yourself as to
+## your rights to use the software. Also, please note that software in
+## multiverse WILL NOT receive any review or updates from the Ubuntu
+## security team.
+deb http://archive.ubuntu.com/ubuntu/ focal multiverse
+# deb-src http://archive.ubuntu.com/ubuntu/ focal multiverse
+deb http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
+# deb-src http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
+
+## N.B. software from this repository may not have been tested as
+## extensively as that contained in the main release, although it includes
+## newer versions of some applications which may provide useful features.
+## Also, please note that software in backports WILL NOT receive any review
+## or updates from the Ubuntu security team.
+deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
+# deb-src http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
+
+## Uncomment the following two lines to add software from Canonical's
+## 'partner' repository.
+## This software is not part of Ubuntu, but is offered by Canonical and the
+## respective vendors as a service to Ubuntu users.
+# deb http://archive.canonical.com/ubuntu focal partner
+# deb-src http://archive.canonical.com/ubuntu focal partner
+
+deb http://security.ubuntu.com/ubuntu/ focal-security main restricted
+# deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted
+deb http://security.ubuntu.com/ubuntu/ focal-security universe
+# deb-src http://security.ubuntu.com/ubuntu/ focal-security universe
+deb http://security.ubuntu.com/ubuntu/ focal-security multiverse
+# deb-src http://security.ubuntu.com/ubuntu/ focal-security multiverse
diff --git a/etc/apt/sources.list.d/git-core-ubuntu-ppa-focal.list b/etc/apt/sources.list.d/git-core-ubuntu-ppa-focal.list
new file mode 100644 (file)
index 0000000..df2aa70
--- /dev/null
@@ -0,0 +1,2 @@
+deb http://ppa.launchpad.net/git-core/ppa/ubuntu focal main
+# deb-src http://ppa.launchpad.net/git-core/ppa/ubuntu focal main
diff --git a/etc/apt/sources.list.save b/etc/apt/sources.list.save
new file mode 100644 (file)
index 0000000..5b5b3d2
--- /dev/null
@@ -0,0 +1,49 @@
+# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
+# newer versions of the distribution.
+deb http://us.archive.ubuntu.com/ubuntu focal main restricted
+# deb-src http://us.archive.ubuntu.com/ubuntu focal main restricted
+
+## Major bug fix updates produced after the final release of the
+## distribution.
+deb http://us.archive.ubuntu.com/ubuntu focal-updates main restricted
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-updates main restricted
+
+## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
+## team. Also, please note that software in universe WILL NOT receive any
+## review or updates from the Ubuntu security team.
+deb http://us.archive.ubuntu.com/ubuntu focal universe
+# deb-src http://us.archive.ubuntu.com/ubuntu focal universe
+deb http://us.archive.ubuntu.com/ubuntu focal-updates universe
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-updates universe
+
+## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
+## team, and may not be under a free licence. Please satisfy yourself as to
+## your rights to use the software. Also, please note that software in
+## multiverse WILL NOT receive any review or updates from the Ubuntu
+## security team.
+deb http://us.archive.ubuntu.com/ubuntu focal multiverse
+# deb-src http://us.archive.ubuntu.com/ubuntu focal multiverse
+deb http://us.archive.ubuntu.com/ubuntu focal-updates multiverse
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-updates multiverse
+
+## N.B. software from this repository may not have been tested as
+## extensively as that contained in the main release, although it includes
+## newer versions of some applications which may provide useful features.
+## Also, please note that software in backports WILL NOT receive any review
+## or updates from the Ubuntu security team.
+deb http://us.archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
+
+## Uncomment the following two lines to add software from Canonical's
+## 'partner' repository.
+## This software is not part of Ubuntu, but is offered by Canonical and the
+## respective vendors as a service to Ubuntu users.
+# deb http://archive.canonical.com/ubuntu focal partner
+# deb-src http://archive.canonical.com/ubuntu focal partner
+
+deb http://us.archive.ubuntu.com/ubuntu focal-security main restricted
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-security main restricted
+deb http://us.archive.ubuntu.com/ubuntu focal-security universe
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-security universe
+deb http://us.archive.ubuntu.com/ubuntu focal-security multiverse
+# deb-src http://us.archive.ubuntu.com/ubuntu focal-security multiverse
diff --git a/etc/apt/trusted.gpg.d/git-core_ubuntu_ppa.gpg b/etc/apt/trusted.gpg.d/git-core_ubuntu_ppa.gpg
new file mode 100644 (file)
index 0000000..ff66e3d
Binary files /dev/null and b/etc/apt/trusted.gpg.d/git-core_ubuntu_ppa.gpg differ
diff --git a/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg b/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg
new file mode 100644 (file)
index 0000000..7752314
Binary files /dev/null and b/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-archive.gpg differ
diff --git a/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg b/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
new file mode 100644 (file)
index 0000000..63271f9
Binary files /dev/null and b/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg differ
diff --git a/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg b/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
new file mode 100644 (file)
index 0000000..1cc9f3f
Binary files /dev/null and b/etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg differ
diff --git a/etc/at.deny b/etc/at.deny
new file mode 100644 (file)
index 0000000..0d5a382
--- /dev/null
@@ -0,0 +1,24 @@
+alias
+backup
+bin
+daemon
+ftp
+games
+gnats
+guest
+irc
+lp
+mail
+man
+nobody
+operator
+proxy
+qmaild
+qmaill
+qmailp
+qmailq
+qmailr
+qmails
+sync
+sys
+www-data
diff --git a/etc/bash.bashrc b/etc/bash.bashrc
new file mode 100644 (file)
index 0000000..ec92e54
--- /dev/null
@@ -0,0 +1,71 @@
+# System-wide .bashrc file for interactive bash(1) shells.
+
+# To enable the settings / commands in this file for login shells as well,
+# this file has to be sourced in /etc/profile.
+
+# If not running interactively, don't do anything
+[ -z "$PS1" ] && return
+
+# check the window size after each command and, if necessary,
+# update the values of LINES and COLUMNS.
+shopt -s checkwinsize
+
+# set variable identifying the chroot you work in (used in the prompt below)
+if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
+    debian_chroot=$(cat /etc/debian_chroot)
+fi
+
+# set a fancy prompt (non-color, overwrite the one in /etc/profile)
+# but only if not SUDOing and have SUDO_PS1 set; then assume smart user.
+if ! [ -n "${SUDO_USER}" -a -n "${SUDO_PS1}" ]; then
+  PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
+fi
+
+# Commented out, don't overwrite xterm -T "title" -n "icontitle" by default.
+# If this is an xterm set the title to user@host:dir
+#case "$TERM" in
+#xterm*|rxvt*)
+#    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
+#    ;;
+#*)
+#    ;;
+#esac
+
+# enable bash completion in interactive shells
+#if ! shopt -oq posix; then
+#  if [ -f /usr/share/bash-completion/bash_completion ]; then
+#    . /usr/share/bash-completion/bash_completion
+#  elif [ -f /etc/bash_completion ]; then
+#    . /etc/bash_completion
+#  fi
+#fi
+
+# sudo hint
+if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then
+    case " $(groups) " in *\ admin\ *|*\ sudo\ *)
+    if [ -x /usr/bin/sudo ]; then
+       cat <<-EOF
+       To run a command as administrator (user "root"), use "sudo <command>".
+       See "man sudo_root" for details.
+       
+       EOF
+    fi
+    esac
+fi
+
+# if the command-not-found package is installed, use it
+if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then
+       function command_not_found_handle {
+               # check because c-n-f could've been removed in the meantime
+                if [ -x /usr/lib/command-not-found ]; then
+                  /usr/lib/command-not-found -- "$1"
+                   return $?
+                elif [ -x /usr/share/command-not-found/command-not-found ]; then
+                  /usr/share/command-not-found/command-not-found -- "$1"
+                   return $?
+               else
+                  printf "%s: command not found\n" "$1" >&2
+                  return 127
+               fi
+       }
+fi
diff --git a/etc/bash_completion b/etc/bash_completion
new file mode 100644 (file)
index 0000000..41ffe59
--- /dev/null
@@ -0,0 +1 @@
+. /usr/share/bash-completion/bash_completion
diff --git a/etc/bash_completion.d/apport_completion b/etc/bash_completion.d/apport_completion
new file mode 100644 (file)
index 0000000..13b02da
--- /dev/null
@@ -0,0 +1,268 @@
+# 
+# Apport bash-completion
+#
+###############################################################################
+
+# get available symptoms
+_apport_symptoms ()
+{
+    local syms
+    if [ -r /usr/share/apport/symptoms ]; then 
+        for FILE in $(ls /usr/share/apport/symptoms); do
+            # hide utility files and symptoms that don't have a run() function
+            if [[ ! "$FILE" =~ ^_.* && -n $(egrep "^def run\s*\(.*\):" /usr/share/apport/symptoms/$FILE) ]]; then
+                syms="$syms ${FILE%.py}"
+            fi
+        done
+    fi
+    echo $syms
+
+}
+
+# completion when used without parameters
+_apport_parameterless ()
+{
+    local param
+    # parameter-less completion
+    # param= COMMAND parameters
+    #        package names
+    #        PIDs
+    #        Symptoms
+    #        any file
+    param="$dashoptions \
+           $( apt-cache pkgnames $cur 2> /dev/null ) \
+           $( command ps axo pid | sed 1d ) \
+           $( _apport_symptoms ) \
+           $( compgen -G "${cur}*" )"
+    COMPREPLY=( $( compgen -W "$param" -- $cur) )
+
+}
+
+# apport-bug ubuntu-bug completion
+_apport-bug ()
+{
+    local cur dashoptions prev param
+
+    COMPREPLY=()
+    cur=`_get_cword`
+    prev=${COMP_WORDS[COMP_CWORD-1]}
+
+
+    # available options
+    dashoptions='-h --help --save -v --version --tag -w --window'
+
+    case "$prev" in
+    ubuntu-bug | apport-bug)
+        case "$cur" in
+        -*)
+            # parameter completion
+            COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
+
+        ;;
+        *)
+            # no parameter given
+            _apport_parameterless 
+
+        ;;
+        esac
+
+    ;;
+    --save)
+        COMPREPLY=( $( compgen -o default -G "$cur*" ) )
+    
+    ;;
+    -w | --window)
+        dashoptions="--save --tag"
+        COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
+    ;;
+    -h | --help | -v | --version | --tag)
+        # standalone parameters
+        return 0
+
+    ;;
+    *)
+        # --save and --window make only sense once
+        dashoptions="--tag"
+        if ! [[ "${COMP_WORDS[*]}" =~ .*--save.* ]]; then
+            dashoptions="--save $dashoptions"
+        fi
+        if ! [[ "${COMP_WORDS[*]}" =~ .*--window.* || "${COMP_WORDS[*]}" =~ .*\ -w\ .* ]]; then
+            dashoptions="-w --window $dashoptions"
+        fi
+
+        case "$cur" in
+        -*)
+            # parameter completion
+            COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
+
+        ;;
+        *)
+            _apport_parameterless 
+
+        ;;
+        esac
+
+    ;;
+    esac
+}
+
+# apport-cli completion
+_apport-cli ()
+{
+    local cur dashoptions prev param
+
+    COMPREPLY=()
+    cur=`_get_cword`
+    prev=${COMP_WORDS[COMP_CWORD-1]}
+
+
+    # available options
+    dashoptions='-h --help -f --file-bug -u --update-bug -s --symptom \
+                 -c --crash-file --save -v --version --tag -w --window'
+
+    case "$prev" in
+    apport-cli)
+        case "$cur" in
+        -*)
+            # parameter completion
+            COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
+
+        ;;
+        *)
+            # no parameter given
+            _apport_parameterless 
+
+        ;;
+        esac
+
+    ;;
+    -f | --file-bug)
+        param="-P --pid -p --package -s --symptom"
+        COMPREPLY=( $( compgen -W "$param $(_apport_symptoms)" -- $cur) )
+
+    ;;
+    -s | --symptom)
+        COMPREPLY=( $( compgen -W "$(_apport_symptoms)" -- $cur) )
+
+    ;;
+    --save)
+        COMPREPLY=( $( compgen -o default -G "$cur*" ) )
+    
+    ;;
+    -c | --crash-file)
+        # only show *.apport *.crash files
+        COMPREPLY=( $( compgen -G "${cur}*.apport"
+                       compgen -G "${cur}*.crash" ) )
+
+    ;;
+    -w | --window)
+        dashoptions="--save --tag"
+        COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
+    ;;
+    -h | --help | -v | --version | --tag)
+        # standalone parameters
+        return 0
+
+    ;;
+    *)
+        dashoptions='--tag'
+
+        # most parameters only make sense once
+        if ! [[ "${COMP_WORDS[*]}" =~ .*--save.* ]]; then
+            dashoptions="--save $dashoptions"
+        fi
+        if ! [[ "${COMP_WORDS[*]}" =~ .*--window.* || "${COMP_WORDS[*]}" =~ .*\ -w\ .* ]]; then
+            dashoptions="-w --window $dashoptions"
+        fi
+        if ! [[ "${COMP_WORDS[*]}" =~ .*--symptom.* || "${COMP_WORDS[*]}" =~ .*\ -s\ .* ]]; then
+            dashoptions="-s --symptom $dashoptions"
+        fi
+        if ! [[ "${COMP_WORDS[*]}" =~ .*--update.* || "${COMP_WORDS[*]}" =~ .*\ -u\ .* ]]; then
+            dashoptions="-u --update $dashoptions"
+        fi
+        if ! [[ "${COMP_WORDS[*]}" =~ .*--file-bug.* || "${COMP_WORDS[*]}" =~ .*\ -f\ .* ]]; then
+            dashoptions="-f --file-bug $dashoptions"
+        fi
+        if ! [[ "${COMP_WORDS[*]}" =~ .*--crash-file.* || "${COMP_WORDS[*]}" =~ .*\ -c\ .* ]]; then
+            dashoptions="-c --crash-file $dashoptions"
+        fi
+
+        # use same completion as if no parameter is given
+        case "$cur" in
+        -*)
+            # parameter completion
+            COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
+
+        ;;
+        *)
+            _apport_parameterless 
+
+        ;;
+        esac
+
+    ;;
+    esac
+}
+
+# apport-unpack completion
+_apport-unpack ()
+{
+    local cur prev
+
+    COMPREPLY=()
+    cur=`_get_cword`
+    prev=${COMP_WORDS[COMP_CWORD-1]}
+
+    case "$prev" in
+    apport-unpack)
+        # only show *.apport *.crash files
+        COMPREPLY=( $( compgen -G "${cur}*.apport"
+                       compgen -G "${cur}*.crash" ) )
+
+    ;;
+    esac
+}
+
+# apport-collect completion
+_apport-collect ()
+{
+    local cur prev
+
+    COMPREPLY=()
+    cur=`_get_cword`
+    prev=${COMP_WORDS[COMP_CWORD-1]}
+
+    case "$prev" in 
+    apport-collect)
+        COMPREPLY=( $( compgen -W "-p --package --tag" -- $cur) )
+
+    ;;
+    -p | --package)
+        # list package names
+        COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
+
+    ;;
+    --tag)
+        # standalone parameter
+        return 0
+    ;;
+    *)
+        # only complete -p/--package once
+        if [[ "${COMP_WORDS[*]}" =~ .*\ -p.* || "${COMP_WORDS[*]}" =~ .*--package.* ]]; then
+            COMPREPLY=( $( compgen -W "--tag" -- $cur) )
+        else
+            COMPREPLY=( $( compgen -W "-p --package --tag" -- $cur) )
+        fi
+        
+    ;;
+    esac
+}
+
+# bind completion to apport commands
+complete -F _apport-bug -o filenames -o dirnames ubuntu-bug
+complete -F _apport-bug -o filenames -o dirnames apport-bug
+complete -F _apport-cli -o filenames -o dirnames apport-cli
+complete -F _apport-unpack -o filenames -o dirnames apport-unpack
+complete -F _apport-collect apport-collect
+
+# vi: syntax=bash
diff --git a/etc/bash_completion.d/git-prompt b/etc/bash_completion.d/git-prompt
new file mode 100644 (file)
index 0000000..8b5852a
--- /dev/null
@@ -0,0 +1,11 @@
+# In git versions < 1.7.12, this shell library was part of the
+# git completion script.
+#
+# Some users rely on the __git_ps1 function becoming available
+# when bash-completion is loaded.  Continue to load this library
+# at bash-completion startup for now, to ease the transition to a
+# world order where the prompt function is requested separately.
+#
+if [[ -e /usr/lib/git-core/git-sh-prompt ]]; then
+       . /usr/lib/git-core/git-sh-prompt
+fi
diff --git a/etc/bash_completion.d/python-argcomplete b/etc/bash_completion.d/python-argcomplete
new file mode 100644 (file)
index 0000000..86e7815
--- /dev/null
@@ -0,0 +1,106 @@
+# Copyright 2012-2021, Andrey Kislyuk and argcomplete contributors.
+# Licensed under the Apache License. See https://github.com/kislyuk/argcomplete for more info.
+
+# Copy of __expand_tilde_by_ref from bash-completion
+__python_argcomplete_expand_tilde_by_ref () {
+    if [ "${!1:0:1}" = "~" ]; then
+        if [ "${!1}" != "${!1//\/}" ]; then
+            eval $1="${!1/%\/*}"/'${!1#*/}';
+        else
+            eval $1="${!1}";
+        fi;
+    fi
+}
+
+# Run something, muting output or redirecting it to the debug stream
+# depending on the value of _ARC_DEBUG.
+# If ARGCOMPLETE_USE_TEMPFILES is set, use tempfiles for IPC.
+__python_argcomplete_run() {
+    if [[ -z "${ARGCOMPLETE_USE_TEMPFILES-}" ]]; then
+        __python_argcomplete_run_inner "$@"
+        return
+    fi
+    local tmpfile="$(mktemp)"
+    _ARGCOMPLETE_STDOUT_FILENAME="$tmpfile" __python_argcomplete_run_inner "$@"
+    local code=$?
+    cat "$tmpfile"
+    rm "$tmpfile"
+    return $code
+}
+
+__python_argcomplete_run_inner() {
+    if [[ -z "${_ARC_DEBUG-}" ]]; then
+        "$@" 8>&1 9>&2 1>/dev/null 2>&1
+    else
+        "$@" 8>&1 9>&2 1>&9 2>&1
+    fi
+}
+
+# Scan the beginning of an executable file ($1) for a regexp ($2). By default,
+# scan for the magic string indicating that the executable supports the
+# argcomplete completion protocol. By default, scan the first kilobyte;
+# if $3 is set to -n, scan until the first line break up to a kilobyte.
+__python_argcomplete_scan_head() {
+    read -s -r ${3:--N} 1024 < "$1"
+    [[ "$REPLY" =~ ${2:-PYTHON_ARGCOMPLETE_OK} ]]
+}
+
+__python_argcomplete_scan_head_noerr() {
+    __python_argcomplete_scan_head "$@" 2>/dev/null
+}
+
+_python_argcomplete_global() {
+    local executable=$1
+    __python_argcomplete_expand_tilde_by_ref executable
+
+    local ARGCOMPLETE=0
+    if [[ "$executable" == python* ]] || [[ "$executable" == pypy* ]]; then
+        if [[ "${COMP_WORDS[1]}" == -m ]]; then
+            if __python_argcomplete_run "$executable" -m argcomplete._check_module "${COMP_WORDS[2]}"; then
+                ARGCOMPLETE=3
+            else
+                return
+            fi
+        elif [[ -f "${COMP_WORDS[1]}" ]] && __python_argcomplete_scan_head_noerr "${COMP_WORDS[1]}"; then
+            local ARGCOMPLETE=2
+        else
+            return
+        fi
+    elif type -P "$executable" >/dev/null 2>&1; then
+        local SCRIPT_NAME=$(type -P "$executable")
+        if (type -t pyenv && [[ "$SCRIPT_NAME" = $(pyenv root)/shims/* ]]) >/dev/null 2>&1; then
+            local SCRIPT_NAME=$(pyenv which "$executable")
+        fi
+        if __python_argcomplete_scan_head_noerr "$SCRIPT_NAME"; then
+            local ARGCOMPLETE=1
+        elif __python_argcomplete_scan_head_noerr "$SCRIPT_NAME" '^#!(.*)$' -n && [[ "${BASH_REMATCH[1]}" =~ ^.*(python|pypy)[0-9\.]*$ ]]; then
+            local interpreter="$BASH_REMATCH"
+            if (__python_argcomplete_scan_head_noerr "$SCRIPT_NAME" "(PBR Generated)|(EASY-INSTALL-(SCRIPT|ENTRY-SCRIPT|DEV-SCRIPT))" \
+                && "$interpreter" "$(type -P python-argcomplete-check-easy-install-script)" "$SCRIPT_NAME") >/dev/null 2>&1; then
+                local ARGCOMPLETE=1
+            elif __python_argcomplete_run "$interpreter" -m argcomplete._check_console_script "$SCRIPT_NAME"; then
+                local ARGCOMPLETE=1
+            fi
+        fi
+    fi
+
+    if [[ $ARGCOMPLETE != 0 ]]; then
+        local IFS=$(echo -e '\v')
+        COMPREPLY=( $(_ARGCOMPLETE_IFS="$IFS" \
+            COMP_LINE="$COMP_LINE" \
+            COMP_POINT="$COMP_POINT" \
+            COMP_TYPE="$COMP_TYPE" \
+            _ARGCOMPLETE_COMP_WORDBREAKS="$COMP_WORDBREAKS" \
+            _ARGCOMPLETE=$ARGCOMPLETE \
+            _ARGCOMPLETE_SUPPRESS_SPACE=1 \
+            __python_argcomplete_run "$executable" "${COMP_WORDS[@]:1:ARGCOMPLETE-1}") )
+        if [[ $? != 0 ]]; then
+            unset COMPREPLY
+        elif [[ "${COMPREPLY-}" =~ [=/:]$ ]]; then
+            compopt -o nospace
+        fi
+    else
+        type -t _completion_loader | grep -q 'function' && _completion_loader "$@"
+    fi
+}
+complete -o default -o bashdefault -D -F _python_argcomplete_global
diff --git a/etc/bindresvport.blacklist b/etc/bindresvport.blacklist
new file mode 100644 (file)
index 0000000..1dc056e
--- /dev/null
@@ -0,0 +1,15 @@
+#
+# This file contains a list of port numbers between 600 and 1024,
+# which should not be used by bindresvport. bindresvport is mostly
+# called by RPC services. This mostly solves the problem, that a
+# RPC service uses a well known port of another service.
+#
+631    # cups
+636    # ldaps
+655    # tinc
+774    # rpasswd
+783    # spamd
+873    # rsync
+921    # lwresd
+993    # imaps
+995    # pops
diff --git a/etc/byobu/backend b/etc/byobu/backend
new file mode 100644 (file)
index 0000000..d71e61c
--- /dev/null
@@ -0,0 +1,4 @@
+# BYOBU_BACKEND can currently be "screen" or "tmux"
+# Override this on a per-user basis by editing "$BYOBU_CONFIG_DIR/backend"
+# or by launching either "byobu-screen" or "byobu-tmux" instead of "byobu".
+BYOBU_BACKEND="tmux"
diff --git a/etc/byobu/socketdir b/etc/byobu/socketdir
new file mode 100644 (file)
index 0000000..05ab041
--- /dev/null
@@ -0,0 +1,11 @@
+# Set the location of the socket directory that byobu will use.
+# On Debian/Ubuntu systems, this is in /var/run/screen, but on
+# other distros, it might be elsewhere, such as /tmp/screens
+# depending on your compilation.
+#
+# This file will be sourced by both shell scripts and python code,
+# so please ensure that:
+#  * the variable name is SOCKETDIR
+#  * there is no space around the "="
+#  * and that the path value is quoted
+SOCKETDIR="/var/run/screen"
diff --git a/etc/ca-certificates.conf b/etc/ca-certificates.conf
new file mode 100644 (file)
index 0000000..b31cfb2
--- /dev/null
@@ -0,0 +1,167 @@
+# This file lists certificates that you wish to use or to ignore to be
+# installed in /etc/ssl/certs.
+# update-ca-certificates(8) will update /etc/ssl/certs by reading this file.
+#
+# This is autogenerated by dpkg-reconfigure ca-certificates.
+# Certificates should be installed under /usr/share/ca-certificates
+# and files with extension '.crt' is recognized as available certs.
+#
+# line begins with # is comment.
+# line begins with ! is certificate filename to be deselected.
+#
+mozilla/ACCVRAIZ1.crt
+mozilla/AC_RAIZ_FNMT-RCM.crt
+mozilla/Actalis_Authentication_Root_CA.crt
+!mozilla/AddTrust_External_Root.crt
+mozilla/AffirmTrust_Commercial.crt
+mozilla/AffirmTrust_Networking.crt
+mozilla/AffirmTrust_Premium.crt
+mozilla/AffirmTrust_Premium_ECC.crt
+mozilla/Amazon_Root_CA_1.crt
+mozilla/Amazon_Root_CA_2.crt
+mozilla/Amazon_Root_CA_3.crt
+mozilla/Amazon_Root_CA_4.crt
+mozilla/Atos_TrustedRoot_2011.crt
+mozilla/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.crt
+mozilla/Baltimore_CyberTrust_Root.crt
+mozilla/Buypass_Class_2_Root_CA.crt
+mozilla/Buypass_Class_3_Root_CA.crt
+mozilla/CA_Disig_Root_R2.crt
+mozilla/CFCA_EV_ROOT.crt
+mozilla/COMODO_Certification_Authority.crt
+mozilla/COMODO_ECC_Certification_Authority.crt
+mozilla/COMODO_RSA_Certification_Authority.crt
+mozilla/Certigna.crt
+!mozilla/Certinomis_-_Root_CA.crt
+!mozilla/Certplus_Class_2_Primary_CA.crt
+mozilla/Certum_Trusted_Network_CA.crt
+mozilla/Certum_Trusted_Network_CA_2.crt
+!mozilla/Chambers_of_Commerce_Root_-_2008.crt
+mozilla/Comodo_AAA_Services_root.crt
+mozilla/Cybertrust_Global_Root.crt
+mozilla/D-TRUST_Root_Class_3_CA_2_2009.crt
+mozilla/D-TRUST_Root_Class_3_CA_2_EV_2009.crt
+!mozilla/DST_Root_CA_X3.crt
+!mozilla/Deutsche_Telekom_Root_CA_2.crt
+mozilla/DigiCert_Assured_ID_Root_CA.crt
+mozilla/DigiCert_Assured_ID_Root_G2.crt
+mozilla/DigiCert_Assured_ID_Root_G3.crt
+mozilla/DigiCert_Global_Root_CA.crt
+mozilla/DigiCert_Global_Root_G2.crt
+mozilla/DigiCert_Global_Root_G3.crt
+mozilla/DigiCert_High_Assurance_EV_Root_CA.crt
+mozilla/DigiCert_Trusted_Root_G4.crt
+mozilla/E-Tugra_Certification_Authority.crt
+mozilla/EC-ACC.crt
+!mozilla/EE_Certification_Centre_Root_CA.crt
+mozilla/Entrust.net_Premium_2048_Secure_Server_CA.crt
+mozilla/Entrust_Root_Certification_Authority.crt
+mozilla/Entrust_Root_Certification_Authority_-_EC1.crt
+mozilla/Entrust_Root_Certification_Authority_-_G2.crt
+mozilla/GDCA_TrustAUTH_R5_ROOT.crt
+!mozilla/GeoTrust_Global_CA.crt
+!mozilla/GeoTrust_Primary_Certification_Authority.crt
+!mozilla/GeoTrust_Primary_Certification_Authority_-_G2.crt
+!mozilla/GeoTrust_Primary_Certification_Authority_-_G3.crt
+!mozilla/GeoTrust_Universal_CA.crt
+!mozilla/GeoTrust_Universal_CA_2.crt
+mozilla/GlobalSign_ECC_Root_CA_-_R4.crt
+mozilla/GlobalSign_ECC_Root_CA_-_R5.crt
+mozilla/GlobalSign_Root_CA.crt
+mozilla/GlobalSign_Root_CA_-_R2.crt
+mozilla/GlobalSign_Root_CA_-_R3.crt
+mozilla/GlobalSign_Root_CA_-_R6.crt
+!mozilla/Global_Chambersign_Root_-_2008.crt
+mozilla/Go_Daddy_Class_2_CA.crt
+mozilla/Go_Daddy_Root_Certificate_Authority_-_G2.crt
+mozilla/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.crt
+mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2011.crt
+mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2015.crt
+mozilla/Hongkong_Post_Root_CA_1.crt
+mozilla/ISRG_Root_X1.crt
+mozilla/IdenTrust_Commercial_Root_CA_1.crt
+mozilla/IdenTrust_Public_Sector_Root_CA_1.crt
+mozilla/Izenpe.com.crt
+!mozilla/LuxTrust_Global_Root_2.crt
+mozilla/Microsec_e-Szigno_Root_CA_2009.crt
+mozilla/NetLock_Arany_=Class_Gold=_Főtanúsítvány.crt
+mozilla/Network_Solutions_Certificate_Authority.crt
+!mozilla/OISTE_WISeKey_Global_Root_GA_CA.crt
+mozilla/OISTE_WISeKey_Global_Root_GB_CA.crt
+mozilla/OISTE_WISeKey_Global_Root_GC_CA.crt
+!mozilla/QuoVadis_Root_CA.crt
+mozilla/QuoVadis_Root_CA_1_G3.crt
+mozilla/QuoVadis_Root_CA_2.crt
+mozilla/QuoVadis_Root_CA_2_G3.crt
+mozilla/QuoVadis_Root_CA_3.crt
+mozilla/QuoVadis_Root_CA_3_G3.crt
+mozilla/SSL.com_EV_Root_Certification_Authority_ECC.crt
+mozilla/SSL.com_EV_Root_Certification_Authority_RSA_R2.crt
+mozilla/SSL.com_Root_Certification_Authority_ECC.crt
+mozilla/SSL.com_Root_Certification_Authority_RSA.crt
+mozilla/SZAFIR_ROOT_CA2.crt
+mozilla/SecureSign_RootCA11.crt
+mozilla/SecureTrust_CA.crt
+mozilla/Secure_Global_CA.crt
+mozilla/Security_Communication_RootCA2.crt
+mozilla/Security_Communication_Root_CA.crt
+!mozilla/Sonera_Class_2_Root_CA.crt
+mozilla/Staat_der_Nederlanden_EV_Root_CA.crt
+!mozilla/Staat_der_Nederlanden_Root_CA_-_G2.crt
+!mozilla/Staat_der_Nederlanden_Root_CA_-_G3.crt
+mozilla/Starfield_Class_2_CA.crt
+mozilla/Starfield_Root_Certificate_Authority_-_G2.crt
+mozilla/Starfield_Services_Root_Certificate_Authority_-_G2.crt
+mozilla/SwissSign_Gold_CA_-_G2.crt
+mozilla/SwissSign_Silver_CA_-_G2.crt
+mozilla/T-TeleSec_GlobalRoot_Class_2.crt
+mozilla/T-TeleSec_GlobalRoot_Class_3.crt
+mozilla/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.crt
+mozilla/TWCA_Global_Root_CA.crt
+mozilla/TWCA_Root_Certification_Authority.crt
+!mozilla/Taiwan_GRCA.crt
+mozilla/TeliaSonera_Root_CA_v1.crt
+mozilla/TrustCor_ECA-1.crt
+mozilla/TrustCor_RootCert_CA-1.crt
+mozilla/TrustCor_RootCert_CA-2.crt
+!mozilla/Trustis_FPS_Root_CA.crt
+mozilla/USERTrust_ECC_Certification_Authority.crt
+mozilla/USERTrust_RSA_Certification_Authority.crt
+!mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.crt
+!mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.crt
+!mozilla/VeriSign_Universal_Root_Certification_Authority.crt
+!mozilla/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.crt
+mozilla/XRamp_Global_CA_Root.crt
+mozilla/certSIGN_ROOT_CA.crt
+mozilla/ePKI_Root_Certification_Authority.crt
+!mozilla/thawte_Primary_Root_CA.crt
+!mozilla/thawte_Primary_Root_CA_-_G2.crt
+!mozilla/thawte_Primary_Root_CA_-_G3.crt
+mozilla/Certigna_Root_CA.crt
+mozilla/Entrust_Root_Certification_Authority_-_G4.crt
+mozilla/GTS_Root_R1.crt
+mozilla/GTS_Root_R2.crt
+mozilla/GTS_Root_R3.crt
+mozilla/GTS_Root_R4.crt
+mozilla/Hongkong_Post_Root_CA_3.crt
+mozilla/Microsoft_ECC_Root_Certificate_Authority_2017.crt
+mozilla/Microsoft_RSA_Root_Certificate_Authority_2017.crt
+mozilla/NAVER_Global_Root_Certification_Authority.crt
+mozilla/Trustwave_Global_Certification_Authority.crt
+mozilla/Trustwave_Global_ECC_P256_Certification_Authority.crt
+mozilla/Trustwave_Global_ECC_P384_Certification_Authority.crt
+mozilla/UCA_Extended_Validation_Root.crt
+mozilla/UCA_Global_G2_Root.crt
+mozilla/certSIGN_Root_CA_G2.crt
+mozilla/e-Szigno_Root_CA_2017.crt
+mozilla/emSign_ECC_Root_CA_-_C3.crt
+mozilla/emSign_ECC_Root_CA_-_G3.crt
+mozilla/emSign_Root_CA_-_C1.crt
+mozilla/emSign_Root_CA_-_G1.crt
+mozilla/AC_RAIZ_FNMT-RCM_SERVIDORES_SEGUROS.crt
+mozilla/ANF_Secure_Server_Root_CA.crt
+mozilla/Certum_EC-384_CA.crt
+mozilla/Certum_Trusted_Root_CA.crt
+mozilla/GlobalSign_Root_E46.crt
+mozilla/GlobalSign_Root_R46.crt
+mozilla/GLOBALTRUST_2020.crt
diff --git a/etc/ca-certificates.conf.dpkg-old b/etc/ca-certificates.conf.dpkg-old
new file mode 100644 (file)
index 0000000..3aad53e
--- /dev/null
@@ -0,0 +1,160 @@
+# This file lists certificates that you wish to use or to ignore to be
+# installed in /etc/ssl/certs.
+# update-ca-certificates(8) will update /etc/ssl/certs by reading this file.
+#
+# This is autogenerated by dpkg-reconfigure ca-certificates.
+# Certificates should be installed under /usr/share/ca-certificates
+# and files with extension '.crt' is recognized as available certs.
+#
+# line begins with # is comment.
+# line begins with ! is certificate filename to be deselected.
+#
+mozilla/ACCVRAIZ1.crt
+mozilla/AC_RAIZ_FNMT-RCM.crt
+mozilla/Actalis_Authentication_Root_CA.crt
+!mozilla/AddTrust_External_Root.crt
+mozilla/AffirmTrust_Commercial.crt
+mozilla/AffirmTrust_Networking.crt
+mozilla/AffirmTrust_Premium.crt
+mozilla/AffirmTrust_Premium_ECC.crt
+mozilla/Amazon_Root_CA_1.crt
+mozilla/Amazon_Root_CA_2.crt
+mozilla/Amazon_Root_CA_3.crt
+mozilla/Amazon_Root_CA_4.crt
+mozilla/Atos_TrustedRoot_2011.crt
+mozilla/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.crt
+mozilla/Baltimore_CyberTrust_Root.crt
+mozilla/Buypass_Class_2_Root_CA.crt
+mozilla/Buypass_Class_3_Root_CA.crt
+mozilla/CA_Disig_Root_R2.crt
+mozilla/CFCA_EV_ROOT.crt
+mozilla/COMODO_Certification_Authority.crt
+mozilla/COMODO_ECC_Certification_Authority.crt
+mozilla/COMODO_RSA_Certification_Authority.crt
+mozilla/Certigna.crt
+!mozilla/Certinomis_-_Root_CA.crt
+!mozilla/Certplus_Class_2_Primary_CA.crt
+mozilla/Certum_Trusted_Network_CA.crt
+mozilla/Certum_Trusted_Network_CA_2.crt
+mozilla/Chambers_of_Commerce_Root_-_2008.crt
+mozilla/Comodo_AAA_Services_root.crt
+mozilla/Cybertrust_Global_Root.crt
+mozilla/D-TRUST_Root_Class_3_CA_2_2009.crt
+mozilla/D-TRUST_Root_Class_3_CA_2_EV_2009.crt
+!mozilla/DST_Root_CA_X3.crt
+!mozilla/Deutsche_Telekom_Root_CA_2.crt
+mozilla/DigiCert_Assured_ID_Root_CA.crt
+mozilla/DigiCert_Assured_ID_Root_G2.crt
+mozilla/DigiCert_Assured_ID_Root_G3.crt
+mozilla/DigiCert_Global_Root_CA.crt
+mozilla/DigiCert_Global_Root_G2.crt
+mozilla/DigiCert_Global_Root_G3.crt
+mozilla/DigiCert_High_Assurance_EV_Root_CA.crt
+mozilla/DigiCert_Trusted_Root_G4.crt
+mozilla/E-Tugra_Certification_Authority.crt
+mozilla/EC-ACC.crt
+!mozilla/EE_Certification_Centre_Root_CA.crt
+mozilla/Entrust.net_Premium_2048_Secure_Server_CA.crt
+mozilla/Entrust_Root_Certification_Authority.crt
+mozilla/Entrust_Root_Certification_Authority_-_EC1.crt
+mozilla/Entrust_Root_Certification_Authority_-_G2.crt
+mozilla/GDCA_TrustAUTH_R5_ROOT.crt
+!mozilla/GeoTrust_Global_CA.crt
+!mozilla/GeoTrust_Primary_Certification_Authority.crt
+mozilla/GeoTrust_Primary_Certification_Authority_-_G2.crt
+!mozilla/GeoTrust_Primary_Certification_Authority_-_G3.crt
+!mozilla/GeoTrust_Universal_CA.crt
+!mozilla/GeoTrust_Universal_CA_2.crt
+mozilla/GlobalSign_ECC_Root_CA_-_R4.crt
+mozilla/GlobalSign_ECC_Root_CA_-_R5.crt
+mozilla/GlobalSign_Root_CA.crt
+mozilla/GlobalSign_Root_CA_-_R2.crt
+mozilla/GlobalSign_Root_CA_-_R3.crt
+mozilla/GlobalSign_Root_CA_-_R6.crt
+mozilla/Global_Chambersign_Root_-_2008.crt
+mozilla/Go_Daddy_Class_2_CA.crt
+mozilla/Go_Daddy_Root_Certificate_Authority_-_G2.crt
+mozilla/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.crt
+mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2011.crt
+mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2015.crt
+mozilla/Hongkong_Post_Root_CA_1.crt
+mozilla/ISRG_Root_X1.crt
+mozilla/IdenTrust_Commercial_Root_CA_1.crt
+mozilla/IdenTrust_Public_Sector_Root_CA_1.crt
+mozilla/Izenpe.com.crt
+!mozilla/LuxTrust_Global_Root_2.crt
+mozilla/Microsec_e-Szigno_Root_CA_2009.crt
+mozilla/NetLock_Arany_=Class_Gold=_Főtanúsítvány.crt
+mozilla/Network_Solutions_Certificate_Authority.crt
+!mozilla/OISTE_WISeKey_Global_Root_GA_CA.crt
+mozilla/OISTE_WISeKey_Global_Root_GB_CA.crt
+mozilla/OISTE_WISeKey_Global_Root_GC_CA.crt
+mozilla/QuoVadis_Root_CA.crt
+mozilla/QuoVadis_Root_CA_1_G3.crt
+mozilla/QuoVadis_Root_CA_2.crt
+mozilla/QuoVadis_Root_CA_2_G3.crt
+mozilla/QuoVadis_Root_CA_3.crt
+mozilla/QuoVadis_Root_CA_3_G3.crt
+mozilla/SSL.com_EV_Root_Certification_Authority_ECC.crt
+mozilla/SSL.com_EV_Root_Certification_Authority_RSA_R2.crt
+mozilla/SSL.com_Root_Certification_Authority_ECC.crt
+mozilla/SSL.com_Root_Certification_Authority_RSA.crt
+mozilla/SZAFIR_ROOT_CA2.crt
+mozilla/SecureSign_RootCA11.crt
+mozilla/SecureTrust_CA.crt
+mozilla/Secure_Global_CA.crt
+mozilla/Security_Communication_RootCA2.crt
+mozilla/Security_Communication_Root_CA.crt
+mozilla/Sonera_Class_2_Root_CA.crt
+mozilla/Staat_der_Nederlanden_EV_Root_CA.crt
+!mozilla/Staat_der_Nederlanden_Root_CA_-_G2.crt
+mozilla/Staat_der_Nederlanden_Root_CA_-_G3.crt
+mozilla/Starfield_Class_2_CA.crt
+mozilla/Starfield_Root_Certificate_Authority_-_G2.crt
+mozilla/Starfield_Services_Root_Certificate_Authority_-_G2.crt
+mozilla/SwissSign_Gold_CA_-_G2.crt
+mozilla/SwissSign_Silver_CA_-_G2.crt
+mozilla/T-TeleSec_GlobalRoot_Class_2.crt
+mozilla/T-TeleSec_GlobalRoot_Class_3.crt
+mozilla/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.crt
+mozilla/TWCA_Global_Root_CA.crt
+mozilla/TWCA_Root_Certification_Authority.crt
+!mozilla/Taiwan_GRCA.crt
+mozilla/TeliaSonera_Root_CA_v1.crt
+mozilla/TrustCor_ECA-1.crt
+mozilla/TrustCor_RootCert_CA-1.crt
+mozilla/TrustCor_RootCert_CA-2.crt
+mozilla/Trustis_FPS_Root_CA.crt
+mozilla/USERTrust_ECC_Certification_Authority.crt
+mozilla/USERTrust_RSA_Certification_Authority.crt
+!mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G4.crt
+!mozilla/VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.crt
+mozilla/VeriSign_Universal_Root_Certification_Authority.crt
+!mozilla/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.crt
+mozilla/XRamp_Global_CA_Root.crt
+mozilla/certSIGN_ROOT_CA.crt
+mozilla/ePKI_Root_Certification_Authority.crt
+!mozilla/thawte_Primary_Root_CA.crt
+!mozilla/thawte_Primary_Root_CA_-_G2.crt
+!mozilla/thawte_Primary_Root_CA_-_G3.crt
+mozilla/Certigna_Root_CA.crt
+mozilla/Entrust_Root_Certification_Authority_-_G4.crt
+mozilla/GTS_Root_R1.crt
+mozilla/GTS_Root_R2.crt
+mozilla/GTS_Root_R3.crt
+mozilla/GTS_Root_R4.crt
+mozilla/Hongkong_Post_Root_CA_3.crt
+mozilla/Microsoft_ECC_Root_Certificate_Authority_2017.crt
+mozilla/Microsoft_RSA_Root_Certificate_Authority_2017.crt
+mozilla/NAVER_Global_Root_Certification_Authority.crt
+mozilla/Trustwave_Global_Certification_Authority.crt
+mozilla/Trustwave_Global_ECC_P256_Certification_Authority.crt
+mozilla/Trustwave_Global_ECC_P384_Certification_Authority.crt
+mozilla/UCA_Extended_Validation_Root.crt
+mozilla/UCA_Global_G2_Root.crt
+mozilla/certSIGN_Root_CA_G2.crt
+mozilla/e-Szigno_Root_CA_2017.crt
+mozilla/emSign_ECC_Root_CA_-_C3.crt
+mozilla/emSign_ECC_Root_CA_-_G3.crt
+mozilla/emSign_Root_CA_-_C1.crt
+mozilla/emSign_Root_CA_-_G1.crt
diff --git a/etc/calendar/default b/etc/calendar/default
new file mode 100644 (file)
index 0000000..fa52180
--- /dev/null
@@ -0,0 +1,15 @@
+/* This is the system-wide default calendar file, used if calendar(1)
+ * is invoked by a user without a ~/calendar or ~/.calendar/calendar file.
+ * It may be edited or even deleted to reflect local policy.
+ *
+ * In the standard setup, we simply include the default calendar
+ * definitions from /usr/share/calendar/calendar.all.  If you want
+ * only some of those definitions, copy calendar.all to /etc/calendar
+ * and edit it there.  That way, your changes will be kept next time
+ * you upgrade.
+ *
+ * The search path for include files is:
+ *   /etc/calendar
+ *   /usr/share/calendar
+ */
+#include "calendar.all"
diff --git a/etc/cloud/cloud.cfg b/etc/cloud/cloud.cfg
new file mode 100644 (file)
index 0000000..493363a
--- /dev/null
@@ -0,0 +1,137 @@
+# The top level settings are used as module
+# and system configuration.
+# A set of users which may be applied and/or used by various modules
+# when a 'default' entry is found it will reference the 'default_user'
+# from the distro configuration specified below
+users:
+   - default
+
+
+# If this is set, 'root' will not be able to ssh in and they
+# will get a message to login instead as the default $user
+disable_root: true
+
+# This will cause the set+update hostname module to not operate (if true)
+preserve_hostname: false
+
+# If you use datasource_list array, keep array items in a single line.
+# If you use multi line array, ds-identify script won't read array items.
+# Example datasource config
+# datasource:
+#    Ec2:
+#      metadata_urls: [ 'blah.com' ]
+#      timeout: 5 # (defaults to 50 seconds)
+#      max_wait: 10 # (defaults to 120 seconds)
+
+
+
+
+# The modules that run in the 'init' stage
+cloud_init_modules:
+ - migrator
+ - seed_random
+ - bootcmd
+ - write-files
+ - growpart
+ - resizefs
+ - disk_setup
+ - mounts
+ - set_hostname
+ - update_hostname
+ - update_etc_hosts
+ - ca-certs
+ - rsyslog
+ - users-groups
+ - ssh
+
+# The modules that run in the 'config' stage
+cloud_config_modules:
+ - snap
+ - ssh-import-id
+ - keyboard
+ - locale
+ - set-passwords
+ - grub-dpkg
+ - apt-pipelining
+ - apt-configure
+ - ubuntu-advantage
+ - ntp
+ - timezone
+ - disable-ec2-metadata
+ - runcmd
+ - byobu
+
+# The modules that run in the 'final' stage
+cloud_final_modules:
+ - package-update-upgrade-install
+ - fan
+ - landscape
+ - lxd
+ - ubuntu-drivers
+ - write-files-deferred
+ - puppet
+ - chef
+ - mcollective
+ - salt-minion
+ - reset_rmc
+ - refresh_rmc_and_interface
+ - rightscale_userdata
+ - scripts-vendor
+ - scripts-per-once
+ - scripts-per-boot
+ - scripts-per-instance
+ - scripts-user
+ - ssh-authkey-fingerprints
+ - keys-to-console
+ - install-hotplug
+ - phone-home
+ - final-message
+ - power-state-change
+
+# System and/or distro specific settings
+# (not accessible to handlers/transforms)
+system_info:
+   # This will affect which distro class gets used
+   distro: ubuntu
+   # Default user name + that default users groups (if added/used)
+   default_user:
+     name: ubuntu
+     lock_passwd: True
+     gecos: Ubuntu
+     groups: [adm, audio, cdrom, dialout, dip, floppy, lxd, netdev, plugdev, sudo, video]
+     sudo: ["ALL=(ALL) NOPASSWD:ALL"]
+     shell: /bin/bash
+   network:
+     renderers: ['netplan', 'eni', 'sysconfig']
+   # Automatically discover the best ntp_client
+   ntp_client: auto
+   # Other config here will be given to the distro class and/or path classes
+   paths:
+      cloud_dir: /var/lib/cloud/
+      templates_dir: /etc/cloud/templates/
+   package_mirrors:
+     - arches: [i386, amd64]
+       failsafe:
+         primary: http://archive.ubuntu.com/ubuntu
+         security: http://security.ubuntu.com/ubuntu
+       search:
+         primary:
+           - http://%(ec2_region)s.ec2.archive.ubuntu.com/ubuntu/
+           - http://%(availability_zone)s.clouds.archive.ubuntu.com/ubuntu/
+           - http://%(region)s.clouds.archive.ubuntu.com/ubuntu/
+         security: []
+     - arches: [arm64, armel, armhf]
+       failsafe:
+         primary: http://ports.ubuntu.com/ubuntu-ports
+         security: http://ports.ubuntu.com/ubuntu-ports
+       search:
+         primary:
+           - http://%(ec2_region)s.ec2.ports.ubuntu.com/ubuntu-ports/
+           - http://%(availability_zone)s.clouds.ports.ubuntu.com/ubuntu-ports/
+           - http://%(region)s.clouds.ports.ubuntu.com/ubuntu-ports/
+         security: []
+     - arches: [default]
+       failsafe:
+         primary: http://ports.ubuntu.com/ubuntu-ports
+         security: http://ports.ubuntu.com/ubuntu-ports
+   ssh_svcname: ssh
diff --git a/etc/cloud/cloud.cfg.d/05_logging.cfg b/etc/cloud/cloud.cfg.d/05_logging.cfg
new file mode 100644 (file)
index 0000000..bf917a9
--- /dev/null
@@ -0,0 +1,71 @@
+## This yaml formated config file handles setting
+## logger information.  The values that are necessary to be set
+## are seen at the bottom.  The top '_log' are only used to remove
+## redundency in a syslog and fallback-to-file case.
+##
+## The 'log_cfgs' entry defines a list of logger configs
+## Each entry in the list is tried, and the first one that
+## works is used.  If a log_cfg list entry is an array, it will
+## be joined with '\n'.
+_log:
+ - &log_base |
+   [loggers]
+   keys=root,cloudinit
+   
+   [handlers]
+   keys=consoleHandler,cloudLogHandler
+   
+   [formatters]
+   keys=simpleFormatter,arg0Formatter
+   
+   [logger_root]
+   level=DEBUG
+   handlers=consoleHandler,cloudLogHandler
+   
+   [logger_cloudinit]
+   level=DEBUG
+   qualname=cloudinit
+   handlers=
+   propagate=1
+   
+   [handler_consoleHandler]
+   class=StreamHandler
+   level=WARNING
+   formatter=arg0Formatter
+   args=(sys.stderr,)
+   
+   [formatter_arg0Formatter]
+   format=%(asctime)s - %(filename)s[%(levelname)s]: %(message)s
+   
+   [formatter_simpleFormatter]
+   format=[CLOUDINIT] %(filename)s[%(levelname)s]: %(message)s
+ - &log_file |
+   [handler_cloudLogHandler]
+   class=FileHandler
+   level=DEBUG
+   formatter=arg0Formatter
+   args=('/var/log/cloud-init.log', 'a', 'UTF-8')
+ - &log_syslog |
+   [handler_cloudLogHandler]
+   class=handlers.SysLogHandler
+   level=DEBUG
+   formatter=simpleFormatter
+   args=("/dev/log", handlers.SysLogHandler.LOG_USER)
+
+log_cfgs:
+# Array entries in this list will be joined into a string
+# that defines the configuration.
+#
+# If you want logs to go to syslog, uncomment the following line.
+# - [ *log_base, *log_syslog ]
+#
+# The default behavior is to just log to a file.
+# This mechanism that does not depend on a system service to operate.
+ - [ *log_base, *log_file ]
+# A file path can also be used.
+# - /etc/log.conf
+
+# This tells cloud-init to redirect its stdout and stderr to
+# 'tee -a /var/log/cloud-init-output.log' so the user can see output
+# there without needing to look on the console.
+output: {all: '| tee -a /var/log/cloud-init-output.log'}
diff --git a/etc/cloud/cloud.cfg.d/90_dpkg.cfg b/etc/cloud/cloud.cfg.d/90_dpkg.cfg
new file mode 100644 (file)
index 0000000..ae84c2a
--- /dev/null
@@ -0,0 +1,2 @@
+# to update this file, run dpkg-reconfigure cloud-init
+datasource_list: [ NoCloud, ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, None ]
diff --git a/etc/cloud/cloud.cfg.d/99-installer.cfg b/etc/cloud/cloud.cfg.d/99-installer.cfg
new file mode 100644 (file)
index 0000000..b5d374f
--- /dev/null
@@ -0,0 +1,9 @@
+datasource:
+  None:
+    metadata: {instance-id: 0c9fadfa-d9b5-4803-b80f-e43373b8f08f}
+    userdata_raw: "#cloud-config\ngrowpart: {mode: 'off'}\nlocale: en_US.UTF-8\npreserve_hostname:\
+      \ true\nresize_rootfs: false\nssh_pwauth: true\nusers:\n- gecos: gamesguru\n\
+      \  groups: [adm, cdrom, dip, plugdev, lxd, sudo]\n  lock_passwd: false\n  name:\
+      \ gamesguru\n  passwd: $6$Q39uw97PX6PbbANJ$6zAMBK4YnOA0C2L3OvtDhdhRfL5JvNuYiADqTLH2cvkjgY639XTCKsprNN1TidRyaxfVbQOnLeui/6ozUcFiN1\n\
+      \  shell: /bin/bash\n"
+datasource_list: [None]
diff --git a/etc/cloud/cloud.cfg.d/README b/etc/cloud/cloud.cfg.d/README
new file mode 100644 (file)
index 0000000..036b80b
--- /dev/null
@@ -0,0 +1,3 @@
+# All files with the '.cfg' extension in this directory will be read by
+# cloud-init. They are read in lexical order. Later files overwrite values in
+# earlier files.
diff --git a/etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg b/etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg
new file mode 100644 (file)
index 0000000..ee294f4
--- /dev/null
@@ -0,0 +1,2 @@
+apt:
+  preserve_sources_list: true
diff --git a/etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg b/etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg
new file mode 100644 (file)
index 0000000..f144451
--- /dev/null
@@ -0,0 +1 @@
+network: {config: disabled}
diff --git a/etc/cloud/ds-identify.cfg b/etc/cloud/ds-identify.cfg
new file mode 100644 (file)
index 0000000..a1ecd2c
--- /dev/null
@@ -0,0 +1 @@
+policy: enabled
diff --git a/etc/cloud/templates/chef_client.rb.tmpl b/etc/cloud/templates/chef_client.rb.tmpl
new file mode 100644 (file)
index 0000000..b9d5817
--- /dev/null
@@ -0,0 +1,64 @@
+## template:jinja
+{#
+This file is only utilized if the module 'cc_chef' is enabled in
+cloud-config. Specifically, in order to enable it
+you need to add the following to config:
+  chef:
+    validation_key: XYZ
+    validation_cert: XYZ
+    validation_name: XYZ
+    server_url: XYZ
+-#}
+{{generated_by}}
+{#
+The reason these are not in quotes is because they are ruby
+symbols that will be placed inside here, and not actual strings...
+#}
+{% if chef_license %}
+chef_license           "{{chef_license}}"
+{% endif%}
+{% if log_level %}
+log_level              {{log_level}}
+{% endif %}
+{% if ssl_verify_mode %}
+ssl_verify_mode        {{ssl_verify_mode}}
+{% endif %}
+{% if log_location %}
+log_location           "{{log_location}}"
+{% endif %}
+{% if validation_name %}
+validation_client_name "{{validation_name}}"
+{% endif %}
+{% if validation_cert %}
+validation_key         "{{validation_key}}"
+{% endif %}
+{% if client_key %}
+client_key             "{{client_key}}"
+{% endif %}
+{% if server_url %}
+chef_server_url        "{{server_url}}"
+{% endif %}
+{% if environment %}
+environment            "{{environment}}"
+{% endif %}
+{% if node_name %}
+node_name              "{{node_name}}"
+{% endif %}
+{% if json_attribs %}
+json_attribs           "{{json_attribs}}"
+{% endif %}
+{% if file_cache_path %}
+file_cache_path        "{{file_cache_path}}"
+{% endif %}
+{% if file_backup_path %}
+file_backup_path       "{{file_backup_path}}"
+{% endif %}
+{% if pid_file %}
+pid_file               "{{pid_file}}"
+{% endif %}
+{% if show_time %}
+Chef::Log::Formatter.show_time = true
+{% endif %}
+{% if encrypted_data_bag_secret %}
+encrypted_data_bag_secret "{{encrypted_data_bag_secret}}"
+{% endif %}
diff --git a/etc/cloud/templates/chrony.conf.alpine.tmpl b/etc/cloud/templates/chrony.conf.alpine.tmpl
new file mode 100644 (file)
index 0000000..45efc18
--- /dev/null
@@ -0,0 +1,38 @@
+## template:jinja
+# Welcome to the chrony configuration file. See chrony.conf(5) for more
+# information about usable directives.
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# This directive specifies the location of the file containing ID/key pairs for
+# NTP authentication.
+keyfile /etc/chrony/chrony.keys
+
+# This directive specifies the file into which chronyd will store the rate
+# information.
+driftfile /var/lib/chrony/chrony.drift
+
+# Uncomment the following line to turn logging on.
+#log tracking measurements statistics
+
+# Log files location.
+logdir /var/log/chrony
+
+# Stop bad estimates upsetting machine clock.
+maxupdateskew 100.0
+
+# This directive enables kernel synchronisation (every 11 minutes) of the
+# real-time clock. Note that it can’t be used along with the 'rtcfile' directive.
+rtcsync
+
+# Step the system clock instead of slewing it if the adjustment is larger than
+# one second, but only in the first three clock updates.
+makestep 1 3
diff --git a/etc/cloud/templates/chrony.conf.debian.tmpl b/etc/cloud/templates/chrony.conf.debian.tmpl
new file mode 100644 (file)
index 0000000..661bf04
--- /dev/null
@@ -0,0 +1,39 @@
+## template:jinja
+# Welcome to the chrony configuration file. See chrony.conf(5) for more
+# information about usuable directives.
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# This directive specify the location of the file containing ID/key pairs for
+# NTP authentication.
+keyfile /etc/chrony/chrony.keys
+
+# This directive specify the file into which chronyd will store the rate
+# information.
+driftfile /var/lib/chrony/chrony.drift
+
+# Uncomment the following line to turn logging on.
+#log tracking measurements statistics
+
+# Log files location.
+logdir /var/log/chrony
+
+# Stop bad estimates upsetting machine clock.
+maxupdateskew 100.0
+
+# This directive enables kernel synchronisation (every 11 minutes) of the
+# real-time clock. Note that it can’t be used along with the 'rtcfile' directive.
+rtcsync
+
+# Step the system clock instead of slewing it if the adjustment is larger than
+# one second, but only in the first three clock updates.
+makestep 1 3
+
diff --git a/etc/cloud/templates/chrony.conf.fedora.tmpl b/etc/cloud/templates/chrony.conf.fedora.tmpl
new file mode 100644 (file)
index 0000000..8551f79
--- /dev/null
@@ -0,0 +1,48 @@
+## template:jinja
+# Use public servers from the pool.ntp.org project.
+# Please consider joining the pool (http://www.pool.ntp.org/join.html).
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# Record the rate at which the system clock gains/losses time.
+driftfile /var/lib/chrony/drift
+
+# Allow the system clock to be stepped in the first three updates
+# if its offset is larger than 1 second.
+makestep 1.0 3
+
+# Enable kernel synchronization of the real-time clock (RTC).
+rtcsync
+
+# Enable hardware timestamping on all interfaces that support it.
+#hwtimestamp *
+
+# Increase the minimum number of selectable sources required to adjust
+# the system clock.
+#minsources 2
+
+# Allow NTP client access from local network.
+#allow 192.168.0.0/16
+
+# Serve time even if not synchronized to a time source.
+#local stratum 10
+
+# Specify file containing keys for NTP authentication.
+#keyfile /etc/chrony.keys
+
+# Get TAI-UTC offset and leap seconds from the system tz database.
+leapsectz right/UTC
+
+# Specify directory for log files.
+logdir /var/log/chrony
+
+# Select which information is logged.
+#log measurements statistics tracking
diff --git a/etc/cloud/templates/chrony.conf.opensuse.tmpl b/etc/cloud/templates/chrony.conf.opensuse.tmpl
new file mode 100644 (file)
index 0000000..a3d3e0e
--- /dev/null
@@ -0,0 +1,38 @@
+## template:jinja
+# Use public servers from the pool.ntp.org project.
+# Please consider joining the pool (http://www.pool.ntp.org/join.html).
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# Record the rate at which the system clock gains/losses time.
+driftfile /var/lib/chrony/drift
+
+# In first three updates step the system clock instead of slew
+# if the adjustment is larger than 1 second.
+makestep 1.0 3
+
+# Enable kernel synchronization of the real-time clock (RTC).
+rtcsync
+
+# Allow NTP client access from local network.
+#allow 192.168/16
+
+# Serve time even if not synchronized to any NTP server.
+#local stratum 10
+
+# Specify file containing keys for NTP authentication.
+#keyfile /etc/chrony.keys
+
+# Specify directory for log files.
+logdir /var/log/chrony
+
+# Select which information is logged.
+#log measurements statistics tracking
diff --git a/etc/cloud/templates/chrony.conf.photon.tmpl b/etc/cloud/templates/chrony.conf.photon.tmpl
new file mode 100644 (file)
index 0000000..8551f79
--- /dev/null
@@ -0,0 +1,48 @@
+## template:jinja
+# Use public servers from the pool.ntp.org project.
+# Please consider joining the pool (http://www.pool.ntp.org/join.html).
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# Record the rate at which the system clock gains/losses time.
+driftfile /var/lib/chrony/drift
+
+# Allow the system clock to be stepped in the first three updates
+# if its offset is larger than 1 second.
+makestep 1.0 3
+
+# Enable kernel synchronization of the real-time clock (RTC).
+rtcsync
+
+# Enable hardware timestamping on all interfaces that support it.
+#hwtimestamp *
+
+# Increase the minimum number of selectable sources required to adjust
+# the system clock.
+#minsources 2
+
+# Allow NTP client access from local network.
+#allow 192.168.0.0/16
+
+# Serve time even if not synchronized to a time source.
+#local stratum 10
+
+# Specify file containing keys for NTP authentication.
+#keyfile /etc/chrony.keys
+
+# Get TAI-UTC offset and leap seconds from the system tz database.
+leapsectz right/UTC
+
+# Specify directory for log files.
+logdir /var/log/chrony
+
+# Select which information is logged.
+#log measurements statistics tracking
diff --git a/etc/cloud/templates/chrony.conf.rhel.tmpl b/etc/cloud/templates/chrony.conf.rhel.tmpl
new file mode 100644 (file)
index 0000000..5b3542e
--- /dev/null
@@ -0,0 +1,45 @@
+## template:jinja
+# Use public servers from the pool.ntp.org project.
+# Please consider joining the pool (http://www.pool.ntp.org/join.html).
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# Record the rate at which the system clock gains/losses time.
+driftfile /var/lib/chrony/drift
+
+# Allow the system clock to be stepped in the first three updates
+# if its offset is larger than 1 second.
+makestep 1.0 3
+
+# Enable kernel synchronization of the real-time clock (RTC).
+rtcsync
+
+# Enable hardware timestamping on all interfaces that support it.
+#hwtimestamp *
+
+# Increase the minimum number of selectable sources required to adjust
+# the system clock.
+#minsources 2
+
+# Allow NTP client access from local network.
+#allow 192.168.0.0/16
+
+# Serve time even if not synchronized to a time source.
+#local stratum 10
+
+# Specify file containing keys for NTP authentication.
+#keyfile /etc/chrony.keys
+
+# Specify directory for log files.
+logdir /var/log/chrony
+
+# Select which information is logged.
+#log measurements statistics tracking
diff --git a/etc/cloud/templates/chrony.conf.sles.tmpl b/etc/cloud/templates/chrony.conf.sles.tmpl
new file mode 100644 (file)
index 0000000..a3d3e0e
--- /dev/null
@@ -0,0 +1,38 @@
+## template:jinja
+# Use public servers from the pool.ntp.org project.
+# Please consider joining the pool (http://www.pool.ntp.org/join.html).
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# Record the rate at which the system clock gains/losses time.
+driftfile /var/lib/chrony/drift
+
+# In first three updates step the system clock instead of slew
+# if the adjustment is larger than 1 second.
+makestep 1.0 3
+
+# Enable kernel synchronization of the real-time clock (RTC).
+rtcsync
+
+# Allow NTP client access from local network.
+#allow 192.168/16
+
+# Serve time even if not synchronized to any NTP server.
+#local stratum 10
+
+# Specify file containing keys for NTP authentication.
+#keyfile /etc/chrony.keys
+
+# Specify directory for log files.
+logdir /var/log/chrony
+
+# Select which information is logged.
+#log measurements statistics tracking
diff --git a/etc/cloud/templates/chrony.conf.ubuntu.tmpl b/etc/cloud/templates/chrony.conf.ubuntu.tmpl
new file mode 100644 (file)
index 0000000..50a6f51
--- /dev/null
@@ -0,0 +1,42 @@
+## template:jinja
+# Welcome to the chrony configuration file. See chrony.conf(5) for more
+# information about usuable directives.
+
+# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
+# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
+# more information.
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# This directive specify the location of the file containing ID/key pairs for
+# NTP authentication.
+keyfile /etc/chrony/chrony.keys
+
+# This directive specify the file into which chronyd will store the rate
+# information.
+driftfile /var/lib/chrony/chrony.drift
+
+# Uncomment the following line to turn logging on.
+#log tracking measurements statistics
+
+# Log files location.
+logdir /var/log/chrony
+
+# Stop bad estimates upsetting machine clock.
+maxupdateskew 100.0
+
+# This directive enables kernel synchronisation (every 11 minutes) of the
+# real-time clock. Note that it can’t be used along with the 'rtcfile' directive.
+rtcsync
+
+# Step the system clock instead of slewing it if the adjustment is larger than
+# one second, but only in the first three clock updates.
+makestep 1 3
diff --git a/etc/cloud/templates/hosts.alpine.tmpl b/etc/cloud/templates/hosts.alpine.tmpl
new file mode 100644 (file)
index 0000000..98ae55e
--- /dev/null
@@ -0,0 +1,25 @@
+## template:jinja
+{#
+This file /etc/cloud/templates/hosts.alpine.tmpl is only utilized
+if enabled in cloud-config.  Specifically, in order to enable it
+you need to add the following to config:
+  manage_etc_hosts: True
+-#}
+# Your system has configured 'manage_etc_hosts' as True.
+# As a result, if you wish for changes to this file to persist
+# then you will need to either
+# a.) make changes to the master file in /etc/cloud/templates/hosts.alpine.tmpl
+# b.) change or remove the value of 'manage_etc_hosts' in
+#     /etc/cloud/cloud.cfg or cloud-config from user-data
+#
+# The following lines are desirable for IPv4 capable hosts
+127.0.1.1 {{hostname}} {{fqdn}}
+127.0.0.1 localhost localhost.localdomain
+127.0.0.1 localhost4 localhost4.localdomain4
+
+# The following lines are desirable for IPv6 capable hosts
+::1 {{hostname}} {{fqdn}}
+::1 localhost6 localhost6.localdomain6
+
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
diff --git a/etc/cloud/templates/hosts.arch.tmpl b/etc/cloud/templates/hosts.arch.tmpl
new file mode 100644 (file)
index 0000000..b80ba61
--- /dev/null
@@ -0,0 +1,23 @@
+## template:jinja
+{#
+This file (/etc/cloud/templates/hosts.arch.tmpl) is only utilized
+if enabled in cloud-config.  Specifically, in order to enable it
+you need to add the following to config:
+   manage_etc_hosts: True
+-#}
+# Your system has configured 'manage_etc_hosts' as True.
+# As a result, if you wish for changes to this file to persist
+# then you will need to either
+# a.) make changes to the master file in /etc/cloud/templates/hosts.arch.tmpl
+# b.) change or remove the value of 'manage_etc_hosts' in
+#     /etc/cloud/cloud.cfg or cloud-config from user-data
+#
+{# The value '{{hostname}}' will be replaced with the local-hostname -#}
+127.0.1.1 {{fqdn}} {{hostname}}
+127.0.0.1 localhost
+
+# The following lines are desirable for IPv6 capable hosts
+::1 localhost ip6-localhost ip6-loopback
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+
diff --git a/etc/cloud/templates/hosts.debian.tmpl b/etc/cloud/templates/hosts.debian.tmpl
new file mode 100644 (file)
index 0000000..afeccf9
--- /dev/null
@@ -0,0 +1,23 @@
+## template:jinja
+{#
+This file (/etc/cloud/templates/hosts.debian.tmpl) is only utilized
+if enabled in cloud-config.  Specifically, in order to enable it
+you need to add the following to config:
+   manage_etc_hosts: True
+-#}
+# Your system has configured 'manage_etc_hosts' as True.
+# As a result, if you wish for changes to this file to persist
+# then you will need to either
+# a.) make changes to the master file in /etc/cloud/templates/hosts.debian.tmpl
+# b.) change or remove the value of 'manage_etc_hosts' in
+#     /etc/cloud/cloud.cfg or cloud-config from user-data
+#
+{# The value '{{hostname}}' will be replaced with the local-hostname -#}
+127.0.1.1 {{fqdn}} {{hostname}}
+127.0.0.1 localhost
+
+# The following lines are desirable for IPv6 capable hosts
+::1 localhost ip6-localhost ip6-loopback
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+
diff --git a/etc/cloud/templates/hosts.freebsd.tmpl b/etc/cloud/templates/hosts.freebsd.tmpl
new file mode 100644 (file)
index 0000000..5cd5d3b
--- /dev/null
@@ -0,0 +1,23 @@
+## template:jinja
+{#
+This file /etc/cloud/templates/hosts.freebsd.tmpl is only utilized
+if enabled in cloud-config.  Specifically, in order to enable it
+you need to add the following to config:
+  manage_etc_hosts: True
+-#}
+# Your system has configured 'manage_etc_hosts' as True.
+# As a result, if you wish for changes to this file to persist
+# then you will need to either
+# a.) make changes to the master file in /etc/cloud/templates/hosts.freebsd.tmpl
+# b.) change or remove the value of 'manage_etc_hosts' in
+#     /etc/cloud/cloud.cfg or cloud-config from user-data
+
+# The following lines are desirable for IPv6 capable hosts
+::1 {{fqdn}} {{hostname}}
+::1 localhost.localdomain localhost
+::1 localhost6.localdomain6 localhost6
+
+# The following lines are desirable for IPv4 capable hosts
+127.0.0.1 {{fqdn}} {{hostname}}
+127.0.0.1 localhost.localdomain localhost
+127.0.0.1 localhost4.localdomain4 localhost4
diff --git a/etc/cloud/templates/hosts.gentoo.tmpl b/etc/cloud/templates/hosts.gentoo.tmpl
new file mode 100644 (file)
index 0000000..cc5e6f0
--- /dev/null
@@ -0,0 +1,23 @@
+## template:jinja
+{#
+This file /etc/cloud/templates/hosts.gentoo.tmpl is only utilized
+if enabled in cloud-config.  Specifically, in order to enable it
+you need to add the following to config:
+  manage_etc_hosts: True
+-#}
+# Your system has configured 'manage_etc_hosts' as True.
+# As a result, if you wish for changes to this file to persist
+# then you will need to either
+# a.) make changes to the master file in /etc/cloud/templates/hosts.gentoo.tmpl
+# b.) change or remove the value of 'manage_etc_hosts' in
+#     /etc/cloud/cloud.cfg or cloud-config from user-data
+#
+# The following lines are desirable for IPv4 capable hosts
+127.0.0.1 {{fqdn}} {{hostname}}
+127.0.0.1 localhost.localdomain localhost
+127.0.0.1 localhost4.localdomain4 localhost4
+
+# The following lines are desirable for IPv6 capable hosts
+::1 {{fqdn}} {{hostname}}
+::1 localhost.localdomain localhost
+::1 localhost6.localdomain6 localhost6
diff --git a/etc/cloud/templates/hosts.photon.tmpl b/etc/cloud/templates/hosts.photon.tmpl
new file mode 100644 (file)
index 0000000..0fd6f72
--- /dev/null
@@ -0,0 +1,22 @@
+## template:jinja
+{#
+This file /etc/cloud/templates/hosts.photon.tmpl is only utilized
+if enabled in cloud-config.  Specifically, in order to enable it
+you need to add the following to config:
+  manage_etc_hosts: True
+-#}
+# Your system has configured 'manage_etc_hosts' as True.
+# As a result, if you wish for changes to this file to persist
+# then you will need to either
+# a.) make changes to the master file in /etc/cloud/templates/hosts.photon.tmpl
+# b.) change or remove the value of 'manage_etc_hosts' in
+#     /etc/cloud/cloud.cfg or cloud-config from user-data
+#
+# The following lines are desirable for IPv4 capable hosts
+127.0.0.1 {{fqdn}} {{hostname}}
+127.0.0.1 localhost.localdomain localhost
+127.0.0.1 localhost4.localdomain4 localhost4
+
+# The following lines are desirable for IPv6 capable hosts
+::1 {{fqdn}} {{hostname}}
+::1 localhost6.localdomain6 localhost6
diff --git a/etc/cloud/templates/hosts.redhat.tmpl b/etc/cloud/templates/hosts.redhat.tmpl
new file mode 100644 (file)
index 0000000..bc5da32
--- /dev/null
@@ -0,0 +1,24 @@
+## template:jinja
+{#
+This file /etc/cloud/templates/hosts.redhat.tmpl is only utilized
+if enabled in cloud-config.  Specifically, in order to enable it
+you need to add the following to config:
+  manage_etc_hosts: True
+-#}
+# Your system has configured 'manage_etc_hosts' as True.
+# As a result, if you wish for changes to this file to persist
+# then you will need to either
+# a.) make changes to the master file in /etc/cloud/templates/hosts.redhat.tmpl
+# b.) change or remove the value of 'manage_etc_hosts' in
+#     /etc/cloud/cloud.cfg or cloud-config from user-data
+# 
+# The following lines are desirable for IPv4 capable hosts
+127.0.0.1 {{fqdn}} {{hostname}}
+127.0.0.1 localhost.localdomain localhost
+127.0.0.1 localhost4.localdomain4 localhost4
+
+# The following lines are desirable for IPv6 capable hosts
+::1 {{fqdn}} {{hostname}}
+::1 localhost.localdomain localhost
+::1 localhost6.localdomain6 localhost6
+
diff --git a/etc/cloud/templates/hosts.suse.tmpl b/etc/cloud/templates/hosts.suse.tmpl
new file mode 100644 (file)
index 0000000..5d7953f
--- /dev/null
@@ -0,0 +1,32 @@
+## template:jinja
+{#
+This file /etc/cloud/templates/hosts.suse.tmpl is only utilized
+if enabled in cloud-config.  Specifically, in order to enable it
+you need to add the following to config:
+  manage_etc_hosts: True
+-#}
+# Your system has configured 'manage_etc_hosts' as True.
+# As a result, if you wish for changes to this file to persist
+# then you will need to either
+# a.) make changes to the master file in /etc/cloud/templates/hosts.suse.tmpl
+# b.) change or remove the value of 'manage_etc_hosts' in
+#     /etc/cloud/cloud.cfg or cloud-config from user-data
+#
+# The following lines are desirable for IPv4 capable hosts
+127.0.1.1 {{fqdn}} {{hostname}}
+127.0.0.1 localhost.localdomain localhost
+127.0.0.1 localhost4.localdomain4 localhost4
+
+# The following lines are desirable for IPv6 capable hosts
+::1 {{fqdn}} {{hostname}}
+::1 localhost.localdomain localhost
+::1 localhost6.localdomain6 localhost6
+::1 localhost ipv6-localhost ipv6-loopback
+
+
+fe00::0 ipv6-localnet
+ff00::0 ipv6-mcastprefix
+ff02::1 ipv6-allnodes
+ff02::2 ipv6-allrouters
+ff02::3 ipv6-allhosts
+
diff --git a/etc/cloud/templates/ntp.conf.alpine.tmpl b/etc/cloud/templates/ntp.conf.alpine.tmpl
new file mode 100644 (file)
index 0000000..59ca8fc
--- /dev/null
@@ -0,0 +1,10 @@
+## template:jinja
+# /etc/ntp.conf
+#
+# Configuration for Busybox ntpd - it only supports "server" lines.
+
+{% if servers %}# Servers
+{% endif %}
+{% for server in servers -%}
+server {{server}}
+{% endfor %}
diff --git a/etc/cloud/templates/ntp.conf.debian.tmpl b/etc/cloud/templates/ntp.conf.debian.tmpl
new file mode 100644 (file)
index 0000000..affe983
--- /dev/null
@@ -0,0 +1,64 @@
+## template:jinja
+
+# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
+
+driftfile /var/lib/ntp/ntp.drift
+
+# Enable this if you want statistics to be logged.
+#statsdir /var/log/ntpstats/
+
+statistics loopstats peerstats clockstats
+filegen loopstats file loopstats type day enable
+filegen peerstats file peerstats type day enable
+filegen clockstats file clockstats type day enable
+
+
+# You do need to talk to an NTP server or two (or three).
+#server ntp.your-provider.example
+
+# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
+# pick a different set every time it starts up.  Please consider joining the
+# pool: <http://www.pool.ntp.org/join.html>
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
+# details.  The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
+# might also be helpful.
+#
+# Note that "restrict" applies to both servers and clients, so a configuration
+# that might be intended to block requests from certain clients could also end
+# up blocking replies from your own upstream servers.
+
+# By default, exchange time with everybody, but don't allow configuration.
+restrict -4 default kod notrap nomodify nopeer noquery limited
+restrict -6 default kod notrap nomodify nopeer noquery limited
+
+# Local users may interrogate the ntp server more closely.
+restrict 127.0.0.1
+restrict ::1
+
+# Needed for adding pool entries
+restrict source notrap nomodify noquery
+
+# Clients from this (example!) subnet have unlimited access, but only if
+# cryptographically authenticated.
+#restrict 192.168.123.0 mask 255.255.255.0 notrust
+
+
+# If you want to provide time to your local subnet, change the next line.
+# (Again, the address is an example only.)
+#broadcast 192.168.123.255
+
+# If you want to listen to time broadcasts on your local subnet, de-comment the
+# next lines.  Please do this only if you trust everybody on the network!
+#disable auth
+#broadcastclient
diff --git a/etc/cloud/templates/ntp.conf.fedora.tmpl b/etc/cloud/templates/ntp.conf.fedora.tmpl
new file mode 100644 (file)
index 0000000..af7b1b0
--- /dev/null
@@ -0,0 +1,66 @@
+## template:jinja
+
+# For more information about this file, see the man pages
+# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
+
+driftfile /var/lib/ntp/drift
+
+# Permit time synchronization with our time source, but do not
+# permit the source to query or modify the service on this system.
+restrict default nomodify notrap nopeer noquery
+
+# Permit all access over the loopback interface.  This could
+# be tightened as well, but to do so would effect some of
+# the administrative functions.
+restrict 127.0.0.1 
+restrict ::1
+
+# Hosts on local network are less restricted.
+#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
+
+# Use public servers from the pool.ntp.org project.
+# Please consider joining the pool (http://www.pool.ntp.org/join.html).
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+#broadcast 192.168.1.255 autokey       # broadcast server
+#broadcastclient                       # broadcast client
+#broadcast 224.0.1.1 autokey           # multicast server
+#multicastclient 224.0.1.1             # multicast client
+#manycastserver 239.255.254.254                # manycast server
+#manycastclient 239.255.254.254 autokey # manycast client
+
+# Enable public key cryptography.
+#crypto
+
+includefile /etc/ntp/crypto/pw
+
+# Key file containing the keys and key identifiers used when operating
+# with symmetric key cryptography. 
+keys /etc/ntp/keys
+
+# Specify the key identifiers which are trusted.
+#trustedkey 4 8 42
+
+# Specify the key identifier to use with the ntpdc utility.
+#requestkey 8
+
+# Specify the key identifier to use with the ntpq utility.
+#controlkey 8
+
+# Enable writing of statistics records.
+#statistics clockstats cryptostats loopstats peerstats
+
+# Disable the monitoring facility to prevent amplification attacks using ntpdc
+# monlist command when default restrict does not include the noquery flag. See
+# CVE-2013-5211 for more details.
+# Note: Monitoring will not be disabled with the limited restriction flag.
+disable monitor
diff --git a/etc/cloud/templates/ntp.conf.opensuse.tmpl b/etc/cloud/templates/ntp.conf.opensuse.tmpl
new file mode 100644 (file)
index 0000000..f3ab565
--- /dev/null
@@ -0,0 +1,88 @@
+## template:jinja
+
+##
+## Radio and modem clocks by convention have addresses in the 
+## form 127.127.t.u, where t is the clock type and u is a unit 
+## number in the range 0-3. 
+##
+## Most of these clocks require support in the form of a 
+## serial port or special bus peripheral. The particular  
+## device is normally specified by adding a soft link 
+## /dev/device-u to the particular hardware device involved, 
+## where u correspond to the unit number above. 
+## 
+## Generic DCF77 clock on serial port (Conrad DCF77)
+## Address:     127.127.8.u
+## Serial Port: /dev/refclock-u
+##  
+## (create soft link /dev/refclock-0 to the particular ttyS?)
+##
+# server 127.127.8.0 mode 5 prefer
+
+##
+## Undisciplined Local Clock. This is a fake driver intended for backup
+## and when no outside source of synchronized time is available.
+##
+# server 127.127.1.0           # local clock (LCL)
+# fudge  127.127.1.0 stratum 10        # LCL is unsynchronized
+
+##
+## Add external Servers using
+## # rcntpd addserver <yourserver>
+## The servers will only be added to the currently running instance, not
+## to /etc/ntp.conf.
+##
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# Access control configuration; see /usr/share/doc/packages/ntp/html/accopt.html for
+# details.  The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
+# might also be helpful.
+#
+# Note that "restrict" applies to both servers and clients, so a configuration
+# that might be intended to block requests from certain clients could also end
+# up blocking replies from your own upstream servers.
+
+# By default, exchange time with everybody, but don't allow configuration.
+restrict -4 default notrap nomodify nopeer noquery
+restrict -6 default notrap nomodify nopeer noquery
+
+# Local users may interrogate the ntp server more closely.
+restrict 127.0.0.1
+restrict ::1
+
+# Clients from this (example!) subnet have unlimited access, but only if
+# cryptographically authenticated.
+#restrict 192.168.123.0 mask 255.255.255.0 notrust
+
+##
+## Miscellaneous stuff
+##
+
+driftfile /var/lib/ntp/drift/ntp.drift # path for drift file
+
+logfile   /var/log/ntp         # alternate log file
+# logconfig =syncstatus + sysevents
+# logconfig =all
+
+# statsdir /tmp/               # directory for statistics files
+# filegen peerstats  file peerstats  type day enable
+# filegen loopstats  file loopstats  type day enable
+# filegen clockstats file clockstats type day enable
+
+#
+# Authentication stuff
+#
+keys /etc/ntp.keys             # path for keys file
+trustedkey 1                   # define trusted keys
+requestkey 1                   # key (7) for accessing server variables
+controlkey 1                   # key (6) for accessing server variables
+
diff --git a/etc/cloud/templates/ntp.conf.photon.tmpl b/etc/cloud/templates/ntp.conf.photon.tmpl
new file mode 100644 (file)
index 0000000..4d4910d
--- /dev/null
@@ -0,0 +1,61 @@
+## template:jinja
+
+# For more information about this file, see the man pages
+# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
+
+driftfile /var/lib/ntp/drift
+
+# Permit time synchronization with our time source, but do not
+# permit the source to query or modify the service on this system.
+restrict default kod nomodify notrap nopeer noquery
+restrict -6 default kod nomodify notrap nopeer noquery
+
+# Permit all access over the loopback interface.  This could
+# be tightened as well, but to do so would effect some of
+# the administrative functions.
+restrict 127.0.0.1
+restrict -6 ::1
+
+# Hosts on local network are less restricted.
+#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
+
+# Use public servers from the pool.ntp.org project.
+# Please consider joining the pool (http://www.pool.ntp.org/join.html).
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+#broadcast 192.168.1.255 autokey       # broadcast server
+#broadcastclient                       # broadcast client
+#broadcast 224.0.1.1 autokey           # multicast server
+#multicastclient 224.0.1.1             # multicast client
+#manycastserver 239.255.254.254                # manycast server
+#manycastclient 239.255.254.254 autokey # manycast client
+
+# Enable public key cryptography.
+#crypto
+
+includefile /etc/ntp/crypto/pw
+
+# Key file containing the keys and key identifiers used when operating
+# with symmetric key cryptography.
+keys /etc/ntp/keys
+
+# Specify the key identifiers which are trusted.
+#trustedkey 4 8 42
+
+# Specify the key identifier to use with the ntpdc utility.
+#requestkey 8
+
+# Specify the key identifier to use with the ntpq utility.
+#controlkey 8
+
+# Enable writing of statistics records.
+#statistics clockstats cryptostats loopstats peerstats
diff --git a/etc/cloud/templates/ntp.conf.rhel.tmpl b/etc/cloud/templates/ntp.conf.rhel.tmpl
new file mode 100644 (file)
index 0000000..62b4776
--- /dev/null
@@ -0,0 +1,61 @@
+## template:jinja
+
+# For more information about this file, see the man pages
+# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
+
+driftfile /var/lib/ntp/drift
+
+# Permit time synchronization with our time source, but do not
+# permit the source to query or modify the service on this system.
+restrict default kod nomodify notrap nopeer noquery
+restrict -6 default kod nomodify notrap nopeer noquery
+
+# Permit all access over the loopback interface.  This could
+# be tightened as well, but to do so would effect some of
+# the administrative functions.
+restrict 127.0.0.1 
+restrict -6 ::1
+
+# Hosts on local network are less restricted.
+#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
+
+# Use public servers from the pool.ntp.org project.
+# Please consider joining the pool (http://www.pool.ntp.org/join.html).
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+#broadcast 192.168.1.255 autokey       # broadcast server
+#broadcastclient                       # broadcast client
+#broadcast 224.0.1.1 autokey           # multicast server
+#multicastclient 224.0.1.1             # multicast client
+#manycastserver 239.255.254.254                # manycast server
+#manycastclient 239.255.254.254 autokey # manycast client
+
+# Enable public key cryptography.
+#crypto
+
+includefile /etc/ntp/crypto/pw
+
+# Key file containing the keys and key identifiers used when operating
+# with symmetric key cryptography. 
+keys /etc/ntp/keys
+
+# Specify the key identifiers which are trusted.
+#trustedkey 4 8 42
+
+# Specify the key identifier to use with the ntpdc utility.
+#requestkey 8
+
+# Specify the key identifier to use with the ntpq utility.
+#controlkey 8
+
+# Enable writing of statistics records.
+#statistics clockstats cryptostats loopstats peerstats
diff --git a/etc/cloud/templates/ntp.conf.sles.tmpl b/etc/cloud/templates/ntp.conf.sles.tmpl
new file mode 100644 (file)
index 0000000..f3ab565
--- /dev/null
@@ -0,0 +1,88 @@
+## template:jinja
+
+##
+## Radio and modem clocks by convention have addresses in the 
+## form 127.127.t.u, where t is the clock type and u is a unit 
+## number in the range 0-3. 
+##
+## Most of these clocks require support in the form of a 
+## serial port or special bus peripheral. The particular  
+## device is normally specified by adding a soft link 
+## /dev/device-u to the particular hardware device involved, 
+## where u correspond to the unit number above. 
+## 
+## Generic DCF77 clock on serial port (Conrad DCF77)
+## Address:     127.127.8.u
+## Serial Port: /dev/refclock-u
+##  
+## (create soft link /dev/refclock-0 to the particular ttyS?)
+##
+# server 127.127.8.0 mode 5 prefer
+
+##
+## Undisciplined Local Clock. This is a fake driver intended for backup
+## and when no outside source of synchronized time is available.
+##
+# server 127.127.1.0           # local clock (LCL)
+# fudge  127.127.1.0 stratum 10        # LCL is unsynchronized
+
+##
+## Add external Servers using
+## # rcntpd addserver <yourserver>
+## The servers will only be added to the currently running instance, not
+## to /etc/ntp.conf.
+##
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# Access control configuration; see /usr/share/doc/packages/ntp/html/accopt.html for
+# details.  The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
+# might also be helpful.
+#
+# Note that "restrict" applies to both servers and clients, so a configuration
+# that might be intended to block requests from certain clients could also end
+# up blocking replies from your own upstream servers.
+
+# By default, exchange time with everybody, but don't allow configuration.
+restrict -4 default notrap nomodify nopeer noquery
+restrict -6 default notrap nomodify nopeer noquery
+
+# Local users may interrogate the ntp server more closely.
+restrict 127.0.0.1
+restrict ::1
+
+# Clients from this (example!) subnet have unlimited access, but only if
+# cryptographically authenticated.
+#restrict 192.168.123.0 mask 255.255.255.0 notrust
+
+##
+## Miscellaneous stuff
+##
+
+driftfile /var/lib/ntp/drift/ntp.drift # path for drift file
+
+logfile   /var/log/ntp         # alternate log file
+# logconfig =syncstatus + sysevents
+# logconfig =all
+
+# statsdir /tmp/               # directory for statistics files
+# filegen peerstats  file peerstats  type day enable
+# filegen loopstats  file loopstats  type day enable
+# filegen clockstats file clockstats type day enable
+
+#
+# Authentication stuff
+#
+keys /etc/ntp.keys             # path for keys file
+trustedkey 1                   # define trusted keys
+requestkey 1                   # key (7) for accessing server variables
+controlkey 1                   # key (6) for accessing server variables
+
diff --git a/etc/cloud/templates/ntp.conf.ubuntu.tmpl b/etc/cloud/templates/ntp.conf.ubuntu.tmpl
new file mode 100644 (file)
index 0000000..862a4fb
--- /dev/null
@@ -0,0 +1,75 @@
+## template:jinja
+
+# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
+
+driftfile /var/lib/ntp/ntp.drift
+
+# Enable this if you want statistics to be logged.
+#statsdir /var/log/ntpstats/
+
+statistics loopstats peerstats clockstats
+filegen loopstats file loopstats type day enable
+filegen peerstats file peerstats type day enable
+filegen clockstats file clockstats type day enable
+
+# Specify one or more NTP servers.
+
+# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
+# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
+# more information.
+{% if pools %}# pools
+{% endif %}
+{% for pool in pools -%}
+pool {{pool}} iburst
+{% endfor %}
+{%- if servers %}# servers
+{% endif %}
+{% for server in servers -%}
+server {{server}} iburst
+{% endfor %}
+
+# Use Ubuntu's ntp server as a fallback.
+# pool ntp.ubuntu.com
+
+# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
+# details.  The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
+# might also be helpful.
+#
+# Note that "restrict" applies to both servers and clients, so a configuration
+# that might be intended to block requests from certain clients could also end
+# up blocking replies from your own upstream servers.
+
+# By default, exchange time with everybody, but don't allow configuration.
+restrict -4 default kod notrap nomodify nopeer noquery limited
+restrict -6 default kod notrap nomodify nopeer noquery limited
+
+# Local users may interrogate the ntp server more closely.
+restrict 127.0.0.1
+restrict ::1
+
+# Needed for adding pool entries
+restrict source notrap nomodify noquery
+
+# Clients from this (example!) subnet have unlimited access, but only if
+# cryptographically authenticated.
+#restrict 192.168.123.0 mask 255.255.255.0 notrust
+
+
+# If you want to provide time to your local subnet, change the next line.
+# (Again, the address is an example only.)
+#broadcast 192.168.123.255
+
+# If you want to listen to time broadcasts on your local subnet, de-comment the
+# next lines.  Please do this only if you trust everybody on the network!
+#disable auth
+#broadcastclient
+
+#Changes recquired to use pps synchonisation as explained in documentation:
+#http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3918
+
+#server 127.127.8.1 mode 135 prefer    # Meinberg GPS167 with PPS
+#fudge 127.127.8.1 time1 0.0042        # relative to PPS for my hardware
+
+#server 127.127.22.1                   # ATOM(PPS)
+#fudge 127.127.22.1 flag3 1            # enable PPS API
+
diff --git a/etc/cloud/templates/resolv.conf.tmpl b/etc/cloud/templates/resolv.conf.tmpl
new file mode 100644 (file)
index 0000000..72a37bf
--- /dev/null
@@ -0,0 +1,38 @@
+## template:jinja
+# Your system has been configured with 'manage-resolv-conf' set to true.
+# As a result, cloud-init has written this file with configuration data
+# that it has been provided. Cloud-init, by default, will write this file
+# a single time (PER_ONCE).
+#
+{% if nameservers is defined %}
+{% for server in nameservers %}
+nameserver {{server}}
+{% endfor %}
+
+{% endif -%}
+{% if searchdomains is defined %}
+search {% for search in searchdomains %}{{search}} {% endfor %}
+
+{% endif %}
+{% if domain is defined %}
+domain {{domain}}
+{% endif %}
+{% if sortlist is defined %}
+
+sortlist {% for sort in sortlist %}{{sort}} {% endfor %}
+{% endif %}
+{#
+    Flags and options are required to be on the
+    same line preceded by "options" keyword
+#}
+{% if options or flags %}
+
+options
+{%- for flag in flags %}
+ {{flag-}}
+{% endfor %}
+
+{%- for key, value in options.items()|sort %}
+ {{key}}:{{value-}}
+{% endfor %}
+{% endif %}
diff --git a/etc/cloud/templates/sources.list.debian.tmpl b/etc/cloud/templates/sources.list.debian.tmpl
new file mode 100644 (file)
index 0000000..e8a7c01
--- /dev/null
@@ -0,0 +1,30 @@
+## template:jinja
+## Note, this file is written by cloud-init on first boot of an instance
+## modifications made here will not survive a re-bundle.
+## if you wish to make changes you can:
+## a.) add 'apt_preserve_sources_list: true' to /etc/cloud/cloud.cfg
+##     or do the same in user-data
+## b.) add sources in /etc/apt/sources.list.d
+## c.) make changes to template file /etc/cloud/templates/sources.list.debian.tmpl
+###
+
+# See http://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.html
+# for how to upgrade to newer versions of the distribution.
+deb {{mirror}} {{codename}} main
+deb-src {{mirror}} {{codename}} main
+
+## Major bug fix updates produced after the final release of the
+## distribution.
+deb {{security}} {{codename}}{% if codename in ('buster', 'stretch') %}/updates{% else %}-security{% endif %} main
+deb-src {{security}} {{codename}}{% if codename in ('buster', 'stretch') %}/updates{% else %}-security{% endif %} main
+deb {{mirror}} {{codename}}-updates main
+deb-src {{mirror}} {{codename}}-updates main
+
+## Uncomment the following two lines to add software from the 'backports'
+## repository.
+## 
+## N.B. software from this repository may not have been tested as
+## extensively as that contained in the main release, although it includes
+## newer versions of some applications which may provide useful features.
+deb {{mirror}} {{codename}}-backports main
+deb-src {{mirror}} {{codename}}-backports main
diff --git a/etc/cloud/templates/sources.list.ubuntu.tmpl b/etc/cloud/templates/sources.list.ubuntu.tmpl
new file mode 100644 (file)
index 0000000..edb92f1
--- /dev/null
@@ -0,0 +1,58 @@
+## template:jinja
+## Note, this file is written by cloud-init on first boot of an instance
+## modifications made here will not survive a re-bundle.
+## if you wish to make changes you can:
+## a.) add 'apt_preserve_sources_list: true' to /etc/cloud/cloud.cfg
+##     or do the same in user-data
+## b.) add sources in /etc/apt/sources.list.d
+## c.) make changes to template file /etc/cloud/templates/sources.list.tmpl
+
+# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
+# newer versions of the distribution.
+deb {{mirror}} {{codename}} main restricted
+# deb-src {{mirror}} {{codename}} main restricted
+
+## Major bug fix updates produced after the final release of the
+## distribution.
+deb {{mirror}} {{codename}}-updates main restricted
+# deb-src {{mirror}} {{codename}}-updates main restricted
+
+## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
+## team. Also, please note that software in universe WILL NOT receive any
+## review or updates from the Ubuntu security team.
+deb {{mirror}} {{codename}} universe
+# deb-src {{mirror}} {{codename}} universe
+deb {{mirror}} {{codename}}-updates universe
+# deb-src {{mirror}} {{codename}}-updates universe
+
+## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
+## team, and may not be under a free licence. Please satisfy yourself as to
+## your rights to use the software. Also, please note that software in
+## multiverse WILL NOT receive any review or updates from the Ubuntu
+## security team.
+deb {{mirror}} {{codename}} multiverse
+# deb-src {{mirror}} {{codename}} multiverse
+deb {{mirror}} {{codename}}-updates multiverse
+# deb-src {{mirror}} {{codename}}-updates multiverse
+
+## N.B. software from this repository may not have been tested as
+## extensively as that contained in the main release, although it includes
+## newer versions of some applications which may provide useful features.
+## Also, please note that software in backports WILL NOT receive any review
+## or updates from the Ubuntu security team.
+deb {{mirror}} {{codename}}-backports main restricted universe multiverse
+# deb-src {{mirror}} {{codename}}-backports main restricted universe multiverse
+
+## Uncomment the following two lines to add software from Canonical's
+## 'partner' repository.
+## This software is not part of Ubuntu, but is offered by Canonical and the
+## respective vendors as a service to Ubuntu users.
+# deb http://archive.canonical.com/ubuntu {{codename}} partner
+# deb-src http://archive.canonical.com/ubuntu {{codename}} partner
+
+deb {{security}} {{codename}}-security main restricted
+# deb-src {{security}} {{codename}}-security main restricted
+deb {{security}} {{codename}}-security universe
+# deb-src {{security}} {{codename}}-security universe
+deb {{security}} {{codename}}-security multiverse
+# deb-src {{security}} {{codename}}-security multiverse
diff --git a/etc/cloud/templates/systemd.resolved.conf.tmpl b/etc/cloud/templates/systemd.resolved.conf.tmpl
new file mode 100644 (file)
index 0000000..fca50d3
--- /dev/null
@@ -0,0 +1,15 @@
+## template:jinja
+# Your system has been configured with 'manage-resolv-conf' set to true.
+# As a result, cloud-init has written this file with configuration data
+# that it has been provided. Cloud-init, by default, will write this file
+# a single time (PER_ONCE).
+#
+[Resolve]
+LLMNR=false
+{% if nameservers is defined %}
+DNS={% for server in nameservers %}{{server}} {% endfor %}
+{% endif %}
+
+{% if searchdomains is defined %}
+Domains={% for search in searchdomains %}{{search}} {% endfor %}
+{% endif %}
diff --git a/etc/cloud/templates/timesyncd.conf.tmpl b/etc/cloud/templates/timesyncd.conf.tmpl
new file mode 100644 (file)
index 0000000..6b98301
--- /dev/null
@@ -0,0 +1,8 @@
+## template:jinja
+# cloud-init generated file
+# See timesyncd.conf(5) for details.
+
+[Time]
+{% if servers or pools -%}
+NTP={% for host in servers|list + pools|list %}{{ host }} {% endfor -%}
+{% endif -%}
diff --git a/etc/console-setup/ISO-8859-1.acm b/etc/console-setup/ISO-8859-1.acm
new file mode 100644 (file)
index 0000000..1393bc8
--- /dev/null
@@ -0,0 +1,135 @@
+# generated from UTF-tmpl.8bit.in by:
+# {
+#   while read a b; do 
+#     echo -e $a \'\\echo "8o16i${b#U+}pq" | dc\'; 
+#   done
+#  } <data/consoletrans/UTF-tmpl.8bit.in
+
+0x80 '\80'
+0x81 '\81'
+0x82 '\82'
+0x83 '\83'
+0x84 '\84'
+0x85 '\85'
+0x86 '\86'
+0x87 '\87'
+0x88 '\88'
+0x89 '\89'
+0x8A '\8a'
+0x8B '\8b'
+0x8C '\8c'
+0x8D '\8d'
+0x8E '\8e'
+0x8F '\8f'
+0x90 '\90'
+0x91 '\91'
+0x92 '\92'
+0x93 '\93'
+0x94 '\94'
+0x95 '\95'
+0x96 '\96'
+0x97 '\97'
+0x98 '\98'
+0x99 '\99'
+0x9A '\9a'
+0x9B '\9b'
+0x9C '\9c'
+0x9D '\9d'
+0x9E '\9e'
+0x9F '\9f'
+0xA0 ' '
+0xA1 '¡'
+0xA2 '¢'
+0xA3 '£'
+0xA4 '¤'
+0xA5 '¥'
+0xA6 '¦'
+0xA7 '§'
+0xA8 '¨'
+0xA9 '©'
+0xAA 'ª'
+0xAB '«'
+0xAC '¬'
+0xAD '­'
+0xAE '®'
+0xAF '¯'
+0xB0 '°'
+0xB1 '±'
+0xB2 '²'
+0xB3 '³'
+0xB4 '´'
+0xB5 'µ'
+0xB6 '¶'
+0xB7 '·'
+0xB8 '¸'
+0xB9 '¹'
+0xBA 'º'
+0xBB '»'
+0xBC '¼'
+0xBD '½'
+0xBE '¾'
+0xBF '¿'
+0xC0 'À'
+0xC1 'Á'
+0xC2 'Â'
+0xC3 'Ã'
+0xC4 'Ä'
+0xC5 'Å'
+0xC6 'Æ'
+0xC7 'Ç'
+0xC8 'È'
+0xC9 'É'
+0xCA 'Ê'
+0xCB 'Ë'
+0xCC 'Ì'
+0xCD 'Í'
+0xCE 'Î'
+0xCF 'Ï'
+0xD0 'Ð'
+0xD1 'Ñ'
+0xD2 'Ò'
+0xD3 'Ó'
+0xD4 'Ô'
+0xD5 'Õ'
+0xD6 'Ö'
+0xD7 '×'
+0xD8 'Ø'
+0xD9 'Ù'
+0xDA 'Ú'
+0xDB 'Û'
+0xDC 'Ü'
+0xDD 'Ý'
+0xDE 'Þ'
+0xDF 'ß'
+0xE0 'à'
+0xE1 'á'
+0xE2 'â'
+0xE3 'ã'
+0xE4 'ä'
+0xE5 'å'
+0xE6 'æ'
+0xE7 'ç'
+0xE8 'è'
+0xE9 'é'
+0xEA 'ê'
+0xEB 'ë'
+0xEC 'ì'
+0xED 'í'
+0xEE 'î'
+0xEF 'ï'
+0xF0 'ð'
+0xF1 'ñ'
+0xF2 'ò'
+0xF3 'ó'
+0xF4 'ô'
+0xF5 'õ'
+0xF6 'ö'
+0xF7 '÷'
+0xF8 'ø'
+0xF9 'ù'
+0xFA 'ú'
+0xFB 'û'
+0xFC 'ü'
+0xFD 'ý'
+0xFE 'þ'
+0xFF 'ÿ'
diff --git a/etc/console-setup/Uni2-Fixed16.psf.gz b/etc/console-setup/Uni2-Fixed16.psf.gz
new file mode 100644 (file)
index 0000000..37eb654
Binary files /dev/null and b/etc/console-setup/Uni2-Fixed16.psf.gz differ
diff --git a/etc/console-setup/cached_ISO-8859-1.acm.gz b/etc/console-setup/cached_ISO-8859-1.acm.gz
new file mode 100644 (file)
index 0000000..a0d3629
Binary files /dev/null and b/etc/console-setup/cached_ISO-8859-1.acm.gz differ
diff --git a/etc/console-setup/cached_ISO-8859-1_del.kmap.gz b/etc/console-setup/cached_ISO-8859-1_del.kmap.gz
new file mode 100644 (file)
index 0000000..d0d6341
Binary files /dev/null and b/etc/console-setup/cached_ISO-8859-1_del.kmap.gz differ
diff --git a/etc/console-setup/cached_UTF-8_del.kmap.gz b/etc/console-setup/cached_UTF-8_del.kmap.gz
new file mode 100644 (file)
index 0000000..2cee8e6
Binary files /dev/null and b/etc/console-setup/cached_UTF-8_del.kmap.gz differ
diff --git a/etc/console-setup/cached_Uni2-Fixed16.psf.gz b/etc/console-setup/cached_Uni2-Fixed16.psf.gz
new file mode 100644 (file)
index 0000000..37eb654
Binary files /dev/null and b/etc/console-setup/cached_Uni2-Fixed16.psf.gz differ
diff --git a/etc/console-setup/cached_setup_font.sh b/etc/console-setup/cached_setup_font.sh
new file mode 100755 (executable)
index 0000000..06f41b7
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+setfont '/usr/share/consolefonts/Uni2-Fixed16.psf.gz' 
+
+if ls /dev/fb* >/dev/null 2>/dev/null; then
+    for i in /dev/vcs[0-9]*; do
+        { :
+            setfont '/usr/share/consolefonts/Uni2-Fixed16.psf.gz' 
+        } < /dev/tty${i#/dev/vcs} > /dev/tty${i#/dev/vcs}
+    done
+fi
+
+mkdir -p /run/console-setup
+> /run/console-setup/font-loaded
+for i in /dev/vcs[0-9]*; do
+    { :
+printf '\033%%G' 
+    } < /dev/tty${i#/dev/vcs} > /dev/tty${i#/dev/vcs}
+done
diff --git a/etc/console-setup/cached_setup_keyboard.sh b/etc/console-setup/cached_setup_keyboard.sh
new file mode 100755 (executable)
index 0000000..30b46c1
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+if [ -f /run/console-setup/keymap_loaded ]; then
+    rm /run/console-setup/keymap_loaded
+    exit 0
+fi
+kbd_mode '-u' < '/dev/tty1' 
+kbd_mode '-u' < '/dev/tty2' 
+kbd_mode '-u' < '/dev/tty3' 
+kbd_mode '-u' < '/dev/tty4' 
+kbd_mode '-u' < '/dev/tty5' 
+kbd_mode '-u' < '/dev/tty6' 
+loadkeys '/etc/console-setup/cached_UTF-8_del.kmap.gz' > '/dev/null' 
diff --git a/etc/console-setup/cached_setup_terminal.sh b/etc/console-setup/cached_setup_terminal.sh
new file mode 100755 (executable)
index 0000000..494e363
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+{ :
+printf '\033%%G' 
+} < /dev/tty${1#vcs} > /dev/tty${1#vcs}
diff --git a/etc/console-setup/compose.ARMSCII-8.inc b/etc/console-setup/compose.ARMSCII-8.inc
new file mode 100644 (file)
index 0000000..ca8d3c9
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for ARMSCII-8
diff --git a/etc/console-setup/compose.CP1251.inc b/etc/console-setup/compose.CP1251.inc
new file mode 100644 (file)
index 0000000..4fb90da
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for CP1251
diff --git a/etc/console-setup/compose.CP1255.inc b/etc/console-setup/compose.CP1255.inc
new file mode 100644 (file)
index 0000000..93e6a7b
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for CP1255
diff --git a/etc/console-setup/compose.CP1256.inc b/etc/console-setup/compose.CP1256.inc
new file mode 100644 (file)
index 0000000..a792b8c
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for CP1256
diff --git a/etc/console-setup/compose.GEORGIAN-ACADEMY.inc b/etc/console-setup/compose.GEORGIAN-ACADEMY.inc
new file mode 100644 (file)
index 0000000..33869fd
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for GEORGIAN-ACADEMY
diff --git a/etc/console-setup/compose.GEORGIAN-PS.inc b/etc/console-setup/compose.GEORGIAN-PS.inc
new file mode 100644 (file)
index 0000000..a4d20c4
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for GEORGIAN-PS
diff --git a/etc/console-setup/compose.IBM1133.inc b/etc/console-setup/compose.IBM1133.inc
new file mode 100644 (file)
index 0000000..9369645
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for IBM1133
diff --git a/etc/console-setup/compose.ISIRI-3342.inc b/etc/console-setup/compose.ISIRI-3342.inc
new file mode 100644 (file)
index 0000000..242f739
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for ISIRI-3342
diff --git a/etc/console-setup/compose.ISO-8859-1.inc b/etc/console-setup/compose.ISO-8859-1.inc
new file mode 100644 (file)
index 0000000..a285ddf
--- /dev/null
@@ -0,0 +1,155 @@
+# Compose sequences for ISO-8859-1
+compose '!' '!' to '¡'
+compose '!' '^' to '¦'
+compose '!' 'p' to '¶'
+compose '!' 's' to '§'
+compose '"' '"' to '¨'
+compose '"' 'A' to 'Ä'
+compose '"' 'E' to 'Ë'
+compose '"' 'I' to 'Ï'
+compose '"' 'O' to 'Ö'
+compose '"' 'U' to 'Ü'
+compose '"' 'a' to 'ä'
+compose '"' 'e' to 'ë'
+compose '"' 'i' to 'ï'
+compose '"' 'o' to 'ö'
+compose '"' 'u' to 'ü'
+compose '"' 'y' to 'ÿ'
+compose '(' '(' to '['
+compose '(' '-' to '{'
+compose '(' 'c' to '©'
+compose '(' 'r' to '®'
+compose ')' ')' to ']'
+compose ')' '-' to '}'
+compose '*' '0' to '°'
+compose '*' 'A' to 'Å'
+compose '*' 'a' to 'å'
+compose '+' '+' to '#'
+compose '+' '-' to '±'
+compose ',' ',' to '¸'
+compose ',' '-' to '¬'
+compose ',' 'C' to 'Ç'
+compose ',' 'c' to 'ç'
+compose '-' '(' to '{'
+compose '-' ')' to '}'
+compose '-' '+' to '±'
+compose '-' ',' to '¬'
+compose '-' '-' to '­'
+compose '-' ':' to '÷'
+compose '-' 'A' to 'Ã'
+compose '-' 'D' to 'Ð'
+compose '-' 'N' to 'Ñ'
+compose '-' 'O' to 'Õ'
+compose '-' '^' to '¯'
+compose '-' 'a' to 'ã'
+compose '-' 'd' to 'ð'
+compose '-' 'l' to '£'
+compose '-' 'n' to 'ñ'
+compose '-' 'o' to 'õ'
+compose '-' 'y' to '¥'
+compose '.' '.' to '·'
+compose '.' '^' to '·'
+compose '/' '/' to '\\'
+compose '/' '<' to '\\'
+compose '/' 'O' to 'Ø'
+compose '/' '^' to '|'
+compose '/' 'c' to '¢'
+compose '/' 'o' to 'ø'
+compose '/' 'u' to 'µ'
+compose '1' '2' to '½'
+compose '1' '4' to '¼'
+compose '3' '4' to '¾'
+compose ':' '-' to '÷'
+compose '<' '/' to '\\'
+compose '<' '<' to '«'
+compose '=' 'l' to '£'
+compose '=' 'y' to '¥'
+compose '>' '>' to '»'
+compose '>' 'A' to 'Â'
+compose '>' 'E' to 'Ê'
+compose '>' 'I' to 'Î'
+compose '>' 'O' to 'Ô'
+compose '>' 'U' to 'Û'
+compose '>' 'a' to 'â'
+compose '>' 'e' to 'ê'
+compose '>' 'i' to 'î'
+compose '>' 'o' to 'ô'
+compose '>' 'u' to 'û'
+compose '?' '?' to '¿'
+compose 'A' 'E' to 'Æ'
+compose 'A' 'O' to 'Å'
+compose 'T' 'H' to 'Þ'
+compose '\'' 'A' to 'Á'
+compose '\'' 'C' to 'Ç'
+compose '\'' 'E' to 'É'
+compose '\'' 'I' to 'Í'
+compose '\'' 'O' to 'Ó'
+compose '\'' 'U' to 'Ú'
+compose '\'' 'Y' to 'Ý'
+compose '\'' '\'' to '´'
+compose '\'' 'a' to 'á'
+compose '\'' 'c' to 'ç'
+compose '\'' 'e' to 'é'
+compose '\'' 'i' to 'í'
+compose '\'' 'o' to 'ó'
+compose '\'' 'u' to 'ú'
+compose '\'' 'y' to 'ý'
+compose '^' '!' to '¦'
+compose '^' '-' to '¯'
+compose '^' '.' to '·'
+compose '^' '/' to '|'
+compose '^' '0' to '°'
+compose '^' '1' to '¹'
+compose '^' '2' to '²'
+compose '^' '3' to '³'
+compose '^' 'A' to 'Â'
+compose '^' 'E' to 'Ê'
+compose '^' 'I' to 'Î'
+compose '^' 'O' to 'Ô'
+compose '^' 'U' to 'Û'
+compose '^' '_' to '¯'
+compose '^' 'a' to 'â'
+compose '^' 'e' to 'ê'
+compose '^' 'i' to 'î'
+compose '^' 'o' to 'ô'
+compose '^' 'u' to 'û'
+compose '_' '^' to '¯'
+compose '_' '_' to '¯'
+compose '_' 'a' to 'ª'
+compose '_' 'o' to 'º'
+compose '`' 'A' to 'À'
+compose '`' 'E' to 'È'
+compose '`' 'I' to 'Ì'
+compose '`' 'O' to 'Ò'
+compose '`' 'U' to 'Ù'
+compose '`' 'a' to 'à'
+compose '`' 'e' to 'è'
+compose '`' 'i' to 'ì'
+compose '`' 'o' to 'ò'
+compose '`' 'u' to 'ù'
+compose 'a' 'e' to 'æ'
+compose 'a' 'o' to 'å'
+compose 'a' 't' to '@'
+compose 'c' '0' to '©'
+compose 'c' 'o' to '©'
+compose 'o' 'c' to '©'
+compose 'o' 'x' to '¤'
+compose 'r' 'o' to '®'
+compose 's' '0' to '§'
+compose 's' '1' to '¹'
+compose 's' '2' to '²'
+compose 's' '3' to '³'
+compose 's' 'o' to '§'
+compose 't' 'h' to 'þ'
+compose 'v' 'b' to '¦'
+compose 'v' 'l' to '|'
+compose 'x' '0' to '¤'
+compose 'x' 'o' to '¤'
+compose '|' 'c' to '¢'
+compose '|' '|' to '¦'
+compose '~' 'A' to 'Ã'
+compose '~' 'N' to 'Ñ'
+compose '~' 'O' to 'Õ'
+compose '~' 'a' to 'ã'
+compose '~' 'n' to 'ñ'
+compose '~' 'o' to 'õ'
diff --git a/etc/console-setup/compose.ISO-8859-10.inc b/etc/console-setup/compose.ISO-8859-10.inc
new file mode 100644 (file)
index 0000000..7ca7b10
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for ISO-8859-10
diff --git a/etc/console-setup/compose.ISO-8859-11.inc b/etc/console-setup/compose.ISO-8859-11.inc
new file mode 100644 (file)
index 0000000..add3f6a
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for ISO-8859-11
diff --git a/etc/console-setup/compose.ISO-8859-13.inc b/etc/console-setup/compose.ISO-8859-13.inc
new file mode 100644 (file)
index 0000000..5b45a26
--- /dev/null
@@ -0,0 +1,161 @@
+# Compose sequences for ISO-8859-13
+compose '!' '^' to '¦'
+compose '!' 'p' to '¶'
+compose '!' 's' to '§'
+compose '"' '<' to '´'
+compose '"' '>' to '¡'
+compose '"' 'A' to 'Ä'
+compose '"' 'O' to 'Ö'
+compose '"' 'U' to 'Ü'
+compose '"' 'a' to 'ä'
+compose '"' 'o' to 'ö'
+compose '"' 'u' to 'ü'
+compose '(' '(' to '['
+compose '(' '-' to '{'
+compose '(' 'c' to '©'
+compose '(' 'r' to '®'
+compose ')' ')' to ']'
+compose ')' '-' to '}'
+compose '*' '0' to '°'
+compose '*' 'A' to 'Å'
+compose '*' 'a' to 'å'
+compose '+' '+' to '#'
+compose '+' '-' to '±'
+compose ',' '-' to '¬'
+compose ',' '>' to '¥'
+compose ',' 'A' to 'À'
+compose ',' 'E' to 'Æ'
+compose ',' 'G' to 'Ì'
+compose ',' 'I' to 'Á'
+compose ',' 'K' to 'Í'
+compose ',' 'L' to 'Ï'
+compose ',' 'N' to 'Ò'
+compose ',' 'R' to 'ª'
+compose ',' 'U' to 'Ø'
+compose ',' 'a' to 'à'
+compose ',' 'e' to 'æ'
+compose ',' 'g' to 'ì'
+compose ',' 'i' to 'á'
+compose ',' 'k' to 'í'
+compose ',' 'l' to 'ï'
+compose ',' 'n' to 'ò'
+compose ',' 'r' to 'º'
+compose ',' 'u' to 'ø'
+compose '-' '(' to '{'
+compose '-' ')' to '}'
+compose '-' '+' to '±'
+compose '-' ',' to '¬'
+compose '-' '-' to '­'
+compose '-' ':' to '÷'
+compose '-' 'A' to 'Â'
+compose '-' 'E' to 'Ç'
+compose '-' 'I' to 'Î'
+compose '-' 'L' to 'Ù'
+compose '-' 'O' to 'Ô'
+compose '-' 'U' to 'Û'
+compose '-' 'a' to 'â'
+compose '-' 'e' to 'ç'
+compose '-' 'i' to 'î'
+compose '-' 'l' to 'ù'
+compose '-' 'o' to 'ô'
+compose '-' 'u' to 'û'
+compose '.' '.' to '·'
+compose '.' 'A' to 'Å'
+compose '.' 'E' to 'Ë'
+compose '.' 'Z' to 'Ý'
+compose '.' '^' to '·'
+compose '.' 'a' to 'å'
+compose '.' 'e' to 'ë'
+compose '.' 'z' to 'ý'
+compose '/' '/' to '\\'
+compose '/' '<' to '\\'
+compose '/' 'L' to 'Ù'
+compose '/' 'O' to '¨'
+compose '/' '^' to '|'
+compose '/' 'c' to '¢'
+compose '/' 'l' to 'ù'
+compose '/' 'o' to '¸'
+compose '/' 'u' to 'µ'
+compose '1' '2' to '½'
+compose '1' '4' to '¼'
+compose '3' '4' to '¾'
+compose ':' '-' to '÷'
+compose ';' 'A' to 'À'
+compose ';' 'E' to 'Æ'
+compose ';' 'I' to 'Á'
+compose ';' 'U' to 'Ø'
+compose ';' 'a' to 'à'
+compose ';' 'e' to 'æ'
+compose ';' 'i' to 'á'
+compose ';' 'u' to 'ø'
+compose '<' '"' to '´'
+compose '<' '/' to '\\'
+compose '<' '<' to '«'
+compose '<' 'C' to 'È'
+compose '<' 'S' to 'Ð'
+compose '<' 'Z' to 'Þ'
+compose '<' '\'' to '`'
+compose '<' 'c' to 'è'
+compose '<' 's' to 'ð'
+compose '<' 'z' to 'þ'
+compose '=' 'l' to '£'
+compose '>' '"' to '¡'
+compose '>' ',' to '¥'
+compose '>' '>' to '»'
+compose '>' '\'' to 'ÿ'
+compose '?' '?' to '¿'
+compose 'A' 'E' to '¯'
+compose 'A' 'O' to 'Å'
+compose '\'' '<' to '`'
+compose '\'' '>' to 'ÿ'
+compose '\'' 'C' to 'Ã'
+compose '\'' 'E' to 'É'
+compose '\'' 'N' to 'Ñ'
+compose '\'' 'O' to 'Ó'
+compose '\'' 'S' to 'Ú'
+compose '\'' 'Z' to 'Ê'
+compose '\'' '\'' to 'ÿ'
+compose '\'' 'c' to 'ã'
+compose '\'' 'e' to 'é'
+compose '\'' 'n' to 'ñ'
+compose '\'' 'o' to 'ó'
+compose '\'' 's' to 'ú'
+compose '\'' 'z' to 'ê'
+compose '^' '!' to '¦'
+compose '^' '.' to '·'
+compose '^' '/' to '|'
+compose '^' '0' to '°'
+compose '^' '1' to '¹'
+compose '^' '2' to '²'
+compose '^' '3' to '³'
+compose '_' 'A' to 'Â'
+compose '_' 'E' to 'Ç'
+compose '_' 'I' to 'Î'
+compose '_' 'O' to 'Ô'
+compose '_' 'U' to 'Û'
+compose '_' 'a' to 'â'
+compose '_' 'e' to 'ç'
+compose '_' 'i' to 'î'
+compose '_' 'o' to 'ô'
+compose '_' 'u' to 'û'
+compose 'a' 'e' to '¿'
+compose 'a' 'o' to 'å'
+compose 'a' 't' to '@'
+compose 'c' '0' to '©'
+compose 'c' 'o' to '©'
+compose 'm' 'u' to 'µ'
+compose 'o' 'c' to '©'
+compose 'o' 'x' to '¤'
+compose 'r' 'o' to '®'
+compose 's' '0' to '§'
+compose 's' '1' to '¹'
+compose 's' '2' to '²'
+compose 's' '3' to '³'
+compose 's' 'o' to '§'
+compose 'v' 'b' to '¦'
+compose 'x' '0' to '¤'
+compose 'x' 'o' to '¤'
+compose '|' 'c' to '¢'
+compose '|' '|' to '¦'
+compose '~' 'O' to 'Õ'
+compose '~' 'o' to 'õ'
diff --git a/etc/console-setup/compose.ISO-8859-14.inc b/etc/console-setup/compose.ISO-8859-14.inc
new file mode 100644 (file)
index 0000000..e2835df
--- /dev/null
@@ -0,0 +1,130 @@
+# Compose sequences for ISO-8859-14
+compose '!' 'p' to '¶'
+compose '!' 's' to '§'
+compose '"' 'A' to 'Ä'
+compose '"' 'E' to 'Ë'
+compose '"' 'I' to 'Ï'
+compose '"' 'O' to 'Ö'
+compose '"' 'U' to 'Ü'
+compose '"' 'W' to '½'
+compose '"' 'Y' to '¯'
+compose '"' 'a' to 'ä'
+compose '"' 'e' to 'ë'
+compose '"' 'i' to 'ï'
+compose '"' 'o' to 'ö'
+compose '"' 'u' to 'ü'
+compose '"' 'w' to '¾'
+compose '"' 'y' to 'ÿ'
+compose '(' '(' to '['
+compose '(' '-' to '{'
+compose ')' ')' to ']'
+compose ')' '-' to '}'
+compose '*' 'A' to 'Å'
+compose '*' 'a' to 'å'
+compose '+' '+' to '#'
+compose ',' 'C' to 'Ç'
+compose ',' 'c' to 'ç'
+compose '-' '(' to '{'
+compose '-' ')' to '}'
+compose '-' '-' to '­'
+compose '-' 'A' to 'Ã'
+compose '-' 'N' to 'Ñ'
+compose '-' 'O' to 'Õ'
+compose '-' 'a' to 'ã'
+compose '-' 'l' to '£'
+compose '-' 'n' to 'ñ'
+compose '-' 'o' to 'õ'
+compose '.' 'B' to '¡'
+compose '.' 'D' to '¦'
+compose '.' 'F' to '°'
+compose '.' 'G' to '²'
+compose '.' 'M' to '´'
+compose '.' 'P' to '·'
+compose '.' 'S' to '»'
+compose '.' 'T' to '×'
+compose '.' 'b' to '¢'
+compose '.' 'c' to '¥'
+compose '.' 'd' to '«'
+compose '.' 'f' to '±'
+compose '.' 'g' to '³'
+compose '.' 'm' to 'µ'
+compose '.' 'p' to '¹'
+compose '.' 's' to '¿'
+compose '.' 't' to '÷'
+compose '/' '/' to '\\'
+compose '/' '<' to '\\'
+compose '/' 'O' to 'Ø'
+compose '/' '^' to '|'
+compose '/' 'o' to 'ø'
+compose '<' '/' to '\\'
+compose '=' 'l' to '£'
+compose '>' 'A' to 'Â'
+compose '>' 'E' to 'Ê'
+compose '>' 'I' to 'Î'
+compose '>' 'O' to 'Ô'
+compose '>' 'U' to 'Û'
+compose '>' 'a' to 'â'
+compose '>' 'e' to 'ê'
+compose '>' 'i' to 'î'
+compose '>' 'o' to 'ô'
+compose '>' 'u' to 'û'
+compose 'A' 'E' to 'Æ'
+compose '\'' 'A' to 'Á'
+compose '\'' 'E' to 'É'
+compose '\'' 'I' to 'Í'
+compose '\'' 'O' to 'Ó'
+compose '\'' 'U' to 'Ú'
+compose '\'' 'W' to 'ª'
+compose '\'' 'Y' to 'Ý'
+compose '\'' 'a' to 'á'
+compose '\'' 'e' to 'é'
+compose '\'' 'i' to 'í'
+compose '\'' 'o' to 'ó'
+compose '\'' 'u' to 'ú'
+compose '\'' 'w' to 'º'
+compose '\'' 'y' to 'ý'
+compose '^' '/' to '|'
+compose '^' 'A' to 'Â'
+compose '^' 'E' to 'Ê'
+compose '^' 'I' to 'Î'
+compose '^' 'O' to 'Ô'
+compose '^' 'U' to 'Û'
+compose '^' 'W' to 'Ð'
+compose '^' 'Y' to 'Þ'
+compose '^' 'a' to 'â'
+compose '^' 'e' to 'ê'
+compose '^' 'i' to 'î'
+compose '^' 'o' to 'ô'
+compose '^' 'u' to 'û'
+compose '^' 'w' to 'ð'
+compose '^' 'y' to 'þ'
+compose '`' 'A' to 'À'
+compose '`' 'E' to 'È'
+compose '`' 'I' to 'Ì'
+compose '`' 'O' to 'Ò'
+compose '`' 'U' to 'Ù'
+compose '`' 'W' to '¨'
+compose '`' 'Y' to '¬'
+compose '`' 'a' to 'à'
+compose '`' 'e' to 'è'
+compose '`' 'i' to 'ì'
+compose '`' 'o' to 'ò'
+compose '`' 'u' to 'ù'
+compose '`' 'w' to '¸'
+compose '`' 'y' to '¼'
+compose 'a' 'e' to 'æ'
+compose 'a' 't' to '@'
+compose 'c' '0' to '©'
+compose 'c' 'o' to '©'
+compose 'o' 'c' to '©'
+compose 'r' '0' to '®'
+compose 'r' 'o' to '®'
+compose 's' '0' to '§'
+compose 's' 'o' to '§'
+compose 'v' 'l' to '|'
+compose '~' 'A' to 'Ã'
+compose '~' 'N' to 'Ñ'
+compose '~' 'O' to 'Õ'
+compose '~' 'a' to 'ã'
+compose '~' 'n' to 'ñ'
+compose '~' 'o' to 'õ'
diff --git a/etc/console-setup/compose.ISO-8859-15.inc b/etc/console-setup/compose.ISO-8859-15.inc
new file mode 100644 (file)
index 0000000..79c92ed
--- /dev/null
@@ -0,0 +1,153 @@
+# Compose sequences for ISO-8859-15
+compose '!' '!' to '¡'
+compose '!' 'p' to '¶'
+compose '!' 's' to '§'
+compose '"' '"' to '"'
+compose '"' 'A' to 'Ä'
+compose '"' 'E' to 'Ë'
+compose '"' 'I' to 'Ï'
+compose '"' 'O' to 'Ö'
+compose '"' 'U' to 'Ü'
+compose '"' 'Y' to '¾'
+compose '"' 'a' to 'ä'
+compose '"' 'e' to 'ë'
+compose '"' 'i' to 'ï'
+compose '"' 'o' to 'ö'
+compose '"' 'u' to 'ü'
+compose '"' 'y' to 'ÿ'
+compose '(' '(' to '['
+compose '(' '-' to '{'
+compose '(' 'c' to '©'
+compose '(' 'r' to '®'
+compose ')' ')' to ']'
+compose ')' '-' to '}'
+compose '*' '0' to '°'
+compose '*' 'A' to 'Å'
+compose '*' 'a' to 'å'
+compose '+' '+' to '#'
+compose '+' '-' to '±'
+compose ',' '-' to '¬'
+compose ',' 'C' to 'Ç'
+compose ',' 'c' to 'ç'
+compose '-' '(' to '{'
+compose '-' ')' to '}'
+compose '-' '+' to '±'
+compose '-' ',' to '¬'
+compose '-' '-' to '­'
+compose '-' ':' to '÷'
+compose '-' 'A' to 'Ã'
+compose '-' 'D' to 'Ð'
+compose '-' 'N' to 'Ñ'
+compose '-' 'O' to 'Õ'
+compose '-' '^' to '¯'
+compose '-' 'a' to 'ã'
+compose '-' 'd' to 'ð'
+compose '-' 'l' to '£'
+compose '-' 'n' to 'ñ'
+compose '-' 'o' to 'õ'
+compose '-' 'y' to '¥'
+compose '.' '.' to '·'
+compose '.' '^' to '·'
+compose '/' '/' to '\\'
+compose '/' '<' to '\\'
+compose '/' 'O' to 'Ø'
+compose '/' '^' to '|'
+compose '/' 'c' to '¢'
+compose '/' 'o' to 'ø'
+compose '/' 'u' to 'µ'
+compose ':' '-' to '÷'
+compose '<' '/' to '\\'
+compose '<' '<' to '«'
+compose '<' 'S' to '¦'
+compose '<' 'Z' to '´'
+compose '<' 's' to '¨'
+compose '<' 'z' to '¸'
+compose '=' 'c' to '¤'
+compose '=' 'l' to '£'
+compose '=' 'y' to '¥'
+compose '>' '>' to '»'
+compose '>' 'A' to 'Â'
+compose '>' 'E' to 'Ê'
+compose '>' 'I' to 'Î'
+compose '>' 'O' to 'Ô'
+compose '>' 'U' to 'Û'
+compose '>' 'a' to 'â'
+compose '>' 'e' to 'ê'
+compose '>' 'i' to 'î'
+compose '>' 'o' to 'ô'
+compose '>' 'u' to 'û'
+compose '?' '?' to '¿'
+compose 'A' 'E' to 'Æ'
+compose 'A' 'O' to 'Å'
+compose 'O' 'E' to '¼'
+compose 'T' 'H' to 'Þ'
+compose '\'' 'A' to 'Á'
+compose '\'' 'C' to 'Ç'
+compose '\'' 'E' to 'É'
+compose '\'' 'I' to 'Í'
+compose '\'' 'O' to 'Ó'
+compose '\'' 'U' to 'Ú'
+compose '\'' 'Y' to 'Ý'
+compose '\'' '\'' to '\''
+compose '\'' 'a' to 'á'
+compose '\'' 'c' to 'ç'
+compose '\'' 'e' to 'é'
+compose '\'' 'i' to 'í'
+compose '\'' 'o' to 'ó'
+compose '\'' 'u' to 'ú'
+compose '\'' 'y' to 'ý'
+compose '^' '-' to '¯'
+compose '^' '.' to '·'
+compose '^' '/' to '|'
+compose '^' '0' to '°'
+compose '^' '1' to '¹'
+compose '^' '2' to '²'
+compose '^' '3' to '³'
+compose '^' 'A' to 'Â'
+compose '^' 'E' to 'Ê'
+compose '^' 'I' to 'Î'
+compose '^' 'O' to 'Ô'
+compose '^' 'U' to 'Û'
+compose '^' '_' to '¯'
+compose '^' 'a' to 'â'
+compose '^' 'e' to 'ê'
+compose '^' 'i' to 'î'
+compose '^' 'o' to 'ô'
+compose '^' 'u' to 'û'
+compose '_' '^' to '¯'
+compose '_' '_' to '¯'
+compose '_' 'a' to 'ª'
+compose '_' 'o' to 'º'
+compose '`' 'A' to 'À'
+compose '`' 'E' to 'È'
+compose '`' 'I' to 'Ì'
+compose '`' 'O' to 'Ò'
+compose '`' 'U' to 'Ù'
+compose '`' 'a' to 'à'
+compose '`' 'e' to 'è'
+compose '`' 'i' to 'ì'
+compose '`' 'o' to 'ò'
+compose '`' 'u' to 'ù'
+compose 'a' 'e' to 'æ'
+compose 'a' 'o' to 'å'
+compose 'a' 't' to '@'
+compose 'c' '0' to '©'
+compose 'c' 'o' to '©'
+compose 'e' '=' to '¤'
+compose 'o' 'c' to '©'
+compose 'o' 'e' to '½'
+compose 'r' 'o' to '®'
+compose 's' '0' to '§'
+compose 's' '1' to '¹'
+compose 's' '2' to '²'
+compose 's' '3' to '³'
+compose 's' 'o' to '§'
+compose 't' 'h' to 'þ'
+compose 'v' 'l' to '|'
+compose '|' 'c' to '¢'
+compose '~' 'A' to 'Ã'
+compose '~' 'N' to 'Ñ'
+compose '~' 'O' to 'Õ'
+compose '~' 'a' to 'ã'
+compose '~' 'n' to 'ñ'
+compose '~' 'o' to 'õ'
diff --git a/etc/console-setup/compose.ISO-8859-16.inc b/etc/console-setup/compose.ISO-8859-16.inc
new file mode 100644 (file)
index 0000000..96c38ae
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for ISO-8859-16
diff --git a/etc/console-setup/compose.ISO-8859-2.inc b/etc/console-setup/compose.ISO-8859-2.inc
new file mode 100644 (file)
index 0000000..6692ee3
--- /dev/null
@@ -0,0 +1,124 @@
+# Compose sequences for ISO-8859-2
+compose '!' 'p' to '¶'
+compose '!' 's' to '§'
+compose '"' '"' to '¨'
+compose '"' 'A' to 'Ä'
+compose '"' 'E' to 'Ë'
+compose '"' 'O' to 'Ö'
+compose '"' 'U' to 'Ü'
+compose '"' 'a' to 'ä'
+compose '"' 'e' to 'ë'
+compose '"' 'o' to 'ö'
+compose '"' 'u' to 'ü'
+compose '(' '(' to '['
+compose '(' '-' to '{'
+compose ')' ')' to ']'
+compose ')' '-' to '}'
+compose '*' '0' to '°'
+compose '*' 'U' to 'Ù'
+compose '*' 'u' to 'ù'
+compose '+' '+' to '#'
+compose ',' ',' to '¸'
+compose ',' 'A' to '¡'
+compose ',' 'C' to 'Ç'
+compose ',' 'E' to 'Ê'
+compose ',' 'S' to 'ª'
+compose ',' 'T' to 'Þ'
+compose ',' 'a' to '±'
+compose ',' 'c' to 'ç'
+compose ',' 'e' to 'ê'
+compose ',' 's' to 'º'
+compose ',' 't' to 'þ'
+compose '-' '(' to '{'
+compose '-' ')' to '}'
+compose '-' '-' to '­'
+compose '-' ':' to '÷'
+compose '-' 'D' to 'Ð'
+compose '-' 'd' to 'ð'
+compose '.' '.' to 'ÿ'
+compose '.' 'C' to 'Å'
+compose '.' 'E' to 'Ì'
+compose '.' 'I' to '©'
+compose '.' 'U' to 'Ù'
+compose '.' 'Z' to '¯'
+compose '.' 'c' to 'å'
+compose '.' 'e' to 'ì'
+compose '.' 'i' to '¹'
+compose '.' 'u' to 'ù'
+compose '.' 'z' to '¿'
+compose '/' '/' to '\\'
+compose '/' '<' to '\\'
+compose '/' '^' to '|'
+compose ':' '-' to '÷'
+compose '<' '/' to '\\'
+compose '<' '<' to '·'
+compose '<' 'C' to 'È'
+compose '<' 'D' to 'Ï'
+compose '<' 'E' to 'Ì'
+compose '<' 'L' to '¥'
+compose '<' 'N' to 'Ò'
+compose '<' 'R' to 'Ø'
+compose '<' 'S' to '©'
+compose '<' 'T' to '«'
+compose '<' 'Z' to '®'
+compose '<' 'c' to 'è'
+compose '<' 'd' to 'ï'
+compose '<' 'e' to 'ì'
+compose '<' 'l' to 'µ'
+compose '<' 'n' to 'ò'
+compose '<' 'r' to 'ø'
+compose '<' 's' to '¹'
+compose '<' 't' to '»'
+compose '<' 'z' to '¾'
+compose '>' 'A' to 'Â'
+compose '>' 'I' to 'Î'
+compose '>' 'O' to 'Ô'
+compose '>' 'a' to 'â'
+compose '>' 'i' to 'î'
+compose '>' 'o' to 'ô'
+compose 'A' 'U' to 'Ã'
+compose 'L' '-' to '£'
+compose 'O' 'E' to '¼'
+compose 'Z' '.' to '¯'
+compose '\'' 'A' to 'Á'
+compose '\'' 'C' to 'Æ'
+compose '\'' 'E' to 'É'
+compose '\'' 'I' to 'Í'
+compose '\'' 'L' to 'Å'
+compose '\'' 'N' to 'Ñ'
+compose '\'' 'O' to 'Ó'
+compose '\'' 'R' to 'À'
+compose '\'' 'S' to '¦'
+compose '\'' 'U' to 'Ú'
+compose '\'' 'Y' to 'Ý'
+compose '\'' 'Z' to '¬'
+compose '\'' '\'' to '½'
+compose '\'' 'a' to 'á'
+compose '\'' 'c' to 'æ'
+compose '\'' 'e' to 'é'
+compose '\'' 'i' to 'í'
+compose '\'' 'l' to 'å'
+compose '\'' 'n' to 'ñ'
+compose '\'' 'o' to 'ó'
+compose '\'' 'r' to 'à'
+compose '\'' 's' to '¶'
+compose '\'' 'u' to 'ú'
+compose '\'' 'y' to 'ý'
+compose '\'' 'z' to '¼'
+compose '^' '/' to '|'
+compose '^' 'A' to 'Â'
+compose '^' 'I' to 'Î'
+compose '^' 'O' to 'Ô'
+compose '^' 'a' to 'â'
+compose '^' 'i' to 'î'
+compose '^' 'o' to 'ô'
+compose 'a' 'U' to 'ã'
+compose 'l' '-' to '³'
+compose 'o' 'e' to '½'
+compose 'o' 'x' to '¤'
+compose 's' '0' to '§'
+compose 's' 'o' to '§'
+compose 'v' 'l' to '|'
+compose 'x' '0' to '¤'
+compose 'x' 'o' to '¤'
+compose 'z' '.' to '¿'
diff --git a/etc/console-setup/compose.ISO-8859-3.inc b/etc/console-setup/compose.ISO-8859-3.inc
new file mode 100644 (file)
index 0000000..7e50b6c
--- /dev/null
@@ -0,0 +1,146 @@
+# Compose sequences for ISO-8859-3
+compose '!' 's' to '§'
+compose '"' '"' to '¨'
+compose '"' 'A' to 'Ä'
+compose '"' 'E' to 'Ë'
+compose '"' 'I' to 'Ï'
+compose '"' 'O' to 'Ö'
+compose '"' 'U' to 'Ü'
+compose '"' 'Y' to '¾'
+compose '"' 'a' to 'ä'
+compose '"' 'e' to 'ë'
+compose '"' 'i' to 'ï'
+compose '"' 'o' to 'ö'
+compose '"' 'u' to 'ü'
+compose '"' 'y' to 'ÿ'
+compose '(' '(' to '['
+compose '(' '-' to '{'
+compose '(' 'G' to '«'
+compose '(' 'U' to 'Ý'
+compose '(' 'g' to '»'
+compose '(' 'r' to '®'
+compose '(' 'u' to 'ý'
+compose ')' ')' to ']'
+compose ')' '-' to '}'
+compose '*' '0' to '°'
+compose '+' '+' to '#'
+compose ',' ',' to '¸'
+compose ',' 'C' to 'Ç'
+compose ',' 'S' to 'ª'
+compose ',' 'c' to 'ç'
+compose ',' 's' to 'º'
+compose '-' '(' to '{'
+compose '-' ')' to '}'
+compose '-' '-' to '­'
+compose '-' ':' to '÷'
+compose '-' 'A' to 'Ã'
+compose '-' 'D' to 'Ð'
+compose '-' 'H' to '¡'
+compose '-' 'O' to 'Õ'
+compose '-' 'a' to 'ã'
+compose '-' 'd' to 'ð'
+compose '-' 'h' to '±'
+compose '-' 'l' to '£'
+compose '-' 'o' to 'õ'
+compose '-' 'y' to '¥'
+compose '.' '.' to '·'
+compose '.' 'C' to 'Å'
+compose '.' 'G' to 'Õ'
+compose '.' 'I' to '©'
+compose '.' 'Z' to '¯'
+compose '.' '^' to '·'
+compose '.' 'c' to 'å'
+compose '.' 'g' to 'õ'
+compose '.' 'i' to '¹'
+compose '.' 'z' to '¿'
+compose '/' '/' to '\\'
+compose '/' '<' to '\\'
+compose '/' '^' to '|'
+compose '/' 'u' to 'µ'
+compose ':' '-' to '÷'
+compose '<' '/' to '\\'
+compose '=' 'c' to '¤'
+compose '=' 'e' to '¤'
+compose '=' 'l' to '£'
+compose '=' 'y' to '¥'
+compose '>' 'A' to 'Â'
+compose '>' 'C' to 'Æ'
+compose '>' 'E' to 'Ê'
+compose '>' 'G' to 'Ø'
+compose '>' 'H' to '¦'
+compose '>' 'I' to 'Î'
+compose '>' 'J' to '¬'
+compose '>' 'O' to 'Ô'
+compose '>' 'S' to 'Þ'
+compose '>' 'U' to 'Û'
+compose '>' 'a' to 'â'
+compose '>' 'c' to 'æ'
+compose '>' 'e' to 'ê'
+compose '>' 'g' to 'ø'
+compose '>' 'h' to '¶'
+compose '>' 'i' to 'î'
+compose '>' 'j' to '¼'
+compose '>' 'o' to 'ô'
+compose '>' 's' to 'þ'
+compose '>' 'u' to 'û'
+compose 'G' 'U' to '«'
+compose '\'' 'A' to 'Á'
+compose '\'' 'E' to 'É'
+compose '\'' 'I' to 'Í'
+compose '\'' 'O' to 'Ó'
+compose '\'' 'U' to 'Ú'
+compose '\'' 'Y' to 'Ý'
+compose '\'' '\'' to '´'
+compose '\'' 'a' to 'á'
+compose '\'' 'e' to 'é'
+compose '\'' 'i' to 'í'
+compose '\'' 'o' to 'ó'
+compose '\'' 'u' to 'ú'
+compose '\'' 'y' to 'ý'
+compose '^' '.' to '·'
+compose '^' '/' to '|'
+compose '^' '0' to '°'
+compose '^' '2' to '²'
+compose '^' '3' to '³'
+compose '^' 'A' to 'Â'
+compose '^' 'C' to 'Æ'
+compose '^' 'E' to 'Ê'
+compose '^' 'G' to 'Ø'
+compose '^' 'H' to '¦'
+compose '^' 'I' to 'Î'
+compose '^' 'J' to '¬'
+compose '^' 'O' to 'Ô'
+compose '^' 'S' to 'Þ'
+compose '^' 'U' to 'Û'
+compose '^' 'a' to 'â'
+compose '^' 'c' to 'æ'
+compose '^' 'e' to 'ê'
+compose '^' 'g' to 'ø'
+compose '^' 'h' to '¶'
+compose '^' 'i' to 'î'
+compose '^' 'j' to '¼'
+compose '^' 'o' to 'ô'
+compose '^' 's' to 'þ'
+compose '^' 'u' to 'û'
+compose '`' 'A' to 'À'
+compose '`' 'E' to 'È'
+compose '`' 'I' to 'Ì'
+compose '`' 'O' to 'Ò'
+compose '`' 'U' to 'Ù'
+compose '`' 'a' to 'à'
+compose '`' 'e' to 'è'
+compose '`' 'i' to 'ì'
+compose '`' 'o' to 'ò'
+compose '`' 'u' to 'ù'
+compose 'g' 'U' to '»'
+compose 'r' 'o' to '®'
+compose 's' '0' to '§'
+compose 's' '2' to '²'
+compose 's' '3' to '³'
+compose 's' 'o' to '§'
+compose 'u' 'u' to 'ý'
+compose 'v' 'l' to '|'
+compose '~' 'A' to 'Ã'
+compose '~' 'O' to 'Õ'
+compose '~' 'a' to 'ã'
+compose '~' 'o' to 'õ'
diff --git a/etc/console-setup/compose.ISO-8859-4.inc b/etc/console-setup/compose.ISO-8859-4.inc
new file mode 100644 (file)
index 0000000..4598a22
--- /dev/null
@@ -0,0 +1,121 @@
+# Compose sequences for ISO-8859-4
+compose '!' 's' to '§'
+compose '"' '"' to '¨'
+compose '"' 'A' to 'Ä'
+compose '"' 'E' to 'Ë'
+compose '"' 'O' to 'Ö'
+compose '"' 'U' to 'Ü'
+compose '"' 'a' to 'ä'
+compose '"' 'e' to 'ë'
+compose '"' 'o' to 'ö'
+compose '"' 'u' to 'ü'
+compose '*' '0' to '°'
+compose '*' 'A' to 'Å'
+compose '*' 'a' to 'å'
+compose ',' ',' to '¸'
+compose ',' 'A' to '¡'
+compose ',' 'E' to 'Ê'
+compose ',' 'G' to '«'
+compose ',' 'I' to 'Ç'
+compose ',' 'K' to 'Ó'
+compose ',' 'L' to '¦'
+compose ',' 'N' to 'Ñ'
+compose ',' 'R' to '£'
+compose ',' 'U' to 'Ù'
+compose ',' 'a' to '±'
+compose ',' 'e' to 'ê'
+compose ',' 'g' to '»'
+compose ',' 'i' to 'ç'
+compose ',' 'k' to 'ó'
+compose ',' 'l' to '¶'
+compose ',' 'n' to 'ñ'
+compose ',' 'r' to '³'
+compose ',' 'u' to 'ù'
+compose '-' '-' to '­'
+compose '-' ':' to '÷'
+compose '-' 'A' to 'À'
+compose '-' 'D' to 'Ð'
+compose '-' 'E' to 'ª'
+compose '-' 'I' to 'Ï'
+compose '-' 'O' to 'Ò'
+compose '-' 'U' to 'Þ'
+compose '-' '^' to '¯'
+compose '-' 'a' to 'à'
+compose '-' 'd' to 'ð'
+compose '-' 'e' to 'º'
+compose '-' 'i' to 'ï'
+compose '-' 'o' to 'ò'
+compose '-' 'u' to 'þ'
+compose '.' '.' to 'ÿ'
+compose '.' 'E' to 'Ì'
+compose '.' 'e' to 'ì'
+compose '/' 'O' to 'Ø'
+compose '/' 'T' to '¬'
+compose '/' 'o' to 'ø'
+compose '/' 't' to '¼'
+compose ':' '-' to '÷'
+compose '<' '<' to '·'
+compose '<' 'C' to 'È'
+compose '<' 'S' to '©'
+compose '<' 'Z' to '®'
+compose '<' 'c' to 'è'
+compose '<' 's' to '¹'
+compose '<' 'z' to '¾'
+compose '>' 'A' to 'Â'
+compose '>' 'I' to 'Î'
+compose '>' 'O' to 'Ô'
+compose '>' 'U' to 'Û'
+compose '>' 'a' to 'â'
+compose '>' 'i' to 'î'
+compose '>' 'o' to 'ô'
+compose '>' 'u' to 'û'
+compose 'A' 'E' to 'Æ'
+compose 'N' 'G' to '½'
+compose 'T' '-' to '¬'
+compose '\'' 'A' to 'Á'
+compose '\'' 'E' to 'É'
+compose '\'' 'I' to 'Í'
+compose '\'' 'U' to 'Ú'
+compose '\'' '\'' to '´'
+compose '\'' 'a' to 'á'
+compose '\'' 'e' to 'é'
+compose '\'' 'i' to 'í'
+compose '\'' 'u' to 'ú'
+compose '^' '-' to '¯'
+compose '^' 'A' to 'Â'
+compose '^' 'I' to 'Î'
+compose '^' 'O' to 'Ô'
+compose '^' 'U' to 'Û'
+compose '^' '_' to '¯'
+compose '^' 'a' to 'â'
+compose '^' 'i' to 'î'
+compose '^' 'o' to 'ô'
+compose '^' 'u' to 'û'
+compose '_' 'A' to 'À'
+compose '_' 'E' to 'ª'
+compose '_' 'I' to 'Ï'
+compose '_' 'O' to 'Ò'
+compose '_' 'U' to 'Þ'
+compose '_' '^' to '¯'
+compose '_' '_' to '¯'
+compose '_' 'a' to 'à'
+compose '_' 'e' to 'º'
+compose '_' 'i' to 'ï'
+compose '_' 'o' to 'ò'
+compose '_' 'u' to 'þ'
+compose 'a' 'e' to 'æ'
+compose 'n' 'g' to '¿'
+compose 'o' 'x' to '¤'
+compose 's' '0' to '§'
+compose 's' 'o' to '§'
+compose 't' '-' to '¼'
+compose 'x' '0' to '¤'
+compose 'x' 'o' to '¤'
+compose '~' 'A' to 'Ã'
+compose '~' 'I' to '¥'
+compose '~' 'O' to 'Õ'
+compose '~' 'U' to 'Ý'
+compose '~' 'a' to 'ã'
+compose '~' 'i' to 'µ'
+compose '~' 'o' to 'õ'
+compose '~' 'u' to 'ý'
diff --git a/etc/console-setup/compose.ISO-8859-5.inc b/etc/console-setup/compose.ISO-8859-5.inc
new file mode 100644 (file)
index 0000000..90c4f07
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for ISO-8859-5
diff --git a/etc/console-setup/compose.ISO-8859-6.inc b/etc/console-setup/compose.ISO-8859-6.inc
new file mode 100644 (file)
index 0000000..1a4f93f
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for ISO-8859-6
diff --git a/etc/console-setup/compose.ISO-8859-7.inc b/etc/console-setup/compose.ISO-8859-7.inc
new file mode 100644 (file)
index 0000000..1aa936a
--- /dev/null
@@ -0,0 +1,52 @@
+# Compose sequences for ISO-8859-7
+compose '!' '^' to '¦'
+compose '!' 's' to '§'
+compose '"' '"' to '¨'
+compose '(' '(' to '['
+compose '(' '-' to '{'
+compose '(' 'c' to '©'
+compose ')' ')' to ']'
+compose ')' '-' to '}'
+compose '*' '0' to '°'
+compose '+' '+' to '#'
+compose '+' '-' to '±'
+compose ',' '-' to '¬'
+compose '-' '(' to '{'
+compose '-' ')' to '}'
+compose '-' '+' to '±'
+compose '-' ',' to '¬'
+compose '-' '-' to '­'
+compose '-' 'l' to '£'
+compose '.' '.' to '·'
+compose '.' '^' to '·'
+compose '/' '/' to '\\'
+compose '/' '<' to '\\'
+compose '/' '^' to '|'
+compose '1' '2' to '½'
+compose '<' '/' to '\\'
+compose '<' '<' to '«'
+compose '<' '\'' to '¡'
+compose '=' 'l' to '£'
+compose '>' '>' to '»'
+compose '>' '\'' to '¢'
+compose '\'' '<' to '¡'
+compose '\'' '>' to '¢'
+compose '\'' '\'' to '´'
+compose '^' '!' to '¦'
+compose '^' '.' to '·'
+compose '^' '/' to '|'
+compose '^' '0' to '°'
+compose '^' '2' to '²'
+compose '^' '3' to '³'
+compose 'a' 't' to '@'
+compose 'c' '0' to '©'
+compose 'c' 'o' to '©'
+compose 'o' 'c' to '©'
+compose 's' '0' to '§'
+compose 's' '2' to '²'
+compose 's' '3' to '³'
+compose 's' 'o' to '§'
+compose 'v' 'b' to '¦'
+compose 'v' 'l' to '|'
+compose '|' '|' to '¦'
+compose '~' '~' to '¯'
diff --git a/etc/console-setup/compose.ISO-8859-8.inc b/etc/console-setup/compose.ISO-8859-8.inc
new file mode 100644 (file)
index 0000000..1fbb453
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for ISO-8859-8
diff --git a/etc/console-setup/compose.ISO-8859-9.inc b/etc/console-setup/compose.ISO-8859-9.inc
new file mode 100644 (file)
index 0000000..e642e1b
--- /dev/null
@@ -0,0 +1,156 @@
+# Compose sequences for ISO-8859-9
+compose '!' '!' to '¡'
+compose '!' 'p' to '¶'
+compose '!' 's' to '§'
+compose '"' '"' to '¨'
+compose '"' 'A' to 'Ä'
+compose '"' 'E' to 'Ë'
+compose '"' 'I' to 'Ï'
+compose '"' 'O' to 'Ö'
+compose '"' 'U' to 'Ü'
+compose '"' 'Y' to '¾'
+compose '"' 'a' to 'ä'
+compose '"' 'e' to 'ë'
+compose '"' 'i' to 'ï'
+compose '"' 'o' to 'ö'
+compose '"' 'u' to 'ü'
+compose '"' 'y' to 'ÿ'
+compose '(' '(' to '['
+compose '(' '-' to '{'
+compose '(' 'G' to 'Ð'
+compose '(' 'c' to '©'
+compose '(' 'g' to 'ð'
+compose '(' 'r' to '®'
+compose ')' ')' to ']'
+compose ')' '-' to '}'
+compose '*' '0' to '°'
+compose '*' 'A' to 'Å'
+compose '*' 'a' to 'å'
+compose '+' '+' to '#'
+compose '+' '-' to '±'
+compose ',' ',' to '¸'
+compose ',' '-' to '¬'
+compose ',' 'C' to 'Ç'
+compose ',' 'S' to 'Þ'
+compose ',' 'c' to 'ç'
+compose ',' 's' to 'þ'
+compose '-' '(' to '{'
+compose '-' ')' to '}'
+compose '-' '+' to '±'
+compose '-' ',' to '¬'
+compose '-' '-' to '­'
+compose '-' ':' to '÷'
+compose '-' 'A' to 'Ã'
+compose '-' 'D' to 'Ð'
+compose '-' 'N' to 'Ñ'
+compose '-' 'O' to 'Õ'
+compose '-' '^' to '¯'
+compose '-' 'a' to 'ã'
+compose '-' 'd' to 'ð'
+compose '-' 'l' to '£'
+compose '-' 'n' to 'ñ'
+compose '-' 'o' to 'õ'
+compose '-' 'y' to '¥'
+compose '.' '.' to '·'
+compose '.' 'I' to 'Ý'
+compose '.' '^' to '·'
+compose '.' 'i' to 'ý'
+compose '/' '/' to '\\'
+compose '/' '<' to '\\'
+compose '/' 'O' to 'Ø'
+compose '/' '^' to '|'
+compose '/' 'c' to '¢'
+compose '/' 'o' to 'ø'
+compose '/' 'u' to 'µ'
+compose ':' '-' to '÷'
+compose '<' '/' to '\\'
+compose '<' '<' to '«'
+compose '<' 'Z' to '´'
+compose '<' 'z' to '¸'
+compose '=' 'c' to '¤'
+compose '=' 'e' to '¤'
+compose '=' 'l' to '£'
+compose '=' 'y' to '¥'
+compose '>' '>' to '»'
+compose '>' 'A' to 'Â'
+compose '>' 'E' to 'Ê'
+compose '>' 'I' to 'Î'
+compose '>' 'O' to 'Ô'
+compose '>' 'U' to 'Û'
+compose '>' 'a' to 'â'
+compose '>' 'e' to 'ê'
+compose '>' 'i' to 'î'
+compose '>' 'o' to 'ô'
+compose '>' 'u' to 'û'
+compose '?' '?' to '¿'
+compose 'A' 'E' to 'Æ'
+compose 'G' 'U' to 'Ð'
+compose 'T' 'H' to 'Þ'
+compose '\'' 'A' to 'Á'
+compose '\'' 'E' to 'É'
+compose '\'' 'I' to 'Í'
+compose '\'' 'O' to 'Ó'
+compose '\'' 'U' to 'Ú'
+compose '\'' 'Y' to 'Ý'
+compose '\'' '\'' to '´'
+compose '\'' 'a' to 'á'
+compose '\'' 'e' to 'é'
+compose '\'' 'i' to 'í'
+compose '\'' 'o' to 'ó'
+compose '\'' 'u' to 'ú'
+compose '\'' 'y' to 'ý'
+compose '^' '-' to '¯'
+compose '^' '.' to '·'
+compose '^' '/' to '|'
+compose '^' '0' to '°'
+compose '^' '1' to '¹'
+compose '^' '2' to '²'
+compose '^' '3' to '³'
+compose '^' 'A' to 'Â'
+compose '^' 'E' to 'Ê'
+compose '^' 'I' to 'Î'
+compose '^' 'O' to 'Ô'
+compose '^' 'U' to 'Û'
+compose '^' '_' to '¯'
+compose '^' 'a' to 'â'
+compose '^' 'e' to 'ê'
+compose '^' 'i' to 'î'
+compose '^' 'o' to 'ô'
+compose '^' 'u' to 'û'
+compose '_' '^' to '¯'
+compose '_' '_' to '¯'
+compose '_' 'a' to 'ª'
+compose '_' 'o' to 'º'
+compose '`' 'A' to 'À'
+compose '`' 'E' to 'È'
+compose '`' 'I' to 'Ì'
+compose '`' 'O' to 'Ò'
+compose '`' 'U' to 'Ù'
+compose '`' 'a' to 'à'
+compose '`' 'e' to 'è'
+compose '`' 'i' to 'ì'
+compose '`' 'o' to 'ò'
+compose '`' 'u' to 'ù'
+compose 'a' 'e' to 'æ'
+compose 'c' '0' to '©'
+compose 'c' 'o' to '©'
+compose 'g' 'U' to 'ð'
+compose 'o' 'c' to '©'
+compose 'o' 'e' to '¼'
+compose 'r' 'o' to '®'
+compose 's' '0' to '§'
+compose 's' '1' to '¹'
+compose 's' '2' to '²'
+compose 's' '3' to '³'
+compose 's' 'o' to '§'
+compose 't' 'h' to 'þ'
+compose 'v' 'Z' to '´'
+compose 'v' 'l' to '|'
+compose 'v' 'z' to '¸'
+compose '|' 'c' to '¢'
+compose '~' 'A' to 'Ã'
+compose '~' 'N' to 'Ñ'
+compose '~' 'O' to 'Õ'
+compose '~' 'a' to 'ã'
+compose '~' 'n' to 'ñ'
+compose '~' 'o' to 'õ'
diff --git a/etc/console-setup/compose.KOI8-R.inc b/etc/console-setup/compose.KOI8-R.inc
new file mode 100644 (file)
index 0000000..da0c7ae
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for KOI8-R
diff --git a/etc/console-setup/compose.KOI8-U.inc b/etc/console-setup/compose.KOI8-U.inc
new file mode 100644 (file)
index 0000000..38e9127
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for KOI8-U
diff --git a/etc/console-setup/compose.TIS-620.inc b/etc/console-setup/compose.TIS-620.inc
new file mode 100644 (file)
index 0000000..4b229cc
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for TIS-620
diff --git a/etc/console-setup/compose.VISCII.inc b/etc/console-setup/compose.VISCII.inc
new file mode 100644 (file)
index 0000000..b9576ab
--- /dev/null
@@ -0,0 +1 @@
+# Compose sequences for VISCII
diff --git a/etc/console-setup/remap.inc b/etc/console-setup/remap.inc
new file mode 100644 (file)
index 0000000..a5475c6
--- /dev/null
@@ -0,0 +1,32 @@
+# The content of this file will be appended to the keyboard layout.
+# The following is an example how to make Alt+j switch to to the next
+# console and Alt+k switch to the previous console.
+
+# Uncomment the following lines for Linux.  Notice that everything is
+# replicated for all possible values of the modifiers shiftl, shiftr
+# and ctrll (shiftl and shiftr are used for groups 1..4 of XKB and
+# ctrll is used to fix the broken CapsLock when Linux console is in
+# Unicode mode).
+
+# alt keycode 36 = Incr_Console
+# shiftl alt keycode 36 = Incr_Console
+# shiftr alt keycode 36 = Incr_Console
+# shiftr shiftl alt keycode 36 = Incr_Console
+# ctrll alt keycode 36 = Incr_Console
+# ctrll shiftl alt keycode 36 = Incr_Console
+# ctrll shiftr alt keycode 36 = Incr_Console
+# ctrll shiftr shiftl alt keycode 36 = Incr_Console
+#
+# alt keycode 37 = Decr_Console
+# shiftl alt keycode 37 = Decr_Console
+# shiftr alt keycode 37 = Decr_Console
+# shiftr shiftl alt keycode 37 = Decr_Console
+# ctrll alt keycode 37 = Decr_Console
+# ctrll shiftl alt keycode 37 = Decr_Console
+# ctrll shiftr alt keycode 37 = Decr_Console
+# ctrll shiftr shiftl alt keycode 37 = Decr_Console
+
+# For the same result on FreeBSD uncomment the following lines:
+
+#  036   'j'    'J'    nl     nl     nscr   nscr   nl     nl      C
+#  037   'k'    'K'    vt     vt     pscr   pscr   nl     nl      C
diff --git a/etc/console-setup/vtrgb b/etc/console-setup/vtrgb
new file mode 100644 (file)
index 0000000..6771d00
--- /dev/null
@@ -0,0 +1,3 @@
+1,222,57,255,0,118,44,204,128,255,0,255,0,255,0,255
+1,56,181,199,111,38,181,204,128,0,255,255,0,0,255,255
+1,43,74,6,184,113,233,204,128,0,0,0,255,255,255,255
diff --git a/etc/console-setup/vtrgb.vga b/etc/console-setup/vtrgb.vga
new file mode 100644 (file)
index 0000000..5cbede2
--- /dev/null
@@ -0,0 +1,3 @@
+0,170,0,170,0,170,0,170,85,255,85,255,85,255,85,255
+0,0,170,85,0,0,170,170,85,85,255,255,85,85,255,255
+0,0,0,0,170,170,170,170,85,85,85,85,255,255,255,255
diff --git a/etc/cron.d/.placeholder b/etc/cron.d/.placeholder
new file mode 100644 (file)
index 0000000..76cb8d0
--- /dev/null
@@ -0,0 +1,2 @@
+# DO NOT EDIT OR REMOVE
+# This file is a simple placeholder to keep dpkg from removing this directory
diff --git a/etc/cron.d/certbot b/etc/cron.d/certbot
new file mode 100644 (file)
index 0000000..e38dbb9
--- /dev/null
@@ -0,0 +1,17 @@
+# /etc/cron.d/certbot: crontab entries for the certbot package
+#
+# Upstream recommends attempting renewal twice a day
+#
+# Eventually, this will be an opportunity to validate certificates
+# haven't been revoked, etc.  Renewal will only occur if expiration
+# is within 30 days.
+#
+# Important Note!  This cronjob will NOT be executed if you are
+# running systemd as your init system.  If you are running systemd,
+# the cronjob.timer function takes precedence over this cronjob.  For
+# more details, see the systemd.timer manpage, or use systemctl show
+# certbot.timer.
+SHELL=/bin/sh
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew
diff --git a/etc/cron.d/e2scrub_all b/etc/cron.d/e2scrub_all
new file mode 100644 (file)
index 0000000..711b0b2
--- /dev/null
@@ -0,0 +1,2 @@
+30 3 * * 0 root test -e /run/systemd/system || SERVICE_MODE=1 /usr/lib/x86_64-linux-gnu/e2fsprogs/e2scrub_all_cron
+10 3 * * * root test -e /run/systemd/system || SERVICE_MODE=1 /sbin/e2scrub_all -A -r
diff --git a/etc/cron.d/popularity-contest b/etc/cron.d/popularity-contest
new file mode 100644 (file)
index 0000000..8050b50
--- /dev/null
@@ -0,0 +1,3 @@
+SHELL=/bin/sh
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+47 3 * * *   root    test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond
diff --git a/etc/cron.d/sysstat b/etc/cron.d/sysstat
new file mode 100644 (file)
index 0000000..66325ce
--- /dev/null
@@ -0,0 +1,9 @@
+# The first element of the path is a directory where the debian-sa1
+# script is located
+PATH=/usr/lib/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin
+
+# Activity reports every 10 minutes everyday
+5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
+
+# Additional run at 23:59 to rotate the statistics file
+59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2
diff --git a/etc/cron.daily/.placeholder b/etc/cron.daily/.placeholder
new file mode 100644 (file)
index 0000000..76cb8d0
--- /dev/null
@@ -0,0 +1,2 @@
+# DO NOT EDIT OR REMOVE
+# This file is a simple placeholder to keep dpkg from removing this directory
diff --git a/etc/cron.daily/apport b/etc/cron.daily/apport
new file mode 100755 (executable)
index 0000000..7811ac0
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh -e
+# clean all crash reports which are older than a week.
+[ -d /var/crash ] || exit 0
+find /var/crash/. ! -name . -prune -type f \( \( -size 0 -a \! -name '*.upload*' -a \! -name '*.drkonqi*' \) -o -mtime +7 \) -exec rm -f -- '{}' \;
+find /var/crash/. ! -name . -prune -type d -regextype posix-extended -regex '.*/[0-9]{12}$' \( -mtime +7 \) -exec rm -Rf -- '{}' \;
diff --git a/etc/cron.daily/apt-compat b/etc/cron.daily/apt-compat
new file mode 100755 (executable)
index 0000000..b0b5537
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+set -e
+
+# Systemd systems use a systemd timer unit which is preferable to
+# run. We want to randomize the apt update and unattended-upgrade
+# runs as much as possible to avoid hitting the mirrors all at the
+# same time. The systemd time is better at this than the fixed
+# cron.daily time
+if [ -d /run/systemd/system ]; then
+    exit 0
+fi
+
+check_power()
+{
+    # laptop check, on_ac_power returns:
+    #       0 (true)    System is on main power
+    #       1 (false)   System is not on main power
+    #       255 (false) Power status could not be determined
+    # Desktop systems always return 255 it seems
+    if which on_ac_power >/dev/null 2>&1; then
+        if on_ac_power; then
+            :
+        elif [ $? -eq 1 ]; then
+            return 1
+        fi
+    fi
+    return 0
+}
+
+# sleep for a random interval of time (default 30min)
+# (some code taken from cron-apt, thanks)
+random_sleep()
+{
+    RandomSleep=1800
+    eval $(apt-config shell RandomSleep APT::Periodic::RandomSleep)
+    if [ $RandomSleep -eq 0 ]; then
+       return
+    fi
+    if [ -z "$RANDOM" ] ; then
+        # A fix for shells that do not have this bash feature.
+       RANDOM=$(( $(dd if=/dev/urandom bs=2 count=1 2> /dev/null | cksum | cut -d' ' -f1) % 32767 ))
+    fi
+    TIME=$(($RANDOM % $RandomSleep))
+    sleep $TIME
+}
+
+# delay the job execution by a random amount of time
+random_sleep
+
+# ensure we don't do this on battery
+check_power || exit 0
+
+# run daily job
+exec /usr/lib/apt/apt.systemd.daily
diff --git a/etc/cron.daily/bsdmainutils b/etc/cron.daily/bsdmainutils
new file mode 100755 (executable)
index 0000000..e65cbd3
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+# /etc/cron.daily/calendar: BSD mainutils calendar daily maintenance script
+# Written by Austin Donnelly <and1000@debian.org>
+
+. /etc/default/bsdmainutils
+
+[ x$RUN_DAILY = xtrue ] || exit 0
+
+[ -x /usr/sbin/sendmail ] || exit 0
+
+if [ ! -x /usr/bin/cpp ]; then
+  echo "The cpp package is needed to run calendar."
+  exit 1
+fi
+
+/usr/bin/calendar -a
diff --git a/etc/cron.daily/dpkg b/etc/cron.daily/dpkg
new file mode 100755 (executable)
index 0000000..62da817
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+dbdir=/var/lib/dpkg
+
+# Backup the 7 last versions of dpkg databases containing user data.
+if cd /var/backups ; then
+    # We backup all relevant database files if any has changed, so that
+    # the rotation number always contains an internally consistent set.
+    dbchanged=no
+    dbfiles="arch status diversions statoverride"
+    for db in $dbfiles ; do
+        if ! cmp -s "dpkg.${db}.0" "$dbdir/$db"; then
+            dbchanged=yes
+            break;
+        fi
+    done
+    if [ "$dbchanged" = "yes" ] ; then
+        for db in $dbfiles ; do
+            [ -e "$dbdir/$db" ] || continue
+            cp -p "$dbdir/$db" "dpkg.$db"
+            savelog -c 7 "dpkg.$db" >/dev/null
+        done
+    fi
+
+    # The alternatives database is independent from the dpkg database.
+    dbalt=alternatives
+
+    # XXX: Ideally we'd use --warning=none instead of discarding stderr, but
+    # as of GNU tar 1.27.1, it does not seem to work reliably (see #749307).
+    if ! test -e ${dbalt}.tar.0 ||
+       ! tar -df ${dbalt}.tar.0 -C $dbdir $dbalt >/dev/null 2>&1 ;
+    then
+        tar -cf ${dbalt}.tar -C $dbdir $dbalt >/dev/null 2>&1
+        savelog -c 7 ${dbalt}.tar >/dev/null
+    fi
+fi
diff --git a/etc/cron.daily/logrotate b/etc/cron.daily/logrotate
new file mode 100755 (executable)
index 0000000..1ac1570
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+# skip in favour of systemd timer
+if [ -d /run/systemd/system ]; then
+    exit 0
+fi
+
+# this cronjob persists removals (but not purges)
+if [ ! -x /usr/sbin/logrotate ]; then
+    exit 0
+fi
+
+/usr/sbin/logrotate /etc/logrotate.conf
+EXITVALUE=$?
+if [ $EXITVALUE != 0 ]; then
+    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
+fi
+exit $EXITVALUE
diff --git a/etc/cron.daily/man-db b/etc/cron.daily/man-db
new file mode 100755 (executable)
index 0000000..1342bc6
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# man-db cron daily
+
+set -e
+
+if [ -d /run/systemd/system ]; then
+    # Skip in favour of systemd timer.
+    exit 0
+fi
+
+iosched_idle=
+# Don't try to change I/O priority in a vserver or OpenVZ.
+if ! egrep -q '(envID|VxID):.*[1-9]' /proc/self/status && \
+   ([ ! -d /proc/vz ] || [ -d /proc/bc ]); then
+    iosched_idle='--iosched idle'
+fi
+
+if ! [ -d /var/cache/man ]; then
+    # Recover from deletion, per FHS.
+    install -d -o man -g man -m 0755 /var/cache/man
+fi
+
+# expunge old catman pages which have not been read in a week
+if [ -d /var/cache/man ]; then
+  cd /
+  start-stop-daemon --start --pidfile /dev/null --startas /bin/sh \
+       --oknodo --chuid man $iosched_idle -- -c \
+       "find /var/cache/man -type f -name '*.gz' -atime +6 -print0 | \
+        xargs -r0 rm -f"
+fi
+
+# regenerate man database
+if [ -x /usr/bin/mandb ]; then
+    # --pidfile /dev/null so it always starts; mandb isn't really a daemon,
+    # but we want to start it like one.
+    start-stop-daemon --start --pidfile /dev/null \
+                     --startas /usr/bin/mandb --oknodo --chuid man \
+                     $iosched_idle \
+                     -- --no-purge --quiet
+fi
+
+exit 0
diff --git a/etc/cron.daily/popularity-contest b/etc/cron.daily/popularity-contest
new file mode 100755 (executable)
index 0000000..7078dde
--- /dev/null
@@ -0,0 +1,185 @@
+#!/bin/sh
+set -e
+
+# don't run if this package is removed but not purged
+if [ ! -f /usr/sbin/popularity-contest ]; then
+       exit 0
+fi
+
+MODE="$1"
+
+unset MAILFROM
+unset MAILTO
+unset MY_HOSTID
+unset PARTICIPATE
+unset SUBMITURLS
+unset USEHTTP
+unset USETOR
+unset MTAOPS
+
+TORIFY_PATH=/usr/bin/torify
+
+torify_enabled() {
+    # Return 1 to enable torify for HTTP submission, otherwise 0; exit on error
+    TORSOCKS_PATH=/usr/bin/torsocks
+    [ -f "$TORIFY_PATH" ] && [ -f "$TORSOCKS_PATH" ] && TOR_AVAILABLE=1
+
+    case "$USETOR" in
+        "yes")
+            if [ -z $TOR_AVAILABLE ]; then
+                echo "popularity-contest: USETOR is set but torify is not available." 2>&1
+                echo "popularity-contest: Please install the tor and torsocks packages." 2>&1
+                exit 1
+            fi
+            if [ "yes" != "$USEHTTP" ]; then
+                echo "popularity-contest: when USETOR is set USEHTTP must be set as well" 2>&1
+                exit 1
+            fi
+            return 0
+        ;;
+        "maybe")
+            [ "yes" = "$USEHTTP" ] && [ ! -z $TOR_AVAILABLE ] && return 0
+            return 1
+        ;;
+        "no")
+            return 1
+        ;;
+    esac
+}
+
+# get configuration information
+. /usr/share/popularity-contest/default.conf
+. /etc/popularity-contest.conf
+
+if test -d /etc/popularity-contest.d/; then
+  for file in `run-parts --list --regex '\.conf$' /etc/popularity-contest.d/`;
+  do
+   . $file
+  done
+fi
+
+# don't run if MAILTO address is blank, and not configured to use HTTP POST!
+if [ -z "$MAILTO" ] && [ "yes" != "$USEHTTP" ]; then exit 0; fi
+
+# don't run if PARTICIPATE is "no" or unset!
+if [ "$PARTICIPATE" = "no" ] || [ -z "$PARTICIPATE" ]; then exit 0; fi
+
+# enable torify
+if torify_enabled; then
+    TORIFY=$TORIFY_PATH
+else
+    TORIFY=''
+fi
+
+
+if [ -n "$HTTP_PROXY" ]; then
+  export http_proxy="$HTTP_PROXY";
+fi
+
+POPCONOLD=/var/log/popularity-contest
+POPCONNEW=/var/log/popularity-contest.new
+POPCON="$POPCONNEW"
+
+# Only run on the given day, to spread the load on the server a bit
+if [ "$DAY" ] && [ "$DAY" != "$(date +%w)" ] ; then
+       # Ensure that popcon runs at least once in the last week
+       if [ -f "$POPCONOLD" ] ; then
+               now=$(date +%s)
+               lastrun=$(date -r $POPCONOLD +%s)
+                if [ "$MODE" = "--crond" ]; then
+                       # 6.5 days, in seconds
+                       week=561600
+               else
+                       # 7.5 days, in seconds
+                       week=648000
+                fi
+               if [ "$(( $now - $lastrun ))" -le "$week" ]; then
+                       exit 0
+               fi
+       fi
+fi
+
+# keep old logs
+cd /var/log
+umask 022
+savelog -c 7 popularity-contest >/dev/null
+
+run_popcon()
+{
+       runuser -s /bin/sh -c "/usr/sbin/popularity-contest" nobody
+}
+
+do_sendmail()
+{
+       if [ -n "$MAILFROM" ]; then
+               sendmail -oi $MTAOPS -f "$MAILFROM" $MAILTO
+       else
+               sendmail -oi $MTAOPS $MAILTO
+       fi
+}
+
+# generate the popularity contest data
+
+run_popcon > $POPCON
+
+GPG=/usr/bin/gpg
+
+if [ "$ENCRYPT" = "yes" ] && ! [ -x "$GPG" ]; then
+  logger -t popularity-contest "encryption required but gpg is not available."
+  echo "popularity-contest: encryption required but gpg is not available." 2>&1
+  exit 1
+fi
+
+if [ -x "$GPG" ] && [ "$ENCRYPT" = "maybe" ] || [ "$ENCRYPT" = "yes" ]; then
+  POPCONGPG="$POPCON.gpg"
+  rm -f "$POPCONGPG"
+  GPGHOME=`mktemp -d`
+  $GPG --batch --no-options --no-default-keyring --trust-model=always \
+       --homedir "$GPGHOME" --keyring $KEYRING --quiet \
+       --armor -o "$POPCONGPG" -r $POPCONKEY --encrypt "$POPCON"
+  rm -rf "$GPGHOME"
+  POPCON="$POPCONGPG"
+fi
+
+SUBMITTED=no
+
+# try to post the report through http POST
+if [ "$SUBMITURLS" ] && [ "yes" = "$USEHTTP" ]; then
+    for URL in $SUBMITURLS ; do
+       if setsid $TORIFY /usr/share/popularity-contest/popcon-upload \
+           -u $URL -f $POPCON -C 2>/dev/null ; then
+               SUBMITTED=yes
+       else
+               logger -t popularity-contest "unable to submit report to $URL."
+       fi
+    done
+fi
+
+# try to email the popularity contest data
+# skip emailing if USETOR is set
+
+if [ "$MODE" = "--crond" ] && [ yes != "$SUBMITTED" ] && [ yes != "$USETOR" ] && [ "$MAILTO" ]; then
+    if [ -x "`which sendmail 2>/dev/null`" ]; then
+       (
+           if [ -n "$MAILFROM" ]; then
+               echo "From: <$MAILFROM>"
+               echo "Sender: <$MAILFROM>"
+           fi
+           echo "To: $MAILTO"
+           echo "Subject: popularity-contest submission"
+           echo "MIME-Version: 1.0"
+           echo "Content-Type: text/plain"
+           echo
+           cat $POPCON
+       ) | do_sendmail
+       SUBMITTED=yes
+    else
+       logger -t popularity-contest "unable to submit report using sendmail."
+    fi
+fi
+
+if [ "yes" != "$SUBMITTED" ] ; then
+       logger -t popularity-contest "unable to submit report."
+else
+       mv $POPCONNEW $POPCONOLD
+fi
diff --git a/etc/cron.daily/sysstat b/etc/cron.daily/sysstat
new file mode 100755 (executable)
index 0000000..7c7a5df
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+# Generate a daily summary of process accounting.  Since this will probably
+# get kicked off in the morning, it is run against the previous day data.
+
+#  our configuration file
+DEFAULT=/etc/default/sysstat
+#  default settings, overriden in the above file
+ENABLED=false
+
+[ ! -x /usr/lib/sysstat/sa2 ] && exit 0
+
+# read our config
+[ -r "$DEFAULT" ] && . "$DEFAULT" 
+
+[ "$ENABLED" = "true" ]  || exit 0
+
+exec /usr/lib/sysstat/sa2 -A
+
diff --git a/etc/cron.daily/update-notifier-common b/etc/cron.daily/update-notifier-common
new file mode 100755 (executable)
index 0000000..e90d153
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+set -e
+
+[ -x /usr/lib/update-notifier/package-data-downloader ] || exit 0
+
+# Try to rerun any package data downloads that failed at package install time.
+/usr/lib/update-notifier/package-data-downloader
diff --git a/etc/cron.hourly/.placeholder b/etc/cron.hourly/.placeholder
new file mode 100644 (file)
index 0000000..76cb8d0
--- /dev/null
@@ -0,0 +1,2 @@
+# DO NOT EDIT OR REMOVE
+# This file is a simple placeholder to keep dpkg from removing this directory
diff --git a/etc/cron.monthly/.placeholder b/etc/cron.monthly/.placeholder
new file mode 100644 (file)
index 0000000..76cb8d0
--- /dev/null
@@ -0,0 +1,2 @@
+# DO NOT EDIT OR REMOVE
+# This file is a simple placeholder to keep dpkg from removing this directory
diff --git a/etc/cron.weekly/.placeholder b/etc/cron.weekly/.placeholder
new file mode 100644 (file)
index 0000000..76cb8d0
--- /dev/null
@@ -0,0 +1,2 @@
+# DO NOT EDIT OR REMOVE
+# This file is a simple placeholder to keep dpkg from removing this directory
diff --git a/etc/cron.weekly/man-db b/etc/cron.weekly/man-db
new file mode 100755 (executable)
index 0000000..6e3ad83
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# man-db cron weekly
+
+set -e
+
+if [ -d /run/systemd/system ]; then
+    # Skip in favour of systemd timer.
+    exit 0
+fi
+
+iosched_idle=
+# Don't try to change I/O priority in a vserver or OpenVZ.
+if ! egrep -q '(envID|VxID):.*[1-9]' /proc/self/status && \
+   ([ ! -d /proc/vz ] || [ -d /proc/bc ]); then
+    iosched_idle='--iosched idle'
+fi
+
+if ! [ -d /var/cache/man ]; then
+    # Recover from deletion, per FHS.
+    install -d -o man -g man -m 0755 /var/cache/man
+fi
+
+# regenerate man database
+if [ -x /usr/bin/mandb ]; then
+    # --pidfile /dev/null so it always starts; mandb isn't really a daemon,
+    # but we want to start it like one.
+    start-stop-daemon --start --pidfile /dev/null \
+                     --startas /usr/bin/mandb --oknodo --chuid man \
+                     $iosched_idle \
+                     -- --quiet
+fi
+
+exit 0
diff --git a/etc/cron.weekly/update-notifier-common b/etc/cron.weekly/update-notifier-common
new file mode 100755 (executable)
index 0000000..0e87107
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+
+[ -x /usr/lib/ubuntu-release-upgrader/release-upgrade-motd ] || exit 0
+
+sleep_then_check() {
+    # Sleep for up to an hour to spread the load of checking for updates on
+    # the Ubuntu infrastructure
+    sleep $(shuf -i 1-3600 -n 1)
+    # Check to see whether there is a new version of Ubuntu available
+    /usr/lib/ubuntu-release-upgrader/release-upgrade-motd
+}
+
+sleep_then_check &
diff --git a/etc/crontab b/etc/crontab
new file mode 100644 (file)
index 0000000..c89cc0b
--- /dev/null
@@ -0,0 +1,22 @@
+# /etc/crontab: system-wide crontab
+# Unlike any other crontab you don't have to run the `crontab'
+# command to install the new version when you edit this file
+# and files in /etc/cron.d. These files also have username fields,
+# that none of the other crontabs do.
+
+SHELL=/bin/sh
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+# Example of job definition:
+# .---------------- minute (0 - 59)
+# |  .------------- hour (0 - 23)
+# |  |  .---------- day of month (1 - 31)
+# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
+# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
+# |  |  |  |  |
+# *  *  *  *  * user-name command to be executed
+17 *   * * *   root    cd / && run-parts --report /etc/cron.hourly
+25 6   * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
+47 6   * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
+52 6   1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
+#
diff --git a/etc/cryptsetup-initramfs/conf-hook b/etc/cryptsetup-initramfs/conf-hook
new file mode 100644 (file)
index 0000000..81de87e
--- /dev/null
@@ -0,0 +1,28 @@
+#
+# Configuration file for the cryptroot initramfs hook.
+#
+
+#
+# KEYFILE_PATTERN: ...
+#
+# The value of this variable is interpreted as a shell pattern.
+# Matching key files from the crypttab(5) are included in the initramfs
+# image.  The associated devices can then be unlocked without manual
+# intervention.  (For instance if /etc/crypttab lists two key files
+# /etc/keys/{root,swap}.key, you can set KEYFILE_PATTERN="/etc/keys/*.key"
+# to add them to the initrd.)
+#
+# If KEYFILE_PATTERN if null or unset (default) then no key file is
+# copied to the initramfs image.
+#
+# Note that the glob(7) is not expanded for crypttab(5) entries with a
+# 'keyscript=' option.  In that case, the field is not treated as a file
+# name but given as argument to the keyscript.
+#
+# WARNING: If the initramfs image is to include private key material,
+# you'll want to create it with a restrictive umask in order to keep
+# non-privileged users at bay.  For instance, set UMASK=0077 in
+# /etc/initramfs-tools/initramfs.conf
+#
+
+#KEYFILE_PATTERN=
diff --git a/etc/crypttab b/etc/crypttab
new file mode 100644 (file)
index 0000000..8320514
--- /dev/null
@@ -0,0 +1 @@
+# <target name>        <source device>         <key file>      <options>
diff --git a/etc/dbus-1/system.d/com.ubuntu.LanguageSelector.conf b/etc/dbus-1/system.d/com.ubuntu.LanguageSelector.conf
new file mode 100644 (file)
index 0000000..891d825
--- /dev/null
@@ -0,0 +1,22 @@
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+        <policy user="root">
+                <allow own="com.ubuntu.LanguageSelector"/>
+        </policy>
+
+       <policy context="default">
+               <allow send_interface="com.ubuntu.LanguageSelector"/>
+               <allow receive_interface="com.ubuntu.LanguageSelector"
+                      receive_sender="com.ubuntu.LanguageSelector"/>
+
+               <allow send_destination="com.ubuntu.LanguageSelector"
+                      send_interface="org.freedesktop.DBus.Introspectable"/>
+               <allow send_destination="com.ubuntu.LanguageSelector"
+                      send_interface="org.freedesktop.DBus.Properties"/>
+
+       </policy>
+
+</busconfig>
+
diff --git a/etc/dbus-1/system.d/com.ubuntu.SoftwareProperties.conf b/etc/dbus-1/system.d/com.ubuntu.SoftwareProperties.conf
new file mode 100644 (file)
index 0000000..a96664f
--- /dev/null
@@ -0,0 +1,20 @@
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+  <policy user="root">
+    <allow own="com.ubuntu.SoftwareProperties"/>
+  </policy>
+
+  <policy context="default">
+    <allow send_destination="com.ubuntu.SoftwareProperties"
+           send_interface="com.ubuntu.SoftwareProperties"/>
+    <allow send_destination="com.ubuntu.SoftwareProperties"
+           send_interface="org.freedesktop.DBus.Introspectable"/>
+    <allow send_destination="com.ubuntu.DeviceDriver"
+           send_interface="org.freedesktop.DBus.Properties"/>
+  </policy>
+
+</busconfig>
+
diff --git a/etc/dbus-1/system.d/org.freedesktop.Accounts.conf b/etc/dbus-1/system.d/org.freedesktop.Accounts.conf
new file mode 100644 (file)
index 0000000..95fc616
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+  <!-- Only root can own the service -->
+  <policy user="root">
+    <allow own="org.freedesktop.Accounts"/>
+  </policy>
+
+  <policy context="default">
+    <allow send_destination="org.freedesktop.Accounts"/>
+    <allow send_destination="org.freedesktop.Accounts"
+           send_interface="org.freedesktop.DBus.Properties"/>
+    <allow send_destination="org.freedesktop.Accounts"
+           send_interface="org.freedesktop.DBus.Introspectable"/>
+    <allow send_destination="org.freedesktop.Accounts.User"
+           send_interface="org.freedesktop.DBus.Properties"/>
+    <allow send_destination="org.freedesktop.Accounts.User"
+           send_interface="org.freedesktop.DBus.Introspectable"/>
+  </policy>
+
+</busconfig>
diff --git a/etc/dbus-1/system.d/org.freedesktop.ModemManager1.conf b/etc/dbus-1/system.d/org.freedesktop.ModemManager1.conf
new file mode 100644 (file)
index 0000000..ab0e9e5
--- /dev/null
@@ -0,0 +1,363 @@
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+  <policy context="default">
+    <deny send_destination="org.freedesktop.ModemManager1"
+          send_type="method_call"/>
+
+    <!-- Methods listed here are explicitly allowed or PolicyKit protected.
+         The rest are restricted to root for security.
+      -->
+
+    <!-- org.freedesktop.ModemManager1.xml -->
+
+    <!-- Allowed for everyone -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.DBus.Introspectable"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.DBus.Properties"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.DBus.ObjectManager"/>
+
+    <!-- Protected by the Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1"
+           send_member="ScanDevices"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1"
+           send_member="SetLogging"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.xml -->
+
+    <!-- Allowed for everyone -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem"
+           send_member="ListBearers"/>
+
+    <!-- Protected by the Device.Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem"
+           send_member="Enable"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem"
+           send_member="CreateBearer"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem"
+           send_member="DeleteBearer"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem"
+           send_member="SetPowerState"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem"
+           send_member="Reset"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem"
+           send_member="FactoryReset"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem"
+           send_member="SetCurrentCapabilities"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem"
+           send_member="SetCurrentModes"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem"
+           send_member="SetCurrentBands"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem"
+           send_member="Command"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.Firmware.xml -->
+
+    <!-- Protected by the Device.Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Firmware"
+           send_member="List"/>
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Firmware"
+           send_member="Select"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.Simple.xml -->
+
+    <!-- Allowed for everyone -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Simple"
+           send_member="GetStatus"/>
+
+    <!-- Protected by the Device.Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Simple"
+           send_member="Connect"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Simple"
+           send_member="Disconnect"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.Modem3gpp.xml -->
+
+    <!-- Protected by the Device.Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Modem3gpp"
+           send_member="Register"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Modem3gpp"
+           send_member="Scan"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Modem3gpp"
+           send_member="SetEpsUeModeOperation"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Modem3gpp"
+           send_member="SetInitialEpsBearerSettings"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Modem3gpp"
+           send_member="DisableFacilityLock"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.ModemCdma.xml -->
+
+    <!-- Protected by the Device.Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.ModemCdma"
+           send_member="Activate"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.ModemCdma"
+           send_member="ActivateManual"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.Oma.xml -->
+
+    <!-- Protected by the Device.Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Oma"
+           send_member="Setup"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Oma"
+           send_member="StartClientInitiatedSession"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Oma"
+           send_member="AcceptNetworkInitiatedSession"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Oma"
+           send_member="CancelSession"/>
+
+    <!-- org.freedesktop.ModemManager1.Sim.xml -->
+
+    <!-- Protected by the Device.Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Sim"
+           send_member="SendPin"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Sim"
+           send_member="SendPuk"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Sim"
+           send_member="EnablePin"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Sim"
+           send_member="ChangePin"/>
+
+    <!-- org.freedesktop.ModemManager1.Bearer.xml -->
+
+    <!-- Protected by the Device.Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Bearer"
+           send_member="Connect"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Bearer"
+           send_member="Disconnect"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.Modem3gpp.ProfileManager.xml -->
+
+    <!-- Protected by the Device.Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Modem3gpp.ProfileManager"
+           send_member="List"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Modem3gpp.ProfileManager"
+           send_member="Set"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Modem3gpp.ProfileManager"
+           send_member="Delete"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd.xml -->
+
+    <!-- Protected by the USSD policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd"
+           send_member="Initiate"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd"
+           send_member="Respond"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd"
+           send_member="Cancel"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.Location.xml -->
+
+    <!-- Protected by the Device.Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Location"
+           send_member="Setup"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Location"
+           send_member="SetSuplServer"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Location"
+           send_member="InjectAssistanceData"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Location"
+           send_member="SetGpsRefreshRate"/>
+
+    <!-- Protected by the Location policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Location"
+           send_member="GetLocation"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.Messaging.xml -->
+
+    <!-- Allowed for everyone -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Messaging"
+           send_member="List"/>
+
+    <!-- Protected by the Messaging policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Messaging"
+           send_member="Create"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Messaging"
+           send_member="Delete"/>
+
+    <!-- org.freedesktop.ModemManager1.Sms.xml -->
+
+    <!-- Protected by the Messaging policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Sms"
+           send_member="Store"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Sms"
+           send_member="Send"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.Voice.xml -->
+
+    <!-- Allowed for everyone -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Voice"
+           send_member="ListCalls"/>
+
+    <!-- Protected by the Voice policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Voice"
+           send_member="CreateCall"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Voice"
+           send_member="DeleteCall"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Voice"
+           send_member="HoldAndAccept"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Voice"
+           send_member="HangupAndAccept"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Voice"
+           send_member="HangupAll"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Voice"
+           send_member="Transfer"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Voice"
+           send_member="CallWaitingSetup"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Voice"
+           send_member="CallWaitingQuery"/>
+
+    <!-- org.freedesktop.ModemManager1.Call.xml -->
+
+    <!-- Protected by the Voice policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Call"
+           send_member="Start"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Call"
+           send_member="Accept"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Call"
+           send_member="Deflect"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Call"
+           send_member="JoinMultiparty"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Call"
+           send_member="LeaveMultiparty"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Call"
+           send_member="Hangup"/>
+
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Call"
+           send_member="SendDtmf"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.Signal.xml -->
+
+    <!-- Protected by the Device.Control policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Signal"
+           send_member="Setup"/>
+
+    <!-- org.freedesktop.ModemManager1.Modem.Time.xml -->
+
+    <!-- Protected by the Time policy rule -->
+    <allow send_destination="org.freedesktop.ModemManager1"
+           send_interface="org.freedesktop.ModemManager1.Modem.Time"
+           send_member="GetNetworkTime"/>
+
+  </policy>
+
+  <policy user="root">
+    <allow own="org.freedesktop.ModemManager1"/>
+    <allow send_destination="org.freedesktop.ModemManager1"/>
+  </policy>
+</busconfig>
diff --git a/etc/dbus-1/system.d/org.freedesktop.PackageKit.conf b/etc/dbus-1/system.d/org.freedesktop.PackageKit.conf
new file mode 100644 (file)
index 0000000..110df89
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?> <!-- -*- XML -*- -->
+
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+  <!-- This configuration file specifies the required security policies
+       for the PackageKit to work. -->
+
+  <!-- Only user root can own the PackageKit service -->
+  <policy user="root">
+    <allow own="org.freedesktop.PackageKit"/>
+  </policy>
+
+ <!-- Allow anyone to call into the service - we'll reject callers using PolicyKit -->
+  <policy context="default">
+    <allow send_destination="org.freedesktop.PackageKit"
+           send_interface="org.freedesktop.PackageKit"/>
+    <allow send_destination="org.freedesktop.PackageKit"
+           send_interface="org.freedesktop.PackageKit.Transaction"/>
+    <allow send_destination="org.freedesktop.PackageKit"
+           send_interface="org.freedesktop.PackageKit.Offline"/>
+    <allow send_destination="org.freedesktop.PackageKit"
+           send_interface="org.freedesktop.DBus.Properties"/>
+    <allow send_destination="org.freedesktop.PackageKit"
+           send_interface="org.freedesktop.DBus.Introspectable"/>
+    <allow send_destination="org.freedesktop.PackageKit"
+           send_interface="org.freedesktop.DBus.Peer"/>
+  </policy>
+
+</busconfig>
+
diff --git a/etc/dbus-1/system.d/org.freedesktop.thermald.conf b/etc/dbus-1/system.d/org.freedesktop.thermald.conf
new file mode 100644 (file)
index 0000000..ea20f1f
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?> <!--*-nxml-*-->
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+        "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+
+<!--
+  This file is part of systemd.
+
+  systemd 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.
+-->
+
+<busconfig>
+
+        <policy user="root">
+                <allow own="org.freedesktop.thermald"/>
+                <allow send_destination="org.freedesktop.thermald"/>
+                <allow receive_sender="org.freedesktop.thermald"/>
+        </policy>
+
+        <policy context="default">
+                <deny send_destination="org.freedesktop.thermald"/>
+                <allow receive_sender="org.freedesktop.thermald"/>
+        </policy>
+
+        <policy group="power">
+                <allow send_destination="org.freedesktop.thermald"/>
+                <allow receive_sender="org.freedesktop.thermald"/>
+        </policy>
+
+</busconfig>
diff --git a/etc/debconf.conf b/etc/debconf.conf
new file mode 100644 (file)
index 0000000..549c1d5
--- /dev/null
@@ -0,0 +1,83 @@
+# This is the main config file for debconf. It tells debconf where to
+# store data. The format of this file is a set of stanzas. Each stanza
+# except the first sets up a database for debconf to use. For details, see
+# debconf.conf(5) (in the debconf-doc package).
+#
+# So first things first. This first stanza gives the names of two databases.
+
+# Debconf will use this database to store the data you enter into it,
+# and some other dynamic data.
+Config: configdb
+# Debconf will use this database to store static template data.
+Templates: templatedb
+
+# World-readable, and accepts everything but passwords.
+Name: config
+Driver: File
+Mode: 644
+Reject-Type: password
+Filename: /var/cache/debconf/config.dat
+
+# Not world readable (the default), and accepts only passwords.
+Name: passwords
+Driver: File
+Mode: 600
+Backup: false
+Required: false
+Accept-Type: password
+Filename: /var/cache/debconf/passwords.dat
+
+# Set up the configdb database. By default, it consists of a stack of two
+# databases, one to hold passwords and one for everything else.
+Name: configdb
+Driver: Stack
+Stack: config, passwords
+
+# Set up the templatedb database, which is a single flat text file
+# by default.
+Name: templatedb
+Driver: File
+Mode: 644
+Filename: /var/cache/debconf/templates.dat
+
+# Well that was pretty straightforward, and it will be enough for most
+# people's needs, but debconf's database drivers can be used to do much
+# more interesting things. For example, suppose you want to use config 
+# data from another host, which is mounted over nfs or perhaps the database
+# is accessed via LDAP. You don't want to write to the remote debconf database,
+# just read from it, so you still need a local database for local changes.
+#
+# A remote NFS mounted database, read-only. It is optional; if debconf
+# fails to use it it will not abort.
+#Name: remotedb
+#Driver: DirTree
+#Directory: /mnt/otherhost/var/cache/debconf/config
+#Readonly: true
+#Required: false
+#
+# A remote LDAP database. It is also read-only. The password is really
+# only necessary if the database is not accessible anonymously.
+# Option KeyByKey instructs the backend to retrieve keys from the LDAP
+# server individually (when they are requested), instead of loading all
+# keys at startup. The default is 0, and should only be enabled if you
+# want to track accesses to individual keys on the LDAP server side.
+#Name: remotedb
+#Driver: LDAP
+#Server: remotehost
+#BaseDN: cn=debconf,dc=domain,dc=com
+#BindDN: uid=admin,dc=domain,dc=com
+#BindPasswd: secret
+#KeyByKey: 0
+#
+# A stack consisting of two databases. Values will be read from
+# the first database in the stack to contain a value. In this example,
+# writes always go to the first database.
+#Name: fulldb
+#Driver: Stack
+#Stack: configdb, remotedb
+#
+# In this example, we'd use Config: fulldb at the top of the file
+# to make it use the combination of the databases.
+#
+# Even more complex and interesting setups are possible, see the 
+# debconf.conf(5) page for details.
diff --git a/etc/debian_version b/etc/debian_version
new file mode 100644 (file)
index 0000000..37ad99e
--- /dev/null
@@ -0,0 +1 @@
+bullseye/sid
diff --git a/etc/default/amd64-microcode b/etc/default/amd64-microcode
new file mode 100644 (file)
index 0000000..7254c01
--- /dev/null
@@ -0,0 +1,13 @@
+# Configuration script for amd64-microcode version 3
+
+#
+# initramfs helper
+#
+
+#
+# Set this to "no" to disable automatic microcode updates on boot;
+# Set this to "early" to always install microcode updates to the early initramfs
+# Set this to "auto" to autodetect mode for current system (default);
+#
+#AMD64UCODE_INITRAMFS=auto
+
diff --git a/etc/default/apport b/etc/default/apport
new file mode 100644 (file)
index 0000000..f0c630d
--- /dev/null
@@ -0,0 +1,4 @@
+# set this to 0 to disable apport, or to 1 to enable it
+# you can temporarily override this with
+# sudo service apport start force_start=1
+enabled=1
diff --git a/etc/default/bsdmainutils b/etc/default/bsdmainutils
new file mode 100644 (file)
index 0000000..e4ac054
--- /dev/null
@@ -0,0 +1,4 @@
+# Uncomment the following line if you'd like all of your users'
+# ~/calendar files to be checked daily.  Calendar will send them mail
+# to remind them of upcoming events.  See calendar(1) for more details.
+#RUN_DAILY=true
diff --git a/etc/default/console-setup b/etc/default/console-setup
new file mode 100644 (file)
index 0000000..418f135
--- /dev/null
@@ -0,0 +1,16 @@
+# CONFIGURATION FILE FOR SETUPCON
+
+# Consult the console-setup(5) manual page.
+
+ACTIVE_CONSOLES="/dev/tty[1-6]"
+
+CHARMAP="UTF-8"
+
+CODESET="guess"
+FONTFACE="Fixed"
+FONTSIZE="8x16"
+
+VIDEOMODE=
+
+# The following is an example how to use a braille font
+# FONT='lat9w-08.psf.gz brl-8x8.psf'
diff --git a/etc/default/crda b/etc/default/crda
new file mode 100644 (file)
index 0000000..36b62bd
--- /dev/null
@@ -0,0 +1,11 @@
+# Set REGDOMAIN to a ISO/IEC 3166-1 alpha2 country code so that iw(8) may set
+# the initial regulatory domain setting for IEEE 802.11 devices which operate
+# on this system.
+#
+# Governments assert the right to regulate usage of radio spectrum within
+# their respective territories so make sure you select a ISO/IEC 3166-1 alpha2
+# country code suitable for your location or you may infringe on local
+# legislature. See `/usr/share/zoneinfo/zone.tab' for a table of timezone
+# descriptions containing ISO/IEC 3166-1 alpha2 country codes.
+
+REGDOMAIN=
diff --git a/etc/default/cron b/etc/default/cron
new file mode 100644 (file)
index 0000000..bba2e52
--- /dev/null
@@ -0,0 +1,4 @@
+# This file has been deprecated. Please add custom options for cron using
+# $ systemctl edit cron.service
+# or
+# $ systemctl edit --full cron.service
diff --git a/etc/default/cryptdisks b/etc/default/cryptdisks
new file mode 100644 (file)
index 0000000..c1f837c
--- /dev/null
@@ -0,0 +1,12 @@
+# Run cryptdisks initscripts at startup? Default is Yes.
+CRYPTDISKS_ENABLE=Yes
+
+# Mountpoints to mount, before cryptsetup is invoked at initscripts. Takes
+# mountpoins which are configured in /etc/fstab as arguments. Separate
+# mountpoints by space.
+# This is useful for keyfiles on removable media. Default is unset.
+CRYPTDISKS_MOUNT=""
+
+# Default check script. Takes effect, if the 'check' option is set in crypttab
+# without a value.
+CRYPTDISKS_CHECK=blkid
diff --git a/etc/default/dbus b/etc/default/dbus
new file mode 100644 (file)
index 0000000..4bc8e1b
--- /dev/null
@@ -0,0 +1,7 @@
+# This is a configuration file for /etc/init.d/dbus; it allows you to
+# perform common modifications to the behavior of the dbus daemon
+# startup without editing the init script (and thus getting prompted
+# by dpkg on upgrades).  We all love dpkg prompts.
+
+# Parameters to pass to dbus.
+PARAMS=""
diff --git a/etc/default/grub b/etc/default/grub
new file mode 100644 (file)
index 0000000..583a341
--- /dev/null
@@ -0,0 +1,33 @@
+# If you change this file, run 'update-grub' afterwards to update
+# /boot/grub/grub.cfg.
+# For full documentation of the options in this file, see:
+#   info -f grub -n 'Simple configuration'
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT_STYLE=hidden
+GRUB_TIMEOUT=0
+GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
+GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity"
+GRUB_CMDLINE_LINUX=""
+
+# Uncomment to enable BadRAM filtering, modify to suit your needs
+# This works with Linux (no patch required) and with any kernel that obtains
+# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
+#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
+
+# Uncomment to disable graphical terminal (grub-pc only)
+#GRUB_TERMINAL=console
+
+# The resolution used on graphical terminal
+# note that you can use only modes which your graphic card supports via VBE
+# you can see them in real GRUB with the command `vbeinfo'
+#GRUB_GFXMODE=640x480
+
+# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+#GRUB_DISABLE_RECOVERY="true"
+
+# Uncomment to get a beep at grub start
+#GRUB_INIT_TUNE="480 440 1"
diff --git a/etc/default/grub.d/init-select.cfg b/etc/default/grub.d/init-select.cfg
new file mode 100644 (file)
index 0000000..7fbfff8
--- /dev/null
@@ -0,0 +1,7 @@
+# Work around a bug in the obsolete init-select package which broke
+# grub-mkconfig when init-select was removed but not purged.  This file does
+# nothing and will be removed in a later release.
+#
+# See:
+#   https://bugs.debian.org/858528
+#   https://bugs.debian.org/863801
diff --git a/etc/default/grub.ucf-dist b/etc/default/grub.ucf-dist
new file mode 100644 (file)
index 0000000..583a341
--- /dev/null
@@ -0,0 +1,33 @@
+# If you change this file, run 'update-grub' afterwards to update
+# /boot/grub/grub.cfg.
+# For full documentation of the options in this file, see:
+#   info -f grub -n 'Simple configuration'
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT_STYLE=hidden
+GRUB_TIMEOUT=0
+GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
+GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity"
+GRUB_CMDLINE_LINUX=""
+
+# Uncomment to enable BadRAM filtering, modify to suit your needs
+# This works with Linux (no patch required) and with any kernel that obtains
+# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
+#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
+
+# Uncomment to disable graphical terminal (grub-pc only)
+#GRUB_TERMINAL=console
+
+# The resolution used on graphical terminal
+# note that you can use only modes which your graphic card supports via VBE
+# you can see them in real GRUB with the command `vbeinfo'
+#GRUB_GFXMODE=640x480
+
+# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+#GRUB_DISABLE_RECOVERY="true"
+
+# Uncomment to get a beep at grub start
+#GRUB_INIT_TUNE="480 440 1"
diff --git a/etc/default/intel-microcode b/etc/default/intel-microcode
new file mode 100644 (file)
index 0000000..b958464
--- /dev/null
@@ -0,0 +1,26 @@
+# Configuration script for intel-microcode version 3
+
+#
+# initramfs helper
+#
+
+# Set this to "no" to disable automatic microcode updates on boot;
+# Set this to "auto" to use early initramfs mode automatically (default);
+# Set this to "early" to always attempt to create an early initramfs;
+#IUCODE_TOOL_INITRAMFS=auto
+
+# Set this to "yes" (default) to use "iucode_tool --scan-system" to reduce
+# the initramfs size bloat, by detecting which Intel processors are active
+# in this system, and installing only their microcodes.
+#
+# Set this to "no" to either include all microcodes, or only the microcodes
+# selected through the use of IUCODE_TOOL_EXTRA_OPTIONS below.
+#
+# WARNING: including all microcodes will increase initramfs size greatly.
+# This can cause boot issues if the initramfs is already large.
+#IUCODE_TOOL_SCANCPUS=yes
+
+# Extra options to pass to iucode_tool, useful to forbid or to
+# force the inclusion of microcode for specific processor signatures.
+# See iucode_tool(8) for details.
+#IUCODE_TOOL_EXTRA_OPTIONS=""
diff --git a/etc/default/irqbalance b/etc/default/irqbalance
new file mode 100644 (file)
index 0000000..bd87e3d
--- /dev/null
@@ -0,0 +1,26 @@
+# irqbalance is a daemon process that distributes interrupts across
+# CPUS on SMP systems.  The default is to rebalance once every 10
+# seconds.  This is the environment file that is specified to systemd via the 
+# EnvironmentFile key in the service unit file (or via whatever method the init
+# system you're using has. 
+#
+# ONESHOT=yes
+#    after starting, wait for a minute, then look at the interrupt
+#    load and balance it once; after balancing exit and do not change
+#    it again.
+#IRQBALANCE_ONESHOT=
+
+#
+# IRQBALANCE_BANNED_CPUS
+#    64 bit bitmask which allows you to indicate which cpu's should
+#    be skipped when reblancing irqs.  Cpu numbers which have their 
+#    corresponding bits set to one in this mask will not have any
+#    irq's assigned to them on rebalance
+#
+#IRQBALANCE_BANNED_CPUS=
+
+#
+# IRQBALANCE_ARGS
+#    append any args here to the irqbalance daemon as documented in the man page
+#
+#IRQBALANCE_ARGS=
diff --git a/etc/default/keyboard b/etc/default/keyboard
new file mode 100644 (file)
index 0000000..3fecbcc
--- /dev/null
@@ -0,0 +1,10 @@
+# KEYBOARD CONFIGURATION FILE
+
+# Consult the keyboard(5) manual page.
+
+XKBMODEL="pc105"
+XKBLAYOUT="us"
+XKBVARIANT=""
+XKBOPTIONS=""
+
+BACKSPACE="guess"
diff --git a/etc/default/locale b/etc/default/locale
new file mode 100644 (file)
index 0000000..01ec548
--- /dev/null
@@ -0,0 +1 @@
+LANG=en_US.UTF-8
diff --git a/etc/default/mdadm b/etc/default/mdadm
new file mode 100644 (file)
index 0000000..7bec463
--- /dev/null
@@ -0,0 +1,30 @@
+# mdadm Debian configuration
+#
+# You can run 'dpkg-reconfigure mdadm' to modify the values in this file, if
+# you want. You can also change the values here and changes will be preserved.
+# Do note that only the values are preserved; the rest of the file is
+# rewritten.
+#
+
+# AUTOCHECK:
+#   should mdadm run periodic redundancy checks over your arrays? See
+#   /etc/cron.d/mdadm.
+AUTOCHECK=true
+
+# AUTOSCAN:
+#   should mdadm check once a day for degraded arrays? See
+#   /etc/cron.daily/mdadm.
+AUTOSCAN=true
+
+# START_DAEMON:
+#   should mdadm start the MD monitoring daemon during boot?
+START_DAEMON=true
+
+# DAEMON_OPTIONS:
+#   additional options to pass to the daemon.
+DAEMON_OPTIONS="--syslog"
+
+# VERBOSE:
+#   if this variable is set to true, mdadm will be a little more verbose e.g.
+#   when creating the initramfs.
+VERBOSE=false
diff --git a/etc/default/motd-news b/etc/default/motd-news
new file mode 100644 (file)
index 0000000..eefe29c
--- /dev/null
@@ -0,0 +1,19 @@
+# Enable/disable the dynamic MOTD news service
+# This is a useful way to provide dynamic, informative
+# information pertinent to the users and administrators
+# of the local system
+ENABLED=0
+
+# Configure the source of dynamic MOTD news
+# White space separated list of 0 to many news services
+# For security reasons, these must be https
+# and have a valid certificate
+# Canonical runs a service at motd.ubuntu.com, and you
+# can easily run one too
+URLS="https://motd.ubuntu.com"
+
+# Specify the time in seconds, you're willing to wait for
+# dynamic MOTD news
+# Note that news messages are fetched in the background by
+# a systemd timer, so this should never block boot or login
+WAIT=5
diff --git a/etc/default/networkd-dispatcher b/etc/default/networkd-dispatcher
new file mode 100644 (file)
index 0000000..bc9854c
--- /dev/null
@@ -0,0 +1,3 @@
+# Specify command line options here. This config file is used
+# by the included systemd service file.
+networkd_dispatcher_args="--run-startup-triggers"
diff --git a/etc/default/nginx b/etc/default/nginx
new file mode 100644 (file)
index 0000000..09b8fd0
--- /dev/null
@@ -0,0 +1,10 @@
+# Note: You may want to look at the following page before setting the ULIMIT.
+#  http://wiki.nginx.org/CoreModule#worker_rlimit_nofile
+# Set the ulimit variable if you need defaults to change.
+#  Example: ULIMIT="-n 4096"
+#ULIMIT="-n 4096"
+
+# Define the stop schedule for nginx
+# see the start-stop-daemon --retry documentation for more information
+#
+#STOP_SCHEDULE="QUIT/5/TERM/5/KILL/5"
diff --git a/etc/default/nss b/etc/default/nss
new file mode 100644 (file)
index 0000000..c43e88b
--- /dev/null
@@ -0,0 +1,37 @@
+# /etc/default/nss
+# This file can theoretically contain a bunch of customization variables
+# for Name Service Switch in the GNU C library.  For now there are only
+# four variables:
+#
+# NETID_AUTHORITATIVE
+#   If set to TRUE, the initgroups() function will accept the information
+#   from the netid.byname NIS map as authoritative.  This can speed up the
+#   function significantly if the group.byname map is large.  The content
+#   of the netid.byname map is used AS IS.  The system administrator has
+#   to make sure it is correctly generated.
+#NETID_AUTHORITATIVE=TRUE
+#
+# SERVICES_AUTHORITATIVE
+#   If set to TRUE, the getservbyname{,_r}() function will assume
+#   services.byservicename NIS map exists and is authoritative, particularly
+#   that it contains both keys with /proto and without /proto for both
+#   primary service names and service aliases.  The system administrator
+#   has to make sure it is correctly generated.
+#SERVICES_AUTHORITATIVE=TRUE
+#
+# SETENT_BATCH_READ
+#  If set to TRUE, various setXXent() functions will read the entire
+#  database at once and then hand out the requests one by one from
+#  memory with every getXXent() call.  Otherwise each getXXent() call
+#  might result into a network communication with the server to get
+#  the next entry.
+#SETENT_BATCH_READ=TRUE
+#
+# ADJUNCT_AS_SHADOW
+#  If set to TRUE, the passwd routines in the NIS NSS module will not
+#  use the passwd.adjunct.byname tables to fill in the password data
+#  in the passwd structure.  This is a security problem if the NIS
+#  server cannot be trusted to send the passwd.adjuct table only to
+#  privileged clients.  Instead the passwd.adjunct.byname table is
+#  used to synthesize the shadow.byname table if it does not exist.
+ADJUNCT_AS_SHADOW=TRUE
diff --git a/etc/default/open-iscsi b/etc/default/open-iscsi
new file mode 100644 (file)
index 0000000..8cb4e2f
--- /dev/null
@@ -0,0 +1,67 @@
+# List of LVMed iSCSI Volume Groups.
+# Multiple Volume Groups can be specified with spaces
+#
+# This list defines the Volume Groups that should be activated at boot
+# after iSCSI has been activated. If you use dynamic activation of LVM
+# volumes (lvmetad), you can (and should) leave this empty.
+#
+# On shutdown, this setting typically has no effect, since open-iscsi
+# tries to determine all active VGs on iSCSI and deactivate them.
+# However, if you have a really complicated stacking setup that isn't
+# automatically detected, volume groups defined here will also be
+# deactivated.
+#
+# To see whether open-iscsi is able to properly detect your setup for
+# shutdown, execute the following on a running system:
+#    /lib/open-iscsi/umountiscsi.sh --dry-run
+# This will tell you what steps will betaken at shutdown before logging
+# out of the iSCSI session.
+LVMGROUPS=""
+
+
+# Handle _netdev devices
+# You can specify your iSCSI (LVMed or Multipathed or DM Encrypted)
+# devices with the _netdev mount option and open-iscsi will treat them
+# accordingly.
+#
+# Note: however, handling _netdev devices comes with the caveat that
+# other _netdev mounts, like an NFS share, also get pulled in with it.
+#
+# If this option is set to 0, no iSCSI mounts in /etc/fstab will be
+# automatically mounted on systems running sysvinit. This setting is
+# not necessary when using systemd as init system (Debian's default).
+HANDLE_NETDEV=1
+
+
+# Additional mounts to exclude at shutdown.
+#
+# If you have additional mounts on iSCSI that shouldn't be umounted at
+# shutdown by open-iscsi (by default, open-iscsi excludes / and on
+# systemd systems als /usr), place them here. iSCSI sessions that carry
+# these mounts will also be kept open.
+#
+# If any of these mountpoints contain spaces, please use the same
+# escaping as in /etc/fstab, i.e. replace the spaces with \040.
+EXCLUDE_MOUNTS_AT_SHUTDOWN=""
+
+
+
+# Don't logout from ANY iSCSI session on shutdown
+#
+# When shutting down, if the root filesystem is on iSCSI, open-iscsi
+# tries to determine which sessions are still required for the root
+# filesystem. By default, the host will still logout from all other
+# sessions.
+#
+# If you are running a very complicated setup of your root filesystem
+# (multiple mapping levels stacked on top of each other), it may be the
+# case that the autodetection logic doesn't work propery. You may then
+# enable this setting to keep around all iSCSI sessions.
+#
+# Note that /etc/iscsi/iscsi.initramfs must exist for this option to
+# have any effect at all.
+#
+# This was the default behavior in previous versions of this package
+# up to the version that shipped with Debian 8 (Jessie).
+#
+ISCSI_ROOT_KEEP_ALL_SESSIONS_AT_SHUTDOWN=0
diff --git a/etc/default/pollinate b/etc/default/pollinate
new file mode 100644 (file)
index 0000000..6b70433
--- /dev/null
@@ -0,0 +1,10 @@
+# These the options that are used by pollinate(1) by default.
+# Note that any option here can be overriden on the command line
+# at invocation time.  Please see pollinate(1) for documentation.
+BINARY=1
+QUIET=0
+WAIT=10
+DEVICE="/dev/urandom"
+SERVER="https://entropy.ubuntu.com/"
+POOL=""
+CURL_OPTS="--cacert /etc/pollinate/entropy.ubuntu.com.pem --capath /dev/null"
diff --git a/etc/default/rsync b/etc/default/rsync
new file mode 100644 (file)
index 0000000..424b1c0
--- /dev/null
@@ -0,0 +1,47 @@
+# defaults file for rsync daemon mode
+#
+# This file is only used for init.d based systems!
+# If this system uses systemd, you can specify options etc. for rsync
+# in daemon mode by copying /lib/systemd/system/rsync.service to
+# /etc/systemd/system/rsync.service and modifying the copy; add required
+# options to the ExecStart line.
+
+# start rsync in daemon mode from init.d script?
+#  only allowed values are "true", "false", and "inetd"
+#  Use "inetd" if you want to start the rsyncd from inetd,
+#  all this does is prevent the init.d script from printing a message
+#  about not starting rsyncd (you still need to modify inetd's config yourself).
+RSYNC_ENABLE=false
+
+# which file should be used as the configuration file for rsync.
+# This file is used instead of the default /etc/rsyncd.conf
+# Warning: This option has no effect if the daemon is accessed
+#          using a remote shell. When using a different file for
+#          rsync you might want to symlink /etc/rsyncd.conf to
+#          that file.
+# RSYNC_CONFIG_FILE=
+
+# what extra options to give rsync --daemon?
+#  that excludes the --daemon; that's always done in the init.d script
+#  Possibilities are:
+#   --address=123.45.67.89             (bind to a specific IP address)
+#   --port=8730                                (bind to specified port; default 873)
+RSYNC_OPTS=''
+
+# run rsyncd at a nice level?
+#  the rsync daemon can impact performance due to much I/O and CPU usage,
+#  so you may want to run it at a nicer priority than the default priority.
+#  Allowed values are 0 - 19 inclusive; 10 is a reasonable value.
+RSYNC_NICE=''
+
+# run rsyncd with ionice?
+#  "ionice" does for IO load what "nice" does for CPU load.
+#  As rsync is often used for backups which aren't all that time-critical,
+#  reducing the rsync IO priority will benefit the rest of the system.
+#  See the manpage for ionice for allowed options.
+#  -c3 is recommended, this will run rsync IO at "idle" priority. Uncomment
+#  the next line to activate this.
+# RSYNC_IONICE='-c3'
+
+# Don't forget to create an appropriate config file,
+# else the daemon will not start.
diff --git a/etc/default/smartmontools b/etc/default/smartmontools
new file mode 100644 (file)
index 0000000..6a8a6e2
--- /dev/null
@@ -0,0 +1,9 @@
+# Defaults for smartmontools initscript (/etc/init.d/smartmontools)
+# This is a POSIX shell fragment
+
+# List of devices you want to explicitly enable S.M.A.R.T. for
+# Not needed (and not recommended) if the device is monitored by smartd
+#enable_smart="/dev/hda /dev/hdb"
+
+# uncomment to pass additional options to smartd on startup
+#smartd_opts="--interval=1800"
diff --git a/etc/default/ssh b/etc/default/ssh
new file mode 100644 (file)
index 0000000..3040422
--- /dev/null
@@ -0,0 +1,5 @@
+# Default settings for openssh-server. This file is sourced by /bin/sh from
+# /etc/init.d/ssh.
+
+# Options to pass to sshd
+SSHD_OPTS=
diff --git a/etc/default/sysstat b/etc/default/sysstat
new file mode 100644 (file)
index 0000000..dfeb7e0
--- /dev/null
@@ -0,0 +1,10 @@
+#
+# Default settings for /etc/init.d/sysstat, /etc/cron.d/sysstat
+# and /etc/cron.daily/sysstat files
+#
+
+# Should sadc collect system activity informations? Valid values
+# are "true" and "false". Please do not put other values, they
+# will be overwritten by debconf!
+ENABLED="false"
+
diff --git a/etc/default/ufw b/etc/default/ufw
new file mode 100644 (file)
index 0000000..7989f4b
--- /dev/null
@@ -0,0 +1,47 @@
+# /etc/default/ufw
+#
+
+# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
+# accepted). You will need to 'disable' and then 'enable' the firewall for
+# the changes to take affect.
+IPV6=yes
+
+# Set the default input policy to ACCEPT, DROP, or REJECT. Please note that if
+# you change this you will most likely want to adjust your rules.
+DEFAULT_INPUT_POLICY="DROP"
+
+# Set the default output policy to ACCEPT, DROP, or REJECT. Please note that if
+# you change this you will most likely want to adjust your rules.
+DEFAULT_OUTPUT_POLICY="ACCEPT"
+
+# Set the default forward policy to ACCEPT, DROP or REJECT.  Please note that
+# if you change this you will most likely want to adjust your rules
+DEFAULT_FORWARD_POLICY="DROP"
+
+# Set the default application policy to ACCEPT, DROP, REJECT or SKIP. Please
+# note that setting this to ACCEPT may be a security risk. See 'man ufw' for
+# details
+DEFAULT_APPLICATION_POLICY="SKIP"
+
+# By default, ufw only touches its own chains. Set this to 'yes' to have ufw
+# manage the built-in chains too. Warning: setting this to 'yes' will break
+# non-ufw managed firewall rules
+MANAGE_BUILTINS=no
+
+#
+# IPT backend
+#
+# only enable if using iptables backend
+IPT_SYSCTL=/etc/ufw/sysctl.conf
+
+# Extra connection tracking modules to load. IPT_MODULES should typically be
+# empty for new installations and modules added only as needed. See
+# 'CONNECTION HELPERS' from 'man ufw-framework' for details. Complete list can
+# be found in net/netfilter/Kconfig of your kernel source. Some common modules:
+# nf_conntrack_irc, nf_nat_irc: DCC (Direct Client to Client) support
+# nf_conntrack_netbios_ns: NetBIOS (samba) client support
+# nf_conntrack_pptp, nf_nat_pptp: PPTP over stateful firewall/NAT
+# nf_conntrack_ftp, nf_nat_ftp: active FTP support
+# nf_conntrack_tftp, nf_nat_tftp: TFTP support (server side)
+# nf_conntrack_sane: sane support
+IPT_MODULES=""
diff --git a/etc/default/useradd b/etc/default/useradd
new file mode 100644 (file)
index 0000000..e32955a
--- /dev/null
@@ -0,0 +1,37 @@
+# Default values for useradd(8)
+#
+# The SHELL variable specifies the default login shell on your
+# system.
+# Similar to DSHELL in adduser. However, we use "sh" here because
+# useradd is a low level utility and should be as general
+# as possible
+SHELL=/bin/sh
+#
+# The default group for users
+# 100=users on Debian systems
+# Same as USERS_GID in adduser
+# This argument is used when the -n flag is specified.
+# The default behavior (when -n and -g are not specified) is to create a
+# primary user group with the same name as the user being added to the
+# system.
+# GROUP=100
+#
+# The default home directory. Same as DHOME for adduser
+# HOME=/home
+#
+# The number of days after a password expires until the account 
+# is permanently disabled
+# INACTIVE=-1
+#
+# The default expire date
+# EXPIRE=
+#
+# The SKEL variable specifies the directory containing "skeletal" user
+# files; in other words, files such as a sample .profile that will be
+# copied to the new user's home directory when it is created.
+# SKEL=/etc/skel
+#
+# Defines whether the mail spool should be created while
+# creating the account
+# CREATE_MAIL_SPOOL=yes
+
diff --git a/etc/deluser.conf b/etc/deluser.conf
new file mode 100644 (file)
index 0000000..fff8d81
--- /dev/null
@@ -0,0 +1,20 @@
+# /etc/deluser.conf: `deluser' configuration.
+
+# Remove home directory and mail spool when user is removed
+REMOVE_HOME = 0
+
+# Remove all files on the system owned by the user to be removed
+REMOVE_ALL_FILES = 0
+
+# Backup files before removing them. This options has only an effect if
+# REMOVE_HOME or REMOVE_ALL_FILES is set.
+BACKUP = 0
+
+# target directory for the backup file
+BACKUP_TO = "."
+
+# delete a group even there are still users in this group
+ONLY_IF_EMPTY = 0
+
+# exclude these filesystem types when searching for files of a user to backup
+EXCLUDE_FSTYPES = "(proc|sysfs|usbfs|devpts|tmpfs|afs)"
diff --git a/etc/depmod.d/ubuntu.conf b/etc/depmod.d/ubuntu.conf
new file mode 100644 (file)
index 0000000..6b1a01d
--- /dev/null
@@ -0,0 +1 @@
+search updates ubuntu built-in
diff --git a/etc/dhcp/debug b/etc/dhcp/debug
new file mode 100644 (file)
index 0000000..593e7df
--- /dev/null
@@ -0,0 +1,38 @@
+#
+# The purpose of this script is just to show the variables that are
+# available to all the scripts in this directory. All these scripts are
+# called from dhclient-script, which exports all the variables shown
+# before. If you want to debug a problem with your DHCP setup you can
+# enable this script and take a look at /tmp/dhclient-script.debug.
+
+# To enable this script set the following variable to "yes"
+RUN="no"
+
+if [ "$RUN" = "yes" ]; then
+       echo "$(date): entering ${1%/*}, dumping variables." \
+               >> /tmp/dhclient-script.debug
+
+       # loop over the 4 possible prefixes: (empty), cur_, new_, old_
+       for prefix in '' 'cur_' 'new_' 'old_'; do
+               # loop over the DHCP variables passed to dhclient-script
+               for basevar in reason interface medium alias_ip_address \
+                              ip_address host_name network_number subnet_mask \
+                              broadcast_address routers static_routes \
+                              rfc3442_classless_static_routes \
+                              domain_name domain_search domain_name_servers \
+                              netbios_name_servers netbios_scope \
+                              ntp_servers \
+                              ip6_address ip6_prefix ip6_prefixlen \
+                              dhcp6_domain_search dhcp6_name_servers ; do
+                       var="${prefix}${basevar}"
+                       eval "content=\$$var"
+
+                       # show only variables with values set
+                       if [ -n "${content}" ]; then
+                               echo "$var='${content}'" >> /tmp/dhclient-script.debug
+                       fi
+               done
+       done
+
+       echo '--------------------------' >> /tmp/dhclient-script.debug
+fi
diff --git a/etc/dhcp/dhclient-enter-hooks.d/debug b/etc/dhcp/dhclient-enter-hooks.d/debug
new file mode 120000 (symlink)
index 0000000..ee34fdc
--- /dev/null
@@ -0,0 +1 @@
+../debug
\ No newline at end of file
diff --git a/etc/dhcp/dhclient-enter-hooks.d/resolved b/etc/dhcp/dhclient-enter-hooks.d/resolved
new file mode 100755 (executable)
index 0000000..870ea76
--- /dev/null
@@ -0,0 +1,87 @@
+#
+# Script fragment to make dhclient supply nameserver information to resolvconf
+#
+
+# Tips:
+# * Be careful about changing the environment since this is sourced
+# * This script fragment uses bash features
+# * As of isc-dhcp-client 4.2 the "reason" (for running the script) can be one of the following.
+#   (Listed on man page:) MEDIUM(0) PREINIT(0)  BOUND(M)  RENEW(M)  REBIND(M)  REBOOT(M)         EXPIRE(D)  FAIL(D) RELEASE(D)  STOP(D) NBI(-) TIMEOUT(M)
+#   (Also used in master script:)                                                                                                                         ARPCHECK(0), ARPSEND(0)
+#   (Also used in master script:)   PREINIT6(0) BOUND6(M) RENEW6(M) REBIND6(M)        DEPREF6(0) EXPIRE6(D)         RELEASE6(D) STOP6(D)
+#   (0) = master script does not run make_resolv_conf
+#   (M) = master script runs make_resolv_conf
+#   (D) = master script downs interface
+#   (-) = master script does nothing with this
+
+if systemctl is-enabled systemd-resolved > /dev/null 2>&1; then
+        # For safety, first undefine the nasty default make_resolv_conf()
+        make_resolv_conf() { : ; }
+        case "$reason" in
+          BOUND|RENEW|REBIND|REBOOT|TIMEOUT|BOUND6|RENEW6|REBIND6)
+                # Define a resolvconf-compatible m_r_c() function
+                # It gets run later (or, in the TIMEOUT case, MAY get run later)
+          make_resolv_conf() {
+              local statedir
+              if [ ! "$interface" ] ; then
+                  return
+              fi
+              statedir="/run/systemd/resolved.conf.d"
+              mkdir -p $statedir
+
+              oldstate="$(mktemp)"
+              md5sum $statedir/isc-dhcp-v4-$interface.conf $statedir/isc-dhcp-v6-$interface.conf > $oldstate 2> /dev/null
+              if [ -n "$new_domain_name_servers" ] ; then
+                  cat <<EOF >$statedir/isc-dhcp-v4-$interface.conf
+[Resolve]
+DNS=$new_domain_name_servers
+EOF
+                  if [ -n "$new_domain_name" ] || [ -n "$new_domain_search" ] ; then
+                      cat <<EOF >>$statedir/isc-dhcp-v4-$interface.conf
+Domains=$new_domain_search $new_domain_name
+EOF
+                  fi
+              fi
+              if [ -n "$new_dhcp6_name_servers" ] ; then
+                  cat <<EOF >$statedir/isc-dhcp-v6-$interface.conf
+[Resolve]
+DNS=$new_dhcp6_name_servers
+EOF
+                  if [ -n "$new_dhcp6_domain_search" ] ; then
+                      cat <<EOF >>$statedir/isc-dhcp-v6-$interface.conf
+Domains=$new_dhcp6_domain_search
+EOF
+                  fi
+              fi
+
+              newstate="$(mktemp)"
+              md5sum $statedir/isc-dhcp-v4-$interface.conf $statedir/isc-dhcp-v6-$interface.conf > $newstate 2> /dev/null
+              if ! cmp --quiet $oldstate $newstate; then
+                  # We need to reset-failed to reset the start limit counter,
+                  # in case we're processing more than StartLimitBurst interfaces
+                  # LP: #1939255
+                  systemctl reset-failed systemd-resolved.service
+                  systemctl try-reload-or-restart systemd-resolved.service
+              fi
+
+              rm $oldstate
+              rm $newstate
+          }
+                ;;
+
+          EXPIRE|FAIL|RELEASE|STOP)
+              if [ ! "$interface" ] ; then
+                  return
+              fi
+              rm -f /run/systemd/resolved.conf.d/isc-dhcp-v4-$interface.conf
+              systemctl try-reload-or-restart systemd-resolved.service
+              ;;
+          EXPIRE6|RELEASE6|STOP6)
+              if [ ! "$interface" ] ; then
+                  return
+              fi
+              rm -f /run/systemd/resolved.conf.d/isc-dhcp-v6-$interface.conf
+              systemctl try-reload-or-restart systemd-resolved.service
+              ;;
+        esac
+fi
diff --git a/etc/dhcp/dhclient-exit-hooks.d/debug b/etc/dhcp/dhclient-exit-hooks.d/debug
new file mode 120000 (symlink)
index 0000000..ee34fdc
--- /dev/null
@@ -0,0 +1 @@
+../debug
\ No newline at end of file
diff --git a/etc/dhcp/dhclient-exit-hooks.d/hook-dhclient b/etc/dhcp/dhclient-exit-hooks.d/hook-dhclient
new file mode 100755 (executable)
index 0000000..02122f3
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+# This file is part of cloud-init. See LICENSE file for license information.
+
+# This script writes DHCP lease information into the cloud-init run directory
+# It is sourced, not executed.  For more information see dhclient-script(8).
+
+is_azure() {
+    local dmi_path="/sys/class/dmi/id/board_vendor" vendor=""
+    if [ -e "$dmi_path" ] && read vendor < "$dmi_path"; then
+        [ "$vendor" = "Microsoft Corporation" ] && return 0
+    fi
+    return 1
+}
+
+is_enabled() {
+    # only execute hooks if cloud-init is enabled and on azure
+    [ -e /run/cloud-init/enabled ] || return 1
+    is_azure
+}
+
+if is_enabled; then
+   case "$reason" in
+      BOUND) cloud-init dhclient-hook up "$interface";;
+      DOWN|RELEASE|REBOOT|STOP|EXPIRE)
+         cloud-init dhclient-hook down "$interface";;
+   esac
+fi
diff --git a/etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes b/etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-routes
new file mode 100644 (file)
index 0000000..1ef7b8a
--- /dev/null
@@ -0,0 +1,78 @@
+# set classless routes based on the format specified in RFC3442
+# e.g.:
+#   new_rfc3442_classless_static_routes='24 192 168 10 192 168 1 1 8 10 10 17 66 41'
+# specifies the routes:
+#   192.168.10.0/24 via 192.168.1.1
+#   10.0.0.0/8 via 10.10.17.66.41
+
+RUN="yes"
+
+
+if [ "$RUN" = "yes" ]; then
+       if [ -n "$new_rfc3442_classless_static_routes" ]; then
+               if [ "$reason" = "BOUND" ] || [ "$reason" = "REBOOT" ]; then
+
+                       set -- $new_rfc3442_classless_static_routes
+
+                       while [ $# -gt 0 ]; do
+                               net_length=$1
+                               via_arg=''
+
+                               case $net_length in
+                                       32|31|30|29|28|27|26|25)
+                                               if [ $# -lt 9 ]; then
+                                                       return 1
+                                               fi
+                                               net_address="${2}.${3}.${4}.${5}"
+                                               gateway="${6}.${7}.${8}.${9}"
+                                               shift 9
+                                               ;;
+                                       24|23|22|21|20|19|18|17)
+                                               if [ $# -lt 8 ]; then
+                                                       return 1
+                                               fi
+                                               net_address="${2}.${3}.${4}.0"
+                                               gateway="${5}.${6}.${7}.${8}"
+                                               shift 8
+                                               ;;
+                                       16|15|14|13|12|11|10|9)
+                                               if [ $# -lt 7 ]; then
+                                                       return 1
+                                               fi
+                                               net_address="${2}.${3}.0.0"
+                                               gateway="${4}.${5}.${6}.${7}"
+                                               shift 7
+                                               ;;
+                                       8|7|6|5|4|3|2|1)
+                                               if [ $# -lt 6 ]; then
+                                                       return 1
+                                               fi
+                                               net_address="${2}.0.0.0"
+                                               gateway="${3}.${4}.${5}.${6}"
+                                               shift 6
+                                               ;;
+                                       0)      # default route
+                                               if [ $# -lt 5 ]; then
+                                                       return 1
+                                               fi
+                                               net_address="0.0.0.0"
+                                               gateway="${2}.${3}.${4}.${5}"
+                                               shift 5
+                                               ;;
+                                       *)      # error
+                                               return 1
+                                               ;;
+                               esac
+
+                               # take care of link-local routes
+                               if [ "${gateway}" != '0.0.0.0' ]; then
+                                       via_arg="via ${gateway}"
+                               fi
+
+                               # set route (ip detects host routes automatically)
+                               ip -4 route add "${net_address}/${net_length}" \
+                                       ${via_arg} dev "${interface}" >/dev/null 2>&1
+                       done
+               fi
+       fi
+fi
diff --git a/etc/dhcp/dhclient-exit-hooks.d/timesyncd b/etc/dhcp/dhclient-exit-hooks.d/timesyncd
new file mode 100644 (file)
index 0000000..3cde992
--- /dev/null
@@ -0,0 +1,42 @@
+TIMESYNCD_CONF=/run/systemd/timesyncd.conf.d/01-dhclient.conf
+
+timesyncd_servers_setup_remove() {
+        if [ -e $TIMESYNCD_CONF ]; then
+            rm -f $TIMESYNCD_CONF
+            systemctl try-restart systemd-timesyncd.service || true
+        fi
+}
+
+timesyncd_servers_setup_add() {
+        if [ ! -d /run/systemd/system ]; then
+                return
+        fi
+
+        if [ -e $TIMESYNCD_CONF ] && [ "$new_ntp_servers" = "$old_ntp_servers" ]; then
+                return
+        fi
+
+        if [ -z "$new_ntp_servers" ]; then
+                timesyncd_servers_setup_remove
+                return
+        fi
+
+        mkdir -p $(dirname $TIMESYNCD_CONF)
+        cat <<EOF > ${TIMESYNCD_CONF}.new
+# NTP server entries received from DHCP server
+[Time]
+NTP=$new_ntp_servers
+EOF
+        mv ${TIMESYNCD_CONF}.new ${TIMESYNCD_CONF}
+        systemctl try-restart systemd-timesyncd.service || true
+}
+
+
+case $reason in
+        BOUND|RENEW|REBIND|REBOOT)
+                timesyncd_servers_setup_add
+                ;;
+        EXPIRE|FAIL|RELEASE|STOP)
+                timesyncd_servers_setup_remove
+                ;;
+esac
diff --git a/etc/dhcp/dhclient.conf b/etc/dhcp/dhclient.conf
new file mode 100644 (file)
index 0000000..1e4ec62
--- /dev/null
@@ -0,0 +1,54 @@
+# Configuration file for /sbin/dhclient.
+#
+# This is a sample configuration file for dhclient. See dhclient.conf's
+#      man page for more information about the syntax of this file
+#      and a more comprehensive list of the parameters understood by
+#      dhclient.
+#
+# Normally, if the DHCP server provides reasonable information and does
+#      not leave anything out (like the domain name, for example), then
+#      few changes must be made to this file, if any.
+#
+
+option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
+
+send host-name = gethostname();
+request subnet-mask, broadcast-address, time-offset, routers,
+       domain-name, domain-name-servers, domain-search, host-name,
+       dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
+       netbios-name-servers, netbios-scope, interface-mtu,
+       rfc3442-classless-static-routes, ntp-servers;
+
+#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
+#send dhcp-lease-time 3600;
+#supersede domain-name "fugue.com home.vix.com";
+#prepend domain-name-servers 127.0.0.1;
+#require subnet-mask, domain-name-servers;
+timeout 300;
+#retry 60;
+#reboot 10;
+#select-timeout 5;
+#initial-interval 2;
+#script "/sbin/dhclient-script";
+#media "-link0 -link1 -link2", "link0 link1";
+#reject 192.33.137.209;
+
+#alias {
+#  interface "eth0";
+#  fixed-address 192.5.5.213;
+#  option subnet-mask 255.255.255.255;
+#}
+
+#lease {
+#  interface "eth0";
+#  fixed-address 192.33.137.200;
+#  medium "link0 link1";
+#  option host-name "andare.swiftmedia.com";
+#  option subnet-mask 255.255.255.0;
+#  option broadcast-address 192.33.137.255;
+#  option routers 192.33.137.250;
+#  option domain-name-servers 127.0.0.1;
+#  renew 2 2000/1/12 00:00:01;
+#  rebind 2 2000/1/12 00:00:01;
+#  expire 2 2000/1/12 00:00:01;
+#}
diff --git a/etc/dpkg/dpkg.cfg b/etc/dpkg/dpkg.cfg
new file mode 100644 (file)
index 0000000..ba898ee
--- /dev/null
@@ -0,0 +1,13 @@
+# dpkg configuration file
+#
+# This file can contain default options for dpkg.  All command-line
+# options are allowed.  Values can be specified by putting them after
+# the option, separated by whitespace and/or an `=' sign.
+#
+
+# Do not enable debsig-verify by default; since the distribution is not using
+# embedded signatures, debsig-verify would reject all packages.
+no-debsig
+
+# Log status changes and actions to a file.
+log /var/log/dpkg.log
diff --git a/etc/dpkg/dpkg.cfg.d/pkg-config-hook-config b/etc/dpkg/dpkg.cfg.d/pkg-config-hook-config
new file mode 100644 (file)
index 0000000..b230b27
--- /dev/null
@@ -0,0 +1 @@
+post-invoke=if { test "$DPKG_HOOK_ACTION" = add-architecture || test "$DPKG_HOOK_ACTION" = remove-architecture; } && test -x /usr/share/pkg-config-dpkghook; then /usr/share/pkg-config-dpkghook update; fi
diff --git a/etc/dpkg/origins/debian b/etc/dpkg/origins/debian
new file mode 100644 (file)
index 0000000..91f6ed1
--- /dev/null
@@ -0,0 +1,3 @@
+Vendor: Debian
+Vendor-URL: http://www.debian.org/
+Bugs: debbugs://bugs.debian.org
diff --git a/etc/dpkg/origins/default b/etc/dpkg/origins/default
new file mode 120000 (symlink)
index 0000000..7d13753
--- /dev/null
@@ -0,0 +1 @@
+ubuntu
\ No newline at end of file
diff --git a/etc/dpkg/origins/ubuntu b/etc/dpkg/origins/ubuntu
new file mode 100644 (file)
index 0000000..7cc3ce2
--- /dev/null
@@ -0,0 +1,4 @@
+Vendor: Ubuntu
+Vendor-URL: http://www.ubuntu.com/
+Bugs: https://bugs.launchpad.net/ubuntu/+filebug
+Parent: Debian
diff --git a/etc/dpkg/shlibs.default b/etc/dpkg/shlibs.default
new file mode 100644 (file)
index 0000000..661a889
--- /dev/null
@@ -0,0 +1,7 @@
+# dpkg shlibs defaults file
+#
+# This file contains shlibs entries that are used as a last resort when
+# no matching entries are found elsewhere.  For more information see the
+# dpkg-shlibdeps(1) manual page. 
+#
+# <library name>       <version/soname>        <dependencies>
diff --git a/etc/dpkg/shlibs.override b/etc/dpkg/shlibs.override
new file mode 100644 (file)
index 0000000..fbdb68d
--- /dev/null
@@ -0,0 +1,8 @@
+# dpkg shlibs override file
+#
+# Entries in this file will override all others, only use if you
+# are really sure that is what you want!
+# 
+# For more information see the dpkg-shlibdeps(1) manual page. 
+#
+# <library name>       <version/soname>        <dependencies>
diff --git a/etc/e2scrub.conf b/etc/e2scrub.conf
new file mode 100644 (file)
index 0000000..661fc13
--- /dev/null
@@ -0,0 +1,25 @@
+# e2scrub configuration file
+
+# Uncomment to enable automatic periodic runs of e2scrub_all
+# (either via cron or via a systemd timer)
+# periodic_e2scrub=1
+
+# e-mail destination used by e2scrub_fail when problems are found with
+# the file system.
+# recipient=root
+
+# e-mail sender used by e2scrub_fail when problems are found with
+# the file system.
+# sender=e2scrub@host.domain.name
+
+# Snapshots will be created to run fsck; the snapshot will be of this size.
+# snap_size_mb=256
+
+# Set this to 1 to enable fstrim for everyone.
+# fstrim=0
+
+# Arguments passed into e2fsck.
+# e2fsck_opts="-vtt"
+
+# Set this to 1 to have e2scrub_all scrub all LVs, not just the mounted ones.
+# scrub_all=0
diff --git a/etc/environment b/etc/environment
new file mode 100644 (file)
index 0000000..a565d9d
--- /dev/null
@@ -0,0 +1 @@
+PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
diff --git a/etc/ethertypes b/etc/ethertypes
new file mode 100644 (file)
index 0000000..caa9f56
--- /dev/null
@@ -0,0 +1,45 @@
+# Ethernet frame types
+#
+# The EtherType is a two-octet field of Ethernet frames used to indicate
+# which protocol is contained in their payload.
+#
+# More entries, mostly historical, can be found on:
+#      https://www.iana.org/assignments/ieee-802-numbers/
+#      http://standards-oui.ieee.org/ethertype/eth.txt
+#
+# <name>       <hexnumber> <alias1>...<alias35> # Comment
+#
+IPv4           0800    ip ip4  # IP (IPv4)
+X25            0805
+ARP            0806    ether-arp # Address Resolution Protocol
+FR_ARP         0808            # Frame Relay ARP [RFC1701]
+BPQ            08FF            # G8BPQ AX.25 over Ethernet
+TRILL          22F3            # TRILL [RFC6325]
+L2-IS-IS       22F4            # TRILL IS-IS [RFC6325]
+TEB            6558            # Transparent Ethernet Bridging [RFC1701]
+RAW_FR         6559            # Raw Frame Relay [RFC1701]
+RARP           8035            # Reverse ARP [RFC903]
+ATALK          809B            # Appletalk
+AARP           80F3            # Appletalk Address Resolution Protocol
+802_1Q         8100    8021q 1q 802.1q dot1q # VLAN tagged frame [802.1q]
+IPX            8137            # Novell IPX
+NetBEUI                8191            # NetBEUI
+IPv6           86DD    ip6     # IP version 6
+PPP            880B            # Point-to-Point Protocol
+MPLS           8847            # MPLS [RFC5332]
+MPLS_MULTI     8848            # MPLS with upstream-assigned label [RFC5332]
+ATMMPOA                884C            # MultiProtocol over ATM
+PPP_DISC       8863            # PPP over Ethernet discovery stage
+PPP_SES                8864            # PPP over Ethernet session stage
+ATMFATE                8884            # Frame-based ATM Transport over Ethernet
+EAPOL          888E            # EAP over LAN [802.1x]
+S-TAG          88A8            # QinQ Service VLAN tag identifier [802.1q]
+EAP_PREAUTH    88C7            # EAPOL Pre-Authentication [802.11i]
+LLDP           88CC            # Link Layer Discovery Protocol [802.1ab]
+MACSEC         88E5            # Media Access Control Security [802.1ae]
+PBB            88E7    macinmac # Provider Backbone Bridging [802.1ah]
+MVRP           88F5            # Multiple VLAN Registration Protocol [802.1q]
+PTP            88F7            # Precision Time Protocol
+FCOE           8906            # Fibre Channel over Ethernet
+FIP            8914            # FCoE Initialization Protocol
+ROCE           8915            # RDMA over Converged Ethernet
diff --git a/etc/fonts/conf.avail/10-antialias.conf b/etc/fonts/conf.avail/10-antialias.conf
new file mode 100644 (file)
index 0000000..913d117
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+<!--  Use the Antialiasing -->
+  <match target="pattern">
+    <edit name="antialias" mode="append"><bool>true</bool></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-autohint.conf b/etc/fonts/conf.avail/10-autohint.conf
new file mode 100644 (file)
index 0000000..50ec3b4
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Enable autohinter</description>
+<!--  Use the Autohinter --> 
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit name="autohint" mode="append"><bool>true</bool></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-hinting-full.conf b/etc/fonts/conf.avail/10-hinting-full.conf
new file mode 100644 (file)
index 0000000..aff7976
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Set hintfull to hintstyle</description>
+
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit name="hintstyle" mode="append"><const>hintfull</const></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-hinting-medium.conf b/etc/fonts/conf.avail/10-hinting-medium.conf
new file mode 100644 (file)
index 0000000..1d49f3a
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Set hintmedium to hintstyle</description>
+
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit name="hintstyle" mode="append"><const>hintmedium</const></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-hinting-none.conf b/etc/fonts/conf.avail/10-hinting-none.conf
new file mode 100644 (file)
index 0000000..a134ed8
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Set hintnone to hintstyle</description>
+
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit name="hintstyle" mode="append"><const>hintnone</const></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-hinting-slight.conf b/etc/fonts/conf.avail/10-hinting-slight.conf
new file mode 100644 (file)
index 0000000..f00bcd3
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Set hintslight to hintstyle</description>
+
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit name="hintstyle" mode="append"><const>hintslight</const></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-no-sub-pixel.conf b/etc/fonts/conf.avail/10-no-sub-pixel.conf
new file mode 100644 (file)
index 0000000..4fd1776
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Disable sub-pixel rendering</description>
+<!--  Disable sub-pixel rendering --> 
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit name="rgba" mode="append"><const>none</const></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-scale-bitmap-fonts.conf b/etc/fonts/conf.avail/10-scale-bitmap-fonts.conf
new file mode 100644 (file)
index 0000000..ebb6c7b
--- /dev/null
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Bitmap scaling</description>
+<!--
+  If font is bitmap, calculate scale factor.
+  Note that color bitmap fonts have scalable=true, while
+  non-color ones have scalable=false.  Both groups have outline=false.
+  -->
+<match target="font">
+  <test name="outline" compare="eq">
+    <bool>false</bool>
+  </test>
+  <edit name="pixelsizefixupfactor" mode="assign">
+    <divide>
+      <name target="pattern">pixelsize</name>
+      <name target="font"   >pixelsize</name>
+    </divide>
+  </edit>
+</match>
+<!--
+  For non-scalable bitmap fonts (ie. non-color), skip
+  minor scaling if hinting is enabled.
+  -->
+<match target="font">
+  <test name="outline" compare="eq">
+    <bool>false</bool>
+  </test>
+  <test name="scalable" compare="eq">
+    <bool>false</bool>
+  </test>
+  <test name="hinting" compare="eq">
+    <bool>true</bool>
+  </test>
+  <edit name="scalingnotneeded" mode="assign">
+    <and>
+      <less>
+        <name>pixelsizefixupfactor</name>
+        <double>1.2</double>
+      </less>
+      <more>
+        <name>pixelsizefixupfactor</name>
+        <double>0.8</double>
+      </more>
+    </and>
+  </edit>
+</match>
+<match target="font">
+  <test name="scalingnotneeded" compare="eq">
+    <bool>true</bool>
+  </test>
+  <edit name="pixelsizefixupfactor" mode="assign">
+    <double>1.0</double>
+  </edit>
+</match>
+<!--
+  If we *are* going to scale, go ahead and do it.
+  -->
+<match target="font">
+  <test name="outline" compare="eq">
+    <bool>false</bool>
+  </test>
+  <test name="pixelsizefixupfactor" compare="not_eq">
+    <double>1.0</double>
+  </test>
+  <edit name="matrix" mode="assign">
+    <times>
+      <name>matrix</name>
+      <matrix>
+        <name>pixelsizefixupfactor</name> <double>0</double>
+        <double>0</double> <name>pixelsizefixupfactor</name>
+       </matrix>
+    </times>
+  </edit>
+  <edit name="size" mode="assign">
+    <divide>
+      <name>size</name>
+      <name>pixelsizefixupfactor</name>
+    </divide>
+  </edit>
+</match>
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-sub-pixel-bgr.conf b/etc/fonts/conf.avail/10-sub-pixel-bgr.conf
new file mode 100644 (file)
index 0000000..241e589
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Enable sub-pixel rendering with the BGR stripes layout</description>
+<!--  Enable sub-pixel rendering --> 
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit name="rgba" mode="append"><const>bgr</const></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-sub-pixel-rgb.conf b/etc/fonts/conf.avail/10-sub-pixel-rgb.conf
new file mode 100644 (file)
index 0000000..1cb103d
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Enable sub-pixel rendering with the RGB stripes layout</description>
+<!--  Enable sub-pixel rendering --> 
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit name="rgba" mode="append"><const>rgb</const></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-sub-pixel-vbgr.conf b/etc/fonts/conf.avail/10-sub-pixel-vbgr.conf
new file mode 100644 (file)
index 0000000..1a0690a
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Enable sub-pixel rendering with the vertical BGR stripes layout</description>
+<!--  Enable sub-pixel rendering --> 
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit name="rgba" mode="append"><const>vbgr</const></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-sub-pixel-vrgb.conf b/etc/fonts/conf.avail/10-sub-pixel-vrgb.conf
new file mode 100644 (file)
index 0000000..61bc663
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Enable sub-pixel rendering with the vertical RGB stripes layout</description>
+<!--  Enable sub-pixel rendering --> 
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit name="rgba" mode="append"><const>vrgb</const></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/10-unhinted.conf b/etc/fonts/conf.avail/10-unhinted.conf
new file mode 100644 (file)
index 0000000..f92df0c
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Disable hinting</description>
+<!--  Disable hinting --> 
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit name="hinting" mode="append"><bool>false</bool></edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/11-lcdfilter-default.conf b/etc/fonts/conf.avail/11-lcdfilter-default.conf
new file mode 100644 (file)
index 0000000..929caaa
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Use lcddefault as default for LCD filter</description>
+<!--  Use lcddefault as default for LCD filter -->
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit mode="append" name="lcdfilter">
+      <const>lcddefault</const>
+    </edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/11-lcdfilter-legacy.conf b/etc/fonts/conf.avail/11-lcdfilter-legacy.conf
new file mode 100644 (file)
index 0000000..25c3635
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Use lcdlegacy as default for LCD filter</description>
+<!--  Use lcdlegacy as default for LCD filter -->
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit mode="append" name="lcdfilter">
+      <const>lcdlegacy</const>
+    </edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/11-lcdfilter-light.conf b/etc/fonts/conf.avail/11-lcdfilter-light.conf
new file mode 100644 (file)
index 0000000..6f1eb3d
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Use lcdlight as default for LCD filter</description>
+<!--  Use lcdlight as default for LCD filter -->
+  <match target="pattern">
+    <!--
+      This configuration is available on the major desktop environments.
+      We shouldn't overwrite it with "assign" unconditionally.
+      Most clients may picks up the first value only. so using "append"
+      may simply works to avoid it.
+    -->
+    <edit mode="append" name="lcdfilter">
+      <const>lcdlight</const>
+    </edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/20-unhint-small-dejavu-lgc-sans-mono.conf b/etc/fonts/conf.avail/20-unhint-small-dejavu-lgc-sans-mono.conf
new file mode 100644 (file)
index 0000000..9036e83
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<fontconfig>
+  <!--  /etc/fonts/conf.d/20-unhint-small-dejavu-lgc-sans-mono.conf
+
+        Disable hinting manually at smaller sizes (< 8ppem)
+        This is a copy of the Bistream Vera fonts fonts rule, as DejaVu is
+        derived from Vera.
+
+       The Bistream Vera fonts have GASP entries suggesting that hinting be
+       disabled below 8 ppem, but FreeType ignores those, preferring to use
+       the data found in the instructed hints. The initial Vera release
+       didn't include the right instructions in the 'prep' table.
+ -->
+  <match target="font">
+    <test name="family">
+      <string>DejaVu LGC Sans Mono</string>
+    </test>
+    <test compare="less" name="pixelsize">
+      <double>7.5</double>
+    </test>
+    <edit name="hinting">
+      <bool>false</bool>
+    </edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/20-unhint-small-dejavu-lgc-sans.conf b/etc/fonts/conf.avail/20-unhint-small-dejavu-lgc-sans.conf
new file mode 100644 (file)
index 0000000..35abebd
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<fontconfig>
+  <!--  /etc/fonts/conf.d/20-unhint-small-dejavu-lgc-sans.conf
+
+        Disable hinting manually at smaller sizes (< 8ppem)
+        This is a copy of the Bistream Vera fonts fonts rule, as DejaVu is
+        derived from Vera.
+
+       The Bistream Vera fonts have GASP entries suggesting that hinting be
+       disabled below 8 ppem, but FreeType ignores those, preferring to use
+       the data found in the instructed hints. The initial Vera release
+       didn't include the right instructions in the 'prep' table.
+ -->
+  <match target="font">
+    <test name="family">
+      <string>DejaVu LGC Sans</string>
+    </test>
+    <test compare="less" name="pixelsize">
+      <double>7.5</double>
+    </test>
+    <edit name="hinting">
+      <bool>false</bool>
+    </edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/20-unhint-small-dejavu-lgc-serif.conf b/etc/fonts/conf.avail/20-unhint-small-dejavu-lgc-serif.conf
new file mode 100644 (file)
index 0000000..54486e8
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<fontconfig>
+  <!--  /etc/fonts/conf.d/20-unhint-small-dejavu-lgc-serif.conf
+
+        Disable hinting manually at smaller sizes (< 8ppem)
+        This is a copy of the Bistream Vera fonts fonts rule, as DejaVu is
+        derived from Vera.
+
+       The Bistream Vera fonts have GASP entries suggesting that hinting be
+       disabled below 8 ppem, but FreeType ignores those, preferring to use
+       the data found in the instructed hints. The initial Vera release
+       didn't include the right instructions in the 'prep' table.
+ -->
+  <match target="font">
+    <test name="family">
+      <string>DejaVu LGC Serif</string>
+    </test>
+    <test compare="less" name="pixelsize">
+      <double>7.5</double>
+    </test>
+    <edit name="hinting">
+      <bool>false</bool>
+    </edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/20-unhint-small-dejavu-sans-mono.conf b/etc/fonts/conf.avail/20-unhint-small-dejavu-sans-mono.conf
new file mode 100644 (file)
index 0000000..102dbcc
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<fontconfig>
+  <!--  /etc/fonts/conf.d/20-unhint-small-dejavu-sans-mono.conf
+
+        Disable hinting manually at smaller sizes (< 8ppem)
+        This is a copy of the Bistream Vera fonts fonts rule, as DejaVu is
+        derived from Vera.
+
+       The Bistream Vera fonts have GASP entries suggesting that hinting be
+       disabled below 8 ppem, but FreeType ignores those, preferring to use
+       the data found in the instructed hints. The initial Vera release
+       didn't include the right instructions in the 'prep' table.
+ -->
+  <match target="font">
+    <test name="family">
+      <string>DejaVu Sans Mono</string>
+    </test>
+    <test compare="less" name="pixelsize">
+      <double>7.5</double>
+    </test>
+    <edit name="hinting">
+      <bool>false</bool>
+    </edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/20-unhint-small-dejavu-sans.conf b/etc/fonts/conf.avail/20-unhint-small-dejavu-sans.conf
new file mode 100644 (file)
index 0000000..ee69996
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<fontconfig>
+  <!--  /etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf
+
+        Disable hinting manually at smaller sizes (< 8ppem)
+        This is a copy of the Bistream Vera fonts fonts rule, as DejaVu is
+        derived from Vera.
+
+       The Bistream Vera fonts have GASP entries suggesting that hinting be
+       disabled below 8 ppem, but FreeType ignores those, preferring to use
+       the data found in the instructed hints. The initial Vera release
+       didn't include the right instructions in the 'prep' table.
+ -->
+  <match target="font">
+    <test name="family">
+      <string>DejaVu Sans</string>
+    </test>
+    <test compare="less" name="pixelsize">
+      <double>7.5</double>
+    </test>
+    <edit name="hinting">
+      <bool>false</bool>
+    </edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/20-unhint-small-dejavu-serif.conf b/etc/fonts/conf.avail/20-unhint-small-dejavu-serif.conf
new file mode 100644 (file)
index 0000000..cf6caa2
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<fontconfig>
+  <!--  /etc/fonts/conf.d/20-unhint-small-dejavu-serif.conf
+
+        Disable hinting manually at smaller sizes (< 8ppem)
+        This is a copy of the Bistream Vera fonts fonts rule, as DejaVu is
+        derived from Vera.
+
+       The Bistream Vera fonts have GASP entries suggesting that hinting be
+       disabled below 8 ppem, but FreeType ignores those, preferring to use
+       the data found in the instructed hints. The initial Vera release
+       didn't include the right instructions in the 'prep' table.
+ -->
+  <match target="font">
+    <test name="family">
+      <string>DejaVu Serif</string>
+    </test>
+    <test compare="less" name="pixelsize">
+      <double>7.5</double>
+    </test>
+    <edit name="hinting">
+      <bool>false</bool>
+    </edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/20-unhint-small-vera.conf b/etc/fonts/conf.avail/20-unhint-small-vera.conf
new file mode 100644 (file)
index 0000000..7b3d7bd
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Disable hinting for Bitstream Vera fonts when the size is less than 8ppem</description>
+<!-- 
+       The Bitstream Vera fonts have GASP entries suggesting that hinting be
+       disabled below 8 ppem, but FreeType ignores those, preferring to use
+       the data found in the instructed hints.  The initial Vera release
+       didn't include the right instructions in the 'prep' table. Fix this
+       by disabling hinting manually at smaller sizes (< 8ppem)
+ -->
+
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Bitstream Vera Sans</string>
+               </test>
+               <test name="pixelsize" compare="less">
+                       <double>7.5</double>
+               </test>
+               <edit name="hinting">
+                       <bool>false</bool>
+               </edit>
+       </match>
+
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Bitstream Vera Serif</string>
+               </test>
+               <test name="pixelsize" compare="less">
+                       <double>7.5</double>
+               </test>
+               <edit name="hinting">
+                       <bool>false</bool>
+               </edit>
+       </match>
+
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Bitstream Vera Sans Mono</string>
+               </test>
+               <test name="pixelsize" compare="less">
+                       <double>7.5</double>
+               </test>
+               <edit name="hinting">
+                       <bool>false</bool>
+               </edit>
+       </match>
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/25-unhint-nonlatin.conf b/etc/fonts/conf.avail/25-unhint-nonlatin.conf
new file mode 100644 (file)
index 0000000..78cc7a3
--- /dev/null
@@ -0,0 +1,132 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Disable hinting for CJK fonts</description>
+<!-- We can't hint CJK fonts well, so turn off hinting for CJK fonts. -->
+
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Kochi Mincho</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Kochi Gothic</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Sazanami Mincho</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Sazanami Gothic</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Baekmuk Batang</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Baekmuk Dotum</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Baekmuk Gulim</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Baekmuk Headline</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>AR PL Mingti2L Big5</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>AR PL ShanHeiSun Uni</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>AR PL KaitiM Big5</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>AR PL ZenKai Uni</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>AR PL SungtiL GB</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>AR PL KaitiM GB</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>ZYSong18030</string>
+               </test>
+               <edit name="hinting" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/30-cjk-aliases.conf b/etc/fonts/conf.avail/30-cjk-aliases.conf
new file mode 100644 (file)
index 0000000..497d2bf
--- /dev/null
@@ -0,0 +1,569 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+<!-- Aliases for Korean fonts -->
+    <alias>
+        <family>Batang</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+           <family>NanumMyeongjo</family>
+            <family>UnBatang</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>바탕</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+           <family>NanumMyeongjo</family>
+            <family>UnBatang</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>BatangChe</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+           <family>NanumMyeongjo</family>
+            <family>UnBatang</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>바탕체</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+           <family>NanumMyeongjo</family>
+            <family>UnBatang</family>
+        </accept>
+    </alias>
+    <alias>
+       <family>Myeongjo</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+           <family>NanumMyeongjo</family>
+            <family>UnBatang</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>명조</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+           <family>NanumMyeongjo</family>
+            <family>UnBatang</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>MyeongjoChe</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+           <family>NanumMyeongjo</family>
+            <family>UnBatang</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>명조체</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+           <family>NanumMyeongjo</family>
+            <family>UnBatang</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>AR MingtiM KSC</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+           <family>NanumMyeongjo</family>
+            <family>UnBatang</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>Adobe 명조 Std M</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+           <family>NanumMyeongjo</family>
+            <family>UnBatang</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>Adobe Myeongjo Std M</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+           <family>NanumMyeongjo</family>
+            <family>UnBatang</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>Gungsuh</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+            <family>UnGungseo</family> 
+           <family>NanumMyeongjo</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>궁서</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+            <family>UnGungseo</family> 
+           <family>NanumMyeongjo</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>GungsuhChe</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+            <family>UnGungseo</family> 
+           <family>NanumMyeongjo</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>궁서체</family>
+        <accept>
+           <family>Noto Serif CJK KR</family>
+            <family>UnGungseo</family> 
+           <family>NanumMyeongjo</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>Dotum</family>
+        <accept>
+           <family>Noto Sans CJK KR</family>
+           <family>NanumGothic</family>
+            <family>UnDotum</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>돋움</family>
+        <accept>
+           <family>Noto Sans CJK KR</family>
+           <family>NanumGothic</family>
+            <family>UnDotum</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>Gothic</family>
+        <accept>
+           <family>Noto Sans CJK KR</family>
+           <family>NanumGothic</family>
+            <family>UnDotum</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>고딕</family>
+        <accept>
+           <family>Noto Sans CJK KR</family>
+           <family>NanumGothic</family>
+            <family>UnDotum</family>
+        </accept>
+    </alias>
+    <alias>
+       <family>Malgun Gothic</family>
+        <accept>
+           <family>Noto Sans CJK KR</family>
+           <family>NanumGothic</family>
+            <family>UnDotum</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>맑은 고딕</family>
+        <accept>
+           <family>Noto Sans CJK KR</family>
+           <family>NanumGothic</family>
+            <family>UnDotum</family>
+        </accept>
+    </alias>
+    <alias>
+       <family>Gulim</family>
+        <accept>
+           <family>Noto Sans CJK KR</family>
+           <family>NanumGothic</family>
+            <family>UnDotum</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>굴림</family>
+        <accept>
+           <family>Noto Sans CJK KR</family>
+           <family>NanumGothic</family>
+            <family>UnDotum</family>
+        </accept>
+    </alias>
+    <alias>
+       <family>AppleGothic</family>
+        <accept>
+           <family>Noto Sans CJK KR</family>
+           <family>NanumGothic</family>
+            <family>UnDotum</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>애플고딕</family>
+        <accept>
+           <family>Noto Sans CJK KR</family>
+           <family>NanumGothic</family>
+            <family>UnDotum</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>DotumChe</family>
+        <accept>
+           <family>Noto Sans Mono CJK KR</family>
+           <family>NanumGothicCoding</family>
+           <family>NanumGothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>돋움체</family>
+        <accept>
+           <family>Noto Sans Mono CJK KR</family>
+           <family>NanumGothicCoding</family>
+           <family>NanumGothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>GothicChe</family>
+        <accept>
+           <family>Noto Sans Mono CJK KR</family>
+           <family>NanumGothicCoding</family>
+           <family>NanumGothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>고딕체</family>
+        <accept>
+           <family>Noto Sans Mono CJK KR</family>
+           <family>NanumGothicCoding</family>
+           <family>NanumGothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>GulimChe</family>
+        <accept>
+           <family>Noto Sans Mono CJK KR</family>
+           <family>NanumGothicCoding</family>
+           <family>NanumGothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>굴림체</family>
+        <accept>
+           <family>Noto Sans Mono CJK KR</family>
+           <family>NanumGothicCoding</family>
+           <family>NanumGothic</family>
+        </accept>
+    </alias>
+<!-- Aliases for Japanese Windows fonts -->
+    <alias>
+        <family>MS Gothic</family>
+        <accept>
+            <family>Noto Sans Mono CJK JP</family>
+            <family>TakaoGothic</family>
+            <family>IPAGothic</family>
+            <family>IPAMonaGothic</family>
+            <family>VL Gothic</family>
+            <family>Sazanami Gothic</family>
+            <family>Kochi Gothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>MS ゴシック</family>
+        <accept>
+            <family>Noto Sans Mono CJK JP</family>
+            <family>TakaoGothic</family>
+            <family>IPAGothic</family>
+            <family>IPAMonaGothic</family>
+            <family>VL Gothic</family>
+            <family>Sazanami Gothic</family>
+            <family>Kochi Gothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>MS PGothic</family>
+        <accept>
+            <family>Noto Sans CJK JP</family>
+            <family>IPAMonaPGothic</family>
+            <family>TakaoPGothic</family>
+            <family>IPAPGothic</family>
+            <family>VL PGothic</family>
+            <family>Sazanami Gothic</family>
+            <family>Kochi Gothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>MS Pゴシック</family>
+        <accept>
+            <family>Noto Sans CJK JP</family>
+            <family>IPAMonaPGothic</family>
+            <family>TakaoPGothic</family>
+            <family>IPAPGothic</family>
+            <family>VL PGothic</family>
+            <family>Sazanami Gothic</family>
+            <family>Kochi Gothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>MS UIGothic</family>
+        <accept>
+            <family>Noto Sans CJK JP</family>
+            <family>IPAMonaPGothic</family>
+            <family>TakaoPGothic</family>
+            <family>IPAPGothic</family>
+            <family>VL PGothic</family>
+            <family>Sazanami Gothic</family>
+            <family>Kochi Gothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>Meiryo UI</family>
+        <accept>
+            <family>Noto Sans CJK JP</family>
+            <family>IPAMonaPGothic</family>
+            <family>TakaoPGothic</family>
+            <family>IPAPGothic</family>
+            <family>VL PGothic</family>
+            <family>Sazanami Gothic</family>
+            <family>Kochi Gothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>MS Mincho</family>
+        <accept>
+            <family>Noto Serif CJK JP</family>
+            <family>TakaoMincho</family>
+            <family>IPAMincho</family>
+            <family>IPAMonaMincho</family>
+            <family>Sazanami Mincho</family>
+            <family>Kochi Mincho</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>MS 明朝</family>
+        <accept>
+            <family>Noto Serif CJK JP</family>
+            <family>TakaoMincho</family>
+            <family>IPAMincho</family>
+            <family>IPAMonaMincho</family>
+            <family>Sazanami Mincho</family>
+            <family>Kochi Mincho</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>AR MinchoL JIS</family>
+        <accept>
+            <family>Noto Serif CJK JP</family>
+            <family>TakaoMincho</family>
+            <family>IPAMincho</family>
+            <family>IPAMonaMincho</family>
+            <family>Sazanami Mincho</family>
+            <family>Kochi Mincho</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>MS PMincho</family>
+        <accept>
+            <family>Noto Serif CJK JP</family>
+            <family>IPAMonaPMincho</family>
+            <family>TakaoPMincho</family>
+            <family>IPAPMincho</family>
+            <family>Sazanami Mincho</family>
+            <family>Kochi Mincho</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>MS P明朝</family>
+        <accept>
+            <family>Noto Serif CJK JP</family>
+            <family>IPAMonaPMincho</family>
+            <family>TakaoPMincho</family>
+            <family>IPAPMincho</family>
+            <family>Sazanami Mincho</family>
+            <family>Kochi Mincho</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>Meiryo</family>
+        <accept>
+            <family>IPAexGothic</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>メイリオ</family>
+        <accept>
+            <family>IPAexGothic</family>
+        </accept>
+    </alias>
+<!-- Aliases for Simplified Chinese Windows fonts -->
+    <alias>
+        <family>SimSun</family>
+        <accept>
+            <family>Noto Serif CJK SC</family>
+            <family>HYSong</family>
+            <family>AR PL UMing CN</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>NSimSun</family>
+        <accept>
+            <family>Noto Serif CJK SC</family>
+            <family>HYSong</family>
+            <family>AR PL UMing CN</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>SimSun-18030</family>
+        <accept>
+            <family>Noto Serif CJK SC</family>
+            <family>HYSong</family>
+            <family>AR PL UMing CN</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>NSimSun-18030</family>
+        <accept>
+            <family>Noto Serif CJK SC</family>
+            <family>HYSong</family>
+            <family>AR PL UMing CN</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>宋体</family>
+        <accept>
+            <family>Noto Serif CJK SC</family>
+            <family>HYSong</family>
+            <family>AR PL UMing CN</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>新宋体</family>
+        <accept>
+            <family>Noto Serif CJK SC</family>
+            <family>HYSong</family>
+            <family>AR PL UMing CN</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>AR MingtiM GB</family>
+        <accept>
+            <family>Noto Serif CJK SC</family>
+            <family>HYSong</family>
+            <family>AR PL UMing CN</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>KaiTi</family>
+        <accept>
+            <family>Noto Serif CJK SC</family>
+            <family>AR PL UKai CN</family>
+            <family>AR PL ZenKai Uni</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>楷体</family>
+        <accept>
+            <family>Noto Serif CJK SC</family>
+            <family>AR PL UKai CN</family>
+            <family>AR PL ZenKai Uni</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>Microsoft YaHei</family>
+        <accept>
+            <family>Noto Sans CJK SC</family>
+            <family>WenQuanYi Micro Hei</family>
+            <family>WenQuanYi Zen Hei</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>微软雅黑</family>
+        <accept>
+            <family>Noto Sans CJK SC</family>
+            <family>WenQuanYi Micro Hei</family>
+            <family>WenQuanYi Zen Hei</family>
+        </accept>
+    </alias>
+<!-- Aliases for Traditional Chinese Windows fonts -->
+    <alias>
+        <family>MingLiU</family>
+        <accept>
+            <family>Noto Serif CJK TC</family>
+            <family>AR PL UMing TW</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>細明體</family>
+        <accept>
+            <family>Noto Serif CJK TC</family>
+            <family>AR PL UMing TW</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>PMingLiU</family>
+        <accept>
+            <family>Noto Serif CJK TC</family>
+            <family>AR PL UMing TW</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>新細明體</family>
+        <accept>
+            <family>Noto Serif CJK TC</family>
+            <family>AR PL UMing TW</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>AR MingtiM BIG-5</family>
+        <accept>
+            <family>Noto Serif CJK TC</family>
+            <family>AR PL UMing TW</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>DFKai\-SB</family>
+        <accept>
+            <family>Noto Serif CJK TC</family>
+            <family>AR PL UKai TW</family>
+            <family>AR PL ZenKai Uni</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>標楷體</family>
+        <accept>
+            <family>Noto Serif CJK TC</family>
+            <family>AR PL UKai TW</family>
+            <family>AR PL ZenKai Uni</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>Microsoft JhengHei</family>
+        <accept>
+            <family>Noto Sans CJK TC</family>
+            <family>WenQuanYi Micro Hei</family>
+            <family>WenQuanYi Zen Hei</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>微軟正黑體</family>
+        <accept>
+            <family>Noto Sans CJK TC</family>
+            <family>WenQuanYi Micro Hei</family>
+            <family>WenQuanYi Zen Hei</family>
+        </accept>
+    </alias>
+<!-- Alias for HKSCS -->
+    <alias>
+        <family>Ming (for ISO10646)</family>
+        <accept>
+            <family>AR PL UMing HK</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>MingLiU_HKSCS</family>
+        <accept>
+            <family>AR PL UMing HK</family>
+        </accept>
+    </alias>
+    <alias>
+        <family>細明體_HKSCS</family>
+        <accept>
+            <family>AR PL UMing HK</family>
+        </accept>
+    </alias>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/30-metric-aliases.conf b/etc/fonts/conf.avail/30-metric-aliases.conf
new file mode 100644 (file)
index 0000000..147fde6
--- /dev/null
@@ -0,0 +1,634 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Set substitutions for similar/metric-compatible families</description>
+
+<!--
+
+Alias similar/metric-compatible families from various sources:
+
+PostScript fonts:       URW fonts:           GUST fonts:        Windows fonts:
+======================  ==================  =================  ==================
+Helvetica               Nimbus Sans         TeX Gyre Heros
+Helvetica Narrow        Nimbus Sans Narrow  TeX Gyre Heros Cn
+Times                   Nimbus Roman        TeX Gyre Termes
+Courier                 Nimbus Mono PS      TeX Gyre Cursor
+ITC Avant Garde Gothic  URW Gothic          TeX Gyre Adventor
+ITC Bookman             URW Bookman         TeX Gyre Bonum     Bookman Old Style
+ITC Zapf Chancery       Z003                TeX Gyre Chorus
+Palatino                P052                TeX Gyre Pagella   Palatino Linotype
+New Century Schoolbook  C059                TeX Gyre Schola    Century Schoolbook
+
+Microsoft fonts:  Liberation fonts:       Google CrOS core fonts:  StarOffice fonts:  AMT fonts:
+================  ======================  =======================  =================  ==============
+Arial             Liberation Sans         Arimo                    Albany             Albany AMT
+Arial Narrow      Liberation Sans Narrow
+Times New Roman   Liberation Serif        Tinos                    Thorndale          Thorndale AMT
+Courier New       Liberation Mono         Cousine                  Cumberland         Cumberland AMT
+Cambria                                   Caladea
+Calibri                                   Carlito
+Symbol                                    SymbolNeu
+
+Microsoft fonts:  Other fonts:
+================  ============
+Georgia           Gelasio
+
+We want for each of them to fallback to any of these available,
+but in an order preferring similar designs first.  We do this in three steps:
+
+1) Alias each specific to its generic family.
+   e.g. Liberation Sans to Arial
+
+2) Weak alias each generic to the other generic of its family.
+   e.g. Arial to Helvetica
+
+3) Alias each generic to its specifics.
+   e.g. Arial to Liberation Sans, Arimo, Albany, and Albany AMT
+
+NOTE: The (URW)++ fonts mappings of generics to specifics were removed, because
+      upstream now includes them in their release of (URW)++ Core Font Set here:
+      https://github.com/ArtifexSoftware/urw-base35-fonts/tree/master/fontconfig
+-->
+
+<!-- Map specifics to generics -->
+
+       <!-- PostScript -->
+       <alias binding="same">
+         <family>Nimbus Sans L</family>
+         <default>
+         <family>Helvetica</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Nimbus Sans</family>
+         <default>
+         <family>Helvetica</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>TeX Gyre Heros</family>
+         <default>
+         <family>Helvetica</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Nimbus Sans Narrow</family>
+         <default>
+         <family>Helvetica Narrow</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>TeX Gyre Heros Cn</family>
+         <default>
+         <family>Helvetica Narrow</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Nimbus Roman No9 L</family>
+         <default>
+         <family>Times</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Nimbus Roman</family>
+         <default>
+         <family>Times</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>TeX Gyre Termes</family>
+         <default>
+         <family>Times</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Nimbus Mono L</family>
+         <default>
+         <family>Courier</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Nimbus Mono</family>
+         <default>
+         <family>Courier</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Nimbus Mono PS</family>
+         <default>
+         <family>Courier</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>TeX Gyre Cursor</family>
+         <default>
+         <family>Courier</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Avant Garde</family>
+         <default>
+         <family>ITC Avant Garde Gothic</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>URW Gothic L</family>
+         <default>
+         <family>ITC Avant Garde Gothic</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>URW Gothic</family>
+         <default>
+         <family>ITC Avant Garde Gothic</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>TeX Gyre Adventor</family>
+         <default>
+         <family>ITC Avant Garde Gothic</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Bookman</family>
+         <default>
+         <family>ITC Bookman</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>URW Bookman L</family>
+         <default>
+         <family>ITC Bookman</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Bookman URW</family>
+         <default>
+         <family>ITC Bookman</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>URW Bookman</family>
+         <default>
+         <family>ITC Bookman</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>TeX Gyre Bonum</family>
+         <default>
+         <family>ITC Bookman</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Bookman Old Style</family>
+         <default>
+         <family>ITC Bookman</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Zapf Chancery</family>
+         <default>
+         <family>ITC Zapf Chancery</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>URW Chancery L</family>
+         <default>
+         <family>ITC Zapf Chancery</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Chancery URW</family>
+         <default>
+         <family>ITC Zapf Chancery</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Z003</family>
+         <default>
+         <family>ITC Zapf Chancery</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>TeX Gyre Chorus</family>
+         <default>
+         <family>ITC Zapf Chancery</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>URW Palladio L</family>
+         <default>
+         <family>Palatino</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Palladio URW</family>
+         <default>
+         <family>Palatino</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>P052</family>
+         <default>
+         <family>Palatino</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>TeX Gyre Pagella</family>
+         <default>
+         <family>Palatino</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Palatino Linotype</family>
+         <default>
+         <family>Palatino</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Century Schoolbook L</family>
+         <default>
+         <family>New Century Schoolbook</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Century SchoolBook URW</family>
+         <default>
+         <family>New Century Schoolbook</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>C059</family>
+         <default>
+         <family>New Century Schoolbook</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>TeX Gyre Schola</family>
+         <default>
+         <family>New Century Schoolbook</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Century Schoolbook</family>
+         <default>
+         <family>New Century Schoolbook</family>
+         </default>
+       </alias>
+
+       <!-- Microsoft -->
+       <alias binding="same">
+         <family>Arimo</family>
+         <default>
+           <family>Arial</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Liberation Sans</family>
+         <default>
+         <family>Arial</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Liberation Sans Narrow</family>
+         <default>
+           <family>Arial Narrow</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Albany</family>
+         <default>
+         <family>Arial</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Albany AMT</family>
+         <default>
+         <family>Arial</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Tinos</family>
+         <default>
+           <family>Times New Roman</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Liberation Serif</family>
+         <default>
+         <family>Times New Roman</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Thorndale</family>
+         <default>
+         <family>Times New Roman</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Thorndale AMT</family>
+         <default>
+         <family>Times New Roman</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Cousine</family>
+         <default>
+           <family>Courier New</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Liberation Mono</family>
+         <default>
+         <family>Courier New</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Cumberland</family>
+         <default>
+         <family>Courier New</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Cumberland AMT</family>
+         <default>
+         <family>Courier New</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Gelasio</family>
+         <default>
+         <family>Georgia</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Caladea</family>
+         <default>
+         <family>Cambria</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>Carlito</family>
+         <default>
+         <family>Calibri</family>
+         </default>
+       </alias>
+
+       <alias binding="same">
+         <family>SymbolNeu</family>
+         <default>
+         <family>Symbol</family>
+         </default>
+  </alias>
+
+<!-- Accept the other group as fallback -->
+
+       <!-- PostScript -->
+       <alias>
+         <family>Helvetica</family>
+         <default>
+         <family>Arial</family>
+         </default>
+       </alias>
+
+       <alias>
+         <family>Helvetica Narrow</family>
+         <default>
+         <family>Arial Narrow</family>
+         </default>
+       </alias>
+
+       <alias>
+         <family>Times</family>
+         <default>
+         <family>Times New Roman</family>
+         </default>
+       </alias>
+
+       <alias>
+         <family>Courier</family>
+         <default>
+         <family>Courier New</family>
+         </default>
+       </alias>
+
+       <!-- Microsoft -->
+       <alias>
+         <family>Arial</family>
+         <default>
+         <family>Helvetica</family>
+         </default>
+       </alias>
+
+       <alias>
+         <family>Arial Narrow</family>
+         <default>
+         <family>Helvetica Narrow</family>
+         </default>
+       </alias>
+
+       <alias>
+         <family>Times New Roman</family>
+         <default>
+         <family>Times</family>
+         </default>
+       </alias>
+
+       <alias>
+         <family>Courier New</family>
+         <default>
+         <family>Courier</family>
+         </default>
+       </alias>
+
+<!-- Map generics to specifics -->
+
+       <!-- PostScript -->
+       <alias binding="same">
+         <family>Helvetica</family>
+         <accept>
+         <family>TeX Gyre Heros</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>Helvetica Narrow</family>
+         <accept>
+         <family>TeX Gyre Heros Cn</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>Times</family>
+         <accept>
+         <family>TeX Gyre Termes</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>Courier</family>
+         <accept>
+         <family>TeX Gyre Cursor</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>ITC Avant Garde Gothic</family>
+         <accept>
+         <family>TeX Gyre Adventor</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>ITC Bookman</family>
+         <accept>
+         <family>Bookman Old Style</family>
+         <family>TeX Gyre Bonum</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>ITC Zapf Chancery</family>
+         <accept>
+         <family>TeX Gyre Chorus</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>Palatino</family>
+         <accept>
+         <family>Palatino Linotype</family>
+         <family>TeX Gyre Pagella</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>New Century Schoolbook</family>
+         <accept>
+         <family>Century Schoolbook</family>
+         <family>TeX Gyre Schola</family>
+         </accept>
+       </alias>
+
+       <!-- Microsoft -->
+       <alias binding="same">
+         <family>Arial</family>
+         <accept>
+           <family>Arimo</family>
+           <family>Liberation Sans</family>
+           <family>Albany</family>
+           <family>Albany AMT</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>Arial Narrow</family>
+         <accept>
+           <family>Liberation Sans Narrow</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>Times New Roman</family>
+         <accept>
+           <family>Tinos</family>
+           <family>Liberation Serif</family>
+           <family>Thorndale</family>
+           <family>Thorndale AMT</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>Courier New</family>
+         <accept>
+           <family>Cousine</family>
+           <family>Liberation Mono</family>
+           <family>Cumberland</family>
+           <family>Cumberland AMT</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>Georgia</family>
+         <accept>
+           <family>Gelasio</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>Cambria</family>
+         <accept>
+           <family>Caladea</family>
+         </accept>
+       </alias>
+
+       <alias binding="same">
+         <family>Calibri</family>
+         <accept>
+           <family>Carlito</family>
+         </accept>
+  </alias>
+
+       <alias binding="same">
+         <family>Symbol</family>
+         <accept>
+           <family>SymbolNeu</family>
+         </accept>
+  </alias>
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/40-nonlatin.conf b/etc/fonts/conf.avail/40-nonlatin.conf
new file mode 100644 (file)
index 0000000..a70a4ad
--- /dev/null
@@ -0,0 +1,244 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Set substitutions for non-Latin fonts</description>
+<!--
+  Mark common families with their generics so we'll get
+  something reasonable
+-->
+
+<!--
+  Serif faces
+ -->
+       <alias>
+               <family>Nazli</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Lotoos</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Mitra</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Ferdosi</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Badr</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Zar</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Titr</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Jadid</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Kochi Mincho</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>AR PL SungtiL GB</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>AR PL Mingti2L Big5</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>MS 明朝</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>NanumMyeongjo</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>UnBatang</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Baekmuk Batang</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>MgOpen Canonica</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Sazanami Mincho</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>AR PL ZenKai Uni</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>ZYSong18030</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>FreeSerif</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>SimSun</family>
+               <default><family>serif</family></default>
+       </alias>
+<!--
+  Sans-serif faces
+ -->
+       <alias>
+               <family>Arshia</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Elham</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Farnaz</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Nasim</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Sina</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Roya</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Koodak</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Terafik</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Kochi Gothic</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>AR PL KaitiM GB</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>AR PL KaitiM Big5</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>MS ゴシック</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>NanumGothic</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>UnDotum</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Baekmuk Dotum</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>MgOpen Moderna</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>MgOpen Modata</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>MgOpen Cosmetica</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Sazanami Gothic</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>AR PL ShanHeiSun Uni</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>ZYSong18030</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>FreeSans</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+<!--
+  Monospace faces
+ -->
+       <alias>
+               <family>NSimSun</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>ZYSong18030</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>NanumGothicCoding</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>FreeMono</family>
+               <default><family>monospace</family></default>
+       </alias>
+
+<!--
+  Fantasy faces
+ -->
+       <alias>
+               <family>Homa</family>
+               <default><family>fantasy</family></default>
+       </alias>
+       <alias>
+               <family>Kamran</family>
+               <default><family>fantasy</family></default>
+       </alias>
+       <alias>
+               <family>Fantezi</family>
+               <default><family>fantasy</family></default>
+       </alias>
+       <alias>
+               <family>Tabassom</family>
+               <default><family>fantasy</family></default>
+       </alias>
+
+<!--
+  Cursive faces
+ -->
+       <alias>
+               <family>IranNastaliq</family>
+               <default><family>cursive</family></default>
+       </alias>
+       <alias>
+               <family>Nafees Nastaleeq</family>
+               <default><family>cursive</family></default>
+       </alias>
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/45-generic.conf b/etc/fonts/conf.avail/45-generic.conf
new file mode 100644 (file)
index 0000000..e8d1978
--- /dev/null
@@ -0,0 +1,136 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Set substitutions for emoji/math fonts</description>
+
+<!-- Keep in sync with 60-generic.conf -->
+
+<!-- Emoji -->
+
+       <!-- System emoji -->
+       <alias binding="same">
+               <family>Noto Color Emoji</family> <!-- Google -->
+               <default><family>emoji</family></default>
+       </alias>
+       <alias binding="same">
+               <family>Apple Color Emoji</family> <!-- Apple -->
+               <default><family>emoji</family></default>
+       </alias>
+       <alias binding="same">
+               <family>Segoe UI Emoji</family> <!-- Microsoft -->
+               <default><family>emoji</family></default>
+       </alias>
+       <alias binding="same">
+               <family>Twitter Color Emoji</family> <!-- Twitter -->
+               <default><family>emoji</family></default>
+       </alias>
+       <alias binding="same">
+               <family>EmojiOne Mozilla</family> <!-- Mozilla -->
+               <default><family>emoji</family></default>
+       </alias>
+       <!-- Third-party emoji -->
+       <alias binding="same">
+               <family>Emoji Two</family>
+               <default><family>emoji</family></default>
+       </alias>
+       <alias binding="same">
+               <family>Emoji One</family>
+               <default><family>emoji</family></default>
+       </alias>
+       <!-- B&W -->
+       <alias binding="same">
+               <family>Noto Emoji</family> <!-- Google -->
+               <default><family>emoji</family></default>
+       </alias>
+       <alias binding="same">
+               <family>Android Emoji</family> <!-- Google -->
+               <default><family>emoji</family></default>
+       </alias>
+
+       <!-- Add language for emoji, to match other emoji fonts. -->
+       <match>
+               <test name="family">
+                       <string>emoji</string>
+               </test>
+               <edit name="lang" mode="prepend">
+                       <string>und-zsye</string>
+               </edit>
+       </match>
+
+       <match>
+               <test name="lang">
+                       <string>und-zsye</string>
+               </test>
+               <test qual="all" name="family" compare="not_eq">
+                       <string>emoji</string>
+               </test>
+
+               <!-- Add generic family. -->
+               <edit name="family" mode="append" binding="strong">
+                       <string>emoji</string>
+               </edit>
+       </match>
+
+
+<!-- Math -->
+
+       <!-- https://en.wikipedia.org/wiki/Category:Mathematical_OpenType_typefaces -->
+       <alias binding="same">
+               <family>XITS Math</family> <!-- Khaled Hosny -->
+               <default><family>math</family></default>
+       </alias>
+       <alias binding="same">
+               <family>STIX Two Math</family> <!-- AMS -->
+               <default><family>math</family></default>
+       </alias>
+       <alias binding="same">
+               <family>Cambria Math</family> <!-- Microsoft -->
+               <default><family>math</family></default>
+       </alias>
+       <alias binding="same">
+               <family>Latin Modern Math</family> <!-- TeX -->
+               <default><family>math</family></default>
+       </alias>
+       <alias binding="same">
+               <family>Minion Math</family> <!-- Adobe -->
+               <default><family>math</family></default>
+       </alias>
+       <alias binding="same">
+               <family>Lucida Math</family> <!-- Adobe -->
+               <default><family>math</family></default>
+       </alias>
+       <alias binding="same">
+               <family>Asana Math</family>
+               <default><family>math</family></default>
+       </alias>
+
+       <!-- Add language for math, to match other math fonts. -->
+       <match>
+               <test name="family">
+                       <string>math</string>
+               </test>
+               <edit name="lang" mode="prepend">
+                       <string>und-zmth</string>
+               </edit>
+       </match>
+
+       <match>
+               <test name="lang">
+                       <string>und-zmth</string>
+               </test>
+               <test qual="all" name="family" compare="not_eq">
+                       <string>math</string>
+               </test>
+
+               <!-- Add generic family -->
+               <edit name="family" mode="append" binding="strong">
+                       <string>math</string>
+               </edit>
+       </match>
+
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/45-latin.conf b/etc/fonts/conf.avail/45-latin.conf
new file mode 100644 (file)
index 0000000..a9240b9
--- /dev/null
@@ -0,0 +1,278 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Set substitutions for Latin fonts</description>
+<!--
+  Mark common families with their generics so we'll get
+  something reasonable
+-->
+
+<!--
+  Serif faces
+ -->
+       <alias>
+               <family>Bitstream Vera Serif</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Cambria</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Constantia</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>DejaVu Serif</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Elephant</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Garamond</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Georgia</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Liberation Serif</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Luxi Serif</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>MS Serif</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Nimbus Roman No9 L</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Nimbus Roman</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Palatino Linotype</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Thorndale AMT</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Thorndale</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Times New Roman</family>
+               <default><family>serif</family></default>
+       </alias>
+       <alias>
+               <family>Times</family>
+               <default><family>serif</family></default>
+       </alias>
+<!--
+  Sans-serif faces
+ -->
+       <alias>
+               <family>Albany AMT</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Albany</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Arial Unicode MS</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Arial</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Bitstream Vera Sans</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Britannic</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Calibri</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Candara</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Century Gothic</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Corbel</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>DejaVu Sans</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Helvetica</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Haettenschweiler</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Liberation Sans</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>MS Sans Serif</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Nimbus Sans L</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Nimbus Sans</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Luxi Sans</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Tahoma</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Trebuchet MS</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Twentieth Century</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+       <alias>
+               <family>Verdana</family>
+               <default><family>sans-serif</family></default>
+       </alias>
+<!--
+  Monospace faces
+ -->
+       <alias>
+               <family>Andale Mono</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Bitstream Vera Sans Mono</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Consolas</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Courier New</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Courier</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Cumberland AMT</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Cumberland</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>DejaVu Sans Mono</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Fixedsys</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Inconsolata</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Liberation Mono</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Luxi Mono</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Nimbus Mono L</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Nimbus Mono</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Nimbus Mono PS</family>
+               <default><family>monospace</family></default>
+       </alias>
+       <alias>
+               <family>Terminal</family>
+               <default><family>monospace</family></default>
+       </alias>
+<!--
+  Fantasy faces
+ -->
+       <alias>
+               <family>Bauhaus Std</family>
+               <default><family>fantasy</family></default>
+       </alias>
+       <alias>
+               <family>Cooper Std</family>
+               <default><family>fantasy</family></default>
+       </alias>
+       <alias>
+               <family>Copperplate Gothic Std</family>
+               <default><family>fantasy</family></default>
+       </alias>
+       <alias>
+               <family>Impact</family>
+               <default><family>fantasy</family></default>
+       </alias>
+<!--
+  Cursive faces
+  -->
+       <alias>
+               <family>Comic Sans MS</family>
+               <default><family>cursive</family></default>
+       </alias>
+       <alias>
+               <family>ITC Zapf Chancery Std</family>
+               <default><family>cursive</family></default>
+       </alias>
+       <alias>
+               <family>Zapfino</family>
+               <default><family>cursive</family></default>
+       </alias>
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/49-sansserif.conf b/etc/fonts/conf.avail/49-sansserif.conf
new file mode 100644 (file)
index 0000000..8b587b0
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Add sans-serif to the family when no generic name</description>
+<!--
+  If the font still has no generic name, add sans-serif
+ -->
+       <match target="pattern">
+               <test qual="all" name="family" compare="not_eq">
+                       <string>sans-serif</string>
+               </test>
+               <test qual="all" name="family" compare="not_eq">
+                       <string>serif</string>
+               </test>
+               <test qual="all" name="family" compare="not_eq">
+                       <string>monospace</string>
+               </test>
+               <edit name="family" mode="append_last">
+                       <string>sans-serif</string>
+               </edit>
+       </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/50-user.conf b/etc/fonts/conf.avail/50-user.conf
new file mode 100644 (file)
index 0000000..681ed6d
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Load per-user customization files</description>
+       <!--
+           Load per-user customization files where stored on XDG Base Directory
+           specification compliant places. it should be usually:
+             $HOME/.config/fontconfig/conf.d
+             $HOME/.config/fontconfig/fonts.conf
+       -->
+       <include ignore_missing="yes" prefix="xdg">fontconfig/conf.d</include>
+       <include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>
+       <!-- the following elements will be removed in the future -->
+       <include ignore_missing="yes" deprecated="yes">~/.fonts.conf.d</include>
+       <include ignore_missing="yes" deprecated="yes">~/.fonts.conf</include>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/51-local.conf b/etc/fonts/conf.avail/51-local.conf
new file mode 100644 (file)
index 0000000..885c357
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Load local customization file</description>
+       <!-- Load local system customization file -->
+       <include ignore_missing="yes">local.conf</include>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/53-monospace-lcd-filter.conf b/etc/fonts/conf.avail/53-monospace-lcd-filter.conf
new file mode 100644 (file)
index 0000000..ca80195
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<!-- conf.d/monospace-lcd-filter.conf -->
+<fontconfig>
+<!--  Use legacy LCD filter on smaller Monospace fonts -->
+  <match target="pattern">
+    <test name="family">
+      <string>DejaVu Sans Mono</string>
+    </test>
+    <test name="pixelsize" compare="less_eq">
+      <double>12.0</double>
+    </test>
+
+    <edit name="lcd_filter" mode="append">
+      <const>lcdlegacy</const>
+    </edit>
+    <edit name="hintstyle" mode="append">
+      <const>hintfull</const>
+    </edit>
+  </match>
+  <match target="pattern">
+    <test name="family">
+      <string>Bitstream Vera Sans Mono</string>
+    </test>
+    <test name="pixelsize" compare="less_eq">
+      <double>12.0</double>
+    </test>
+
+    <edit name="lcd_filter" mode="append">
+      <const>lcdlegacy</const>
+    </edit>
+    <edit name="hintstyle" mode="append">
+      <const>hintfull</const>
+    </edit>
+  </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/56-language-selector-ar.conf b/etc/fonts/conf.avail/56-language-selector-ar.conf
new file mode 100644 (file)
index 0000000..6a1f3e7
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+    <match target="pattern">
+        <test name="lang">
+            <string>ar</string>
+        </test>
+        <test qual="any" name="family">
+            <string>sans-serif</string>
+        </test>
+        <edit name="family" mode="prepend">
+            <string>Noto Sans</string>
+            <string>Noto Sans Arabic UI</string>
+        </edit>
+    </match>
+    <match target="pattern">
+        <test name="lang">
+            <string>ar</string>
+        </test>
+        <test qual="any" name="family">
+            <string>serif</string>
+        </test>
+        <edit name="family" mode="prepend">
+            <string>Noto Serif</string>
+            <string>Noto Naskh Arabic</string>
+        </edit>
+    </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/57-dejavu-sans-mono.conf b/etc/fonts/conf.avail/57-dejavu-sans-mono.conf
new file mode 100644 (file)
index 0000000..cc42561
--- /dev/null
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<!-- /etc/fonts/conf.d/57-dejavu-sans-mono.conf
+
+     Define aliasing and other fontconfig settings for
+     DejaVu Sans Mono.
+
+     © 2006-2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
+-->
+<fontconfig>
+  <!-- Font substitution rules -->
+  <alias binding="same">
+    <family>Bepa Mono</family>
+    <accept>
+      <family>DejaVu Sans Mono</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bitstream Prima Sans Mono</family>
+    <accept>
+      <family>DejaVu Sans Mono</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bitstream Vera Sans Mono</family>
+    <accept>
+      <family>DejaVu Sans Mono</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>DejaVu LGC Sans Mono</family>
+    <accept>
+      <family>DejaVu Sans Mono</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Olwen Sans Mono</family>
+    <accept>
+      <family>DejaVu Sans Mono</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>SUSE Sans Mono</family>
+    <accept>
+      <family>DejaVu Sans Mono</family>
+    </accept>
+  </alias>
+  <!-- Generic name assignment -->
+  <alias>
+    <family>DejaVu Sans Mono</family>
+    <default>
+      <family>monospace</family>
+    </default>
+  </alias>
+  <!-- Generic name aliasing -->
+  <alias>
+    <family>monospace</family>
+    <prefer>
+      <family>DejaVu Sans Mono</family>
+    </prefer>
+  </alias>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/57-dejavu-sans.conf b/etc/fonts/conf.avail/57-dejavu-sans.conf
new file mode 100644 (file)
index 0000000..565cab5
--- /dev/null
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<!-- /etc/fonts/conf.d/57-dejavu-sans.conf
+
+     Define aliasing and other fontconfig settings for
+     DejaVu Sans.
+
+     © 2006-2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
+-->
+<fontconfig>
+  <!-- Font substitution rules -->
+  <alias binding="same">
+    <family>Arev Sans</family>
+    <accept>
+      <family>DejaVu Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bepa</family>
+    <accept>
+      <family>DejaVu Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bitstream Prima Sans</family>
+    <accept>
+      <family>DejaVu Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bitstream Vera Sans</family>
+    <accept>
+      <family>DejaVu Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>DejaVu LGC Sans</family>
+    <accept>
+      <family>DejaVu Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Hunky Sans</family>
+    <accept>
+      <family>DejaVu Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Olwen Sans</family>
+    <accept>
+      <family>DejaVu Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>SUSE Sans</family>
+    <accept>
+      <family>DejaVu Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Verajja</family>
+    <accept>
+      <family>DejaVu Sans</family>
+    </accept>
+  </alias>
+  <!-- In case VerajjaPDA stops declaring itself as Verajja -->
+  <alias binding="same">
+    <family>VerajjaPDA</family>
+    <accept>
+      <family>DejaVu Sans</family>
+    </accept>
+  </alias>
+  <!-- Generic name assignment -->
+  <alias>
+    <family>DejaVu Sans</family>
+    <default>
+      <family>sans-serif</family>
+    </default>
+  </alias>
+  <!-- Generic name aliasing -->
+  <alias>
+    <family>sans-serif</family>
+    <prefer>
+      <family>DejaVu Sans</family>
+    </prefer>
+  </alias>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/57-dejavu-serif.conf b/etc/fonts/conf.avail/57-dejavu-serif.conf
new file mode 100644 (file)
index 0000000..a922e9b
--- /dev/null
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<!-- /etc/fonts/conf.d/57-dejavu-serif.conf
+
+     Define aliasing and other fontconfig settings for
+     DejaVu Serif.
+
+     © 2006-2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
+-->
+<fontconfig>
+  <!-- Font substitution rules -->
+  <alias binding="same">
+    <family>Bitstream Prima Serif</family>
+    <accept>
+      <family>DejaVu Serif</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bitstream Vera Serif</family>
+    <accept>
+      <family>DejaVu Serif</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>DejaVu LGC Serif</family>
+    <accept>
+      <family>DejaVu Serif</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Hunky Serif</family>
+    <accept>
+      <family>DejaVu Serif</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Olwen Serif</family>
+    <accept>
+      <family>DejaVu Serif</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>SUSE Serif</family>
+    <accept>
+      <family>DejaVu Serif</family>
+    </accept>
+  </alias>
+  <!-- In case Verajja Serif stops declaring itself as DejaVu Serif -->
+  <alias binding="same">
+    <family>Verajja Serif</family>
+    <accept>
+      <family>DejaVu Serif</family>
+    </accept>
+  </alias>
+  <!-- Generic name assignment -->
+  <alias>
+    <family>DejaVu Serif</family>
+    <default>
+      <family>serif</family>
+    </default>
+  </alias>
+  <!-- Generic name aliasing -->
+  <alias>
+    <family>serif</family>
+    <prefer>
+      <family>DejaVu Serif</family>
+    </prefer>
+  </alias>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/58-dejavu-lgc-sans-mono.conf b/etc/fonts/conf.avail/58-dejavu-lgc-sans-mono.conf
new file mode 100644 (file)
index 0000000..9d0a8b2
--- /dev/null
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<!-- /etc/fonts/conf.d/58-dejavu-lgc-sans-mono.conf
+
+     Define aliasing and other fontconfig settings for
+     DejaVu LGC Sans Mono.
+
+     © 2006-2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
+-->
+<fontconfig>
+  <!-- Font substitution rules -->
+  <alias binding="same">
+    <family>Bepa Mono</family>
+    <accept>
+      <family>DejaVu LGC Sans Mono</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bitstream Prima Sans Mono</family>
+    <accept>
+      <family>DejaVu LGC Sans Mono</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bitstream Vera Sans Mono</family>
+    <accept>
+      <family>DejaVu LGC Sans Mono</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>DejaVu Sans Mono</family>
+    <accept>
+      <family>DejaVu LGC Sans Mono</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Olwen Sans Mono</family>
+    <accept>
+      <family>DejaVu LGC Sans Mono</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>SUSE Sans Mono</family>
+    <accept>
+      <family>DejaVu LGC Sans Mono</family>
+    </accept>
+  </alias>
+  <!-- Generic name assignment -->
+  <alias>
+    <family>DejaVu LGC Sans Mono</family>
+    <default>
+      <family>monospace</family>
+    </default>
+  </alias>
+  <!-- Generic name aliasing -->
+  <alias>
+    <family>monospace</family>
+    <prefer>
+      <family>DejaVu LGC Sans Mono</family>
+    </prefer>
+  </alias>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/58-dejavu-lgc-sans.conf b/etc/fonts/conf.avail/58-dejavu-lgc-sans.conf
new file mode 100644 (file)
index 0000000..decd2a3
--- /dev/null
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<!-- /etc/fonts/conf.d/58-dejavu-lgc-sans.conf
+
+     Define aliasing and other fontconfig settings for
+     DejaVu LGC Sans.
+
+     © 2006-2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
+-->
+<fontconfig>
+  <!-- Font substitution rules -->
+  <alias binding="same">
+    <family>Arev Sans</family>
+    <accept>
+      <family>DejaVu LGC Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bepa</family>
+    <accept>
+      <family>DejaVu LGC Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bitstream Prima Sans</family>
+    <accept>
+      <family>DejaVu LGC Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bitstream Vera Sans</family>
+    <accept>
+      <family>DejaVu LGC Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>DejaVu Sans</family>
+    <accept>
+      <family>DejaVu LGC Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Hunky Sans</family>
+    <accept>
+      <family>DejaVu LGC Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Olwen Sans</family>
+    <accept>
+      <family>DejaVu LGC Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>SUSE Sans</family>
+    <accept>
+      <family>DejaVu LGC Sans</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Verajja</family>
+    <accept>
+      <family>DejaVu LGC Sans</family>
+    </accept>
+  </alias>
+  <!-- In case VerajjaPDA stops declaring itself as Verajja -->
+  <alias binding="same">
+    <family>VerajjaPDA</family>
+    <accept>
+      <family>DejaVu LGC Sans</family>
+    </accept>
+  </alias>
+  <!-- Generic name assignment -->
+  <alias>
+    <family>DejaVu LGC Sans</family>
+    <default>
+      <family>sans-serif</family>
+    </default>
+  </alias>
+  <!-- Generic name aliasing -->
+  <alias>
+    <family>sans-serif</family>
+    <prefer>
+      <family>DejaVu LGC Sans</family>
+    </prefer>
+  </alias>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/58-dejavu-lgc-serif.conf b/etc/fonts/conf.avail/58-dejavu-lgc-serif.conf
new file mode 100644 (file)
index 0000000..01045e8
--- /dev/null
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE fontconfig SYSTEM "../fonts.dtd">
+<!-- /etc/fonts/conf.d/58-dejavu-lgc-serif.conf
+
+     Define aliasing and other fontconfig settings for
+     DejaVu LGC Serif.
+
+     © 2006-2008 Nicolas Mailhot <nicolas.mailhot at laposte.net>
+-->
+<fontconfig>
+  <!-- Font substitution rules -->
+  <alias binding="same">
+    <family>Bitstream Prima Serif</family>
+    <accept>
+      <family>DejaVu LGC Serif</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Bitstream Vera Serif</family>
+    <accept>
+      <family>DejaVu LGC Serif</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>DejaVu Serif</family>
+    <accept>
+      <family>DejaVu LGC Serif</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Hunky Serif</family>
+    <accept>
+      <family>DejaVu LGC Serif</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>Olwen Serif</family>
+    <accept>
+      <family>DejaVu LGC Serif</family>
+    </accept>
+  </alias>
+  <alias binding="same">
+    <family>SUSE Serif</family>
+    <accept>
+      <family>DejaVu LGC Serif</family>
+    </accept>
+  </alias>
+  <!-- In case Verajja Serif stops declaring itself as DejaVu Serif -->
+  <alias binding="same">
+    <family>Verajja Serif</family>
+    <accept>
+      <family>DejaVu LGC Serif</family>
+    </accept>
+  </alias>
+  <!-- Generic name assignment -->
+  <alias>
+    <family>DejaVu LGC Serif</family>
+    <default>
+      <family>serif</family>
+    </default>
+  </alias>
+  <!-- Generic name aliasing -->
+  <alias>
+    <family>serif</family>
+    <prefer>
+      <family>DejaVu LGC Serif</family>
+    </prefer>
+  </alias>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/60-generic.conf b/etc/fonts/conf.avail/60-generic.conf
new file mode 100644 (file)
index 0000000..be7b52b
--- /dev/null
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Set preferable fonts for emoji/math fonts</description>
+<!-- Keep in sync with 45-generic.conf -->
+
+<!-- Emoji -->
+
+       <!-- Prefer to match color emoji font. -->
+       <match>
+               <test name="lang">
+                       <string>und-zsye</string>
+               </test>
+               <test qual="all" name="color" compare="not_eq">
+                       <bool>true</bool>
+               </test>
+               <test qual="all" name="color" compare="not_eq">
+                       <bool>false</bool>
+               </test>
+               <edit name="color" mode="append">
+                       <bool>true</bool>
+               </edit>
+       </match>
+
+       <!-- TODO
+        ! Match on "color" and alias B&W ones first if no color is requested.
+        ! That's "hard" because <alias> doesn't work in match and needs to be
+        ! expanded to its non-sugar form.
+        !-->
+       <alias binding="same">
+               <family>emoji</family>
+               <prefer>
+                       <!-- System fonts -->
+                       <family>Noto Color Emoji</family> <!-- Google -->
+                       <family>Apple Color Emoji</family> <!-- Apple -->
+                       <family>Segoe UI Emoji</family> <!-- Microsoft -->
+                       <family>Twitter Color Emoji</family> <!-- Twitter -->
+                       <family>EmojiOne Mozilla</family> <!-- Mozilla -->
+                       <!-- Third-Party fonts -->
+                       <family>Emoji Two</family>
+                       <family>Emoji One</family>
+                       <!-- Non-color -->
+                       <family>Noto Emoji</family> <!-- Google -->
+                       <family>Android Emoji</family> <!-- Google -->
+               </prefer>
+       </alias>
+
+<!-- Math -->
+       <alias binding="same">
+               <!-- https://en.wikipedia.org/wiki/Category:Mathematical_OpenType_typefaces -->
+               <family>math</family>
+               <prefer>
+                       <family>XITS Math</family> <!-- Khaled Hosny -->
+                       <family>STIX Two Math</family> <!-- AMS -->
+                       <family>Cambria Math</family> <!-- Microsoft -->
+                       <family>Latin Modern Math</family> <!-- TeX -->
+                       <family>Minion Math</family> <!-- Adobe -->
+                       <family>Lucida Math</family> <!-- Adobe -->
+                       <family>Asana Math</family>
+               </prefer>
+       </alias>
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/60-latin.conf b/etc/fonts/conf.avail/60-latin.conf
new file mode 100644 (file)
index 0000000..5c081e4
--- /dev/null
@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Set preferable fonts for Latin</description>
+       <alias>
+               <family>serif</family>
+               <prefer>
+                       <family>DejaVu Serif</family>
+                       <family>Bitstream Vera Serif</family>
+                       <family>Times New Roman</family>
+                       <family>Thorndale AMT</family>
+                       <family>Luxi Serif</family>
+                       <family>Nimbus Roman No9 L</family>
+                       <family>Nimbus Roman</family>
+                       <family>Times</family>
+               </prefer>
+       </alias>
+       <alias>
+               <family>sans-serif</family>
+               <prefer>
+                       <family>DejaVu Sans</family>
+                       <family>Bitstream Vera Sans</family>
+                       <family>Verdana</family>
+                       <family>Arial</family>
+                       <family>Albany AMT</family>
+                       <family>Luxi Sans</family>
+                       <family>Nimbus Sans L</family>
+                       <family>Nimbus Sans</family>
+                       <family>Helvetica</family>
+                       <family>Lucida Sans Unicode</family>
+                       <family>BPG Glaho International</family> <!-- lat,cyr,arab,geor -->
+                       <family>Tahoma</family> <!-- lat,cyr,greek,heb,arab,thai -->
+               </prefer>
+       </alias>
+       <alias>
+               <family>monospace</family>
+               <prefer>
+                       <family>DejaVu Sans Mono</family>
+                       <family>Bitstream Vera Sans Mono</family>
+                       <family>Inconsolata</family>
+                       <family>Andale Mono</family>
+                       <family>Courier New</family>
+                       <family>Cumberland AMT</family>
+                       <family>Luxi Mono</family>
+                       <family>Nimbus Mono L</family>
+                       <family>Nimbus Mono</family>
+                       <family>Nimbus Mono PS</family>
+                       <family>Courier</family>
+               </prefer>
+       </alias>
+<!--
+  Fantasy faces
+ -->
+       <alias>
+               <family>fantasy</family>
+               <prefer>
+                       <family>Impact</family>
+                       <family>Copperplate Gothic Std</family>
+                       <family>Cooper Std</family>
+                       <family>Bauhaus Std</family>
+               </prefer>
+       </alias>
+<!--
+  Cursive faces
+  -->
+       <alias>
+               <family>cursive</family>
+               <prefer>
+                       <family>ITC Zapf Chancery Std</family>
+                       <family>Zapfino</family>
+                       <family>Comic Sans MS</family>
+               </prefer>
+       </alias>
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/64-language-selector-prefer.conf b/etc/fonts/conf.avail/64-language-selector-prefer.conf
new file mode 100644 (file)
index 0000000..0cffddb
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+       <alias>
+               <family>sans-serif</family>
+               <prefer>
+                       <family>Noto Sans CJK JP</family>
+                       <family>Noto Sans CJK KR</family>
+                       <family>Noto Sans CJK SC</family>
+                       <family>Noto Sans CJK TC</family>
+                       <family>Noto Sans CJK HK</family>
+                       <family>Lohit Devanagari</family>
+               </prefer>
+       </alias>
+       <alias>
+               <family>serif</family>
+               <prefer>
+                       <family>Noto Serif CJK JP</family>
+                       <family>Noto Serif CJK KR</family>
+                       <family>Noto Serif CJK SC</family>
+                       <family>Noto Serif CJK TC</family>
+                       <family>Lohit Devanagari</family>
+               </prefer>
+       </alias>
+       <alias>
+               <family>monospace</family>
+               <prefer>
+                       <family>Noto Sans Mono CJK JP</family>
+                       <family>Noto Sans Mono CJK KR</family>
+                       <family>Noto Sans Mono CJK SC</family>
+                       <family>Noto Sans Mono CJK TC</family>
+                       <family>Noto Sans Mono CJK HK</family>
+               </prefer>
+       </alias>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/65-fonts-persian.conf b/etc/fonts/conf.avail/65-fonts-persian.conf
new file mode 100644 (file)
index 0000000..5591486
--- /dev/null
@@ -0,0 +1,423 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<!--
+  fonts-persian.conf
+  To configure Persian fonts from The FarsiWeb Project.
+
+  Copyright (C) 2005  Sharif FarsiWeb, Inc. <license@farsiweb.info>
+
+  Permission to use, copy, modify, distribute, and sell this software and its
+  documentation for any purpose is hereby granted without fee, provided that
+  the above copyright notice appear in all copies and that both that
+  copyright notice and this permission notice appear in supporting
+  documentation, and that the name of Sharif FarsiWeb, Inc. not be used in
+  advertising or publicity pertaining to distribution of the software without
+  specific, written prior permission.  Sharif FarsiWeb, Inc. makes no
+  representations about the suitability of this software for any purpose.  It
+  is provided "as is" without express or implied warranty.
+
+  SHARIF FARSIWEB, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+  EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+  PERFORMANCE OF THIS SOFTWARE.
+
+  ChangeLog:
+    2005-04-03  Behdad Esfahbod:  Initial revision.
+    2005-10-09  Behdad Esfahbod:  Turned off back-slant and Tahoma sections.
+    2005-11-30  Behdad Esfahbod:  Set Titr susbtitution size to 24 points.
+    2008       Behdad Esfahbod:  Cleanup.  Add fantasy and cursive.
+  -->
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+
+
+<!-- Deprecated fonts are discouraged -->
+
+       <!-- Nesf[2] is officially deprecated and has problematic tables -->
+       <alias binding="same">
+         <family>Nesf</family>
+         <accept><family>Nesf2</family></accept>
+       </alias>
+       <alias binding="same">
+         <family>Nesf2</family>
+         <accept><family>Persian_sansserif_default</family></accept>
+       </alias>
+
+<!-- Name changes and spelling variant aliases -->
+
+       <alias binding="same">
+         <family>Nazanin</family>
+         <accept><family>Nazli</family></accept>
+       </alias>
+       <alias binding="same">
+         <family>Lotus</family>
+         <accept><family>Lotoos</family></accept>
+       </alias>
+       <alias binding="same">
+         <family>Yaqut</family>
+         <accept><family>Yaghoot</family></accept>
+       </alias>
+       <alias binding="same">
+         <family>Yaghut</family>
+         <accept><family>Yaghoot</family></accept>
+       </alias>
+       <alias binding="same">
+         <family>Traffic</family>
+         <accept><family>Terafik</family></accept>
+       </alias>
+       <alias binding="same">
+         <family>Ferdowsi</family>
+         <accept><family>Ferdosi</family></accept>
+       </alias>
+       <alias binding="same">
+         <family>Fantezy</family>
+         <accept><family>Fantezi</family></accept>
+       </alias>
+
+
+<!-- Classify fonts. -->
+
+       <!-- Persian_title class -->
+       <alias binding="same">
+         <family>Jadid</family>
+         <accept><family>Persian_title</family></accept>
+       </alias>
+       <alias binding="same">
+         <family>Titr</family>
+         <accept><family>Persian_title</family></accept>
+       </alias>
+
+       <!-- Persian_fantasy class -->
+       <alias binding="same">
+         <family>Kamran</family>
+         <accept>
+         <family>Persian_fantasy</family>
+         <family>Homa</family>
+         </accept>
+       </alias>
+       <alias binding="same">
+         <family>Homa</family>
+         <accept>
+         <family>Persian_fantasy</family>
+         <family>Kamran</family>
+         </accept>
+       </alias>
+       <alias binding="same">
+         <family>Fantezi</family>
+         <accept><family>Persian_fantasy</family></accept>
+       </alias>
+       <alias binding="same">
+         <family>Tabassom</family>
+         <accept><family>Persian_fantasy</family></accept>
+       </alias>
+
+       <!-- Persian_square class -->
+       <alias binding="same">
+         <family>Arshia</family>
+         <accept><family>Persian_square</family></accept>
+       </alias>
+       <alias binding="same">
+         <family>Nasim</family>
+         <accept><family>Persian_square</family></accept>
+       </alias>
+       <alias binding="same">
+         <family>Elham</family>
+         <accept>
+         <family>Persian_square</family>
+         <family>Farnaz</family>
+         </accept>
+       </alias>
+       <alias binding="same">
+         <family>Farnaz</family>
+         <accept>
+         <family>Persian_square</family>
+         <family>Elham</family>
+         </accept>
+       </alias>
+       <alias binding="same">
+         <family>Sina</family>
+         <accept><family>Persian_square</family></accept>
+       </alias>
+
+<!-- Font ordering per class -->
+
+       <!-- Persian_title class -->
+       <alias binding="same">
+         <family>Persian_title</family>
+         <accept>
+         <family>Titr</family>
+         <family>Jadid</family>
+         <family>Persian_serif</family>
+         </accept>
+       </alias>
+
+       <!-- Persian_fantasy class -->
+       <alias binding="same">
+         <family>Persian_fantasy</family>
+         <accept>
+         <family>Homa</family>
+         <family>Kamran</family>
+         <family>Fantezi</family>
+         <family>Tabassom</family>
+         <family>Persian_square</family>
+         </accept>
+       </alias>
+
+       <!-- Persian_square class -->
+       <alias binding="same">
+         <family>Persian_square</family>
+         <accept>
+         <family>Arshia</family>
+         <family>Elham</family>
+         <family>Farnaz</family>
+         <family>Nasim</family>
+         <family>Sina</family>
+         <family>Persian_serif</family>
+         </accept>
+       </alias>
+
+<!-- Register the fonts that we actually do have -->
+
+       <match target="scan">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Elham</string>
+               </test>
+               <edit name="foundry">
+                       <string>farsiweb</string>
+               </edit>
+       </match>
+
+       <match target="scan">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Homa</string>
+               </test>
+               <edit name="foundry">
+                       <string>farsiweb</string>
+               </edit>
+       </match>
+
+       <match target="scan">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Koodak</string>
+               </test>
+               <edit name="foundry">
+                       <string>farsiweb</string>
+               </edit>
+       </match>
+
+       <match target="scan">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Nazli</string>
+               </test>
+               <edit name="foundry">
+                       <string>farsiweb</string>
+               </edit>
+       </match>
+
+       <match target="scan">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Roya</string>
+               </test>
+               <edit name="foundry">
+                       <string>farsiweb</string>
+               </edit>
+       </match>
+
+       <match target="scan">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Terafik</string>
+               </test>
+               <edit name="foundry">
+                       <string>farsiweb</string>
+               </edit>
+       </match>
+
+       <match target="scan">
+               <test name="family" compare="eq" ignore-blanks="true">
+                       <string>Titr</string>
+               </test>
+               <edit name="foundry">
+                       <string>farsiweb</string>
+               </edit>
+       </match>
+
+
+<!-- Our fonts should oblique to the other side (TURNED-OFF) -->
+
+       <match target="font">
+               <test name="foundry">
+                       <!--string>farsiweb</string-->
+                       <string>TURNED-OFF</string>
+               </test>
+               <test name="foundry">
+                       <string>farsiweb</string>
+               </test>
+               <!-- check to see if the font is roman -->
+               <test name="slant">
+                       <const>roman</const>
+               </test>
+               <!-- check to see if the pattern requested non-roman -->
+               <test target="pattern" name="slant" compare="not_eq">
+                       <const>roman</const>
+               </test>
+               <!-- multiply the matrix to slant the font -->
+               <edit name="matrix" mode="assign">
+                       <times>
+                               <name>matrix</name>
+                               <matrix><double>1</double><double>-0.2</double>
+                                       <double>0</double><double>1</double>
+                               </matrix>
+                       </times>
+               </edit>
+               <!-- pretend the font is oblique now -->
+               <edit name="slant" mode="assign">
+                       <const>oblique</const>
+               </edit>
+       </match>
+
+
+<!--
+  We can't hint our fonts well, so turn off hinting.
+  Moreover, the bitmaps we have designed (well, they
+  have designed), suck, so disable them too.
+  -->
+
+       <match target="font">
+               <test name="foundry">
+                       <string>farsiweb</string>
+               </test>
+               <edit name="autohint">
+                       <bool>false</bool>
+               </edit>
+               <edit name="hinting">
+                       <bool>false</bool>
+               </edit>
+               <edit name="embeddedbitmap">
+                       <bool>false</bool>
+               </edit>
+       </match>
+
+
+<!-- Alias our fonts to common families -->
+
+       <!-- Persian serif fonts -->
+       <alias>
+               <family>serif</family>
+               <accept>
+                       <family>Nazli</family>
+                       <family>Lotoos</family>
+                       <family>Mitra</family>
+                       <family>Ferdosi</family>
+                       <family>Badr</family>
+                       <family>Zar</family>
+               </accept>
+       </alias>
+
+       <!-- Persian sans-serif fonts -->
+       <alias>
+               <family>sans-serif</family>
+               <accept>
+                       <family>Roya</family>
+                       <family>Koodak</family>
+                       <family>Terafik</family>
+               </accept>
+       </alias>
+
+       <!-- Persian monospace fonts -->
+       <alias>
+               <family>monospace</family>
+               <accept>
+                       <!-- Not really monospace -->
+                       <family>Terafik</family>
+               </accept>
+       </alias>
+
+       <!-- Persian fantasy fonts -->
+       <alias>
+               <family>fantasy</family>
+               <accept>
+                       <family>Homa</family>
+                       <family>Kamran</family>
+                       <family>Fantezi</family>
+                       <family>Tabassom</family>
+               </accept>
+       </alias>
+
+       <!-- Persian (and Urdu) Nastaliq/cursive fonts -->
+       <alias>
+               <family>cursive</family>
+               <accept>
+                       <family>IranNastaliq</family>
+                       <family>Nafees Nastaleeq</family>
+               </accept>
+       </alias>
+
+<!-- Use Titr in titles -->
+
+       <!-- Both serif... -->
+       <match>
+               <test name="family">
+                       <string>serif</string>
+               </test>
+               <test name="weight" compare="more_eq">
+                       <int>200</int>
+               </test>
+               <test name="size" compare="more_eq">
+                       <double>24</double>
+               </test>
+               <edit name="family" mode="prepend">
+                       <string>Titr</string>
+               </edit>
+       </match>
+
+       <!-- and sans-serif. -->
+       <match>
+               <test name="family">
+                       <string>sans-serif</string>
+               </test>
+               <test name="weight" compare="more_eq">
+                       <int>200</int>
+               </test>
+               <test name="size" compare="more_eq">
+                       <double>24</double>
+               </test>
+               <edit name="family" mode="prepend">
+                       <string>Titr</string>
+               </edit>
+       </match>
+
+       <!-- and more. -->
+       <match>
+               <test name="family">
+                       <string>Persian_sansserif_default</string>
+               </test>
+               <test name="weight" compare="more_eq">
+                       <int>200</int>
+               </test>
+               <test name="size" compare="more_eq">
+                       <double>24</double>
+               </test>
+               <edit name="family" mode="prepend" binding="same">
+                       <string>Titr</string>
+               </edit>
+       </match>
+
+
+<!-- Default substituted for deprecated sans-serif fonts -->
+
+       <match>
+               <test name="family">
+                       <string>Persian_sansserif_default</string>
+               </test>
+               <edit name="family" mode="assign" binding="same">
+                       <string>Roya</string>
+               </edit>
+       </match>
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/65-khmer.conf b/etc/fonts/conf.avail/65-khmer.conf
new file mode 100644 (file)
index 0000000..8985c0d
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+       <alias>
+               <family>serif</family>
+               <prefer>
+                       <family>Khmer OS"</family>
+               </prefer>
+       </alias>
+       <alias>
+               <family>sans-serif</family>
+               <prefer>
+                       <family>Khmer OS"</family>
+               </prefer>
+       </alias>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/65-nonlatin.conf b/etc/fonts/conf.avail/65-nonlatin.conf
new file mode 100644 (file)
index 0000000..532218c
--- /dev/null
@@ -0,0 +1,197 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Set preferable fonts for non-Latin</description>
+       <alias>
+               <family>serif</family>
+               <prefer>
+                       <family>Artsounk</family> <!-- armenian -->
+                       <family>BPG UTF8 M</family> <!-- georgian -->
+                       <family>Kinnari</family> <!-- thai -->
+                       <family>Norasi</family> <!-- thai -->
+                       <family>Frank Ruehl</family> <!-- hebrew -->
+                       <family>Dror</family>  <!-- hebrew -->
+                       <family>JG LaoTimes</family>  <!-- lao -->
+                       <family>Saysettha Unicode</family>  <!-- lao -->
+                       <family>Pigiarniq</family> <!-- canadian syllabics -->
+                       <family>B Davat</family> <!-- arabic (fa) -->
+                       <family>B Compset</family>  <!-- arabic (fa) -->
+                       <family>Kacst-Qr</family> <!-- arabic (ar) -->
+                       <family>Urdu Nastaliq Unicode</family> <!-- arabic (ur) -->
+                       <family>Raghindi</family> <!-- devanagari -->
+                       <family>Mukti Narrow</family> <!-- bengali -->
+                       <family>padmaa</family> <!-- gujarati -->
+                       <family>Hapax Berbère</family> <!-- tifinagh -->
+                       <family>MS Mincho</family> <!-- han (ja) -->
+                       <family>SimSun</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>PMingLiu</family> <!-- han (zh-tw) -->
+                       <family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
+                       <family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>HanyiSong</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>MgOpen Canonica</family>
+                       <family>Sazanami Mincho</family>
+                       <family>IPAMonaMincho</family>
+                       <family>IPAMincho</family>
+                       <family>Kochi Mincho</family>
+                       <family>AR PL SungtiL GB</family>
+                       <family>AR PL Mingti2L Big5</family>
+                       <family>AR PL Zenkai Uni</family>
+                       <family>MS 明朝</family>
+                       <family>ZYSong18030</family>
+                       <family>NanumMyeongjo</family> <!-- hangul (ko) -->
+                       <family>UnBatang</family> <!-- hangul (ko) -->
+                       <family>Baekmuk Batang</family> <!-- hangul (ko) -->
+                       <family>KacstQura</family>
+                       <family>Frank Ruehl CLM</family>
+                       <family>Lohit Bengali</family>
+                       <family>Lohit Gujarati</family>
+                       <family>Lohit Hindi</family>
+                       <family>Lohit Marathi</family>
+                       <family>Lohit Maithili</family>
+                       <family>Lohit Kashmiri</family>
+                       <family>Lohit Konkani</family>
+                       <family>Lohit Nepali</family>
+                       <family>Lohit Sindhi</family>
+                       <family>Lohit Punjabi</family>
+                       <family>Lohit Tamil</family>
+                       <family>Rachana</family>
+                       <family>Lohit Malayalam</family>
+                       <family>Lohit Kannada</family>
+                       <family>Lohit Telugu</family>
+                       <family>Lohit Oriya</family>
+                       <family>LKLUG</family>
+               </prefer>
+       </alias>
+       <alias>
+               <family>sans-serif</family>
+               <prefer>
+                       <family>Nachlieli</family> <!-- hebrew -->
+                       <family>Lucida Sans Unicode</family>
+                       <family>Yudit Unicode</family>
+                       <family>Kerkis</family> <!-- greek -->
+                       <family>ArmNet Helvetica</family> <!-- armenian -->
+                       <family>Artsounk</family> <!-- armenian -->
+                       <family>BPG UTF8 M</family> <!-- georgian -->
+                       <family>Waree</family> <!-- thai -->
+                       <family>Loma</family> <!-- thai -->
+                       <family>Garuda</family> <!-- thai -->
+                       <family>Umpush</family> <!-- thai -->
+                       <family>Saysettha Unicode</family> <!-- lao? -->
+                       <family>JG Lao Old Arial</family> <!-- lao -->
+                       <family>GF Zemen Unicode</family> <!-- ethiopic -->
+                       <family>Pigiarniq</family> <!-- canadian syllabics -->
+                       <family>B Davat</family> <!-- arabic (fa) -->
+                       <family>B Compset</family> <!-- arabic (fa) -->
+                       <family>Kacst-Qr</family> <!-- arabic (ar) -->
+                       <family>Urdu Nastaliq Unicode</family> <!-- arabic (ur) -->
+                       <family>Raghindi</family> <!-- devanagari -->
+                       <family>Mukti Narrow</family> <!-- bengali -->
+                       <family>padmaa</family> <!-- gujarati -->
+                       <family>Hapax Berbère</family> <!-- tifinagh -->
+                       <family>MS Gothic</family> <!-- han (ja) -->
+                       <family>UmePlus P Gothic</family> <!-- han (ja) -->
+                       <family>Microsoft YaHei</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>Microsoft JhengHei</family> <!-- han (zh-tw) -->
+                       <family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>AR PL ShanHeiSun Uni</family> <!--han (ja,zh-cn,zh-tw) -->
+                       <family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>MgOpen Moderna</family>
+                       <family>MgOpen Modata</family>
+                       <family>MgOpen Cosmetica</family>
+                       <family>VL Gothic</family>
+                       <family>IPAMonaGothic</family>
+                       <family>IPAGothic</family>
+                       <family>Sazanami Gothic</family>
+                       <family>Kochi Gothic</family>
+                       <family>AR PL KaitiM GB</family>
+                       <family>AR PL KaitiM Big5</family>
+                       <family>AR PL ShanHeiSun Uni</family>
+                       <family>AR PL SungtiL GB</family>
+                       <family>AR PL Mingti2L Big5</family>
+                       <family>MS ゴシック</family>
+                       <family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>NanumGothic</family> <!-- hangul (ko) -->
+                       <family>UnDotum</family> <!-- hangul (ko) -->
+                       <family>Baekmuk Dotum</family> <!-- hangul (ko) -->
+                       <family>Baekmuk Gulim</family> <!-- hangul (ko) -->
+                       <family>KacstQura</family>
+                       <family>Lohit Bengali</family>
+                       <family>Lohit Gujarati</family>
+                       <family>Lohit Hindi</family>
+                       <family>Lohit Marathi</family>
+                       <family>Lohit Maithili</family>
+                       <family>Lohit Kashmiri</family>
+                       <family>Lohit Konkani</family>
+                       <family>Lohit Nepali</family>
+                       <family>Lohit Sindhi</family>
+                       <family>Lohit Punjabi</family>
+                       <family>Lohit Tamil</family>
+                       <family>Meera</family>
+                       <family>Lohit Malayalam</family>
+                       <family>Lohit Kannada</family>
+                       <family>Lohit Telugu</family>
+                       <family>Lohit Oriya</family>
+                       <family>LKLUG</family>
+               </prefer>
+       </alias>
+       <alias>
+               <family>monospace</family>
+               <prefer>
+                       <family>Miriam Mono</family> <!-- hebrew -->
+                       <family>VL Gothic</family>
+                       <family>IPAMonaGothic</family>
+                       <family>IPAGothic</family>
+                       <family>Sazanami Gothic</family>
+                       <family>Kochi Gothic</family>
+                       <family>AR PL KaitiM GB</family>
+                       <family>MS Gothic</family> <!-- han (ja) -->
+                       <family>UmePlus Gothic</family> <!-- han (ja) -->
+                       <family>NSimSun</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>MingLiu</family> <!-- han (zh-tw) -->
+                       <family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
+                       <family>AR PL New Sung Mono</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>HanyiSong</family> <!-- han (zh-cn) -->
+                       <family>AR PL SungtiL GB</family>
+                       <family>AR PL Mingti2L Big5</family>
+                       <family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
+                       <family>NanumGothicCoding</family> <!-- hangul (ko) -->
+                       <family>NanumGothic</family> <!-- hangul (ko) -->
+                       <family>UnDotum</family> <!-- hangul (ko) -->
+                       <family>Baekmuk Dotum</family> <!-- hangul (ko) -->
+                       <family>Baekmuk Gulim</family> <!-- hangul (ko) -->
+                       <family>TlwgTypo</family> <!-- thai -->
+                       <family>TlwgTypist</family> <!-- thai -->
+                       <family>TlwgTypewriter</family> <!-- thai -->
+                       <family>TlwgMono</family> <!-- thai -->
+                       <family>Hasida</family> <!-- hebrew -->
+                       <family>Mitra Mono</family> <!-- bengali -->
+                       <family>GF Zemen Unicode</family> <!-- ethiopic -->
+                       <family>Hapax Berbère</family> <!-- tifinagh -->
+                       <family>Lohit Bengali</family>
+                       <family>Lohit Gujarati</family>
+                       <family>Lohit Hindi</family>
+                       <family>Lohit Marathi</family>
+                       <family>Lohit Maithili</family>
+                       <family>Lohit Kashmiri</family>
+                       <family>Lohit Konkani</family>
+                       <family>Lohit Nepali</family>
+                       <family>Lohit Sindhi</family>
+                       <family>Lohit Punjabi</family>
+                       <family>Lohit Tamil</family>
+                       <family>Meera</family>
+                       <family>Lohit Malayalam</family>
+                       <family>Lohit Kannada</family>
+                       <family>Lohit Telugu</family>
+                       <family>Lohit Oriya</family>
+                       <family>LKLUG</family>
+               </prefer>
+       </alias>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/69-language-selector-ja.conf b/etc/fonts/conf.avail/69-language-selector-ja.conf
new file mode 100644 (file)
index 0000000..d562429
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+       <match target="font">
+               <test name="family" compare="contains">
+                       <string>Noto Sans CJK JP</string>
+               </test>
+               <test qual="all" name="pixelsize" compare="less_eq">
+                       <double>18</double>
+               </test>
+               <edit mode="assign" name="embeddedbitmap">
+                       <bool>false</bool>
+               </edit>
+               <edit mode="assign" name="hintstyle">
+                       <const>hintnone</const>
+               </edit>
+       </match>
+       <match target="font">
+               <test name="family" compare="contains">
+                       <string>Noto Serif CJK JP</string>
+               </test>
+               <test qual="all" name="pixelsize" compare="less_eq">
+                       <double>18</double>
+               </test>
+               <edit mode="assign" name="embeddedbitmap">
+                       <bool>false</bool>
+               </edit>
+               <edit mode="assign" name="hintstyle">
+                       <const>hintnone</const>
+               </edit>
+       </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/69-language-selector-zh-cn.conf b/etc/fonts/conf.avail/69-language-selector-zh-cn.conf
new file mode 100644 (file)
index 0000000..254249a
--- /dev/null
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+
+       <match target="pattern">
+        <test name="lang">
+            <string>zh-cn</string>
+        </test>
+               <test qual="any" name="family">
+                       <string>serif</string>
+               </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>Noto Serif CJK SC</string>
+                       <string>HYSong</string>
+                       <string>AR PL UMing CN</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>WenQuanYi Bitmap Song</string>
+                       <string>AR PL UKai CN</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>sans-serif</string>
+               </test>
+        <test name="lang">
+            <string>zh-cn</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>Noto Sans CJK SC</string>
+                       <string>WenQuanYi Zen Hei</string>
+                       <string>HYSong</string>
+                       <string>AR PL UMing CN</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>AR PL UKai CN</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>monospace</string>
+               </test>
+        <test name="lang">
+            <string>zh-cn</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>DejaVu Sans Mono</string>
+                       <string>Noto Sans Mono CJK SC</string>
+                       <string>WenQuanYi Zen Hei Mono</string>
+                       <string>HYSong</string>
+                       <string>AR PL UMing CN</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>AR PL UKai CN</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/69-language-selector-zh-hk.conf b/etc/fonts/conf.avail/69-language-selector-zh-hk.conf
new file mode 100644 (file)
index 0000000..cc277be
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>serif</string>
+               </test>
+        <test name="lang">
+            <string>zh-hk</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>Noto Serif CJK TC</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>HYSong</string>
+                       <string>WenQuanYi Bitmap Song</string>
+                       <string>AR PL UKai HK</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>sans-serif</string>
+               </test>
+        <test name="lang">
+            <string>zh-hk</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>Noto Sans CJK HK</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>HYSong</string>
+                       <string>AR PL UKai HK</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>monospace</string>
+               </test>
+        <test name="lang">
+            <string>zh-hk</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>DejaVu Sans Mono</string>
+                       <string>Noto Sans Mono CJK HK</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>HYSong</string>
+                       <string>AR PL UKai HK</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/69-language-selector-zh-mo.conf b/etc/fonts/conf.avail/69-language-selector-zh-mo.conf
new file mode 100644 (file)
index 0000000..57af177
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>serif</string>
+               </test>
+        <test name="lang">
+            <string>zh-mo</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>Noto Serif CJK TC</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>HYSong</string>
+                       <string>WenQuanYi Bitmap Song</string>
+                       <string>AR PL UKai HK</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>sans-serif</string>
+               </test>
+        <test name="lang">
+            <string>zh-mo</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>Bitstream Vera Sans</string>
+                       <string>Noto Sans CJK TC</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>HYSong</string>
+                       <string>AR PL UKai HK</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>monospace</string>
+               </test>
+        <test name="lang">
+            <string>zh-mo</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>Bitstream Vera Sans Mono</string>
+                       <string>DejaVu Sans Mono</string>
+                       <string>Noto Sans Mono CJK TC</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>HYSong</string>
+                       <string>AR PL UKai HK</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/69-language-selector-zh-sg.conf b/etc/fonts/conf.avail/69-language-selector-zh-sg.conf
new file mode 100644 (file)
index 0000000..13693e6
--- /dev/null
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>serif</string>
+               </test>
+        <test name="lang">
+            <string>zh-sg</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>Noto Serif CJK SC</string>
+                       <string>HYSong</string>
+                       <string>AR PL UMing CN</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>WenQuanYi Bitmap Song</string>
+                       <string>AR PL UKai CN</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>sans-serif</string>
+               </test>
+        <test name="lang">
+            <string>zh-sg</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>Noto Sans CJK SC</string>
+                       <string>WenQuanYi Zen Hei</string>
+                       <string>HYSong</string>
+                       <string>AR PL UMing CN</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>AR PL UKai CN</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>monospace</string>
+               </test>
+        <test name="lang">
+            <string>zh-sg</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>DejaVu Sans Mono</string>
+                       <string>Noto Sans Mono CJK SC</string>
+                       <string>WenQuanYi Zen Hei Mono</string>
+                       <string>HYSong</string>
+                       <string>AR PL UMing CN</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>AR PL UKai CN</string>
+                       <string>AR PL ZenKai Uni</string>
+               </edit>
+       </match> 
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/69-language-selector-zh-tw.conf b/etc/fonts/conf.avail/69-language-selector-zh-tw.conf
new file mode 100644 (file)
index 0000000..6cd0500
--- /dev/null
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+
+       <!-- Set fonts selection order for Chinese users -->
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>serif</string>
+               </test>
+        <test name="lang">
+            <string>zh-tw</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>Noto Serif CJK TC</string>
+                       <string>AR PL UMing TW</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>HYSong</string>
+                       <string>WenQuanYi Bitmap Song</string>
+                       <string>AR PL UKai TW</string>
+                       <string>AR PL UKai HK</string>
+                       <string>AR PL ZenKai Uni</string>
+                       <string>DejaVu Serif</string>
+                       <string>Bitstream Vera Serif</string>
+               </edit>
+       </match> 
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>sans-serif</string>
+               </test>
+        <test name="lang">
+            <string>zh-tw</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>Noto Sans CJK TC</string>
+                       <string>WenQuanYi Zen Hei</string>
+                       <string>AR PL UMing TW</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>HYSong</string>
+                       <string>AR PL UKai TW</string>
+                       <string>AR PL UKai HK</string>
+                       <string>AR PL ZenKai Uni</string>
+                       <string>DejaVu Sans</string>
+                       <string>Bitstream Vera Sans</string>
+               </edit>
+       </match> 
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>monospace</string>
+               </test>
+        <test name="lang">
+            <string>zh-tw</string>
+        </test>
+               <edit name="family" mode="prepend" binding="strong">
+                       <string>DejaVu Sans Mono</string>
+                       <string>Noto Sans Mono CJK TC</string>
+                       <string>WenQuanYi Zen Hei Mono</string>
+                       <string>AR PL UMing TW</string>
+                       <string>AR PL UMing HK</string>
+                       <string>AR PL New Sung</string>
+                       <string>HYSong</string>
+                       <string>AR PL UKai TW</string>
+                       <string>AR PL UKai HK</string>
+                       <string>AR PL ZenKai Uni</string>
+                       <string>DejaVu Sans Mono</string>
+                       <string>Bitstream Vera Sans Mono</string>
+               </edit>
+       </match>
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/69-unifont.conf b/etc/fonts/conf.avail/69-unifont.conf
new file mode 100644 (file)
index 0000000..a3586f2
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+       <alias>
+               <family>serif</family>
+               <prefer>
+                       <family>FreeSerif</family>
+                       <family>Code2000</family>
+                       <family>Code2001</family> <!-- plane1 and beyond -->
+               </prefer>
+       </alias>
+       <alias>
+               <family>sans-serif</family>
+               <prefer>
+                       <family>FreeSans</family>
+                       <family>Arial Unicode MS</family>
+                       <family>Arial Unicode</family>
+                       <family>Code2000</family> <!-- almost everything; serif actually -->
+                       <family>Code2001</family> <!-- plane1 and beyond -->
+               </prefer>
+       </alias>
+       <alias>
+               <family>monospace</family>
+               <prefer>
+                       <family>FreeMono</family>
+               </prefer>
+       </alias>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/70-force-bitmaps.conf b/etc/fonts/conf.avail/70-force-bitmaps.conf
new file mode 100644 (file)
index 0000000..0c70a53
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Accept bitmap fonts</description>
+<!-- Accept bitmap fonts -->
+ <selectfont>
+  <acceptfont>
+   <pattern>
+     <patelt name="scalable"><bool>false</bool></patelt>
+   </pattern>
+  </acceptfont>
+ </selectfont>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/70-no-bitmaps.conf b/etc/fonts/conf.avail/70-no-bitmaps.conf
new file mode 100644 (file)
index 0000000..efb1bc0
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+  <description>Reject bitmap fonts</description>
+<!-- Reject bitmap fonts -->
+ <selectfont>
+  <rejectfont>
+   <pattern>
+     <patelt name="scalable"><bool>false</bool></patelt>
+   </pattern>
+  </rejectfont>
+ </selectfont>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/70-yes-bitmaps.conf b/etc/fonts/conf.avail/70-yes-bitmaps.conf
new file mode 100644 (file)
index 0000000..1e4c10b
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig/>
diff --git a/etc/fonts/conf.avail/80-delicious.conf b/etc/fonts/conf.avail/80-delicious.conf
new file mode 100644 (file)
index 0000000..8cd01f9
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+<!-- Fix-ups for Delicious family -->
+
+<!-- Delicious 'heavy' variant says its Medium weight -->
+<match target="scan">
+       <test name="family" compare="eq" ignore-blanks="true">
+               <string>Delicious</string>
+       </test>
+       <test name="style">
+               <string>Heavy</string>
+       </test>
+       <edit name="weight">
+               <const>heavy</const>
+       </edit>
+</match>
+
+</fontconfig>
diff --git a/etc/fonts/conf.avail/90-synthetic.conf b/etc/fonts/conf.avail/90-synthetic.conf
new file mode 100644 (file)
index 0000000..6b929dd
--- /dev/null
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+  </its:rules>
+
+<!-- 
+ Artificial oblique for fonts without an italic or oblique version
+ -->
+       <match target="font">
+               <!-- check to see if the font is roman -->
+               <test name="slant">
+                       <const>roman</const>
+               </test>
+               <!-- check to see if the pattern requested non-roman -->
+               <test target="pattern" name="slant" compare="not_eq">
+                       <const>roman</const>
+               </test>
+               <!-- multiply the matrix to slant the font -->
+               <edit name="matrix" mode="assign">
+                       <times>
+                               <name>matrix</name>
+                               <matrix><double>1</double><double>0.2</double>
+                                       <double>0</double><double>1</double>
+                               </matrix>
+                       </times>
+               </edit>
+               <!-- pretend the font is oblique now -->
+               <edit name="slant" mode="assign">
+                       <const>oblique</const>
+               </edit>
+               <!-- and disable embedded bitmaps for artificial oblique -->
+               <edit name="embeddedbitmap" mode="assign">
+                       <bool>false</bool>
+               </edit>
+       </match>
+
+<!--
+ Synthetic emboldening for fonts that do not have bold face available
+ -->
+
+       <match target="font">
+               <!-- check to see if the weight in the font is less than medium which possibly need emboldening -->
+               <test name="weight" compare="less_eq">
+                       <const>medium</const>
+               </test>
+               <!-- check to see if the pattern requests bold -->
+               <test target="pattern" name="weight" compare="more_eq">
+                       <const>bold</const>
+               </test>
+               <!--
+                 set the embolden flag
+                 needed for applications using cairo, e.g. gucharmap, gedit, ...
+               -->
+               <edit name="embolden" mode="assign">
+                       <bool>true</bool>
+               </edit>
+               <!--
+                set weight to bold
+                needed for applications using Xft directly, e.g. Firefox, ...
+               -->
+               <edit name="weight" mode="assign">
+                       <const>bold</const>
+               </edit>
+       </match>
+</fontconfig>
diff --git a/etc/fonts/conf.avail/99-language-selector-zh.conf b/etc/fonts/conf.avail/99-language-selector-zh.conf
new file mode 100644 (file)
index 0000000..18e5f0c
--- /dev/null
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+
+       <match target="font" >
+               <test name="family" compare="contains" >
+                       <string>Song</string>
+               </test> 
+                <!-- check to see if the font is just regular -->
+                <test name="weight" compare="less_eq">
+                        <int>100</int>
+               </test>
+               <test compare="more_eq" target="pattern" name="weight" >
+                       <int>180</int>
+               </test>
+               <edit mode="assign" name="embolden" >
+                       <bool>true</bool>
+               </edit>
+       </match>
+
+       <match target="font" >
+               <test name="family" compare="contains" >
+                       <string>Sun</string>
+               </test> 
+                <!-- check to see if the font is just regular -->
+                <test name="weight" compare="less_eq">
+                        <int>100</int>
+               </test>
+               <test compare="more_eq" target="pattern" name="weight" >
+                       <int>180</int>
+               </test>
+               <edit mode="assign" name="embolden" >
+                       <bool>true</bool>
+               </edit>
+       </match>
+
+       <match target="font" >
+               <test name="family" compare="contains" >
+                       <string>Kai</string>
+               </test> 
+                <!-- check to see if the font is just regular -->
+                <test name="weight" compare="less_eq">
+                        <int>100</int>
+               </test>
+               <test compare="more_eq" target="pattern" name="weight" >
+                       <int>180</int>
+               </test>
+               <edit mode="assign" name="embolden" >
+                       <bool>true</bool>
+               </edit>
+       </match>
+
+       <match target="font" >
+               <test name="family" compare="contains" >
+                       <string>Ming</string>
+               </test> 
+                <!-- check to see if the font is just regular -->
+                <test name="weight" compare="less_eq">
+                        <int>100</int>
+               </test>
+               <test compare="more_eq" target="pattern" name="weight" >
+                       <int>180</int>
+               </test>
+               <edit mode="assign" name="embolden" >
+                       <bool>true</bool>
+               </edit>
+       </match>
+
+</fontconfig>
diff --git a/etc/fonts/conf.d/10-antialias.conf b/etc/fonts/conf.d/10-antialias.conf
new file mode 120000 (symlink)
index 0000000..c0ef0f7
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/10-antialias.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/10-hinting-slight.conf b/etc/fonts/conf.d/10-hinting-slight.conf
new file mode 120000 (symlink)
index 0000000..5488142
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/10-hinting-slight.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/10-scale-bitmap-fonts.conf b/etc/fonts/conf.d/10-scale-bitmap-fonts.conf
new file mode 120000 (symlink)
index 0000000..c3ca696
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/10-scale-bitmap-fonts.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/11-lcdfilter-default.conf b/etc/fonts/conf.d/11-lcdfilter-default.conf
new file mode 120000 (symlink)
index 0000000..5269f93
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/11-lcdfilter-default.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/20-unhint-small-dejavu-lgc-sans-mono.conf b/etc/fonts/conf.d/20-unhint-small-dejavu-lgc-sans-mono.conf
new file mode 120000 (symlink)
index 0000000..068e8ea
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/20-unhint-small-dejavu-lgc-sans-mono.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/20-unhint-small-dejavu-lgc-sans.conf b/etc/fonts/conf.d/20-unhint-small-dejavu-lgc-sans.conf
new file mode 120000 (symlink)
index 0000000..4c76710
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/20-unhint-small-dejavu-lgc-sans.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/20-unhint-small-dejavu-lgc-serif.conf b/etc/fonts/conf.d/20-unhint-small-dejavu-lgc-serif.conf
new file mode 120000 (symlink)
index 0000000..1c8a107
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/20-unhint-small-dejavu-lgc-serif.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/20-unhint-small-dejavu-sans-mono.conf b/etc/fonts/conf.d/20-unhint-small-dejavu-sans-mono.conf
new file mode 120000 (symlink)
index 0000000..e075245
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/20-unhint-small-dejavu-sans-mono.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf b/etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf
new file mode 120000 (symlink)
index 0000000..61320a1
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/20-unhint-small-dejavu-sans.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/20-unhint-small-dejavu-serif.conf b/etc/fonts/conf.d/20-unhint-small-dejavu-serif.conf
new file mode 120000 (symlink)
index 0000000..7abd5e1
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/20-unhint-small-dejavu-serif.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/20-unhint-small-vera.conf b/etc/fonts/conf.d/20-unhint-small-vera.conf
new file mode 120000 (symlink)
index 0000000..56c5b8f
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/20-unhint-small-vera.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/30-cjk-aliases.conf b/etc/fonts/conf.d/30-cjk-aliases.conf
new file mode 120000 (symlink)
index 0000000..81247d5
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/30-cjk-aliases.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/30-metric-aliases.conf b/etc/fonts/conf.d/30-metric-aliases.conf
new file mode 120000 (symlink)
index 0000000..6809157
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/30-metric-aliases.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/40-nonlatin.conf b/etc/fonts/conf.d/40-nonlatin.conf
new file mode 120000 (symlink)
index 0000000..efb8230
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/40-nonlatin.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/45-generic.conf b/etc/fonts/conf.d/45-generic.conf
new file mode 120000 (symlink)
index 0000000..1f25c2c
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/45-generic.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/45-latin.conf b/etc/fonts/conf.d/45-latin.conf
new file mode 120000 (symlink)
index 0000000..c400905
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/45-latin.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/49-sansserif.conf b/etc/fonts/conf.d/49-sansserif.conf
new file mode 120000 (symlink)
index 0000000..0262faa
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/49-sansserif.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/50-user.conf b/etc/fonts/conf.d/50-user.conf
new file mode 120000 (symlink)
index 0000000..967e33e
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/50-user.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/51-local.conf b/etc/fonts/conf.d/51-local.conf
new file mode 120000 (symlink)
index 0000000..58fc313
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/51-local.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/56-language-selector-ar.conf b/etc/fonts/conf.d/56-language-selector-ar.conf
new file mode 120000 (symlink)
index 0000000..c8a386b
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/56-language-selector-ar.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/57-dejavu-sans-mono.conf b/etc/fonts/conf.d/57-dejavu-sans-mono.conf
new file mode 120000 (symlink)
index 0000000..c0c1959
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/57-dejavu-sans-mono.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/57-dejavu-sans.conf b/etc/fonts/conf.d/57-dejavu-sans.conf
new file mode 120000 (symlink)
index 0000000..92a40d6
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/57-dejavu-sans.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/57-dejavu-serif.conf b/etc/fonts/conf.d/57-dejavu-serif.conf
new file mode 120000 (symlink)
index 0000000..b7e7481
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/57-dejavu-serif.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/58-dejavu-lgc-sans-mono.conf b/etc/fonts/conf.d/58-dejavu-lgc-sans-mono.conf
new file mode 120000 (symlink)
index 0000000..89ea6b2
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/58-dejavu-lgc-sans-mono.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/58-dejavu-lgc-sans.conf b/etc/fonts/conf.d/58-dejavu-lgc-sans.conf
new file mode 120000 (symlink)
index 0000000..ca377e0
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/58-dejavu-lgc-sans.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/58-dejavu-lgc-serif.conf b/etc/fonts/conf.d/58-dejavu-lgc-serif.conf
new file mode 120000 (symlink)
index 0000000..603352a
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/58-dejavu-lgc-serif.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/60-generic.conf b/etc/fonts/conf.d/60-generic.conf
new file mode 120000 (symlink)
index 0000000..aba0e09
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/60-generic.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/60-latin.conf b/etc/fonts/conf.d/60-latin.conf
new file mode 120000 (symlink)
index 0000000..4827df3
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/60-latin.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/64-language-selector-prefer.conf b/etc/fonts/conf.d/64-language-selector-prefer.conf
new file mode 120000 (symlink)
index 0000000..95dbf21
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/64-language-selector-prefer.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/65-fonts-persian.conf b/etc/fonts/conf.d/65-fonts-persian.conf
new file mode 120000 (symlink)
index 0000000..7f72bfe
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/65-fonts-persian.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/65-nonlatin.conf b/etc/fonts/conf.d/65-nonlatin.conf
new file mode 120000 (symlink)
index 0000000..d99e17a
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/65-nonlatin.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/69-language-selector-ja.conf b/etc/fonts/conf.d/69-language-selector-ja.conf
new file mode 120000 (symlink)
index 0000000..7136c20
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/69-language-selector-ja.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/69-language-selector-zh-cn.conf b/etc/fonts/conf.d/69-language-selector-zh-cn.conf
new file mode 120000 (symlink)
index 0000000..609f792
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/69-language-selector-zh-cn.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/69-language-selector-zh-hk.conf b/etc/fonts/conf.d/69-language-selector-zh-hk.conf
new file mode 120000 (symlink)
index 0000000..ae709b8
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/69-language-selector-zh-hk.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/69-language-selector-zh-mo.conf b/etc/fonts/conf.d/69-language-selector-zh-mo.conf
new file mode 120000 (symlink)
index 0000000..4a4d83a
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/69-language-selector-zh-mo.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/69-language-selector-zh-sg.conf b/etc/fonts/conf.d/69-language-selector-zh-sg.conf
new file mode 120000 (symlink)
index 0000000..f5b2881
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/69-language-selector-zh-sg.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/69-language-selector-zh-tw.conf b/etc/fonts/conf.d/69-language-selector-zh-tw.conf
new file mode 120000 (symlink)
index 0000000..977b8f3
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/69-language-selector-zh-tw.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/69-unifont.conf b/etc/fonts/conf.d/69-unifont.conf
new file mode 120000 (symlink)
index 0000000..7ba1b65
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/69-unifont.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/70-no-bitmaps.conf b/etc/fonts/conf.d/70-no-bitmaps.conf
new file mode 120000 (symlink)
index 0000000..b2263fa
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/70-no-bitmaps.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/80-delicious.conf b/etc/fonts/conf.d/80-delicious.conf
new file mode 120000 (symlink)
index 0000000..22d6770
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/80-delicious.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/90-synthetic.conf b/etc/fonts/conf.d/90-synthetic.conf
new file mode 120000 (symlink)
index 0000000..a25f312
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/90-synthetic.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/99-language-selector-zh.conf b/etc/fonts/conf.d/99-language-selector-zh.conf
new file mode 120000 (symlink)
index 0000000..23ec678
--- /dev/null
@@ -0,0 +1 @@
+../conf.avail/99-language-selector-zh.conf
\ No newline at end of file
diff --git a/etc/fonts/conf.d/README b/etc/fonts/conf.d/README
new file mode 100644 (file)
index 0000000..6a774c5
--- /dev/null
@@ -0,0 +1,23 @@
+conf.d/README
+
+Each file in this directory is a fontconfig configuration file.  Fontconfig
+scans this directory, loading all files of the form [0-9][0-9]*.conf.
+These files are normally installed in /usr/share/fontconfig/conf.avail
+and then symlinked here, allowing them to be easily installed and then
+enabled/disabled by adjusting the symlinks.
+
+The files are loaded in numeric order, the structure of the configuration
+has led to the following conventions in usage:
+
+ Files begining with:  Contain:
+ 00 through 09         Font directories
+ 10 through 19         system rendering defaults (AA, etc)
+ 20 through 29         font rendering options
+ 30 through 39         family substitution
+ 40 through 49         generic identification, map family->generic
+ 50 through 59         alternate config file loading
+ 60 through 69         generic aliases, map generic->family
+ 70 through 79         select font (adjust which fonts are available)
+ 80 through 89         match target="scan" (modify scanned patterns)
+ 90 through 99         font synthesis
diff --git a/etc/fonts/fonts.conf b/etc/fonts/fonts.conf
new file mode 100644 (file)
index 0000000..f0f908e
--- /dev/null
@@ -0,0 +1,108 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<!-- /etc/fonts/fonts.conf file to configure system font access -->
+<fontconfig>
+       <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
+               <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
+       </its:rules>
+
+       <description>Default configuration file</description>
+
+<!--
+       DO NOT EDIT THIS FILE.
+       IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED.
+       LOCAL CHANGES BELONG IN 'local.conf'.
+
+       The intent of this standard configuration file is to be adequate for
+       most environments.  If you have a reasonably normal environment and
+       have found problems with this configuration, they are probably
+       things that others will also want fixed.  Please submit any
+       problems to the fontconfig bugzilla system located at fontconfig.org
+
+       Note that the normal 'make install' procedure for fontconfig is to
+       replace any existing fonts.conf file with the new version.  Place
+       any local customizations in local.conf which this file references.
+
+       Keith Packard
+-->
+
+<!-- Font directory list -->
+
+       <dir>/usr/share/fonts</dir>
+       <dir>/usr/local/share/fonts</dir>
+       <dir prefix="xdg">fonts</dir>
+       <!-- the following element will be removed in the future -->
+       <dir>~/.fonts</dir>
+
+<!--
+  Accept deprecated 'mono' alias, replacing it with 'monospace'
+-->
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>mono</string>
+               </test>
+               <edit name="family" mode="assign" binding="same">
+                       <string>monospace</string>
+               </edit>
+       </match>
+
+<!--
+  Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'
+-->
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>sans serif</string>
+               </test>
+               <edit name="family" mode="assign" binding="same">
+                       <string>sans-serif</string>
+               </edit>
+       </match>
+
+<!--
+  Accept deprecated 'sans' alias, replacing it with 'sans-serif'
+-->
+       <match target="pattern">
+               <test qual="any" name="family">
+                       <string>sans</string>
+               </test>
+               <edit name="family" mode="assign" binding="same">
+                       <string>sans-serif</string>
+               </edit>
+       </match>
+
+<!--
+  Ignore dpkg temporary files created in fonts directories
+-->
+       <selectfont>
+               <rejectfont>
+                       <glob>*.dpkg-tmp</glob>
+               </rejectfont>
+       </selectfont>
+       <selectfont>
+               <rejectfont>
+                       <glob>*.dpkg-new</glob>
+               </rejectfont>
+       </selectfont>
+
+<!--
+  Load local system customization file
+-->
+       <include ignore_missing="yes">conf.d</include>
+
+<!-- Font cache directory list -->
+
+       <cachedir>/var/cache/fontconfig</cachedir>
+       <cachedir prefix="xdg">fontconfig</cachedir>
+       <!-- the following element will be removed in the future -->
+       <cachedir>~/.fontconfig</cachedir>
+
+       <config>
+<!--
+  Rescan configuration every 30 seconds when FcFontSetList is called
+ -->
+               <rescan>
+                       <int>30</int>
+               </rescan>
+       </config>
+
+</fontconfig>
diff --git a/etc/fstab b/etc/fstab
new file mode 100644 (file)
index 0000000..25965e2
--- /dev/null
+++ b/etc/fstab
@@ -0,0 +1,10 @@
+# /etc/fstab: static file system information.
+#
+# Use 'blkid' to print the universally unique identifier for a
+# device; this may be used with UUID= as a more robust way to name devices
+# that works even if disks are added and removed. See fstab(5).
+#
+# <file system> <mount point>   <type>  <options>       <dump>  <pass>
+# / was on /dev/sda2 during curtin installation
+/dev/disk/by-uuid/f0928f5d-dd43-419c-838b-65f726da56e3 / ext4 defaults 0 0
+/swap.img      none    swap    sw      0       0
diff --git a/etc/fuse.conf b/etc/fuse.conf
new file mode 100644 (file)
index 0000000..ae194a0
--- /dev/null
@@ -0,0 +1,8 @@
+# /etc/fuse.conf - Configuration file for Filesystem in Userspace (FUSE)
+
+# Set the maximum number of FUSE mounts allowed to non-root users.
+# The default is 1000.
+#mount_max = 1000
+
+# Allow non-root users to specify the allow_other or allow_root mount options.
+#user_allow_other
diff --git a/etc/fwupd/daemon.conf b/etc/fwupd/daemon.conf
new file mode 100644 (file)
index 0000000..851047f
--- /dev/null
@@ -0,0 +1,64 @@
+[fwupd]
+
+# Allow blocking specific devices by their GUID
+# Uses semicolons as delimiter
+DisabledDevices=
+
+# Allow blocking specific plugins
+# Uses semicolons as delimiter
+DisabledPlugins=test;test_ble;invalid
+
+# Maximum archive size that can be loaded in Mb, with 0 for the default
+ArchiveSizeMax=0
+
+# Idle time in seconds to shut down the daemon -- note some plugins might
+# inhibit the auto-shutdown, for instance thunderbolt.
+#
+# A value of 0 specifies 'never'
+IdleTimeout=7200
+
+# Comma separated list of domains to log in verbose mode
+# If unset, no domains
+# If set to FuValue, FuValue domain (same as --domain-verbose=FuValue)
+# If set to *, all domains (same as --verbose)
+VerboseDomains=
+
+# Update the message of the day (MOTD) on device and metadata changes
+UpdateMotd=true
+
+# For some plugins, enumerate only devices supported by metadata
+EnumerateAllDevices=false
+
+# A list of firmware checksums that has been approved by the site admin
+# If unset, all firmware is approved
+ApprovedFirmware=
+
+# Allow blocking specific devices by their checksum, either SHA1 or SHA256
+# Uses semicolons as delimiter
+BlockedFirmware=
+
+# Allowed URI schemes in the preference order; failed downloads from the first
+# scheme will be retried with the next in order until no choices remain.
+#
+# If unset or no schemes are listed, the default will be: file,https,http,ipfs
+UriSchemes=
+
+# Ignore power levels of devices when running updates
+IgnorePower=false
+
+# Only support installing firmware signed with a trusted key
+OnlyTrusted=true
+
+# A host best known configuration is used when using `fwupdmgr sync` which can
+# downgrade firmware to factory versions or upgrade firmware to a supported
+# config level. e.g. `vendor-factory-2021q1`
+HostBkc=
+
+# these are only required when the SMBIOS or Device Tree data is invalid or missing
+#Manufacturer=
+#ProductName=
+#ProductSku=
+#Family=
+#EnclosureKind=
+#BaseboardProduct=
+#BaseboardManufacturer=
diff --git a/etc/fwupd/redfish.conf b/etc/fwupd/redfish.conf
new file mode 100644 (file)
index 0000000..6675d59
--- /dev/null
@@ -0,0 +1,17 @@
+[redfish]
+
+# The URI to the Redfish service in the format <scheme>://<ip>:<port>
+# ex: https://192.168.0.133:443
+#Uri=
+
+# The username and password to the Redfish service
+#Username=
+#Password=
+
+# Whether to verify the server certificate or not
+# Expected value: TRUE or FALSE
+# Default: FALSE
+#CACheck=
+
+# Do not use IPMI KCS to create an initial user account if no SMBIOS data
+IpmiDisableCreateUser=False
diff --git a/etc/fwupd/remotes.d/dell-esrt.conf b/etc/fwupd/remotes.d/dell-esrt.conf
new file mode 100644 (file)
index 0000000..7313eee
--- /dev/null
@@ -0,0 +1,8 @@
+[fwupd Remote]
+
+# this remote provides metadata shipped with the fwupd package
+Enabled=true
+Title=Enable UEFI capsule updates on Dell systems
+Keyring=none
+MetadataURI=file:///usr/share/fwupd/remotes.d/dell-esrt/metadata.xml
+ApprovalRequired=false
diff --git a/etc/fwupd/remotes.d/lvfs-testing.conf b/etc/fwupd/remotes.d/lvfs-testing.conf
new file mode 100644 (file)
index 0000000..4257549
--- /dev/null
@@ -0,0 +1,12 @@
+[fwupd Remote]
+
+# this remote provides metadata and firmware marked as 'testing' from the LVFS
+Enabled=false
+Title=Linux Vendor Firmware Service (testing)
+MetadataURI=https://cdn.fwupd.org/downloads/firmware-testing.xml.gz
+ReportURI=https://fwupd.org/lvfs/firmware/report
+#Username=
+#Password=
+OrderBefore=lvfs,fwupd
+AutomaticReports=false
+ApprovalRequired=false
diff --git a/etc/fwupd/remotes.d/lvfs.conf b/etc/fwupd/remotes.d/lvfs.conf
new file mode 100644 (file)
index 0000000..f956bc9
--- /dev/null
@@ -0,0 +1,12 @@
+[fwupd Remote]
+
+# this remote provides metadata and firmware marked as 'stable' from the LVFS
+Enabled=true
+Title=Linux Vendor Firmware Service
+MetadataURI=https://cdn.fwupd.org/downloads/firmware.xml.gz
+ReportURI=https://fwupd.org/lvfs/firmware/report
+SecurityReportURI=https://fwupd.org/lvfs/hsireports/upload
+OrderBefore=fwupd
+AutomaticReports=false
+AutomaticSecurityReports=false
+ApprovalRequired=false
diff --git a/etc/fwupd/remotes.d/vendor-directory.conf b/etc/fwupd/remotes.d/vendor-directory.conf
new file mode 100644 (file)
index 0000000..fd8886b
--- /dev/null
@@ -0,0 +1,8 @@
+[fwupd Remote]
+# this remote provides dynamically generated metadata shipped by the OS vendor and can
+# be found in /usr/share/fwupd/remotes.d/vendor/firmware
+Enabled=false
+Title=Vendor (Automatic)
+Keyring=none
+MetadataURI=file:///usr/share/fwupd/remotes.d/vendor/firmware
+ApprovalRequired=false
diff --git a/etc/fwupd/remotes.d/vendor.conf b/etc/fwupd/remotes.d/vendor.conf
new file mode 100644 (file)
index 0000000..b2cf0d3
--- /dev/null
@@ -0,0 +1,8 @@
+[fwupd Remote]
+# this remote provides metadata shipped by the OS vendor and can be found in
+# /usr/share/fwupd/remotes.d/vendor and firmware in /usr/share/fwupd/remotes.d/vendor/firmware
+Enabled=false
+Title=Vendor
+Keyring=none
+MetadataURI=file:///usr/share/fwupd/remotes.d/vendor/vendor.xml.gz
+ApprovalRequired=false
diff --git a/etc/fwupd/thunderbolt.conf b/etc/fwupd/thunderbolt.conf
new file mode 100644 (file)
index 0000000..d6a61d1
--- /dev/null
@@ -0,0 +1,9 @@
+[thunderbolt]
+
+# Minimum kernel version to allow use of this plugin
+# It's important that all backports from this kernel have been
+# made if using an older kernel
+MinimumKernelVersion=4.13.0
+
+# Forces delaying activation until shutdown/logout/reboot
+DelayedActivation=false
diff --git a/etc/fwupd/uefi_capsule.conf b/etc/fwupd/uefi_capsule.conf
new file mode 100644 (file)
index 0000000..1fc5ef4
--- /dev/null
@@ -0,0 +1,22 @@
+[uefi_capsule]
+
+# use GRUB to launch fwupdx64.efi
+#EnableGrubChainLoad=false
+
+# the shim loader is required to chainload the fwupd EFI binary unless
+# the fwupd.efi file has been self-signed manually
+#DisableShimForSecureBoot=true
+
+# the EFI system partition (ESP) path used if UDisks is not available
+# or if this partition is not mounted at /boot/efi, /boot, or /efi
+#OverrideESPMountPoint=
+
+# amount of free space required on the ESP, for example using 0x2000000 for 32Mb
+#RequireESPFreeSpace=
+
+# with the UEFI removable path enabled, the default esp path is set to /EFI/boot
+# the shim EFI binary and presumably this is $ESP/EFI/boot/bootx64.efi
+#FallbacktoRemovablePath=false
+
+# allow ignoring the CapsuleOnDisk support advertised by the firmware
+#DisableCapsuleUpdateOnDisk=true
diff --git a/etc/fwupd/upower.conf b/etc/fwupd/upower.conf
new file mode 100644 (file)
index 0000000..18c3b19
--- /dev/null
@@ -0,0 +1,5 @@
+[upower]
+
+# The threshold to to require battery be at or above to allow updates
+# Measure in percent
+BatteryThreshold=10
diff --git a/etc/gai.conf b/etc/gai.conf
new file mode 100644 (file)
index 0000000..4616ed0
--- /dev/null
@@ -0,0 +1,65 @@
+# Configuration for getaddrinfo(3).
+#
+# So far only configuration for the destination address sorting is needed.
+# RFC 3484 governs the sorting.  But the RFC also says that system
+# administrators should be able to overwrite the defaults.  This can be
+# achieved here.
+#
+# All lines have an initial identifier specifying the option followed by
+# up to two values.  Information specified in this file replaces the
+# default information.  Complete absence of data of one kind causes the
+# appropriate default information to be used.  The supported commands include:
+#
+# reload  <yes|no>
+#    If set to yes, each getaddrinfo(3) call will check whether this file
+#    changed and if necessary reload.  This option should not really be
+#    used.  There are possible runtime problems.  The default is no.
+#
+# label   <mask>   <value>
+#    Add another rule to the RFC 3484 label table.  See section 2.1 in
+#    RFC 3484.  The default is:
+#
+#label ::1/128       0
+#label ::/0          1
+#label 2002::/16     2
+#label ::/96         3
+#label ::ffff:0:0/96 4
+#label fec0::/10     5
+#label fc00::/7      6
+#label 2001:0::/32   7
+#
+#    This default differs from the tables given in RFC 3484 by handling
+#    (now obsolete) site-local IPv6 addresses and Unique Local Addresses.
+#    The reason for this difference is that these addresses are never
+#    NATed while IPv4 site-local addresses most probably are.  Given
+#    the precedence of IPv6 over IPv4 (see below) on machines having only
+#    site-local IPv4 and IPv6 addresses a lookup for a global address would
+#    see the IPv6 be preferred.  The result is a long delay because the
+#    site-local IPv6 addresses cannot be used while the IPv4 address is
+#    (at least for the foreseeable future) NATed.  We also treat Teredo
+#    tunnels special.
+#
+# precedence  <mask>   <value>
+#    Add another rule to the RFC 3484 precedence table.  See section 2.1
+#    and 10.3 in RFC 3484.  The default is:
+#
+#precedence  ::1/128       50
+#precedence  ::/0          40
+#precedence  2002::/16     30
+#precedence ::/96          20
+#precedence ::ffff:0:0/96  10
+#
+#    For sites which prefer IPv4 connections change the last line to
+#
+#precedence ::ffff:0:0/96  100
+
+#
+# scopev4  <mask>  <value>
+#    Add another rule to the RFC 6724 scope table for IPv4 addresses.
+#    By default the scope IDs described in section 3.2 in RFC 6724 are
+#    used.  Changing these defaults should hardly ever be necessary.
+#    The defaults are equivalent to:
+#
+#scopev4 ::ffff:169.254.0.0/112  2
+#scopev4 ::ffff:127.0.0.0/104    2
+#scopev4 ::ffff:0.0.0.0/96       14
diff --git a/etc/groff/man.local b/etc/groff/man.local
new file mode 100644 (file)
index 0000000..0c5cd9a
--- /dev/null
@@ -0,0 +1,33 @@
+.\" -*- nroff -*-
+.\"
+.\" This file is loaded after an-old.tmac.
+.\" Put any local modifications to an-old.tmac here.
+.
+.if n \{\
+.  \" Debian: Map \(oq to ' rather than ` in nroff mode for devices other
+.  \" than utf8.
+.  if !'\*[.T]'utf8' \
+.    tr \[oq]'
+.
+.  \" Debian: Disable the use of SGR (ANSI colour) escape sequences by
+.  \" grotty.
+.  if '\V[GROFF_SGR]'' \
+.    output x X tty: sgr 0
+.
+.  \" Debian: Strictly, "-" is a hyphen while "\-" is a minus sign, and the
+.  \" former may not always be rendered in the form expected for things like
+.  \" command-line options.  Uncomment this if you want to make sure that
+.  \" manual pages you're writing are clear of this problem.
+.  \" if '\*[.T]'utf8' \
+.  \"   char - \[hy]
+.
+.  \" Debian: "\-" is more commonly used for option dashes than for minus
+.  \" signs in manual pages, so map it to plain "-" for HTML/XHTML output
+.  \" rather than letting it be rendered as "&minus;".
+.  ie '\*[.T]'html' \
+.    char \- \N'45'
+.  el \{\
+.    if '\*[.T]'xhtml' \
+.      char \- \N'45'
+.  \}
+.\}
diff --git a/etc/groff/mdoc.local b/etc/groff/mdoc.local
new file mode 100644 (file)
index 0000000..c29fac8
--- /dev/null
@@ -0,0 +1,33 @@
+.\" -*- nroff -*-
+.\"
+.\" This file is loaded after doc.tmac.
+.\" Put any local modifications to doc.tmac here.
+.
+.if n \{\
+.  \" Debian: Map \(oq to ' rather than ` in nroff mode for devices other
+.  \" than utf8.
+.  if !'\*[.T]'utf8' \
+.    tr \[oq]'
+.
+.  \" Debian: Disable the use of SGR (ANSI colour) escape sequences by
+.  \" grotty.
+.  if '\V[GROFF_SGR]'' \
+.    output x X tty: sgr 0
+.
+.  \" Debian: Strictly, "-" is a hyphen while "\-" is a minus sign, and the
+.  \" former may not always be rendered in the form expected for things like
+.  \" command-line options.  Uncomment this if you want to make sure that
+.  \" manual pages you're writing are clear of this problem.
+.  \" if '\*[.T]'utf8' \
+.  \"   char - \[hy]
+.
+.  \" Debian: "\-" is more commonly used for option dashes than for minus
+.  \" signs in manual pages, so map it to plain "-" for HTML/XHTML output
+.  \" rather than letting it be rendered as "&minus;".
+.  ie '\*[.T]'html' \
+.    char \- \N'45'
+.  el \{\
+.    if '\*[.T]'xhtml' \
+.      char \- \N'45'
+.  \}
+.\}
diff --git a/etc/group b/etc/group
new file mode 100644 (file)
index 0000000..9ecee83
--- /dev/null
+++ b/etc/group
@@ -0,0 +1,61 @@
+root:x:0:
+daemon:x:1:
+bin:x:2:
+sys:x:3:
+adm:x:4:syslog
+tty:x:5:syslog
+disk:x:6:
+lp:x:7:
+mail:x:8:
+news:x:9:
+uucp:x:10:
+man:x:12:
+proxy:x:13:
+kmem:x:15:
+dialout:x:20:
+fax:x:21:
+voice:x:22:
+cdrom:x:24:
+floppy:x:25:
+tape:x:26:
+sudo:x:27:gg
+audio:x:29:
+dip:x:30:
+www-data:x:33:
+backup:x:34:
+operator:x:37:
+list:x:38:
+irc:x:39:
+src:x:40:
+gnats:x:41:
+shadow:x:42:
+utmp:x:43:
+video:x:44:
+sasl:x:45:
+plugdev:x:46:
+staff:x:50:
+games:x:60:
+users:x:100:
+nogroup:x:65534:
+systemd-journal:x:101:
+systemd-network:x:102:
+systemd-resolve:x:103:
+systemd-timesync:x:104:
+crontab:x:105:
+messagebus:x:106:
+input:x:107:
+kvm:x:108:
+render:x:109:
+syslog:x:110:
+tss:x:111:
+uuidd:x:112:
+tcpdump:x:113:
+ssh:x:114:
+landscape:x:115:
+lxd:x:116:
+systemd-coredump:x:999:
+ssl-cert:x:117:postgres
+postgres:x:118:
+shane:x:1001:
+jon:x:1002:
+gg:x:1003:
diff --git a/etc/group- b/etc/group-
new file mode 100644 (file)
index 0000000..7d88611
--- /dev/null
@@ -0,0 +1,62 @@
+root:x:0:
+daemon:x:1:
+bin:x:2:
+sys:x:3:
+adm:x:4:syslog,gamesguru
+tty:x:5:syslog
+disk:x:6:
+lp:x:7:
+mail:x:8:
+news:x:9:
+uucp:x:10:
+man:x:12:
+proxy:x:13:
+kmem:x:15:
+dialout:x:20:
+fax:x:21:
+voice:x:22:
+cdrom:x:24:gamesguru
+floppy:x:25:
+tape:x:26:
+sudo:x:27:gamesguru,gg
+audio:x:29:
+dip:x:30:gamesguru
+www-data:x:33:
+backup:x:34:
+operator:x:37:
+list:x:38:
+irc:x:39:
+src:x:40:
+gnats:x:41:
+shadow:x:42:
+utmp:x:43:
+video:x:44:
+sasl:x:45:
+plugdev:x:46:gamesguru
+staff:x:50:
+games:x:60:
+users:x:100:
+nogroup:x:65534:
+systemd-journal:x:101:
+systemd-network:x:102:
+systemd-resolve:x:103:
+systemd-timesync:x:104:
+crontab:x:105:
+messagebus:x:106:
+input:x:107:
+kvm:x:108:
+render:x:109:
+syslog:x:110:
+tss:x:111:
+uuidd:x:112:
+tcpdump:x:113:
+ssh:x:114:
+landscape:x:115:
+lxd:x:116:gamesguru
+systemd-coredump:x:999:
+gamesguru:x:1000:
+ssl-cert:x:117:postgres
+postgres:x:118:
+shane:x:1001:
+jon:x:1002:
+gg:x:1003:
diff --git a/etc/grub.d/00_header b/etc/grub.d/00_header
new file mode 100755 (executable)
index 0000000..c627dbb
--- /dev/null
@@ -0,0 +1,448 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
+#
+# GRUB 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.
+#
+# GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+grub_lang=`echo $LANG | cut -d . -f 1`
+grubdir="`echo "/boot/grub" | sed 's,//*,/,g'`"
+quick_boot="1"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+. "$pkgdatadir/grub-mkconfig_lib"
+
+# Do this as early as possible, since other commands might depend on it.
+# (e.g. the `loadfont' command might need lvm or raid modules)
+for i in ${GRUB_PRELOAD_MODULES} ; do
+  echo "insmod $i"
+done
+
+if [ "x${GRUB_DEFAULT}" = "x" ] ; then GRUB_DEFAULT=0 ; fi
+if [ "x${GRUB_DEFAULT}" = "xsaved" ] ; then GRUB_DEFAULT='${saved_entry}' ; fi
+if [ "x${GRUB_TIMEOUT}" = "x" ] ; then GRUB_TIMEOUT=5 ; fi
+if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=auto ; fi
+
+if [ "x${GRUB_DEFAULT_BUTTON}" = "x" ] ; then GRUB_DEFAULT_BUTTON="$GRUB_DEFAULT" ; fi
+if [ "x${GRUB_DEFAULT_BUTTON}" = "xsaved" ] ; then GRUB_DEFAULT_BUTTON='${saved_entry}' ; fi
+if [ "x${GRUB_TIMEOUT_BUTTON}" = "x" ] ; then GRUB_TIMEOUT_BUTTON="$GRUB_TIMEOUT" ; fi
+
+cat << EOF
+if [ -s \$prefix/grubenv ]; then
+  set have_grubenv=true
+  load_env
+fi
+EOF
+cat <<EOF
+if [ "\${initrdfail}" = 2 ]; then
+   set initrdfail=
+elif [ "\${initrdfail}" = 1 ]; then
+   set next_entry="\${prev_entry}"
+   set prev_entry=
+   save_env prev_entry
+   if [ "\${next_entry}" ]; then
+      set initrdfail=2
+   fi
+fi
+EOF
+if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
+    cat <<EOF
+if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
+   set default="${GRUB_DEFAULT_BUTTON}"
+elif [ "\${next_entry}" ] ; then
+   set default="\${next_entry}"
+   set next_entry=
+   save_env next_entry
+   set boot_once=true
+else
+   set default="${GRUB_DEFAULT}"
+fi
+EOF
+else
+    cat <<EOF
+if [ "\${next_entry}" ] ; then
+   set default="\${next_entry}"
+   set next_entry=
+   save_env next_entry
+   set boot_once=true
+else
+   set default="${GRUB_DEFAULT}"
+fi
+EOF
+fi
+cat <<EOF
+
+if [ x"\${feature_menuentry_id}" = xy ]; then
+  menuentry_id_option="--id"
+else
+  menuentry_id_option=""
+fi
+
+export menuentry_id_option
+
+if [ "\${prev_saved_entry}" ]; then
+  set saved_entry="\${prev_saved_entry}"
+  save_env saved_entry
+  set prev_saved_entry=
+  save_env prev_saved_entry
+  set boot_once=true
+fi
+
+function savedefault {
+  if [ -z "\${boot_once}" ]; then
+    saved_entry="\${chosen}"
+    save_env saved_entry
+  fi
+}
+EOF
+
+cat <<"EOF"
+function initrdfail {
+    if [ -n "${have_grubenv}" ]; then if [ -n "${partuuid}" ]; then
+      if [ -z "${initrdfail}" ]; then
+        set initrdfail=1
+        if [ -n "${boot_once}" ]; then
+          set prev_entry="${default}"
+          save_env prev_entry
+        fi
+      fi
+      save_env initrdfail
+    fi; fi
+}
+EOF
+
+if [ "$quick_boot" = 1 ]; then
+    cat <<EOF
+function recordfail {
+  set recordfail=1
+EOF
+
+  check_writable () {
+    abstractions="$(grub-probe --target=abstraction "${grubdir}")"
+    for abstraction in $abstractions; do
+      case "$abstraction" in
+        diskfilter | lvm)
+          cat <<EOF
+  # GRUB lacks write support for $abstraction, so recordfail support is disabled.
+EOF
+          return 1
+          ;;
+      esac
+    done
+
+    FS="$(grub-probe --target=fs "${grubdir}")"
+    case "$FS" in
+      btrfs | cpiofs | newc | odc | romfs | squash4 | tarfs | zfs)
+       cat <<EOF
+  # GRUB lacks write support for $FS, so recordfail support is disabled.
+EOF
+       return 1
+       ;;
+    esac
+
+    cat <<EOF
+  if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env recordfail; fi; fi
+EOF
+  }
+
+  if ! check_writable; then
+    recordfail_broken=1
+  fi
+
+  cat <<EOF
+}
+EOF
+fi
+
+cat <<EOF
+function load_video {
+EOF
+if [ -n "${GRUB_VIDEO_BACKEND}" ]; then
+    cat <<EOF
+  insmod ${GRUB_VIDEO_BACKEND}
+EOF
+else
+# If all_video.mod isn't available load all modules available
+# with versions prior to introduction of all_video.mod
+cat <<EOF
+  if [ x\$feature_all_video_module = xy ]; then
+    insmod all_video
+  else
+    insmod efi_gop
+    insmod efi_uga
+    insmod ieee1275_fb
+    insmod vbe
+    insmod vga
+    insmod video_bochs
+    insmod video_cirrus
+  fi
+EOF
+fi
+cat <<EOF
+}
+
+EOF
+
+serial=0;
+gfxterm=0;
+for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do
+    if [ xserial = "x$x" ]; then
+       serial=1;
+    fi
+    if [ xgfxterm = "x$x" ]; then
+       gfxterm=1;
+    fi
+done
+
+if [ "x$serial" = x1 ]; then
+    if [ "x${GRUB_SERIAL_COMMAND}" = "x" ] ; then
+       grub_warn "$(gettext "Requested serial terminal but GRUB_SERIAL_COMMAND is unspecified. Default parameters will be used.")"
+       GRUB_SERIAL_COMMAND=serial
+    fi
+    echo "${GRUB_SERIAL_COMMAND}"
+fi
+
+if [ "x$gfxterm" = x1 ]; then
+    if [ -n "$GRUB_FONT" ] ; then
+       # Make the font accessible
+       prepare_grub_to_access_device `${grub_probe} --target=device "${GRUB_FONT}"`
+    cat << EOF
+if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT}"` ; then
+EOF
+    else
+       for dir in "${pkgdatadir}" "`echo '/boot/grub' | sed "s,//*,/,g"`" /usr/share/grub ; do
+           for basename in unicode unifont ascii; do
+               path="${dir}/${basename}.pf2"
+               if is_path_readable_by_grub "${path}" > /dev/null ; then
+                   font_path="${path}"
+               else
+                   continue
+               fi
+               break 2
+           done
+       done
+       if [ -n "${font_path}" ] ; then
+    cat << EOF
+if [ x\$feature_default_font_path = xy ] ; then
+   font=unicode
+else
+EOF
+                # Make the font accessible
+               prepare_grub_to_access_device `${grub_probe} --target=device "${font_path}"`
+    cat << EOF
+    font="`make_system_path_relative_to_its_root "${font_path}"`"
+fi
+
+if loadfont \$font ; then
+EOF
+           else
+    cat << EOF
+if loadfont unicode ; then
+EOF
+           fi
+       fi
+
+    cat << EOF
+  set gfxmode=${GRUB_GFXMODE}
+  load_video
+  insmod gfxterm
+EOF
+
+# Gettext variables and module
+if [ "x${LANG}" != "xC" ] &&  [ "x${LANG}" != "x" ]; then
+  cat << EOF
+  set locale_dir=\$prefix/locale
+  set lang=${grub_lang}
+  insmod gettext
+EOF
+fi
+
+cat <<EOF
+fi
+EOF
+fi
+
+case x${GRUB_TERMINAL_INPUT} in
+  x)
+    # Just use the native terminal
+  ;;
+  x*)
+    cat << EOF
+terminal_input ${GRUB_TERMINAL_INPUT}
+EOF
+  ;;
+esac
+
+case x${GRUB_TERMINAL_OUTPUT} in
+  x)
+    # Just use the native terminal
+  ;;
+  x*)
+    cat << EOF
+terminal_output ${GRUB_TERMINAL_OUTPUT}
+EOF
+  ;;
+esac
+
+if [ "x$gfxterm" = x1 ]; then
+    if [ "x$GRUB_THEME" != x ] && [ -f "$GRUB_THEME" ] \
+       && is_path_readable_by_grub "$GRUB_THEME"; then
+       gettext_printf "Found theme: %s\n" "$GRUB_THEME" >&2
+
+       prepare_grub_to_access_device `${grub_probe} --target=device "$GRUB_THEME"`
+       cat << EOF
+insmod gfxmenu
+EOF
+       themedir="`dirname "$GRUB_THEME"`"
+       for x in "$themedir"/*.pf2 "$themedir"/f/*.pf2; do
+           if [ -f "$x" ]; then
+               cat << EOF
+loadfont (\$root)`make_system_path_relative_to_its_root $x`
+EOF
+           fi
+       done
+       if [ x"`echo "$themedir"/*.jpg`" != x"$themedir/*.jpg" ] || [ x"`echo "$themedir"/*.jpeg`" != x"$themedir/*.jpeg" ]; then
+           cat << EOF
+insmod jpeg
+EOF
+       fi
+       if [ x"`echo "$themedir"/*.png`" != x"$themedir/*.png" ]; then
+           cat << EOF
+insmod png
+EOF
+       fi
+       if [ x"`echo "$themedir"/*.tga`" != x"$themedir/*.tga" ]; then
+           cat << EOF
+insmod tga
+EOF
+       fi
+           
+       cat << EOF
+set theme=(\$root)`make_system_path_relative_to_its_root $GRUB_THEME`
+export theme
+EOF
+    elif [ "x$GRUB_BACKGROUND" != x ] && [ -f "$GRUB_BACKGROUND" ] \
+           && is_path_readable_by_grub "$GRUB_BACKGROUND"; then
+       gettext_printf "Found background: %s\n" "$GRUB_BACKGROUND" >&2
+       case "$GRUB_BACKGROUND" in 
+           *.png)         reader=png ;;
+           *.tga)         reader=tga ;;
+           *.jpg|*.jpeg)  reader=jpeg ;;
+           *)             gettext "Unsupported image format" >&2; echo >&2; exit 1 ;;
+       esac
+       prepare_grub_to_access_device `${grub_probe} --target=device "$GRUB_BACKGROUND"`
+       cat << EOF
+insmod $reader
+background_image -m stretch `make_system_path_relative_to_its_root "$GRUB_BACKGROUND"`
+EOF
+    fi
+fi
+
+make_timeout ()
+{
+    cat << EOF
+if [ "\${recordfail}" = 1 ] ; then
+  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
+else
+EOF
+    if [ "x${3}" != "x" ] ; then
+       timeout="${2}"
+       style="${3}"
+    elif [ "x${1}" != "x" ] && \
+        ([ "$quick_boot" = 1 ] || [ "x${1}" != "x0" ]) ; then
+       # Handle the deprecated GRUB_HIDDEN_TIMEOUT scheme.
+       timeout="${1}"
+       if [ "x${2}" != "x0" ] ; then
+           grub_warn "$(gettext "Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.")"
+       fi
+       if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
+           style="hidden"
+           verbose=
+       else
+           style="countdown"
+           verbose=" --verbose"
+       fi
+    else
+       # No hidden timeout, so treat as GRUB_TIMEOUT_STYLE=menu
+       timeout="${2}"
+       style="menu"
+    fi
+    cat << EOF
+  if [ x\$feature_timeout_style = xy ] ; then
+    set timeout_style=${style}
+    set timeout=${timeout}
+EOF
+    if [ "x${style}" = "xmenu" ] ; then
+       cat << EOF
+  # Fallback normal timeout code in case the timeout_style feature is
+  # unavailable.
+  else
+    set timeout=${timeout}
+EOF
+    else
+       cat << EOF
+  # Fallback hidden-timeout code in case the timeout_style feature is
+  # unavailable.
+  elif sleep${verbose} --interruptible ${timeout} ; then
+    set timeout=0
+EOF
+    fi
+    cat << EOF
+  fi
+fi
+EOF
+if [ "$recordfail_broken" = 1 ]; then
+  cat << EOF
+if [ \$grub_platform = efi ]; then
+  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
+  if [ x\$feature_timeout_style = xy ] ; then
+    set timeout_style=menu
+  fi
+fi
+EOF
+fi
+}
+
+if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
+    cat <<EOF
+if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
+EOF
+make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_STYLE_BUTTON}"
+echo else
+make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}" "${GRUB_TIMEOUT_STYLE}"
+echo fi
+else
+make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}" "${GRUB_TIMEOUT_STYLE}"
+fi
+
+if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ] && [ "x$GRUB_BUTTON_CMOS_CLEAN" = "xyes" ]; then
+    cat <<EOF
+cmosclean $GRUB_BUTTON_CMOS_ADDRESS
+EOF
+fi
+
+# Play an initial tune
+if [ "x${GRUB_INIT_TUNE}" != "x" ] ; then
+  echo "play ${GRUB_INIT_TUNE}"
+fi
+
+if [ "x${GRUB_BADRAM}" != "x" ] ; then
+  echo "badram ${GRUB_BADRAM}"
+fi
diff --git a/etc/grub.d/05_debian_theme b/etc/grub.d/05_debian_theme
new file mode 100755 (executable)
index 0000000..7172584
--- /dev/null
@@ -0,0 +1,197 @@
+#!/bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2010  Alexander Kurtz <kurtz.alex@googlemail.com>
+#
+# GRUB 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.
+#
+# GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+# Include the GRUB helper library for grub-mkconfig.
+. /usr/share/grub/grub-mkconfig_lib
+
+# We want to work in /boot/grub/ only.
+test -d /boot/grub; cd /boot/grub
+
+# Set the location of a possibly necessary cache file for the background image.
+# NOTE: This MUST BE A DOTFILE to avoid confusing it with user-defined images.
+BACKGROUND_CACHE=".background_cache"
+
+set_default_theme(){
+       case $GRUB_DISTRIBUTOR in
+               Tanglu|Ubuntu|Kubuntu)
+                       # Set a monochromatic theme for Tanglu/Ubuntu.
+                       echo "${1}set menu_color_normal=white/black"
+                       echo "${1}set menu_color_highlight=black/light-gray"
+
+                       if [ -e /usr/share/plymouth/themes/default.grub ]; then
+                               sed "s/^/${1}/" /usr/share/plymouth/themes/default.grub
+                       fi
+                       # For plymouth backward compatiblity. Can be removed
+                       # after xenial.
+                       if [ -e /lib/plymouth/themes/default.grub ]; then
+                               sed "s/^/${1}/" /lib/plymouth/themes/default.grub
+                       fi
+                       ;;
+               *)
+                       # Set the traditional Debian blue theme.
+                       echo "${1}set menu_color_normal=cyan/blue"
+                       echo "${1}set menu_color_highlight=white/blue"
+                       ;;
+       esac
+}
+
+module_available(){
+       local module
+       for module in "${1}.mod" */"${1}.mod"; do
+               if [ -f "${module}" ]; then
+                       return 0
+               fi
+       done
+       return 1
+}
+
+set_background_image(){
+       # Step #1: Search all available output modes ...
+       local output
+       for output in ${GRUB_TERMINAL_OUTPUT}; do
+               if [ "x$output" = "xgfxterm" ]; then
+                       break
+               fi
+       done
+
+       # ... and check if we are able to display a background image at all.
+       if ! [ "x${output}" = "xgfxterm" ]; then
+               return 1
+       fi
+
+       # Step #2: Check if the specified background image exists.
+       if ! [ -f "${1}" ]; then
+               return 2
+       fi
+
+       # Step #3: Search the correct GRUB module for our background image.
+       local reader
+       case "${1}" in
+               *.jpg|*.JPG|*.jpeg|*.JPEG) reader="jpeg";;
+               *.png|*.PNG) reader="png";;
+               *.tga|*.TGA) reader="tga";;
+               *) return 3;; # Unknown image type.
+       esac
+
+       # Step #4: Check if the necessary GRUB module is available.
+       if ! module_available "${reader}"; then
+               return 4
+       fi
+
+       # Step #5: Check if GRUB can read the background image directly.
+       # If so, we can remove the cache file (if any). Otherwise the backgound
+       # image needs to be cached under /boot/grub/.
+       if is_path_readable_by_grub "${1}"; then
+               rm --force "${BACKGROUND_CACHE}.jpeg" \
+                       "${BACKGROUND_CACHE}.png" "${BACKGROUND_CACHE}.tga"
+       elif cp "${1}" "${BACKGROUND_CACHE}.${reader}"; then
+               set -- "${BACKGROUND_CACHE}.${reader}" "${2}" "${3}"
+       else
+               return 5
+       fi
+
+       # Step #6: Prepare GRUB to read the background image.
+       if ! prepare_grub_to_access_device "`${grub_probe} --target=device "${1}"`"; then
+               return 6
+       fi
+
+       # Step #7: Everything went fine, print out a message to stderr ...
+       echo "Found background image: ${1}" >&2
+
+       # ... and write our configuration snippet to stdout. Use the colors
+       # desktop-base specified. If we're using a user-defined background, use
+       # the default colors since we've got no idea how the image looks like.
+       # If loading the background image fails, use the default theme.
+       echo "insmod ${reader}"
+       echo "if background_image `make_system_path_relative_to_its_root "${1}"`; then"
+       if [ -n "${2}" ]; then
+               echo "  set color_normal=${2}"
+       fi
+       if [ -n "${3}" ]; then
+               echo "  set color_highlight=${3}"
+       fi
+       if [ -z "${2}" ] && [ -z "${3}" ]; then
+               echo "  true"
+       fi
+       echo "else"
+       set_default_theme "  "
+       echo "fi"
+}
+
+# Earlier versions of grub-pc copied the default background image to /boot/grub
+# during postinst. Remove those obsolete images if they haven't been touched by
+# the user. They are still available under /usr/share/images/desktop-base/ if
+# desktop-base is installed.
+while read checksum background; do
+       if [ -f "${background}" ] && [ "x`sha1sum "${background}"`" = "x${checksum}  ${background}" ]; then
+               echo "Removing old background image: ${background}" >&2
+               rm "${background}"
+       fi
+done <<EOF
+648ee65dd0c157a69b019a5372cbcfea4fc754a5  debian-blueish-wallpaper-640x480.png
+0431e97a6c661084c59676c4baeeb8c2f602edb8  debian-blueish-wallpaper-640x480.png
+968ecf6696c5638cfe80e8e70aba239526270864  debian-blueish-wallpaper-640x480.tga
+11143e8c92a073401de0b0fd42d0c052af4ccd9b  moreblue-orbit-grub.png
+d00d5e505ab63f2d53fa880bfac447e2d3bb197c  moreblue-orbit-grub.png
+f5b12c1009ec0a3b029185f6b66cd0d7e5611019  moreblue-orbit-grub.png
+EOF
+
+# Include the configuration of desktop-base if available.
+if [ -f "/usr/share/desktop-base/grub_background.sh" ]; then
+       . "/usr/share/desktop-base/grub_background.sh"
+fi
+
+# First check whether the user has specified a background image explicitly.
+# If so, try to use it. Don't try the other possibilities in that case
+# (#608263).
+if [ -n "${GRUB_BACKGROUND+x}" ]; then
+       set_background_image "${GRUB_BACKGROUND}" || set_default_theme
+       exit 0
+fi
+
+# Next search for pictures the user put into /boot/grub/ and use the first one.
+for background in *.jpg *.JPG *.jpeg *.JPEG *.png *.PNG *.tga *.TGA; do
+       if set_background_image "${background}"; then
+               exit 0
+       fi
+done
+
+# Next try to use the background image and colors specified by desktop-base.
+if set_background_image "${WALLPAPER}" "${COLOR_NORMAL}" "${COLOR_HIGHLIGHT}"; then
+       exit 0
+fi
+
+# If we haven't found a background image yet, use the default from desktop-base.
+case $GRUB_DISTRIBUTOR in
+       Ubuntu|Kubuntu)
+               ;;
+       Tanglu)
+               if set_background_image "/usr/share/images/grub/grub.png"; then
+                       exit 0
+               fi
+               ;;
+       *)
+               if set_background_image "/usr/share/images/desktop-base/desktop-grub.png"; then
+                       exit 0
+               fi
+               ;;
+esac
+
+# Finally, if all of the above fails, use the default theme.
+set_default_theme
diff --git a/etc/grub.d/10_linux b/etc/grub.d/10_linux
new file mode 100755 (executable)
index 0000000..1b9f091
--- /dev/null
@@ -0,0 +1,530 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
+#
+# GRUB 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.
+#
+# GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+ubuntu_recovery="1"
+quiet_boot="1"
+quick_boot="1"
+gfxpayload_dynamic="1"
+vt_handoff="1"
+
+. "$pkgdatadir/grub-mkconfig_lib"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+CLASS="--class gnu-linux --class gnu --class os"
+SUPPORTED_INITS="sysvinit:/lib/sysvinit/init systemd:/lib/systemd/systemd upstart:/sbin/upstart"
+
+if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+  OS=GNU/Linux
+else
+  case ${GRUB_DISTRIBUTOR} in
+    Ubuntu|Kubuntu)
+      OS="${GRUB_DISTRIBUTOR}"
+      ;;
+    *)
+      OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+      ;;
+  esac
+  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
+fi
+
+# loop-AES arranges things so that /dev/loop/X can be our root device, but
+# the initrds that Linux uses don't like that.
+case ${GRUB_DEVICE} in
+  /dev/loop/*|/dev/loop[0-9])
+    GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
+    # We can't cope with devices loop-mounted from files here.
+    case ${GRUB_DEVICE} in
+      /dev/*) ;;
+      *) exit 0 ;;
+    esac
+  ;;
+esac
+
+# Default to disabling partition uuid support to maintian compatibility with
+# older kernels.
+GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}
+
+# get_dm_field_for_dev /dev/dm-0 uuid -> get the device mapper UUID for /dev/dm-0
+# get_dm_field_for_dev /dev/dm-1 name -> get the device mapper name for /dev/dm-1
+# etc
+get_dm_field_for_dev () {
+    dmsetup info -c --noheadings -o $2 $1 2>/dev/null
+}
+
+# Is $1 a multipath device?
+is_multipath () {
+    local dmuuid dmtype
+    dmuuid="$(get_dm_field_for_dev $1 uuid)"
+    if [ $? -ne 0 ]; then
+        # Not a device mapper device -- or dmsetup not installed, and as
+        # multipath depends on kpartx which depends on dmsetup, if there is no
+        # dmsetup then there are not going to be any multipath devices.
+        return 1
+    fi
+    # A device mapper "uuid" is always <type>-<uuid>. If <type> is of the form
+    # part[0-9] then <uuid> is the device the partition is on and we want to
+    # look at that instead. A multipath node always has <type> of mpath.
+    dmtype="${dmuuid%%-*}"
+    if [ "${dmtype#part}" != "$dmtype" ]; then
+        dmuuid="${dmuuid#*-}"
+        dmtype="${dmuuid%%-*}"
+    fi
+    if [ "$dmtype" = "mpath" ]; then
+        return 0
+    else
+        return 1
+    fi
+}
+
+if test -e "${GRUB_DEVICE}" && is_multipath "${GRUB_DEVICE}"; then
+    # If / is multipathed, there will be multiple paths to the partition, so
+    # using root=UUID= exposes the boot process to udev races. In addition
+    # GRUB_DEVICE in this case will be /dev/dm-0 or similar -- better to use a
+    # symlink that depends on the multipath name.
+    GRUB_DEVICE=/dev/mapper/"$(get_dm_field_for_dev $GRUB_DEVICE name)"
+    GRUB_DISABLE_LINUX_UUID=true
+fi
+
+# btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
+# and mounting btrfs requires user space scanning, so force UUID in this case.
+if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) \
+    || ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
+       && [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \
+    || ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+       && ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \
+    || ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); then
+  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \
+    || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then
+  LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID}
+else
+  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+case x"$GRUB_FS" in
+    xbtrfs)
+       rootsubvol="`make_system_path_relative_to_its_root /`"
+       rootsubvol="${rootsubvol#/}"
+       if [ "x${rootsubvol}" != x ]; then
+           GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
+       fi;;
+    xzfs)
+       # We have a more specialized ZFS handler, with multiple system in 10_linux_zfs.
+       if [ -e "`dirname $(readlink -f $0)`/10_linux_zfs" ]; then
+         exit 0
+       fi
+       rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`
+       bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
+       LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs%/}"
+       ;;
+esac
+
+title_correction_code=
+
+if [ -x /lib/recovery-mode/recovery-menu ]; then
+    GRUB_CMDLINE_LINUX_RECOVERY=recovery
+else
+    GRUB_CMDLINE_LINUX_RECOVERY=single
+fi
+if [ "$ubuntu_recovery" = 1 ]; then
+    GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY nomodeset"
+fi
+
+if [ "$vt_handoff" = 1 ]; then
+  for word in $GRUB_CMDLINE_LINUX_DEFAULT; do
+    if [ "$word" = splash ]; then
+      GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \$vt_handoff"
+    fi
+  done
+fi
+
+if [ x"$GRUB_FORCE_PARTUUID" != x ]; then
+    gettext_printf "GRUB_FORCE_PARTUUID is set, will attempt initrdless boot\n" >&2
+    cat << EOF
+#
+# GRUB_FORCE_PARTUUID is set, will attempt initrdless boot
+# Upon panic fallback to booting with initrd
+EOF
+   echo "set partuuid=${GRUB_FORCE_PARTUUID}"
+fi
+
+linux_entry ()
+{
+  os="$1"
+  version="$2"
+  type="$3"
+  args="$4"
+
+  if [ -z "$boot_device_id" ]; then
+      boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+  fi
+  if [ x$type != xsimple ] ; then
+      case $type in
+         recovery)
+             title="$(gettext_printf "%s, with Linux %s (%s)" "${os}" "${version}" "$(gettext "${GRUB_RECOVERY_TITLE}")")" ;;
+         init-*)
+             title="$(gettext_printf "%s, with Linux %s (%s)" "${os}" "${version}" "${type#init-}")" ;;
+         *)
+             title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;;
+      esac
+      if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
+         replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
+         quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
+         title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
+         grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
+      fi
+      echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
+  else
+      echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
+  fi      
+  if [ "$quick_boot" = 1 ]; then
+      echo "   recordfail" | sed "s/^/$submenu_indentation/"
+  fi
+  if [ x$type != xrecovery ] ; then
+      save_default_entry | grub_add_tab
+  fi
+
+  # Use ELILO's generic "efifb" when it's known to be available.
+  # FIXME: We need an interface to select vesafb in case efifb can't be used.
+  if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
+      echo "   load_video" | sed "s/^/$submenu_indentation/"
+  else
+      if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
+         echo "        load_video" | sed "s/^/$submenu_indentation/"
+      fi
+  fi
+  if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \
+     ([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then
+      echo "   gfxmode \$linux_gfx_mode" | sed "s/^/$submenu_indentation/"
+  fi
+
+  echo "       insmod gzio" | sed "s/^/$submenu_indentation/"
+  echo "       if [ x\$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi" | sed "s/^/$submenu_indentation/"
+
+  if [ x$dirname = x/ ]; then
+    if [ -z "${prepare_root_cache}" ]; then
+      prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)"
+    fi
+    printf '%s\n' "${prepare_root_cache}" | sed "s/^/$submenu_indentation/"
+  else
+    if [ -z "${prepare_boot_cache}" ]; then
+      prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
+    fi
+    printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
+  fi
+  if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
+    message="$(gettext_printf "Loading Linux %s ..." ${version})"
+    sed "s/^/$submenu_indentation/" << EOF
+       echo    '$(echo "$message" | grub_quote)'
+EOF
+  fi
+  if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
+    sed "s/^/$submenu_indentation/" << EOF
+       linux   ${rel_dirname}/${basename}.efi.signed root=${linux_root_device_thisversion} ro ${args}
+EOF
+  else
+    # We have initrd and PARTUUID is set - we try to boot without initrd, and fallback to using it
+    # if it fails.
+    # "panic=-1" means "on panic reboot immediately". "panic=0" disables the reboot behavior.
+    if [ x"$GRUB_FORCE_PARTUUID" != x ]; then
+        linux_root_device_thisversion="PARTUUID=${GRUB_FORCE_PARTUUID}"
+    fi
+    message="$(gettext_printf "Loading initial ramdisk ...")"
+    initrdlessfail_msg="$(gettext_printf "GRUB_FORCE_PARTUUID set, initrdless boot failed. Attempting with initrd.")"
+    initrdlesstry_msg="$(gettext_printf "GRUB_FORCE_PARTUUID set, attempting initrdless boot.")"
+    initrd_path=
+    for i in ${initrd}; do
+        initrd_path="${initrd_path} ${rel_dirname}/${i}"
+    done
+    initrd_path_only_early=
+    for i in ${initrd_early}; do
+        initrd_path_only_early="${initrd_path_only_early} ${rel_dirname}/${i}"
+    done
+    if test -n "${initrd}" && [ x"$GRUB_FORCE_PARTUUID" != x ]; then
+        sed "s/^/$submenu_indentation/" << EOF
+       if [ "\${initrdfail}" = 1 ]; then
+         echo  '$(echo "$initrdlessfail_msg" | grub_quote)'
+         linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
+EOF
+        if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
+          sed "s/^/$submenu_indentation/" << EOF
+         echo  '$(echo "$message" | grub_quote)'
+EOF
+        fi
+        sed "s/^/$submenu_indentation/" << EOF
+         initrd        $(echo $initrd_path)
+       else
+         echo  '$(echo "$initrdlesstry_msg" | grub_quote)'
+         linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} panic=-1
+EOF
+        if [ -n "$initrd_path_only_early" ]; then
+          sed "s/^/$submenu_indentation/" << EOF
+         initrd        $(echo $initrd_path_only_early)
+EOF
+        fi
+        sed "s/^/$submenu_indentation/" << EOF
+       fi
+       initrdfail
+EOF
+    else
+    # We don't have initrd or we don't want to set PARTUUID. Don't try initrd-less boot with fallback.
+        sed "s/^/$submenu_indentation/" << EOF
+       linux   ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
+EOF
+        if test -n "${initrd}"; then
+            # We do have initrd - let's use it at boot.
+            # TRANSLATORS: ramdisk isn't identifier. Should be translated.
+            if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
+              sed "s/^/$submenu_indentation/" << EOF
+       echo    '$(echo "$message" | grub_quote)'
+EOF
+            fi
+            sed "s/^/$submenu_indentation/" << EOF
+       initrd  $(echo $initrd_path)
+EOF
+        fi
+    fi
+    if test -n "${dtb}" ; then
+      if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
+        message="$(gettext_printf "Loading device tree blob...")"
+        sed "s/^/$submenu_indentation/" << EOF
+       echo    '$(echo "$message" | grub_quote)'
+EOF
+      fi
+      sed "s/^/$submenu_indentation/" << EOF
+       devicetree      ${rel_dirname}/${dtb}
+EOF
+    fi
+  fi
+  sed "s/^/$submenu_indentation/" << EOF
+}
+EOF
+}
+
+machine=`uname -m`
+case "x$machine" in
+    xi?86 | xx86_64)
+       list=
+       for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
+           if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
+       done ;;
+    *) 
+       list=
+       for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
+                  if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
+       done ;;
+esac
+
+case "$machine" in
+    i?86) GENKERNEL_ARCH="x86" ;;
+    mips|mips64) GENKERNEL_ARCH="mips" ;;
+    mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
+    arm*) GENKERNEL_ARCH="arm" ;;
+    *) GENKERNEL_ARCH="$machine" ;;
+esac
+
+case "$GENKERNEL_ARCH" in
+  x86*) GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY dis_ucode_ldr";;
+esac
+
+prepare_boot_cache=
+prepare_root_cache=
+boot_device_id=
+title_correction_code=
+
+cat << 'EOF'
+function gfxmode {
+       set gfxpayload="${1}"
+EOF
+if [ "$vt_handoff" = 1 ]; then
+  cat << 'EOF'
+       if [ "${1}" = "keep" ]; then
+               set vt_handoff=vt.handoff=7
+       else
+               set vt_handoff=
+       fi
+EOF
+fi
+cat << EOF
+}
+EOF
+
+# Use ELILO's generic "efifb" when it's known to be available.
+# FIXME: We need an interface to select vesafb in case efifb can't be used.
+if [ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 0 ]; then
+  echo "set linux_gfx_mode=$GRUB_GFXPAYLOAD_LINUX"
+else
+  cat << EOF
+if [ "\${recordfail}" != 1 ]; then
+  if [ -e \${prefix}/gfxblacklist.txt ]; then
+    if [ \${grub_platform} != pc ]; then
+      set linux_gfx_mode=keep
+    elif hwmatch \${prefix}/gfxblacklist.txt 3; then
+      if [ \${match} = 0 ]; then
+        set linux_gfx_mode=keep
+      else
+        set linux_gfx_mode=text
+      fi
+    else
+      set linux_gfx_mode=text
+    fi
+  else
+    set linux_gfx_mode=keep
+  fi
+else
+  set linux_gfx_mode=text
+fi
+EOF
+fi
+cat << EOF
+export linux_gfx_mode
+EOF
+
+# Extra indentation to add to menu entries in a submenu. We're not in a submenu
+# yet, so it's empty. In a submenu it will be equal to '\t' (one tab).
+submenu_indentation=""
+
+is_top_level=true
+while [ "x$list" != "x" ] ; do
+  linux=`version_find_latest $list`
+  case $linux in
+    *.efi.signed)
+      # We handle these in linux_entry.
+      list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
+      continue
+      ;;
+  esac
+  gettext_printf "Found linux image: %s\n" "$linux" >&2
+  basename=`basename $linux`
+  dirname=`dirname $linux`
+  rel_dirname=`make_system_path_relative_to_its_root $dirname`
+  version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
+  alt_version=`echo $version | sed -e "s,\.old$,,g"`
+  linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+
+  initrd_early=
+  for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \
+          ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do
+    if test -e "${dirname}/${i}" ; then
+      initrd_early="${initrd_early} ${i}"
+    fi
+  done
+
+  initrd_real=
+  for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
+          "initrd-${version}" "initramfs-${version}.img" \
+          "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
+          "initrd-${alt_version}" "initramfs-${alt_version}.img" \
+          "initramfs-genkernel-${version}" \
+          "initramfs-genkernel-${alt_version}" \
+          "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
+          "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
+    if test -e "${dirname}/${i}" ; then
+      initrd_real="${i}"
+      break
+    fi
+  done
+
+  initrd=
+  if test -n "${initrd_early}" || test -n "${initrd_real}"; then
+    initrd="${initrd_early} ${initrd_real}"
+
+    initrd_display=
+    for i in ${initrd}; do
+      initrd_display="${initrd_display} ${dirname}/${i}"
+    done
+    gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
+  fi
+
+  dtb=
+  for i in "dtb-${version}" "dtb-${alt_version}" "dtb"; do
+    if test -e "${dirname}/${i}" ; then
+      dtb="$i"
+      break
+    fi
+  done
+
+  config=
+  for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
+    if test -e "${i}" ; then
+      config="${i}"
+      break
+    fi
+  done
+
+  initramfs=
+  if test -n "${config}" ; then
+      initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr -d \"`
+  fi
+
+  if test -z "${initramfs}" && test -z "${initrd_real}" ; then
+    # "UUID=" and "ZFS=" magic is parsed by initrd or initramfs.  Since there's
+    # no initrd or builtin initramfs, it can't work here.
+    if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
+       || [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then
+
+       linux_root_device_thisversion=${GRUB_DEVICE}
+    else
+       linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID}
+    fi
+  fi
+
+  if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+    linux_entry "${OS}" "${version}" simple \
+    "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+
+    submenu_indentation="$grub_tab"
+    
+    if [ -z "$boot_device_id" ]; then
+       boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+    fi
+    # TRANSLATORS: %s is replaced with an OS name
+    echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
+    is_top_level=false
+  fi
+
+  linux_entry "${OS}" "${version}" advanced \
+              "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+  for supported_init in ${SUPPORTED_INITS}; do
+    init_path="${supported_init#*:}"
+    if [ -x "${init_path}" ] && [ "$(readlink -f /sbin/init)" != "$(readlink -f "${init_path}")" ]; then
+      linux_entry "${OS}" "${version}" "init-${supported_init%%:*}" \
+                 "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} init=${init_path}"
+    fi
+  done
+  if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
+    linux_entry "${OS}" "${version}" recovery \
+                "${GRUB_CMDLINE_LINUX_RECOVERY} ${GRUB_CMDLINE_LINUX}"
+  fi
+
+  list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
+done
+
+# If at least one kernel was found, then we need to
+# add a closing '}' for the submenu command.
+if [ x"$is_top_level" != xtrue ]; then
+  echo '}'
+fi
+
+echo "$title_correction_code"
diff --git a/etc/grub.d/10_linux_zfs b/etc/grub.d/10_linux_zfs
new file mode 100755 (executable)
index 0000000..4efb681
--- /dev/null
@@ -0,0 +1,1117 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2019 Canonical Ltd.
+#
+# GRUB 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.
+#
+# GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+datarootdir="/usr/share"
+ubuntu_recovery="1"
+quiet_boot="1"
+quick_boot="1"
+gfxpayload_dynamic="1"
+vt_handoff="1"
+
+. "${pkgdatadir}/grub-mkconfig_lib"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+set -u
+
+## Skip early if zfs utils isn't installed (instead of failing on first zpool list)
+if ! `which zfs >/dev/null 2>&1`; then
+    exit 0
+fi
+
+imported_pools=""
+MNTDIR="$(mktemp -d ${TMPDIR:-/tmp}/zfsmnt.XXXXXX)"
+ZFSTMP="$(mktemp -d ${TMPDIR:-/tmp}/zfstmp.XXXXXX)"
+
+
+machine="$(uname -m)"
+case "${machine}" in
+    i?86) GENKERNEL_ARCH="x86" ;;
+    mips|mips64) GENKERNEL_ARCH="mips" ;;
+    mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
+    arm*) GENKERNEL_ARCH="arm" ;;
+    *) GENKERNEL_ARCH="${machine}" ;;
+esac
+
+RC=0
+on_exit() {
+    # Restore initial zpool import state
+    for pool in ${imported_pools}; do
+        zpool export "${pool}"
+    done
+
+    mountpoint -q "${MNTDIR}"  && umount "${MNTDIR}" || true
+    rmdir "${MNTDIR}"
+    rm -rf "${ZFSTMP}"
+    exit "${RC}"
+}
+trap on_exit EXIT INT QUIT ABRT PIPE TERM
+
+# List ONLINE and DEGRADED pools
+import_pools() {
+    # We have to ignore zpool import output, as potentially multiple / will be available,
+    # and we need to autodetect all zpools this way with their real mountpoints.
+    local initial_pools="$(zpool list | awk '{if (NR>1) print $1}')"
+    local all_pools=""
+    local imported_pools=""
+    local err=""
+
+    set +e
+    err="$(zpool import -f -a -o cachefile=none -o readonly=on -N 2>&1)"
+    # Only print stderr if the command returned an error
+    # (it can echo "No zpool to import" with success, which we don't want)
+    if [ $? -ne 0 ]; then
+        echo "Some pools couldn't be imported and will be ignored:\n${err}" >&2
+    fi
+    set -e
+
+    all_pools="$(zpool list | awk '{if (NR>1) print $1}')"
+    for pool in ${all_pools}; do
+        if echo "${initial_pools}" | grep -wq "${pool}"; then
+            continue
+        fi
+        imported_pools="${imported_pools} ${pool}"
+    done
+
+    echo "${imported_pools}"
+}
+
+# List all the dataset with a root mountpoint
+get_root_datasets() {
+    local pools="$(zpool list | awk '{if (NR>1) print $1}')"
+
+    for p in ${pools}; do
+        local rel_pool_root=$(zpool get -H altroot ${p} | awk '{print $3}')
+        if [ "${rel_pool_root}" = "-" ]; then
+            rel_pool_root="/"
+        fi
+
+        zfs list -H -o name,canmount,mountpoint -t filesystem | grep -E '^'"${p}"'(\s|/[[:print:]]*\s)(on|noauto)\s'"${rel_pool_root}"'$' | awk '{print $1}'
+    done
+}
+
+# find if given datasets can be mounted for directory and return its path (snapshot or real path)
+# $1 is our current dataset name
+# $2 directory path we look for (cannot contains /)
+# $3 is the temporary mount directory to use
+# $4 is the optional snapshot name
+# return path for directory (which can be a mountpoint)
+validate_system_dataset() {
+    local dataset="$1"
+    local directory="$2"
+    local mntdir="$3"
+    local snapshot_name="$4"
+
+    local mount_path="${mntdir}/${directory}"
+
+    if ! zfs list "${dataset}" >/dev/null 2>&1; then
+        return
+    fi
+
+    if ! mount -o noatime,zfsutil -t zfs "${dataset}" "${mount_path}"; then
+        grub_warn "Failed to find a valid directory '${directory}' for dataset '${dataset}@${snapshot_name}'. Ignoring"
+        return
+    fi
+
+    local candidate_path="${mount_path}"
+    if [ -n "${snapshot_name}" ]; then
+        # WORKAROUND a bug https://github.com/zfsonlinux/zfs/issues/9958
+        # Reading the content of a snapshot fails if it is not the first mount
+        # for a given dataset
+        first_mntdir=$(awk '{if ($1 == "'${dataset}'") {print $2; exit;}}' /proc/mounts)
+        if [ "${first_mntdir}" = "/" ]; then
+            # prevents // on candidate_path
+            first_mntdir=""
+        fi
+        candidate_path="${first_mntdir}/.zfs/snapshot/${snapshot_name}"
+    fi
+
+    if [ -n "$(ls ${candidate_path} 2>/dev/null)" ]; then
+        echo "${candidate_path}"
+        return
+    else
+        mountpoint -q "${mount_path}" && umount "${mount_path}" || true
+    fi
+}
+
+# Detect system directory relevant to the other, trying to find the ones associated on the current dataset or snapshot/
+# System directory should be at most a direct child dataset of main datasets (no recursivity)
+# We can fallback trying other zfs pools if no match has been found.
+# $1 is our current dataset name (which can have @snapshot name)
+# $2 directory path we look for (cannot contains /)
+# $3 restrict_to_same_pool (true|false) force looking for dataset with the same basename in the current dataset pool only
+# $4 is the temporary mount directory to use
+# $5 is the optional etc directory (if not $2 is not etc itself)
+# return path for directory (which can be a mountpoint)
+get_system_directory() {
+    local dataset_path="$1"
+    local directory="$2"
+    local restrict_to_same_pool="$3"
+    local mntdir="$4"
+    local etc_dir="$5"
+
+    if [ -z "${etc_dir}" ]; then
+        etc_dir="${mntdir}/etc"
+    fi
+
+    local candidate_path="${mntdir}/${directory}"
+
+    # 1. Look for /etc/fstab first (which will mount even on top of non empty $directory)
+    local mounted_fstab_entry="false"
+    if [ -f "${etc_dir}/fstab" ]; then
+        mount_args=$(awk '/^[^#].*[ \t]\/'"${directory}"'[ \t]/ {print "-t", $3, $1}' "${etc_dir}/fstab")
+        if [ -n "${mount_args}" ]; then
+            mounted_fstab_entry="true"
+            mount -o noatime ${mount_args} "${candidate_path}" || mounted_fstab_entry="false"
+        fi
+    fi
+
+    # If directory isn't empty. Only count if coming from /etc/fstab. Will be
+    # handled below otherwise as we are interested in potential snapshots.
+    if [ "${mounted_fstab_entry}" = "true" -a -n "$(ls ${candidate_path} 2>/dev/null)" ]; then
+        echo "${candidate_path}"
+        return
+    fi
+
+    # 2. Handle zfs case, which can be a snapshots.
+
+    local base_dataset_path="${dataset_path}"
+    local snapshot_name=""
+    # For snapshots we extract the parent dataset
+    if echo "${dataset_path}" | grep -q '@'; then
+        base_dataset_path=$(echo "${dataset_path}" | cut -d '@' -f1)
+        snapshot_name=$(echo "${dataset_path}" | cut -d '@' -f2)
+    fi
+    base_dataset_name="${base_dataset_path##*/}"
+    base_pool="$(echo "${base_dataset_path}" | cut -d'/' -f1)"
+
+    # 2.a) Look for child dataset included in base dataset, which needs to hold same snapshot if any
+    candidate_path=$(validate_system_dataset "${base_dataset_path}/${directory}" "${directory}" "${mntdir}" "${snapshot_name}")
+    if [ -n "${candidate_path}" ]; then
+        echo "${candidate_path}"
+        return
+    fi
+
+    # 2.b) Look for current dataset (which is already mounted as /)
+    candidate_path="${mntdir}/${directory}"
+    if [ -n "${snapshot_name}" ]; then
+        # WORKAROUND a bug https://github.com/zfsonlinux/zfs/issues/9958
+        # Reading the content of a snapshot fails if it is not the first mount
+        # for a given dataset
+        first_mntdir=$(awk '{if ($1 == "'${base_dataset_path}'") {print $2; exit;}}' /proc/mounts)
+        if [ "${first_mntdir}" = "/" ]; then
+            # prevents // on candidate_path
+            first_mntdir=""
+        fi
+        candidate_path="${first_mntdir}/.zfs/snapshot/${snapshot_name}/${directory}"
+    fi
+    if [ -n "$(ls ${candidate_path} 2>/dev/null)" ]; then
+        echo "${candidate_path}"
+        return
+    fi
+
+    # 2.c) Look for every datasets in every pool which isn't the current dataset which holds:
+    # - the same dataset name (last section) than our base_dataset_name
+    # - mountpoint=directory
+    # - canmount!=off
+    all_same_base_dataset_name="$(zfs list -H -t filesystem -o name,canmount | awk '/^[^ ]+\/'"${base_dataset_name}"'[ \t](on|noauto)/ {print $1}') "
+
+    # order by local pool datasets first
+    current_pool_same_base_datasets=""
+    other_pools_same_base_datasets=""
+    root_pool=$(echo "${dataset_path%%/*}")
+    for d in ${all_same_base_dataset_name}; do
+        cur_dataset_pool=$(echo "${d%%/*}")
+        if echo "${cur_dataset_pool}" | grep -wq "${root_pool}" 2>/dev/null ; then
+            current_pool_same_base_datasets="${current_pool_same_base_datasets} ${d}"
+        else
+            other_pools_same_base_datasets="${other_pools_same_base_datasets} ${d}"
+        fi
+    done
+    ordered_same_base_datasets="${current_pool_same_base_datasets} ${other_pools_same_base_datasets}"
+    if [ "${restrict_to_same_pool}" = "true" ]; then
+        ordered_same_base_datasets="${current_pool_same_base_datasets}"
+    fi
+
+    # now, loop over them
+    for d in ${ordered_same_base_datasets}; do
+        cur_dataset_pool=$(echo "${d%%/*}")
+
+        rel_pool_root=$(zpool get -H altroot ${cur_dataset_pool} | awk '{print $3}')
+        if [ "${rel_pool_root}" = "-" ]; then
+            rel_pool_root=""
+        fi
+
+        # check mountpoint match
+        candidate_dataset=$(zfs get -H mountpoint ${d} | grep -E "mountpoint\s${rel_pool_root}/${directory}\s" | awk '{print $1}')
+        if [ -z "${candidate_dataset}" ]; then
+            continue
+        fi
+
+        candidate_path=$(validate_system_dataset "${candidate_dataset}" "${directory}" "${mntdir}" "${snapshot_name}")
+        if [ -n "${candidate_path}" ]; then
+            echo "${candidate_path}"
+            return
+        fi
+    done
+
+    # 2.d) If we didn't find anything yet: check for persistent datasets corresponding to our mountpoint, with canmount=on without any snapshot associated:
+    # Note: we go over previous datasets as well, but this is ok, as we didn't include them before.
+    all_mountable_datasets="$(zfs list -t filesystem -o name,canmount | awk  '/^[^ ]+[ \t]+on/ {print $1}')"
+
+    # order by local pool datasets first
+    current_pool_datasets=""
+    other_pools_datasets=""
+    root_pool=$(echo "${dataset_path%%/*}")
+    for d in ${all_mountable_datasets}; do
+        cur_dataset_pool=$(echo "${d%%/*}")
+        if echo "${cur_dataset_pool}" | grep -wq "${root_pool}" 2>/dev/null ; then
+            current_pool_datasets="${current_pool_datasets} ${d}"
+        else
+            other_pools_datasets="${other_pools_datasets} ${d}"
+        fi
+    done
+    ordered_datasets="${current_pool_datasets} ${other_pools_datasets}"
+    if [ "${restrict_to_same_pool}" = "true" ]; then
+        ordered_datasets="${current_pool_datasets}"
+    fi
+
+    for d in ${ordered_datasets}; do
+        cur_dataset_pool=$(echo "${d%%/*}")
+
+        rel_pool_root=$(zpool get -H altroot ${cur_dataset_pool} | awk '{print $3}')
+        if [ "${rel_pool_root}" = "-" ]; then
+            rel_pool_root=""
+        fi
+
+        # check mountpoint match
+        candidate_dataset=$(zfs get -H mountpoint ${d} | grep -E "mountpoint\s${rel_pool_root}/${directory}\s" | awk '{print $1}')
+        if [ -z "${candidate_dataset}" ]; then
+            continue
+        fi
+
+        candidate_path=$(validate_system_dataset "${d}" "${directory}" "${mntdir}" "")
+        if [ -n "${candidate_path}" ]; then
+            echo "${candidate_path}"
+            return
+        fi
+    done
+
+    grub_warn "Failed to find a valid directory '${directory}' for dataset '${dataset_path}'. Ignoring"
+    return
+}
+
+# Try our default layout bpool as a prefered layout (fast path)
+# This is get_system_directory for boot optimized for our default installation layout
+# $1 is our current dataset name (which can have @snapshot name)
+# $2 is the temporary mount directory to use
+# return path for directory (which can be a mountpoint) if found
+try_default_layout_bpool() {
+    local root_dataset_path="$1"
+    local mntdir="$2"
+
+    dataset_basename="${root_dataset_path##*/}"
+    candidate_dataset="bpool/BOOT/${dataset_basename}"
+    dataset_properties="$(zfs get -H mountpoint,canmount ${candidate_dataset} | cut -f3 | paste -sd ' ')"
+    if [ -z "${dataset_properties}" ]; then
+        return
+    fi
+
+    rel_pool_root=$(zpool get -H altroot bpool | awk '{print $3}')
+    if [ "${rel_pool_root}" = "-" ]; then
+        rel_pool_root=""
+    fi
+
+    snapshot_name="${dataset_basename##*@}"
+    [ "${snapshot_name}" = "${dataset_basename}" ] && snapshot_name=""
+    if [ -z "${snapshot_name}" ]; then
+        if ! echo "${dataset_properties}" | grep -Eq "${rel_pool_root}/boot (on|noauto)"; then
+            return
+        fi
+    else
+        candidate_dataset=$(echo "${candidate_dataset}" | cut -d '@' -f1)
+    fi
+
+    validate_system_dataset "${candidate_dataset}" "boot" "${mntdir}" "${snapshot_name}"
+}
+
+# Return if secure boot is enabled on that system
+is_secure_boot_enabled() {
+    if LANG=C mokutil --sb-state 2>/dev/null | grep -qi enabled; then
+        echo "true"
+        return
+    fi
+    echo "false"
+    return
+}
+
+# Given a filesystem or snapshot dataset, returns dataset|machine id|pretty name|last used
+# $1 is dataset we want information from
+# $2 is the temporary mount directory to use
+get_dataset_info() {
+    local dataset="$1"
+    local mntdir="$2"
+
+    local base_dataset="${dataset}"
+    local etc_dir="${mntdir}/etc"
+    local is_snapshot="false"
+    # For snapshot we extract the parent dataset
+    if echo "${dataset}" | grep -q '@'; then
+        base_dataset=$(echo "${dataset}" | cut -d '@' -f1)
+        is_snapshot="true"
+    fi
+
+    mount -o noatime,zfsutil -t zfs "${base_dataset}" "${mntdir}"
+
+    # read machine-id/os-release from /etc
+    etc_dir=$(get_system_directory "${dataset}" "etc" "true" "${mntdir}" "")
+    if [ -z  "${etc_dir}" ]; then
+        grub_warn "Ignoring ${dataset}"
+        mountpoint -q "${mntdir}/etc" && umount "${mntdir}/etc" || true
+        umount "${mntdir}"
+        return
+    fi
+
+    machine_id=""
+    if [ -f "${etc_dir}/machine-id" ]; then
+        machine_id=$(cat "${etc_dir}/machine-id")
+    fi
+    # We have to use a random temporary id if we don't have any machine-id file or if this one is empty
+    # (mostly the case of new installations before first boot).
+    # Let's use the dataset name directly for this.
+    # Consequence is that all datasets are then separated.
+    if [ -z "${machine_id}" ]; then
+        machine_id="${dataset}"
+    fi
+    pretty_name=$(. "${etc_dir}/os-release" && echo "${PRETTY_NAME}")
+    mountpoint -q "${mntdir}/etc" && umount "${mntdir}/etc" || true
+
+    # read available kernels from /boot
+    boot_dir="$(try_default_layout_bpool "${dataset}" "${mntdir}")"
+    if [ -z "${boot_dir}" ]; then
+        boot_dir=$(get_system_directory "${dataset}" "boot" "false" "${mntdir}" "${etc_dir}")
+    fi
+
+    if [ -z  "${boot_dir}" ]; then
+        grub_warn "Ignoring ${dataset}"
+        mountpoint -q "${mntdir}/boot" && umount "${mntdir}/boot" || true
+        umount "${mntdir}"
+        return
+    fi
+
+    initrd_list=""
+    kernel_list=""
+    list=$(find "${boot_dir}" -maxdepth 1 -type f -regex '.*/\(vmlinuz\|vmlinux\|kernel\)-.*')
+    while [ "x$list" != "x" ] ; do
+        linux=`version_find_latest $list`
+        list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
+        if ! grub_file_is_not_garbage "${linux}" ; then
+            continue
+        fi
+
+        # Filters entry if efi/non efi.
+        # Note that for now we allow kernel without .efi.signed as those are signed kernel
+        # on ubuntu, loaded by the shim.
+        case "${linux}" in
+            *.efi.signed)
+                if [ "$(is_secure_boot_enabled)" = "false" ]; then
+                    continue
+                fi
+            ;;
+        esac
+
+        linux_basename=$(basename "${linux}")
+        linux_dirname=$(dirname "${linux}")
+        version=$(echo "${linux_basename}" | sed -e "s,^[^0-9]*-,,g")
+        alt_version=$(echo "${version}" | sed -e "s,\.old$,,g")
+
+        gettext_printf "Found linux image: %s in %s\n" "${linux_basename}" "${dataset}" >&2
+
+        initrd=""
+        for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
+            "initrd-${version}" "initramfs-${version}.img" \
+            "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
+            "initrd-${alt_version}" "initramfs-${alt_version}.img" \
+            "initramfs-genkernel-${version}" \
+            "initramfs-genkernel-${alt_version}" \
+            "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
+            "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
+            if test -e "${linux_dirname}/${i}" ; then
+                initrd="$i"
+                break
+            fi
+        done
+
+        if test -z "${initrd}" ; then
+            grub_warn "Couldn't find any valid initrd for dataset ${dataset}."
+            continue
+        fi
+
+        gettext_printf "Found initrd image: %s in %s\n" "${initrd}" "${dataset}" >&2
+
+        rel_linux_dirname=$(make_system_path_relative_to_its_root "${linux_dirname}")
+
+        initrd_list="${initrd_list}|${rel_linux_dirname}/${initrd}"
+        kernel_list="${kernel_list}|${rel_linux_dirname}/${linux_basename}"
+    done
+
+    initrd_list="${initrd_list#|}"
+    kernel_list="${kernel_list#|}"
+
+    initrd_device=$(${grub_probe} --target=device "${boot_dir}" | head -1)
+
+    mountpoint -q "${mntdir}/boot" && umount "${mntdir}/boot" || true
+    # We needed to look in / for snapshots on root dataset, umount there before zfs lazily unmount it
+    case "${boot_dir}" in /boot/.zfs/snapshot/*)
+        umount "${boot_dir}" || true
+        ;;
+    esac
+
+    # for zsys snapshots: we want to know which kernel we successful last booted with
+    last_booted_kernel=$(zfs get -H com.ubuntu.zsys:last-booted-kernel "${dataset}" | awk '{print $3}')
+
+    # snapshot: last_used is dataset creation time
+    if [ "${is_snapshot}" = "true" ]; then
+        last_used="$(zfs get -pH creation "${dataset}" | awk -F '\t' '{print $3}')"
+    # otherwise, last_used is manually marked at boot/shutdown on a root dataset for zsys
+    else
+        # if current system, take current time
+        if zfs mount | awk '/[ \t]+\/$/ {print $1}' | grep -q ${dataset}; then
+            last_used=$(date +%s)
+        else
+            last_used=$(zfs get -H com.ubuntu.zsys:last-used "${dataset}" | awk '{print $3}')
+            # case of non zsys, or zsys without annotation, take /etc/machine-id stat (as we mounted with noatime).
+            # However, as systems can be relatime, if system is current mounted one, set current time (case of clone + reboot
+            # within the same d).
+            if [ "${last_used}" = "-" ]; then
+                last_used=$(stat --printf="%X" "${mntdir}/etc/os-release")
+                if [ -f "${mntdir}/etc/machine-id" ]; then
+                    last_used=$(stat --printf="%X" "${mntdir}/etc/machine-id")
+                fi
+            fi
+        fi
+    fi
+
+    is_zsys=$(zfs get -H com.ubuntu.zsys:bootfs "${base_dataset}" | awk '{print $3}')
+
+    if [ -n "${initrd_list}" -a -n "${kernel_list}" ]; then
+        echo "${dataset}\t${is_zsys}\t${machine_id}\t${pretty_name}\t${last_used}\t${initrd_device}\t${initrd_list}\t${kernel_list}\t${last_booted_kernel}"
+    else
+        grub_warn "didn't find any valid initrd or kernel."
+    fi
+
+    umount "${mntdir}" || true
+    # We needed to look in / for snapshots on root dataset, umount the snapshot for etc before zfs lazily unmount it
+    case "${etc_dir}" in /.zfs/snapshot/*/etc)
+        snapshot_path="$(findmnt -n -o TARGET -T ${etc_dir})"
+        umount "${snapshot_path}" || true
+        ;;
+    esac
+}
+
+# Scan available boot options and returns in a formatted list
+# $1 is the temporary mount directory to use
+bootlist() {
+    local mntdir="$1"
+    local boot_list=""
+
+    for dataset in $(get_root_datasets); do
+        # get information from current root dataset
+        boot_list="${boot_list}$(get_dataset_info ${dataset} ${mntdir})\n"
+
+        # get information from snapshots of this root dataset
+        for snapshot_dataset in $(zfs list -H -o name -t snapshot "${dataset}"); do
+            boot_list="${boot_list}$(get_dataset_info ${snapshot_dataset} ${mntdir})\n"
+        done
+    done
+    echo "${boot_list}"
+}
+
+
+# Order machine ids by last_used from their main entry
+get_machines_sorted() {
+    local bootlist="$1"
+
+    local machineids="$(echo "${bootlist}" | awk '{print $3}' | sort -u)"
+    for machineid in ${machineids}; do
+        echo "${bootlist}" | awk 'BEGIN{FS="\t"} $1 !~ /.*@.*/  {print $5, $3}' | sort -nr | grep -E "[^^]\b${machineid}\b" | head -1
+    done | sort -nr | awk '{print $2}'
+}
+
+# Sort entries by last_used for a given machineid
+sort_entries_for_machineid() {
+    local bootlist="$1"
+    local machineid="$2"
+
+    tab="$(printf '\t')"
+    echo "${bootlist}" | grep -E "[^^]\b${machineid}\b" | sort -k5,5r -k1,1 -t "${tab}"
+}
+
+# Return main entry index
+get_main_entry() {
+    local entries="$1"
+
+    echo "${entries}" | awk 'BEGIN{FS="\t"} $1 !~ /.*@.*/  {print}' | head -1
+}
+
+# Return specific field at index from entry
+get_field_from_entry() {
+    local entry="$1"
+    local index="$2"
+
+    echo "${entry}" | awk "BEGIN{FS=\"\t\"} {print \$$index}"
+}
+
+# Get the main entry metadata
+main_entry_meta() {
+    local main_entry="$1"
+
+    initrd=$(get_field_from_entry "${main_entry}" 7 | cut -d'|' -f1)
+    kernel=$(get_field_from_entry "${main_entry}" 8 | cut -d'|' -f1)
+
+    # Take first element (most recent entry) which is not a snapshot
+    echo "${main_entry}" | awk "BEGIN{ FS=\"\t\"; OFS=\"\t\"} {print \$3, \$2, \"main\", \$4, \$1, \$6, \"$initrd\", \"$kernel\"}"
+}
+
+# Get advanced entries metadata
+advanced_entries_meta() {
+    local main_entry="$1"
+
+    last_used_kernel="$(get_field_from_entry "${main_entry}" 9 )"
+
+    # We must align initrds with kernels.
+    # Adds initrds to the stack then pop them 1 by 1 as we process the kernels
+    set -- $(get_field_from_entry "${main_entry}" 7 | tr "|" " ")
+    for kernel in $(get_field_from_entry "${main_entry}" 8 | tr "|" " "); do
+        # get initrd and pop to the next one
+        initrd="$1"; shift
+
+        was_last_used_kernel="false"
+        kernel_basename=$(basename "${kernel}")
+        if [ "${kernel_basename}" = "${last_used_kernel}" ]; then
+            was_last_used_kernel="true"
+        fi
+
+        echo "${main_entry}" | awk "BEGIN{ FS=\"\t\"; OFS=\"\t\"}    {print \$3, \$2, \"advanced\", \$4, \$1, \$6, \"$initrd\", \"$kernel\", \"$was_last_used_kernel\"}"
+    done
+}
+
+# Get history metadata
+history_entries_meta() {
+    local entries="$1"
+    local main_dataset_name="$2"
+    local main_dataset_releasename="$3"
+
+    if [ -z "${entries}" ]; then
+        return
+    fi
+
+    # Traverse snapshots and clones
+    echo "${entries}" | while read entry; do
+        name=""
+        # Compute snapshot/filesystem dataset name
+        snap_dataset_name="$(get_field_from_entry "${entry}" 1)"
+
+        snapname="${snap_dataset_name##*@}"
+        # If, this is a clone, take what is after main_dataset_name
+        if [ "${snapname}" = "${snap_dataset_name}" ]; then
+            snapname="${snap_dataset_name##${main_dataset_name}_}"
+
+            # Handle manual user clone (not prefixed by "main_dataset_name")
+            snapname="${snapname##*/}"
+        fi
+
+        # We keep the snapname only if it is not only a zsys auto snapshot
+        if echo "${snapname}" | grep -q "^autozsys_"; then
+            snapname=""
+        fi
+
+        # We store the release only if it different from main dataset release (snapshot before a release upgrade)
+        releasename=$(get_field_from_entry "${entry}" 4)
+        if [ "${releasename}" = "${main_dataset_releasename}" ]; then
+            releasename=""
+        fi
+
+        # Snapshot date
+        foo="$(get_field_from_entry "${entry}" 5)"
+        snapdate="$(date -d @$(get_field_from_entry "${entry}" 5) "+%x @ %H:%M")"
+
+        # For snapshots/clones the name can have the following formats:
+        #      <DATE>: autozsys, same release
+        #   <OLD_RELEASE> on <DATE>: autozsys, different release
+        #   <SNAPNAME> on <DATE>: Manual snapshot, same release
+        #   <SNAPNAME>, <OLD_RELEASE> on <DATE>: Manual snapshot, different release
+        if [ "${snapname}" = "" -a "${releasename}" = "" ]; then
+            name="${snapdate}"
+        elif [ "${snapname}" = "" -a "${releasename}" != "" ]; then
+            name=$(gettext_printf "%s on %s" "${releasename}" "${snapdate}")
+        elif [ "${snapname}" != "" -a "${releasename}" = "" ]; then
+            name=$(gettext_printf "%s on %s" "${snapname}" "${snapdate}")
+        else # snapname != "" && releasename != ""
+            name=$(gettext_printf "%s, %s on %s" "${snapname}" "${releasename}" "${snapdate}")
+        fi
+
+        # Choose kernel and initrd if the snapshot was booted successfully on a specific kernel before
+        # Take latest by default if no match
+        initrd=$(get_field_from_entry "${entry}" 7 | cut -d'|' -f1)
+        kernel=$(get_field_from_entry "${entry}" 8 | cut -d'|' -f1)
+        last_used_kernel="$(get_field_from_entry "${entry}" 9)"
+
+        # We must align initrds with kernels.
+        # Adds initrds to the stack then pop them 1 by 1 as we process the kernels
+        set -- $(get_field_from_entry "${entry}" 7 | tr "|" " ")
+        for k in $(get_field_from_entry "${entry}" 8|tr "|" " "); do
+            # get initrd and pop to the next one
+            candidate_initrd="$1"; shift
+
+            kernel_basename=$(basename "${k}")
+            if [ "${kernel_basename}" = "${last_used_kernel}" ]; then
+                kernel="${k}"
+                initrd="${candidate_initrd}"
+                break
+            fi
+        done
+
+        echo "${entry}" | awk "BEGIN{ FS=\"\t\"; OFS=\"\t\"}    {print \$3, \$2, \"history\", \"$name\", \$1, \$6, \"$initrd\", \"$kernel\"}"
+    done
+}
+
+# Generate metadata from a BOOTLIST that will subsequently used to generate
+# the final grub menu entries
+generate_grub_menu_metadata() {
+    local bootlist="$1"
+
+    # Sort machineids by last_used from their main entry
+    for machineid in $(get_machines_sorted "${bootlist}"); do
+        entries="$(sort_entries_for_machineid "${bootlist}" ${machineid})"
+        main_entry="$(get_main_entry "${entries}")"
+
+        if [ -z "$main_entry" ]; then
+            continue
+        fi
+
+        main_entry_meta "${main_entry}"
+        advanced_entries_meta "${main_entry}"
+
+        main_dataset_name="$(get_field_from_entry "${main_entry}" 1)"
+        main_dataset_releasename="$(get_field_from_entry "${main_entry}" 4)"
+        # grep -v errcode != 0 if there is no match. || true to not fail with -e
+        other_entries="$(echo "${entries}" | grep -v "${main_entry}" || true)"
+        history_entries_meta "${other_entries}" "${main_dataset_name}" "${main_dataset_releasename}"
+    done
+}
+
+# Print the configuration part common to all sections
+# Note:
+#   If 10_linux runs these part will be defined twice in grub configuration
+print_menu_prologue() {
+    cat << 'EOF'
+function gfxmode {
+       set gfxpayload="${1}"
+EOF
+    if [ "${vt_handoff}" = 1 ]; then
+        cat << 'EOF'
+       if [ "${1}" = "keep" ]; then
+               set vt_handoff=vt.handoff=1
+       else
+               set vt_handoff=
+       fi
+EOF
+    fi
+    cat << EOF
+}
+EOF
+
+    # Use ELILO's generic "efifb" when it's known to be available.
+    # FIXME: We need an interface to select vesafb in case efifb can't be used.
+    GRUB_GFXPAYLOAD_LINUX="${GRUB_GFXPAYLOAD_LINUX:-}"
+    if [ "${GRUB_GFXPAYLOAD_LINUX}" != "" ] || [ "${gfxpayload_dynamic}" = 0 ]; then
+        echo "set linux_gfx_mode=${GRUB_GFXPAYLOAD_LINUX}"
+    else
+        cat << EOF
+if [ "\${recordfail}" != 1 ]; then
+  if [ -e \${prefix}/gfxblacklist.txt ]; then
+    if hwmatch \${prefix}/gfxblacklist.txt 3; then
+      if [ \${match} = 0 ]; then
+        set linux_gfx_mode=keep
+      else
+        set linux_gfx_mode=text
+      fi
+    else
+      set linux_gfx_mode=text
+    fi
+  else
+    set linux_gfx_mode=keep
+  fi
+else
+  set linux_gfx_mode=text
+fi
+EOF
+    fi
+    cat << EOF
+export linux_gfx_mode
+EOF
+}
+
+# Cache for prepare_grub_to_access_device call
+# $1: boot_device
+# $2: submenu_level
+prepare_grub_to_access_device_cached() {
+    local boot_device="$1"
+    local submenu_level="$2"
+
+    local boot_device_idx="$(echo ${boot_device} | tr '/' '_')"
+
+    cache_file="${ZFSTMP}/$(echo boot_device${boot_device_idx})"
+    if [ ! -f "${cache_file}" ]; then
+        set +u
+        echo "$(prepare_grub_to_access_device "${boot_device}")" > "${cache_file}"
+        set -u
+        for i in 0 1 2; do
+            submenu_indentation="$(printf %${i}s | tr " " "${grub_tab}")"
+            sed "s/^/${submenu_indentation}    /" "${cache_file}" > "${cache_file}--${i}"
+        done
+    fi
+
+    cat "${cache_file}--${submenu_level}"
+}
+
+
+# Print a grub menu entry
+zfs_linux_entry () {
+    submenu_level="$1"
+    title="$2"
+    type="$3"
+    dataset="$4"
+    boot_device="$5"
+    initrd="$6"
+    kernel="$7"
+    kernel_version="$8"
+    kernel_additional_args="${9:-}"
+    boot_devices="${10:-}"
+
+    submenu_indentation="$(printf %${submenu_level}s | tr " " "${grub_tab}")"
+
+    echo "${submenu_indentation}menuentry '$(echo "${title}" | grub_quote)' ${CLASS} \${menuentry_id_option} 'gnulinux-${dataset}-${kernel_version}' {"
+
+    if [ "${quick_boot}" = 1 ]; then
+        echo "${submenu_indentation}   recordfail"
+    fi
+
+    if [ "${type}" != "recovery" ] ; then
+        GRUB_SAVEDEFAULT=${GRUB_SAVEDEFAULT:-}
+        default_entry="$(save_default_entry)"
+        if [ -n "${default_entry}" ]; then
+            echo "${submenu_indentation}       ${default_entry}"
+        fi
+    fi
+
+    # Use ELILO's generic "efifb" when it's known to be available.
+    # FIXME: We need an interface to select vesafb in case efifb can't be used.
+    if [ "${GRUB_GFXPAYLOAD_LINUX}" = "" ]; then
+        echo "${submenu_indentation}   load_video"
+    else
+        if [ "${GRUB_GFXPAYLOAD_LINUX}" != "text" ]; then
+            echo "${submenu_indentation}       load_video"
+        fi
+    fi
+
+    if ([ "${ubuntu_recovery}" = 0 ] || [ "${type}" != "recovery" ]) && \
+        ([ "${GRUB_GFXPAYLOAD_LINUX}" != "" ] || [ "${gfxpayload_dynamic}" = 1 ]); then
+        echo "${submenu_indentation}   gfxmode \${linux_gfx_mode}"
+    fi
+
+    echo "${submenu_indentation}       insmod gzio"
+    echo "${submenu_indentation}       if [ \"\${grub_platform}\" = xen ]; then insmod xzio; insmod lzopio; fi"
+
+    if [ -n "$boot_devices" ]; then
+        for device in ${boot_devices}; do
+            echo "${submenu_indentation}       if [ "${boot_device}" = "${device}" ]; then"
+            echo "$(prepare_grub_to_access_device_cached "${device}" $(( submenu_level +1 )) )"
+            echo "${submenu_indentation}       fi"
+        done
+    else
+        echo "$(prepare_grub_to_access_device_cached "${boot_device}" "${submenu_level}")"
+    fi
+
+    if [ "${quiet_boot}" = 0 ] || [ "${type}" != simple ]; then
+        echo "${submenu_indentation}   echo $(gettext_printf "Loading Linux %s ..." ${kernel_version} | grub_quote)"
+    fi
+
+    linux_default_args="${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+    if [ ${type} = "recovery" ]; then
+        linux_default_args="${GRUB_CMDLINE_LINUX_RECOVERY} ${GRUB_CMDLINE_LINUX}"
+    fi
+
+    echo "${submenu_indentation}       linux   ${kernel} root=ZFS=${dataset} ro ${linux_default_args} ${kernel_additional_args}"
+
+    if [ "${quiet_boot}" = 0 ] || [ "${type}" != simple ]; then
+        echo "${submenu_indentation}   echo '$(gettext_printf "Loading initial ramdisk ..." | grub_quote)'"
+    fi
+    echo "${submenu_indentation}       initrd  ${initrd}"
+    echo "${submenu_indentation}}"
+}
+
+# Generate a GRUB Menu from menu meta data
+# $1 menu metadata
+generate_grub_menu() {
+    local menu_metadata="$1"
+    local last_section=""
+    local main_dataset_name=""
+    local main_dataset=""
+    local have_zsys=""
+
+    if [ -z "${menu_metadata}" ]; then
+        return
+    fi
+
+    CLASS="--class gnu-linux --class gnu --class os"
+
+    if [ "${GRUB_DISTRIBUTOR}" = "" ] ; then
+        OS=GNU/Linux
+    else
+        case ${GRUB_DISTRIBUTOR} in
+            Ubuntu|Kubuntu)
+            OS="${GRUB_DISTRIBUTOR}"
+            ;;
+            *)
+            OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+            ;;
+        esac
+        CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1 | LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
+    fi
+
+    if [ -x /lib/recovery-mode/recovery-menu ]; then
+        GRUB_CMDLINE_LINUX_RECOVERY=recovery
+    else
+        GRUB_CMDLINE_LINUX_RECOVERY=single
+    fi
+    if [ "${ubuntu_recovery}" = 1 ]; then
+        GRUB_CMDLINE_LINUX_RECOVERY="${GRUB_CMDLINE_LINUX_RECOVERY} nomodeset"
+    fi
+
+    case "$GENKERNEL_ARCH" in
+        x86*) GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY dis_ucode_ldr";;
+    esac
+
+
+    if [ "${vt_handoff}" = 1 ]; then
+        for word in ${GRUB_CMDLINE_LINUX_DEFAULT}; do
+            if [ "${word}" = splash ]; then
+                GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT} \${vt_handoff}"
+            fi
+        done
+    fi
+
+    print_menu_prologue
+
+    cat<<'EOF'
+function zsyshistorymenu {
+       # $1: root dataset (eg rpool/ROOT/ubuntu_2zhm07@autozsys_k56fr6)
+       # $2: boot device id (eg 411f29ce1557bfed)
+       # $3: initrd (eg /BOOT/ubuntu_2zhm07@autozsys_k56fr6/initrd.img-5.4.0-21-generic)
+       # $4: kernel (eg /BOOT/ubuntu_2zhm07@autozsys_k56fr6/vmlinuz-5.4.0-21-generic)
+       # $5: kernel_version (eg 5.4.0-21-generic)
+
+       set root_dataset="${1}"
+       set boot_device="${2}"
+       set initrd="${3}"
+       set kernel="${4}"
+       set kversion="${5}"
+
+EOF
+    boot_devices=$(echo "${menu_metadata}" | cut -d"$(printf '\t')" -f6 | sort -u)
+
+    title=$(gettext_printf "Revert system only")
+    zfs_linux_entry 1 "${title}" "simple" '${root_dataset}' '${boot_device}' '${initrd}' '${kernel}' '${kversion}' '' "${boot_devices}"
+
+    title="$(gettext_printf "Revert system and user data")"
+    zfs_linux_entry 1 "${title}" "simple" '${root_dataset}' '${boot_device}' '${initrd}' '${kernel}' '${kversion}' 'zsys-revert=userdata' "${boot_devices}"
+
+    GRUB_DISABLE_RECOVERY="${GRUB_DISABLE_RECOVERY:-}"
+    if [ "${GRUB_DISABLE_RECOVERY}" != "true" ]; then
+        title="$(gettext_printf "Revert system only (%s)" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
+        zfs_linux_entry 1 "${title}" "recovery" '${root_dataset}' '${boot_device}' '${initrd}' '${kernel}' '${kversion}' '' "${boot_devices}"
+
+        title="$(gettext_printf "Revert system and user data (%s)" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
+        zfs_linux_entry 1 "${title}" "recovery" '${root_dataset}' '${boot_device}' '${initrd}' '${kernel}' '${kversion}' 'zsys-revert=userdata' "${boot_devices}"
+    fi
+echo "}"
+echo
+
+    # IFS is set to TAB (ASCII 0x09)
+    echo "${menu_metadata}" |
+    {
+        at_least_one_entry=0
+        have_zsys="$(which zsysd || true)"
+        while IFS="$(printf '\t')" read -r machineid iszsys section name dataset device initrd kernel opt; do
+
+            # Disable history for non zsys system or if systems is a zsys one and zsys isn't installed.
+            # In pure zfs systems, we identified multiple issues due to the mount generator
+            # in upstream zfs which makes it incompatible. Don't show history for now.
+            if [ "${section}" = "history" ]; then
+                if [ "${iszsys}" != "yes" ] || [ "${iszsys}" = "yes" -a -z "${have_zsys}" ]; then
+                    continue
+                fi
+            fi
+
+            if [ "${last_section}" != "${section}" -a -n "${last_section}" ]; then
+                # Close previous section wrapper
+                if [ "${last_section}" != "main" ]; then
+                    echo "}"    # Add grub_tabs
+                    at_least_one_entry=0
+                fi
+            fi
+
+            case "${section}" in
+                main)
+                    title="${name}"
+                    main_dataset_name="${name}"
+                    main_dataset="${dataset}"
+
+                    kernel_version=$(basename "${kernel}" | sed -e "s,^[^0-9]*-,,g")
+                    zfs_linux_entry 0 "${title}" "simple" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}"
+                    at_least_one_entry=1
+                ;;
+                advanced)
+                    # normal and recovery entries for a given kernel
+                    if [ "${last_section}" != "${section}" ]; then
+                        echo "submenu '$(gettext_printf "Advanced options for %s" "${main_dataset_name}" | grub_quote)' \${menuentry_id_option} 'gnulinux-advanced-${main_dataset}' {"
+                    fi
+
+                    last_booted_kernel_marker=""
+                    if [ "${opt}" = "true" ]; then
+                        last_booted_kernel_marker="* "
+                    fi
+
+                    kernel_version=$(basename "${kernel}" | sed -e "s,^[^0-9]*-,,g")
+                    title="$(gettext_printf "%s%s, with Linux %s" "${last_booted_kernel_marker}" "${name}" "${kernel_version}")"
+                    zfs_linux_entry 1 "${title}" "advanced" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}"
+
+                    GRUB_DISABLE_RECOVERY=${GRUB_DISABLE_RECOVERY:-}
+                    if [ "${GRUB_DISABLE_RECOVERY}" != "true" ]; then
+                        title="$(gettext_printf "%s%s, with Linux %s (%s)" "${last_booted_kernel_marker}" "${name}" "${kernel_version}" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
+                        zfs_linux_entry 1 "${title}" "recovery" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}"
+                    fi
+                    at_least_one_entry=1
+                ;;
+                history)
+                    # Revert to a snapshot
+                    # revert system, revert system and user data and associated recovery entries
+                    if [ "${last_section}" != "${section}" ]; then
+                        echo "submenu '$(gettext_printf "History for %s" "${main_dataset_name}" | grub_quote)' \${menuentry_id_option} 'gnulinux-history-${main_dataset}' {"
+                    fi
+
+                    if [ "${iszsys}" = "yes" ]; then
+                        title="$(gettext_printf "Revert to %s" "${name}" | grub_quote)"
+                    else
+                        title="$(gettext_printf "Boot on %s" "${name}" | grub_quote)"
+                    fi
+                    echo "     submenu '${title}' \${menuentry_id_option} 'gnulinux-history-${dataset}' {"
+
+                    kernel_version=$(basename "${kernel}" | sed -e "s,^[^0-9]*-,,g")
+
+                    # Zsys only: let revert system without destroying snapshots
+                    if [ "${iszsys}" = "yes" ]; then
+                        echo "${grub_tab}${grub_tab}zsyshistorymenu" \"${dataset}\" \"${device}\" \"${initrd}\" \"${kernel}\" \"${kernel_version}\"
+                    # Non-zsys: boot temporarly on snapshots or rollback (destroying intermediate snapshots)
+                    else
+                        title="$(gettext_printf "One time boot")"
+                        zfs_linux_entry 2 "${title}" "simple" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}"
+
+                        GRUB_DISABLE_RECOVERY="${GRUB_DISABLE_RECOVERY:-}"
+                        if [ "${GRUB_DISABLE_RECOVERY}" != "true" ]; then
+                            title="$(gettext_printf "One time boot (%s)" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
+                            zfs_linux_entry 2 "${title}" "recovery" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}"
+                        fi
+
+                        title="$(gettext_printf "Revert system (all intermediate snapshots will be destroyed)")"
+                        zfs_linux_entry 2 "${title}" "simple" "${dataset}" "${device}" "${initrd}" "${kernel}" "${kernel_version}" "rollback=yes"
+                    fi
+
+                    echo "     }"
+                    at_least_one_entry=1
+                ;;
+                *)
+                    grub_warn "unknown section: ${section}. Ignoring entry ${name} for ${dataset}"
+                ;;
+            esac
+            last_section="${section}"
+        done
+
+        if [ "${at_least_one_entry}" -eq 1 ]; then
+            echo "}"
+        fi
+    }
+}
+
+# don't add trailing newline of variable is empty
+# $1: content to write
+# $2: destination file
+trailing_newline_if_not_empty() {
+    content="$1"
+    dest="$2"
+
+    if [ -z "${content}" ]; then
+        rm -f "${dest}"
+        touch "${dest}"
+        return
+    fi
+    echo "${content}" > "${dest}"
+}
+
+
+GRUB_LINUX_ZFS_TEST="${GRUB_LINUX_ZFS_TEST:-}"
+case "${GRUB_LINUX_ZFS_TEST}" in
+    bootlist)
+        # Import all available pools on the system and return imported list
+        imported_pools=$(import_pools)
+        boot_list="$(bootlist ${MNTDIR})"
+        trailing_newline_if_not_empty "${boot_list}" "${GRUB_LINUX_ZFS_TEST_OUTPUT}"
+        break
+    ;;
+    metamenu)
+        boot_list="$(cat ${GRUB_LINUX_ZFS_TEST_INPUT})"
+        menu_metadata="$(generate_grub_menu_metadata "${boot_list}")"
+        trailing_newline_if_not_empty "${menu_metadata}" "${GRUB_LINUX_ZFS_TEST_OUTPUT}"
+        break
+    ;;
+    grubmenu)
+        menu_metadata="$(cat ${GRUB_LINUX_ZFS_TEST_INPUT})"
+        grub_menu=$(generate_grub_menu "${menu_metadata}")
+        trailing_newline_if_not_empty "${grub_menu}" "${GRUB_LINUX_ZFS_TEST_OUTPUT}"
+        break
+    ;;
+    *)
+        # Import all available pools on the system and return imported list
+        imported_pools=$(import_pools)
+        # Generate the complete list of boot entries
+        boot_list="$(bootlist ${MNTDIR})"
+        # Create boot menu meta data from the list of boot entries
+        menu_metadata="$(generate_grub_menu_metadata "${boot_list}")"
+        # Create boot menu meta data from the list of boot entries
+        grub_menu="$(generate_grub_menu "${menu_metadata}")"
+        if [ -n "${grub_menu}" ]; then
+            # We want the trailing newline as a marker will be added
+            echo "${grub_menu}"
+        fi
+    ;;
+esac
diff --git a/etc/grub.d/20_linux_xen b/etc/grub.d/20_linux_xen
new file mode 100755 (executable)
index 0000000..a032ecc
--- /dev/null
@@ -0,0 +1,343 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
+#
+# GRUB 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.
+#
+# GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+
+. "$pkgdatadir/grub-mkconfig_lib"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+CLASS="--class gnu-linux --class gnu --class os --class xen"
+SUPPORTED_INITS="sysvinit:/lib/sysvinit/init systemd:/lib/systemd/systemd upstart:/sbin/upstart"
+
+if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+  OS=GNU/Linux
+else
+  OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
+fi
+
+# loop-AES arranges things so that /dev/loop/X can be our root device, but
+# the initrds that Linux uses don't like that.
+case ${GRUB_DEVICE} in
+  /dev/loop/*|/dev/loop[0-9])
+    GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
+    # We can't cope with devices loop-mounted from files here.
+    case ${GRUB_DEVICE} in
+      /dev/*) ;;
+      *) exit 0 ;;
+    esac
+  ;;
+esac
+
+# Default to disabling partition uuid support to maintian compatibility with
+# older kernels.
+GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}
+
+# btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
+# and mounting btrfs requires user space scanning, so force UUID in this case.
+if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) \
+    || ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
+       && [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \
+    || ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+       && ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \
+    || ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); then
+  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \
+    || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then
+  LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID}
+else
+  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+# Allow overriding GRUB_CMDLINE_LINUX and GRUB_CMDLINE_LINUX_DEFAULT.
+if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE}" ]; then
+  GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX_XEN_REPLACE}"
+fi
+if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}" ]; then
+  GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}"
+fi
+
+case x"$GRUB_FS" in
+    xbtrfs)
+       rootsubvol="`make_system_path_relative_to_its_root /`"
+       rootsubvol="${rootsubvol#/}"
+       if [ "x${rootsubvol}" != x ]; then
+           GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
+       fi;;
+    xzfs)
+       rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`
+       bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
+       LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs%/}"
+       ;;
+esac
+
+title_correction_code=
+
+linux_entry ()
+{
+  os="$1"
+  version="$2"
+  xen_version="$3"
+  type="$4"
+  args="$5"
+  xen_args="$6"
+  if [ -z "$boot_device_id" ]; then
+      boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+  fi
+  if [ x$type != xsimple ] ; then
+      if [ x$type = xrecovery ] ; then
+         title="$(gettext_printf "%s, with Xen %s and Linux %s (%s)" "${os}" "${xen_version}" "${version}" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
+      elif [ "${type#init-}" != "$type" ] ; then
+         title="$(gettext_printf "%s, with Xen %s and Linux %s (%s)" "${os}" "${xen_version}" "${version}" "${type#init-}")"
+      else
+         title="$(gettext_printf "%s, with Xen %s and Linux %s" "${os}" "${xen_version}" "${version}")"
+      fi
+      replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
+      if [ x"Xen ${xen_version}>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
+         quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
+         title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
+         grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
+      fi
+      echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'xen-gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
+  else
+      title="$(gettext_printf "%s, with Xen hypervisor" "${os}")"
+      echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'xen-gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
+  fi
+  if [ x$type != xrecovery ] ; then
+      save_default_entry | grub_add_tab | sed "s/^/$submenu_indentation/"
+  fi
+
+  if [ -z "${prepare_boot_cache}" ]; then
+    prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
+  fi
+  printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
+  xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})"
+  lmessage="$(gettext_printf "Loading Linux %s ..." ${version})"
+  sed "s/^/$submenu_indentation/" << EOF
+       echo    '$(echo "$xmessage" | grub_quote)'
+        if [ "\$grub_platform" = "pc" -o "\$grub_platform" = "" ]; then
+            xen_rm_opts=
+        else
+            xen_rm_opts="no-real-mode edd=off"
+        fi
+       ${xen_loader}   ${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
+       echo    '$(echo "$lmessage" | grub_quote)'
+       ${module_loader}        ${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args}
+EOF
+  if test -n "${initrd}" ; then
+    # TRANSLATORS: ramdisk isn't identifier. Should be translated.
+    message="$(gettext_printf "Loading initial ramdisk ...")"
+    initrd_path=
+    for i in ${initrd}; do
+       initrd_path="${initrd_path} ${rel_dirname}/${i}"
+    done
+    sed "s/^/$submenu_indentation/" << EOF
+       echo    '$(echo "$message" | grub_quote)'
+       ${module_loader}        --nounzip   $(echo $initrd_path)
+EOF
+  fi
+  sed "s/^/$submenu_indentation/" << EOF
+}
+EOF
+}
+
+linux_list=
+for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
+    if grub_file_is_not_garbage "$i"; then
+       basename=$(basename $i)
+       version=$(echo $basename | sed -e "s,^[^0-9]*-,,g")
+       dirname=$(dirname $i)
+       config=
+       for j in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
+           if test -e "${j}" ; then
+               config="${j}"
+               break
+           fi
+       done
+        if (grep -qx "CONFIG_XEN_DOM0=y" "${config}" 2> /dev/null || grep -qx "CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then linux_list="$linux_list $i" ; fi
+    fi
+done
+if [ "x${linux_list}" = "x" ] ; then
+    exit 0
+fi
+
+file_is_not_sym () {
+    case "$1" in
+       */xen-syms-*)
+           return 1;;
+       *)
+           return 0;;
+    esac
+}
+
+xen_list=
+for i in /boot/xen*; do
+    if grub_file_is_not_garbage "$i" && file_is_not_sym "$i" ; then xen_list="$xen_list $i" ; fi
+done
+prepare_boot_cache=
+boot_device_id=
+
+title_correction_code=
+
+machine=`uname -m`
+
+case "$machine" in
+    i?86) GENKERNEL_ARCH="x86" ;;
+    mips|mips64) GENKERNEL_ARCH="mips" ;;
+    mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
+    arm*) GENKERNEL_ARCH="arm" ;;
+    *) GENKERNEL_ARCH="$machine" ;;
+esac
+
+# Extra indentation to add to menu entries in a submenu. We're not in a submenu
+# yet, so it's empty. In a submenu it will be equal to '\t' (one tab).
+submenu_indentation=""
+
+is_top_level=true
+
+while [ "x${xen_list}" != "x" ] ; do
+    list="${linux_list}"
+    current_xen=`version_find_latest $xen_list`
+    xen_basename=`basename ${current_xen}`
+    xen_dirname=`dirname ${current_xen}`
+    rel_xen_dirname=`make_system_path_relative_to_its_root $xen_dirname`
+    xen_version=`echo $xen_basename | sed -e "s,.gz$,,g;s,^xen-,,g"`
+    if [ -z "$boot_device_id" ]; then
+       boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+    fi
+    if [ "x$is_top_level" != xtrue ]; then
+       echo "  submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {"
+    fi
+    if ($grub_file --is-arm64-efi $current_xen); then
+       xen_loader="xen_hypervisor"
+       module_loader="xen_module"
+    else
+       if ($grub_file --is-x86-multiboot2 $current_xen); then
+           xen_loader="multiboot2"
+           module_loader="module2"
+       else
+           xen_loader="multiboot"
+           module_loader="module"
+        fi
+    fi
+
+    initrd_early=
+    for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \
+             ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do
+       if test -e "${xen_dirname}/${i}" ; then
+          initrd_early="${initrd_early} ${i}"
+       fi
+    done
+
+    while [ "x$list" != "x" ] ; do
+       linux=`version_find_latest $list`
+       gettext_printf "Found linux image: %s\n" "$linux" >&2
+       basename=`basename $linux`
+       dirname=`dirname $linux`
+       rel_dirname=`make_system_path_relative_to_its_root $dirname`
+       version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
+       alt_version=`echo $version | sed -e "s,\.old$,,g"`
+       linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+
+       initrd_real=
+       for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
+          "initrd-${version}" "initramfs-${version}.img" \
+          "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
+          "initrd-${alt_version}" "initramfs-${alt_version}.img" \
+          "initramfs-genkernel-${version}" \
+          "initramfs-genkernel-${alt_version}" \
+          "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
+          "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}" ; do
+           if test -e "${dirname}/${i}" ; then
+               initrd_real="$i"
+               break
+           fi
+       done
+
+       initrd=
+       if test -n "${initrd_early}" || test -n "${initrd_real}"; then
+           initrd="${initrd_early} ${initrd_real}"
+
+           initrd_display=
+           for i in ${initrd}; do
+               initrd_display="${initrd_display} ${dirname}/${i}"
+           done
+           gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
+       fi
+
+       if test -z "${initrd_real}"; then
+    # "UUID=" magic is parsed by initrds.  Since there's no initrd, it can't work here.
+           if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
+               || [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then
+
+               linux_root_device_thisversion=${GRUB_DEVICE}
+           else
+               linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID}
+           fi
+       fi
+
+       if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+           linux_entry "${OS}" "${version}" "${xen_version}" simple \
+               "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
+
+           submenu_indentation="$grub_tab$grub_tab"
+    
+           if [ -z "$boot_device_id" ]; then
+               boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+           fi
+            # TRANSLATORS: %s is replaced with an OS name
+           echo "submenu '$(gettext_printf "Advanced options for %s (with Xen hypervisor)" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
+       echo "  submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {"
+          is_top_level=false
+       fi
+
+       linux_entry "${OS}" "${version}" "${xen_version}" advanced \
+           "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
+       for supported_init in ${SUPPORTED_INITS}; do
+           init_path="${supported_init#*:}"
+           if [ -x "${init_path}" ] && [ "$(readlink -f /sbin/init)" != "$(readlink -f "${init_path}")" ]; then
+               linux_entry "${OS}" "${version}" "${xen_version}" "init-${supported_init%%:*}" \
+                   "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} init=${init_path}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
+
+           fi
+       done
+       if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
+           linux_entry "${OS}" "${version}" "${xen_version}" recovery \
+               "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}"
+       fi
+
+       list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
+    done
+    if [ x"$is_top_level" != xtrue ]; then
+       echo '  }'
+    fi
+    xen_list=`echo $xen_list | tr ' ' '\n' | fgrep -vx "$current_xen" | tr '\n' ' '`
+done
+
+# If at least one kernel was found, then we need to
+# add a closing '}' for the submenu command.
+if [ x"$is_top_level" != xtrue ]; then
+  echo '}'
+fi
+
+echo "$title_correction_code"
diff --git a/etc/grub.d/30_os-prober b/etc/grub.d/30_os-prober
new file mode 100755 (executable)
index 0000000..258799b
--- /dev/null
@@ -0,0 +1,376 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009  Free Software Foundation, Inc.
+#
+# GRUB 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.
+#
+# GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+quick_boot="1"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+. "$pkgdatadir/grub-mkconfig_lib"
+
+found_other_os=
+
+adjust_timeout () {
+  if [ "$quick_boot" = 1 ] && [ "x${found_other_os}" != "x" ]; then
+    cat << EOF
+set timeout_style=menu
+if [ "\${timeout}" = 0 ]; then
+  set timeout=10
+fi
+EOF
+  fi
+}
+
+if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
+  exit 0
+fi
+
+if [ -z "`which os-prober 2> /dev/null`" ] || [ -z "`which linux-boot-prober 2> /dev/null`" ] ; then
+  # missing os-prober and/or linux-boot-prober
+  exit 0
+fi
+
+OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
+if [ -z "${OSPROBED}" ] ; then
+  # empty os-prober output, nothing doing
+  exit 0
+fi
+
+osx_entry() {
+    found_other_os=1
+    if [ x$2 = x32 ]; then
+        # TRANSLATORS: it refers to kernel architecture (32-bit)
+       bitstr="$(gettext "(32-bit)")"
+    else
+        # TRANSLATORS: it refers to kernel architecture (64-bit)
+       bitstr="$(gettext "(64-bit)")"
+    fi
+    # TRANSLATORS: it refers on the OS residing on device %s
+    onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+        cat << EOF
+menuentry '$(echo "${LONGNAME} $bitstr $onstr" | grub_quote)' --class osx --class darwin --class os \$menuentry_id_option 'osprober-xnu-$2-$(grub_get_device_id "${DEVICE}")'  {
+EOF
+       save_default_entry | grub_add_tab
+       prepare_grub_to_access_device ${DEVICE} | grub_add_tab
+       cat << EOF
+        load_video
+        set do_resume=0
+        if [ /var/vm/sleepimage -nt10 / ]; then
+           if xnu_resume /var/vm/sleepimage; then
+             set do_resume=1
+           fi
+        fi
+        if [ \$do_resume = 0 ]; then
+           xnu_uuid ${OSXUUID} uuid
+           if [ -f /Extra/DSDT.aml ]; then
+              acpi -e /Extra/DSDT.aml
+           fi
+           if [ /kernelcache -nt /System/Library/Extensions ]; then
+              $1 /kernelcache boot-uuid=\${uuid} rd=*uuid
+           elif [ -f /System/Library/Kernels/kernel ]; then
+              $1 /System/Library/Kernels/kernel boot-uuid=\${uuid} rd=*uuid
+              xnu_kextdir /System/Library/Extensions
+           else
+              $1 /mach_kernel boot-uuid=\${uuid} rd=*uuid
+              if [ /System/Library/Extensions.mkext -nt /System/Library/Extensions ]; then
+                xnu_mkext /System/Library/Extensions.mkext
+              else
+                xnu_kextdir /System/Library/Extensions
+              fi
+           fi
+           if [ -f /Extra/Extensions.mkext ]; then
+              xnu_mkext /Extra/Extensions.mkext
+           fi
+           if [ -d /Extra/Extensions ]; then
+              xnu_kextdir /Extra/Extensions
+           fi
+           if [ -f /Extra/devprop.bin ]; then
+              xnu_devprop_load /Extra/devprop.bin
+           fi
+           if [ -f /Extra/splash.jpg ]; then
+              insmod jpeg
+              xnu_splash /Extra/splash.jpg
+           fi
+           if [ -f /Extra/splash.png ]; then
+              insmod png
+              xnu_splash /Extra/splash.png
+           fi
+           if [ -f /Extra/splash.tga ]; then
+              insmod tga
+              xnu_splash /Extra/splash.tga
+           fi
+        fi
+}
+EOF
+}
+
+used_osprober_linux_ids=
+
+wubi=
+
+for OS in ${OSPROBED} ; do
+  DEVICE="`echo ${OS} | cut -d ':' -f 1`"
+  LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
+  LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
+  BOOT="`echo ${OS} | cut -d ':' -f 4`"
+  if UUID="`${grub_probe} --target=fs_uuid --device ${DEVICE%@*}`"; then
+    EXPUUID="$UUID"
+
+    if [ x"${DEVICE#*@}" != x ] ; then
+      EXPUUID="${EXPUUID}@${DEVICE#*@}"
+    fi
+
+    if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" ] && [ "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then
+      echo "Skipped ${LONGNAME} on ${DEVICE} by user request." >&2
+      continue
+    fi
+  fi
+
+  BTRFS="`echo ${OS} | cut -d ':' -f 5`"
+  if [ "x$BTRFS" = "xbtrfs" ]; then
+       BTRFSuuid="`echo ${OS} | cut -d ':' -f 6`"
+       BTRFSsubvol="`echo ${OS} | cut -d ':' -f 7`"
+  fi
+
+  if [ -z "${LONGNAME}" ] ; then
+    LONGNAME="${LABEL}"
+  fi
+
+  # os-prober returns text string followed by optional counter
+  CLASS="--class $(echo "${LABEL}" | LC_ALL=C sed 's,[[:digit:]]*$,,' | cut -d' ' -f1 | tr 'A-Z' 'a-z' | LC_ALL=C sed 's,[^[:alnum:]_],_,g')"
+
+  gettext_printf "Found %s on %s\n" "${LONGNAME}" "${DEVICE}" >&2
+
+  case ${BOOT} in
+    chain)
+
+      case ${LONGNAME} in
+       Windows*)
+         if [ -z "$wubi" ]; then
+           if [ -x /usr/share/lupin-support/grub-mkimage ] && \
+              /usr/share/lupin-support/grub-mkimage --test; then
+             wubi=yes
+           else
+             wubi=no
+           fi
+         fi
+         if [ "$wubi" = yes ]; then
+           echo "Skipping ${LONGNAME} on Wubi system" >&2
+           continue
+         fi
+         ;;
+      esac
+
+      found_other_os=1
+         onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+      cat << EOF
+menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' $CLASS --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
+EOF
+      save_default_entry | grub_add_tab
+      prepare_grub_to_access_device ${DEVICE} | grub_add_tab
+
+      if [ x"`${grub_probe} --device ${DEVICE} --target=partmap`" = xmsdos ]; then
+         cat << EOF
+       parttool \${root} hidden-
+EOF
+      fi
+
+      case ${LONGNAME} in
+       Windows\ Vista*|Windows\ 7*|Windows\ Server\ 2008*)
+       ;;
+       *)
+         cat << EOF
+       drivemap -s (hd0) \${root}
+EOF
+       ;;
+      esac
+
+      cat <<EOF
+       chainloader +1
+}
+EOF
+    ;;
+    efi)
+
+       found_other_os=1
+       EFIPATH=${DEVICE#*@}
+       DEVICE=${DEVICE%@*}
+       onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+      cat << EOF
+menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' $CLASS --class os \$menuentry_id_option 'osprober-efi-$(grub_get_device_id "${DEVICE}")' {
+EOF
+      save_default_entry | sed -e "s/^/\t/"
+      prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
+
+      cat <<EOF
+       chainloader ${EFIPATH}
+}
+EOF
+    ;;
+    linux)
+      if [ "x$BTRFS" = "xbtrfs" ]; then
+         LINUXPROBED="`linux-boot-prober btrfs ${BTRFSuuid} ${BTRFSsubvol}  2> /dev/null | tr ' ' '^' | paste -s -d ' '`"
+      else
+         LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`"
+      fi
+      prepare_boot_cache=
+      boot_device_id=
+      is_top_level=true
+      title_correction_code=
+      OS="${LONGNAME}"
+
+      for LINUX in ${LINUXPROBED} ; do
+        LROOT="`echo ${LINUX} | cut -d ':' -f 1`"
+        LBOOT="`echo ${LINUX} | cut -d ':' -f 2`"
+        LLABEL="`echo ${LINUX} | cut -d ':' -f 3 | tr '^' ' '`"
+        LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`"
+        LINITRD="`echo ${LINUX} | cut -d ':' -f 5`"
+        LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`"
+
+        if [ -z "${LLABEL}" ] ; then
+          LLABEL="${LONGNAME}"
+        fi
+
+       if [ "${LROOT}" != "${LBOOT}" ]; then
+         LKERNEL="${LKERNEL#/boot}"
+         LINITRD="${LINITRD#/boot}"
+       fi
+
+       if [ -z "${prepare_boot_cache}" ]; then
+         prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | grub_add_tab)"
+         [ "${prepare_boot_cache}" ] || continue
+       fi
+
+       found_other_os=1
+       onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+       recovery_params="$(echo "${LPARAMS}" | grep 'single\|recovery')" || true
+       counter=1
+       while echo "$used_osprober_linux_ids" | grep 'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id' > /dev/null; do
+           counter=$((counter+1));
+       done
+       if [ -z "$boot_device_id" ]; then
+           boot_device_id="$(grub_get_device_id "${DEVICE}")"
+       fi
+       used_osprober_linux_ids="$used_osprober_linux_ids 'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id'"
+
+       if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+            cat << EOF
+menuentry '$(echo "$OS $onstr" | grub_quote)' $CLASS --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-simple-$boot_device_id' {
+EOF
+           save_default_entry | grub_add_tab
+           printf '%s\n' "${prepare_boot_cache}"
+           cat <<  EOF
+       linux ${LKERNEL} ${LPARAMS}
+EOF
+            if [ -n "${LINITRD}" ] ; then
+          cat << EOF
+       initrd ${LINITRD}
+EOF
+            fi
+        cat << EOF
+}
+EOF
+           echo "submenu '$(gettext_printf "Advanced options for %s" "${OS} $onstr" | grub_quote)' \$menuentry_id_option 'osprober-gnulinux-advanced-$boot_device_id' {"
+           is_top_level=false
+       fi
+       title="${LLABEL} $onstr"
+        cat << EOF
+       menuentry '$(echo "$title" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {
+EOF
+       save_default_entry | sed -e "s/^/$grub_tab$grub_tab/"
+       printf '%s\n' "${prepare_boot_cache}" | grub_add_tab
+       cat <<  EOF
+               linux ${LKERNEL} ${LPARAMS}
+EOF
+        if [ -n "${LINITRD}" ] ; then
+            cat << EOF
+               initrd ${LINITRD}
+EOF
+        fi
+        cat << EOF
+       }
+EOF
+       if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
+           replacement_title="$(echo "Advanced options for ${OS} $onstr" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
+           quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
+           title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
+           grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
+       fi
+      done
+      if [ x"$is_top_level" != xtrue ]; then
+         echo '}'
+      fi
+      echo "$title_correction_code"
+    ;;
+    macosx)
+      if [ "${UUID}" ]; then
+       OSXUUID="${UUID}"
+       osx_entry xnu_kernel 32
+       osx_entry xnu_kernel64 64
+      fi
+    ;;
+    hurd)
+      found_other_os=1
+      onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+      cat << EOF
+menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class hurd --class gnu --class os \$menuentry_id_option 'osprober-gnuhurd-/boot/gnumach.gz-false-$(grub_get_device_id "${DEVICE}")' {
+EOF
+      save_default_entry | grub_add_tab
+      prepare_grub_to_access_device ${DEVICE} | grub_add_tab
+      grub_device="`${grub_probe} --device ${DEVICE} --target=drive`"
+      mach_device="`echo "${grub_device}" | sed -e 's/(\(hd.*\),msdos\(.*\))/\1s\2/'`"
+      grub_fs="`${grub_probe} --device ${DEVICE} --target=fs`"
+      case "${grub_fs}" in
+       *fs)    hurd_fs="${grub_fs}" ;;
+       *)      hurd_fs="${grub_fs}fs" ;;
+      esac
+      cat << EOF
+       multiboot /boot/gnumach.gz root=device:${mach_device}
+       module /hurd/${hurd_fs}.static ${hurd_fs} --readonly \\
+                       --multiboot-command-line='\${kernel-command-line}' \\
+                       --host-priv-port='\${host-port}' \\
+                       --device-master-port='\${device-port}' \\
+                       --exec-server-task='\${exec-task}' -T typed '\${root}' \\
+                       '\$(task-create)' '\$(task-resume)'
+       module /lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)'
+}
+EOF
+    ;;
+    minix)
+         cat << EOF
+menuentry "${LONGNAME} (on ${DEVICE}, Multiboot)" {
+EOF
+         save_default_entry | sed -e "s/^/\t/"
+         prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
+        cat << EOF
+       multiboot /boot/image_latest
+}
+EOF
+    ;;
+    *)
+      # TRANSLATORS: %s is replaced by OS name.
+      gettext_printf "%s is not yet supported by grub-mkconfig.\n" "  ${LONGNAME}" >&2
+    ;;
+  esac
+done
+
+adjust_timeout
diff --git a/etc/grub.d/30_uefi-firmware b/etc/grub.d/30_uefi-firmware
new file mode 100755 (executable)
index 0000000..7cc32b6
--- /dev/null
@@ -0,0 +1,46 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2012  Free Software Foundation, Inc.
+#
+# GRUB 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.
+#
+# GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+. "${datarootdir}/grub/grub-mkconfig_lib"
+
+efi_vars_dir=/sys/firmware/efi/vars
+EFI_GLOBAL_VARIABLE=8be4df61-93ca-11d2-aa0d-00e098032b8c
+OsIndications="$efi_vars_dir/OsIndicationsSupported-$EFI_GLOBAL_VARIABLE/data"
+
+if [ -e "$OsIndications" ] && \
+   [ "$(( $(printf 0x%x \'"$(cat $OsIndications | cut -b1)") & 1 ))" = 1 ]; then
+  LABEL="UEFI Firmware Settings"
+
+  gettext_printf "Adding boot menu entry for UEFI Firmware Settings\n" >&2
+
+  onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+
+  cat << EOF
+menuentry '$LABEL' \$menuentry_id_option 'uefi-firmware' {
+       fwsetup
+}
+EOF
+fi
diff --git a/etc/grub.d/35_fwupd b/etc/grub.d/35_fwupd
new file mode 100755 (executable)
index 0000000..496cd66
--- /dev/null
@@ -0,0 +1,24 @@
+#! /bin/sh
+# SPDX-License-Identifier: LGPL-2.1+
+set -e
+
+[ -d ${pkgdatadir:?} ]
+# shellcheck source=/dev/null
+. "$pkgdatadir/grub-mkconfig_lib"
+
+if [ -f /var/lib/fwupd/uefi_capsule.conf ] &&
+   ls /sys/firmware/efi/efivars/fwupd-*-0abba7dc-e516-4167-bbf5-4d9d1c739416 1>/dev/null 2>&1; then
+      . /var/lib/fwupd/uefi_capsule.conf
+      if [ "${EFI_PATH}" != "" ] && [ "${ESP}" != "" ]; then
+      echo "Adding Linux Firmware Updater entry" >&2
+cat << EOF
+menuentry 'Linux Firmware Updater' \$menuentry_id_option 'fwupd' {
+EOF
+      ${grub_probe:?}
+      prepare_grub_to_access_device '`${grub_probe} --target=device \${ESP}` | sed -e "s/^/\t/"'
+cat << EOF
+       chainloader ${EFI_PATH}
+}
+EOF
+      fi
+fi
diff --git a/etc/grub.d/40_custom b/etc/grub.d/40_custom
new file mode 100755 (executable)
index 0000000..48068de
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+exec tail -n +3 $0
+# This file provides an easy way to add custom menu entries.  Simply type the
+# menu entries you want to add after this comment.  Be careful not to change
+# the 'exec tail' line above.
diff --git a/etc/grub.d/41_custom b/etc/grub.d/41_custom
new file mode 100755 (executable)
index 0000000..fcc21a9
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+cat <<EOF
+if [ -f  \${config_directory}/custom.cfg ]; then
+  source \${config_directory}/custom.cfg
+elif [ -z "\${config_directory}" -a -f  \$prefix/custom.cfg ]; then
+  source \$prefix/custom.cfg;
+fi
+EOF
+
diff --git a/etc/grub.d/README b/etc/grub.d/README
new file mode 100644 (file)
index 0000000..3ea109d
--- /dev/null
@@ -0,0 +1,11 @@
+
+All executable files in this directory are processed in shell expansion order.
+
+  00_*: Reserved for 00_header.
+  10_*: Native boot entries.
+  20_*: Third party apps (e.g. memtest86+).
+
+The number namespace in-between is configurable by system installer and/or
+administrator.  For example, you can add an entry to boot another OS as
+01_otheros, 11_otheros, etc, depending on the position you want it to occupy in
+the menu; and then adjust the default setting via /etc/default/grub.
diff --git a/etc/gshadow b/etc/gshadow
new file mode 100644 (file)
index 0000000..f543e11
--- /dev/null
@@ -0,0 +1,61 @@
+root:*::
+daemon:*::
+bin:*::
+sys:*::
+adm:*::syslog
+tty:*::syslog
+disk:*::
+lp:*::
+mail:*::
+news:*::
+uucp:*::
+man:*::
+proxy:*::
+kmem:*::
+dialout:*::
+fax:*::
+voice:*::
+cdrom:*::
+floppy:*::
+tape:*::
+sudo:*::gg
+audio:*::
+dip:*::
+www-data:*::
+backup:*::
+operator:*::
+list:*::
+irc:*::
+src:*::
+gnats:*::
+shadow:*::
+utmp:*::
+video:*::
+sasl:*::
+plugdev:*::
+staff:*::
+games:*::
+users:*::
+nogroup:*::
+systemd-journal:!::
+systemd-network:!::
+systemd-resolve:!::
+systemd-timesync:!::
+crontab:!::
+messagebus:!::
+input:!::
+kvm:!::
+render:!::
+syslog:!::
+tss:!::
+uuidd:!::
+tcpdump:!::
+ssh:!::
+landscape:!::
+lxd:!::
+systemd-coredump:!!::
+ssl-cert:!::postgres
+postgres:!::
+shane:!::
+jon:!::
+gg:!::
diff --git a/etc/gshadow- b/etc/gshadow-
new file mode 100644 (file)
index 0000000..cd9b7dd
--- /dev/null
@@ -0,0 +1,62 @@
+root:*::
+daemon:*::
+bin:*::
+sys:*::
+adm:*::syslog,gamesguru
+tty:*::syslog
+disk:*::
+lp:*::
+mail:*::
+news:*::
+uucp:*::
+man:*::
+proxy:*::
+kmem:*::
+dialout:*::
+fax:*::
+voice:*::
+cdrom:*::gamesguru
+floppy:*::
+tape:*::
+sudo:*::gamesguru,gg
+audio:*::
+dip:*::gamesguru
+www-data:*::
+backup:*::
+operator:*::
+list:*::
+irc:*::
+src:*::
+gnats:*::
+shadow:*::
+utmp:*::
+video:*::
+sasl:*::
+plugdev:*::gamesguru
+staff:*::
+games:*::
+users:*::
+nogroup:*::
+systemd-journal:!::
+systemd-network:!::
+systemd-resolve:!::
+systemd-timesync:!::
+crontab:!::
+messagebus:!::
+input:!::
+kvm:!::
+render:!::
+syslog:!::
+tss:!::
+uuidd:!::
+tcpdump:!::
+ssh:!::
+landscape:!::
+lxd:!::gamesguru
+systemd-coredump:!!::
+gamesguru:!::
+ssl-cert:!::postgres
+postgres:!::
+shane:!::
+jon:!::
+gg:!::
diff --git a/etc/hdparm.conf b/etc/hdparm.conf
new file mode 100644 (file)
index 0000000..b4bce92
--- /dev/null
@@ -0,0 +1,142 @@
+## This is the default configuration for hdparm for Debian.  It is a
+## rather simple script, so please follow the following guidelines :)
+## Any line that begins with a comment is ignored - add as many as you
+## like.  Note that an in-line comment is not supported.  If a line
+## consists of whitespace only (tabs, spaces, carriage return), it will be
+## ignored, so you can space control fields as you like.  ANYTHING ELSE
+## IS PARSED!!  This means that lines with stray characters or lines that
+## use non # comment characters will be interpreted by the initscript.
+## This has probably minor, but potentially serious, side effects for your
+## hard drives, so please follow the guidelines.  Patches to improve
+## flexibilty welcome.  Please read /usr/share/doc/hdparm/README.Debian for
+## notes about known issues, especially if you have an MD array.
+##
+## Note that if the init script causes boot problems, you can pass 'nohdparm'
+## on the kernel command line, and the script will not be run.
+##
+## Uncommenting the options below will cause them to be added to the DEFAULT
+## string which is prepended to options listed in the blocks below.
+##
+## If an option is listed twice, the second instance replaces the first.
+##
+## /sbin/hdparm is not run unless a block of the form:
+##      DEV {
+##         option
+##         option
+##         ...
+##      }
+## exists.  This blocks will cause /sbin/hdparm OPTIONS DEV to be run.
+## Where OPTIONS is the concatenation of all options previously defined
+## outside of a block and all options defined with in the block.
+
+# -q be quiet
+quiet
+# -a sector count for filesystem read-ahead
+#read_ahead_sect = 12
+# -A disable/enable the IDE drive's read-lookahead feature
+#lookahead = on
+# -b bus state
+#bus = on
+# -B apm setting
+#apm = 255
+# -B apm setting when on battery
+#apm_battery = 127
+# -c enable (E)IDE 32-bit I/O support - can be any of 0,1,3
+#io32_support = 1
+# -d disable/enable the "using_dma" flag for this drive
+#dma = off
+# -D enable/disable the on-drive defect management
+#defect_mana = off
+# -E cdrom speed
+#cd_speed = 16
+# -k disable/enable the "keep_settings_over_reset" flag for this drive
+#keep_settings_over_reset = off
+# -K disable/enable the drive's "keep_features_over_reset" flag
+#keep_features_over_reset = on
+# -m sector count for multiple sector I/O
+#mult_sect_io = 32
+# -P maximum sector count for the drive's internal prefetch mechanism
+#prefetch_sect = 12
+# -r read-only flag for device
+#read_only = off
+# -R Enable/Disable Write-Read-Verify, on to enable (R1), off to disable (R0)
+# write_read_verify = off
+# -s Turn on/off power on in standby mode
+# poweron_standby = off
+# -S standby (spindown) timeout for the drive
+#spindown_time = 24
+# "force_spindown_time" - the same as "-S", but will be applied even if disk
+# doesn't support APM. Use on your own risk. This is debian specific option.
+# See also #758988
+#force_spindown_time = 24
+# -u interrupt-unmask flag for the drive
+#interrupt_unmask = on
+# -W Disable/enable the IDE drive's write-caching feature
+#write_cache = off
+# -X IDE transfer mode for newer (E)IDE/ATA2 drives
+#transfer_mode = 34
+# -y force to immediately enter the standby mode
+#standby
+# -Y force to immediately enter the sleep mode
+#sleep
+# -Z Disable the power-saving function of certain Seagate drives
+#disable_seagate
+# -M Set the acoustic management properties of a drive
+#acoustic_management
+# -p Set the chipset PIO mode
+# chipset_pio_mode
+# --security-freeze Freeze the drive's security status
+# security_freeze
+# --security-unlock Unlock the drive's security
+# security_unlock = PWD
+# --security-set-pass Set security password
+# security_pass = password
+# --security-disable Disable drive locking
+# security_disable
+# --user-master Select password to use
+# user-master = u
+# --security-mode Set the security mode
+# security_mode = h
+
+# Root file systems.  Please see README.Debian for details
+# ROOTFS = /dev/hda
+
+## New note - you can use straight hdparm commands in this config file
+## as well - the set up is ugly, but it keeps backwards compatibility
+## Additionally, it should be noted that any blocks that begin with
+## the keyword 'command_line' are not run until after the root filesystem
+## is mounted.  This is done to avoid running blocks twice.  If you need
+## to run hdparm to set parameters for your root disk, please use the
+## standard format.
+
+#Samples follow:
+#First three are good for devfs systems, fourth one for systems that do
+#not use devfs.  The fifth example uses straight hdparm command line
+#syntax.  Any of the blocks that use command line syntax must begin with
+#the keyword 'command_line', and no attempt is made to validate syntax.
+#It is provided for those more comfortable with hdparm syntax.
+
+#/dev/discs/disc0/disc {
+#      mult_sect_io = 16
+#      write_cache = off
+#      spindown_time = 240
+#}
+
+#/dev/discs/disc1/disc {
+#      mult_sect_io = 32
+#      spindown_time = 36
+#      write_cache = off
+#}
+
+#/dev/cdroms/cdrom0 {
+#      dma = on
+#      interrupt_unmask = on
+#      io32_support = 0
+#}
+
+#/dev/hda {
+#      mult_sect_io = 16
+#      write_cache = off
+#      dma = on
+#}
+
diff --git a/etc/host.conf b/etc/host.conf
new file mode 100644 (file)
index 0000000..d8ec0b4
--- /dev/null
@@ -0,0 +1,3 @@
+# The "order" line is only used by old versions of the C library.
+order hosts,bind
+multi on
diff --git a/etc/hostname b/etc/hostname
new file mode 100644 (file)
index 0000000..9bb4eea
--- /dev/null
@@ -0,0 +1 @@
+vps76
diff --git a/etc/hosts b/etc/hosts
new file mode 100644 (file)
index 0000000..599fc03
--- /dev/null
+++ b/etc/hosts
@@ -0,0 +1,9 @@
+127.0.0.1 localhost
+127.0.1.1 vps76
+
+# The following lines are desirable for IPv6 capable hosts
+::1     ip6-localhost ip6-loopback
+fe00::0 ip6-localnet
+ff00::0 ip6-mcastprefix
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
diff --git a/etc/hosts.allow b/etc/hosts.allow
new file mode 100644 (file)
index 0000000..4c12673
--- /dev/null
@@ -0,0 +1,10 @@
+# /etc/hosts.allow: list of hosts that are allowed to access the system.
+#                   See the manual pages hosts_access(5) and hosts_options(5).
+#
+# Example:    ALL: LOCAL @some_netgroup
+#             ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
+#
+# If you're going to protect the portmapper use the name "rpcbind" for the
+# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
+#
+
diff --git a/etc/hosts.deny b/etc/hosts.deny
new file mode 100644 (file)
index 0000000..f393e64
--- /dev/null
@@ -0,0 +1,17 @@
+# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
+#                  See the manual pages hosts_access(5) and hosts_options(5).
+#
+# Example:    ALL: some.host.name, .some.domain
+#             ALL EXCEPT in.fingerd: other.host.name, .other.domain
+#
+# If you're going to protect the portmapper use the name "rpcbind" for the
+# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
+#
+# The PARANOID wildcard matches any host whose name does not match its
+# address.
+#
+# You may wish to enable this to ensure any programs that don't
+# validate looked up hostnames still leave understandable logs. In past
+# versions of Debian this has been the default.
+# ALL: PARANOID
+
diff --git a/etc/init.d/apparmor b/etc/init.d/apparmor
new file mode 100755 (executable)
index 0000000..f8a2453
--- /dev/null
@@ -0,0 +1,156 @@
+#!/bin/sh
+# ----------------------------------------------------------------------
+#    Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+#     NOVELL (All rights reserved)
+#    Copyright (c) 2008, 2009 Canonical, Ltd.
+#
+#    This program is free software; you can redistribute it and/or
+#    modify it under the terms of version 2 of the GNU General Public
+#    License published by the Free Software Foundation.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program; if not, contact Novell, Inc.
+# ----------------------------------------------------------------------
+# Authors:
+#  Steve Beattie <steve.beattie@canonical.com>
+#  Kees Cook <kees@ubuntu.com>
+#
+# /etc/init.d/apparmor
+#
+# Note: "Required-Start: $local_fs" implies that the cache may not be available
+# yet when /var is on a remote filesystem. The worst consequence this should
+# have is slowing down the boot.
+#
+### BEGIN INIT INFO
+# Provides: apparmor
+# Required-Start: $local_fs
+# Required-Stop: umountfs
+# Default-Start: S
+# Default-Stop:
+# Short-Description: AppArmor initialization
+# Description: AppArmor init script. This script loads all AppArmor profiles.
+### END INIT INFO
+
+APPARMOR_FUNCTIONS=/lib/apparmor/rc.apparmor.functions
+
+# Functions needed by rc.apparmor.functions
+
+. /lib/lsb/init-functions
+
+aa_action() {
+       STRING=$1
+       shift
+       $*
+       rc=$?
+       if [ $rc -eq 0 ] ; then
+               aa_log_success_msg $"$STRING "
+       else
+               aa_log_failure_msg $"$STRING "
+       fi
+       return $rc
+}
+
+aa_log_action_start() {
+       log_action_begin_msg $@
+}
+
+aa_log_action_end() {
+       log_action_end_msg $@
+}
+
+aa_log_success_msg() {
+       log_success_msg $@
+}
+
+aa_log_warning_msg() {
+       log_warning_msg $@
+}
+
+aa_log_failure_msg() {
+       log_failure_msg $@
+}
+
+aa_log_skipped_msg() {
+       if [ -n "$1" ]; then
+               log_warning_msg "${1}: Skipped."
+       fi
+}
+
+aa_log_daemon_msg() {
+       log_daemon_msg $@
+}
+
+aa_log_end_msg() {
+       log_end_msg $@
+}
+
+# Source AppArmor function library
+if [ -f "${APPARMOR_FUNCTIONS}" ]; then
+       . ${APPARMOR_FUNCTIONS}
+else
+       aa_log_failure_msg "Unable to find AppArmor initscript functions"
+       exit 1
+fi
+
+usage() {
+    echo "Usage: $0 {start|stop|restart|reload|force-reload|status}"
+}
+
+test -x ${PARSER} || exit 0 # by debian policy
+# LSM is built-in, so it is either there or not enabled for this boot
+test -d /sys/module/apparmor || exit 0
+
+# do not perform start/stop/reload actions when running from liveCD
+test -d /rofs/etc/apparmor.d && exit 0
+
+rc=255
+case "$1" in
+       start)
+               if [ -x /usr/bin/systemd-detect-virt ] && \
+                  systemd-detect-virt --quiet --container && \
+                  ! is_container_with_internal_policy; then
+                       aa_log_daemon_msg "Not starting AppArmor in container"
+                       aa_log_end_msg 0
+                       exit 0
+               fi
+               apparmor_start
+               rc=$?
+               ;;
+       restart|reload|force-reload)
+               if [ -x /usr/bin/systemd-detect-virt ] && \
+                  systemd-detect-virt --quiet --container && \
+                  ! is_container_with_internal_policy; then
+                       aa_log_daemon_msg "Not starting AppArmor in container"
+                       aa_log_end_msg 0
+                       exit 0
+               fi
+               apparmor_restart
+               rc=$?
+               ;;
+       stop)
+               aa_log_daemon_msg "Leaving AppArmor profiles loaded"
+               cat >&2 <<EOM
+No profiles have been unloaded.
+
+Unloading profiles will leave already running processes permanently
+unconfined, which can lead to unexpected situations.
+
+To set a process to complain mode, use the command line tool
+'aa-complain'. To really tear down all profiles, run 'aa-teardown'."
+EOM
+               ;;
+       status)
+               apparmor_status
+               rc=$?
+               ;;
+       *)
+               usage
+               rc=1
+               ;;
+       esac
+exit $rc
diff --git a/etc/init.d/apport b/etc/init.d/apport
new file mode 100755 (executable)
index 0000000..1e10d02
--- /dev/null
@@ -0,0 +1,119 @@
+#! /bin/sh
+
+### BEGIN INIT INFO
+# Provides:        apport
+# Required-Start:  $local_fs $remote_fs
+# Required-Stop:   $local_fs $remote_fs
+# Default-Start:   2 3 4 5
+# Default-Stop:
+# Short-Description: automatic crash report generation
+### END INIT INFO
+
+DESC="automatic crash report generation"
+NAME=apport
+AGENT=/usr/share/apport/apport
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$AGENT" ] || exit 0
+
+# read default file
+enabled=1
+[ -e /etc/default/$NAME ] && . /etc/default/$NAME || true
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+       # Return
+       #   0 if daemon has been started
+       #   1 if daemon was already running
+       #   2 if daemon could not be started
+
+       [ -e /var/crash ] || mkdir -p /var/crash
+       chmod 1777 /var/crash
+
+       # check for kernel crash dump, convert it to apport report
+       if [ -e /var/crash/vmcore ] || [ -n "`ls /var/crash | egrep ^[0-9]{12}$`" ];then
+           /usr/share/apport/kernel_crashdump || true
+       fi
+
+       # check for incomplete suspend/resume or hibernate
+       if [ -e /var/lib/pm-utils/status ]; then
+               /usr/share/apport/apportcheckresume || true
+               rm -f /var/lib/pm-utils/status
+               rm -f /var/lib/pm-utils/resume-hang.log
+       fi
+
+       echo "|$AGENT -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" > /proc/sys/kernel/core_pattern
+       echo 2 > /proc/sys/fs/suid_dumpable
+       echo 10 > /proc/sys/kernel/core_pipe_limit
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+       # Return
+       #   0 if daemon has been stopped
+       #   1 if daemon was already stopped
+       #   2 if daemon could not be stopped
+       #   other if a failure occurred
+
+       echo 0 > /proc/sys/kernel/core_pipe_limit
+       echo 0 > /proc/sys/fs/suid_dumpable
+
+       # Check for a hung resume.  If we find one try and grab everything
+       # we can to aid in its discovery.
+       if [ -e /var/lib/pm-utils/status ]; then
+               ps -wwef >/var/lib/pm-utils/resume-hang.log
+       fi
+
+       if [ "`dd if=/proc/sys/kernel/core_pattern count=1 bs=1 2>/dev/null`" != "|" ]; then
+           return 1
+       else
+           echo "core" > /proc/sys/kernel/core_pattern
+       fi
+}
+
+case "$1" in
+  start)
+       # don't start in containers
+       grep -zqs '^container=' /proc/1/environ && exit 0
+
+       [ "$enabled" = "1" ] || [ "$force_start" = "1" ] || exit 0
+       [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC:" "$NAME"
+       do_start
+       case "$?" in
+               0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+               2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+       esac
+       ;;
+  stop)
+       # don't stop in containers
+       grep -zqs '^container=' /proc/1/environ && exit 0
+
+       [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC:" "$NAME"
+       do_stop
+       case "$?" in
+               0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+               2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+       esac
+       ;;
+  restart|force-reload)
+       $0 stop || true
+       $0 start
+       ;;
+  *)
+       echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+       exit 3
+       ;;
+esac
+
+:
diff --git a/etc/init.d/atd b/etc/init.d/atd
new file mode 100755 (executable)
index 0000000..2e825fc
--- /dev/null
@@ -0,0 +1,48 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          atd
+# Required-Start:    $syslog $time $remote_fs
+# Required-Stop:     $syslog $time $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Deferred execution scheduler
+# Description:       Debian init script for the atd deferred executions
+#                    scheduler
+### END INIT INFO
+#
+# Author:      Ryan Murray <rmurray@debian.org>
+#
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+DAEMON=/usr/sbin/atd
+PIDFILE=/var/run/atd.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+case "$1" in
+  start)
+       log_daemon_msg "Starting deferred execution scheduler" "atd"
+       start_daemon -p $PIDFILE $DAEMON
+       log_end_msg $?
+    ;;
+  stop)
+       log_daemon_msg "Stopping deferred execution scheduler" "atd"
+       killproc -p $PIDFILE $DAEMON
+       log_end_msg $?
+    ;;
+  force-reload|restart)
+    $0 stop
+    $0 start
+    ;;
+  status)
+    status_of_proc -p $PIDFILE $DAEMON atd && exit 0 || exit $?
+    ;;
+  *)
+    echo "Usage: /etc/init.d/atd {start|stop|restart|force-reload|status}"
+    exit 1
+    ;;
+esac
+
+exit 0
diff --git a/etc/init.d/binfmt-support b/etc/init.d/binfmt-support
new file mode 100755 (executable)
index 0000000..41b9390
--- /dev/null
@@ -0,0 +1,56 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          binfmt-support
+# Required-Start:    $local_fs $remote_fs
+# Required-Stop:     $local_fs $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:
+# Short-Description: Support for extra binary formats
+# Description:       Enable support for extra binary formats using the Linux
+#                    kernel's binfmt_misc facility.
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+NAME=binfmt-support
+DESC="additional executable binary formats"
+
+if [ "$(uname)" != Linux ]; then
+  exit 0
+fi
+
+which update-binfmts >/dev/null 2>&1 || exit 0
+
+. /lib/lsb/init-functions
+[ -r /etc/default/rcS ] && . /etc/default/rcS
+
+set -e
+CODE=0
+
+case "$1" in
+  start)
+    log_daemon_msg "Enabling $DESC" "$NAME"
+    update-binfmts --enable || CODE=$?
+    log_end_msg $CODE
+    exit $CODE
+    ;;
+
+  stop)
+    log_daemon_msg "Disabling $DESC" "$NAME"
+    update-binfmts --disable || CODE=$?
+    log_end_msg $CODE
+    exit $CODE
+    ;;
+
+  restart|force-reload)
+    $0 stop
+    $0 start
+    ;;
+
+  *)
+    N=/etc/init.d/$NAME
+    echo "Usage: $N {start|stop|restart|force-reload}" >&2
+    exit 1
+    ;;
+esac
+
+exit 0
diff --git a/etc/init.d/console-setup.sh b/etc/init.d/console-setup.sh
new file mode 100755 (executable)
index 0000000..292d831
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          console-setup.sh
+# Required-Start:    $remote_fs
+# Required-Stop:
+# Should-Start:      console-screen kbd
+# Default-Start:     2 3 4 5
+# Default-Stop:
+# X-Interactive:     true
+# Short-Description: Set console font and keymap
+### END INIT INFO
+
+if [ -f /bin/setupcon ]; then
+    case "$1" in
+        stop|status)
+        # console-setup isn't a daemon
+        ;;
+        start|force-reload|restart|reload)
+            if [ -f /lib/lsb/init-functions ]; then
+                . /lib/lsb/init-functions
+            else
+                log_action_begin_msg () {
+                   echo -n "$@... "
+                }
+
+                log_action_end_msg () {
+                   if [ "$1" -eq 0 ]; then
+                       echo done.
+                   else
+                       echo failed.
+                   fi
+                }
+            fi
+            log_action_begin_msg "Setting up console font and keymap"
+            if /lib/console-setup/console-setup.sh; then
+               log_action_end_msg 0
+           else
+               log_action_end_msg $?
+           fi
+           ;;
+        *)
+            echo 'Usage: /etc/init.d/console-setup {start|reload|restart|force-reload|stop|status}'
+            exit 3
+            ;;
+    esac
+fi
diff --git a/etc/init.d/cron b/etc/init.d/cron
new file mode 100755 (executable)
index 0000000..c90dc1e
--- /dev/null
@@ -0,0 +1,92 @@
+#!/bin/sh
+# Start/stop the cron daemon.
+#
+### BEGIN INIT INFO
+# Provides:          cron
+# Required-Start:    $remote_fs $syslog $time
+# Required-Stop:     $remote_fs $syslog $time
+# Should-Start:      $network $named slapd autofs ypbind nscd nslcd winbind sssd
+# Should-Stop:       $network $named slapd autofs ypbind nscd nslcd winbind sssd
+# Default-Start:     2 3 4 5
+# Default-Stop:
+# Short-Description: Regular background program processing daemon
+# Description:       cron is a standard UNIX program that runs user-specified 
+#                    programs at periodic scheduled times. vixie cron adds a 
+#                    number of features to the basic UNIX cron, including better
+#                    security and more powerful configuration options.
+### END INIT INFO
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+DESC="cron daemon"
+NAME=cron
+DAEMON=/usr/sbin/cron
+PIDFILE=/var/run/crond.pid
+SCRIPTNAME=/etc/init.d/"$NAME"
+
+test -f $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+[ -r /etc/default/cron ] && . /etc/default/cron
+
+# Read the system's locale and set cron's locale. This is only used for
+# setting the charset of mails generated by cron. To provide locale
+# information to tasks running under cron, see /etc/pam.d/cron.
+#
+# We read /etc/environment, but warn about locale information in
+# there because it should be in /etc/default/locale.
+parse_environment () 
+{
+    for ENV_FILE in /etc/environment /etc/default/locale; do
+        [ -r "$ENV_FILE" ] || continue
+        [ -s "$ENV_FILE" ] || continue
+
+         for var in LANG LANGUAGE LC_ALL LC_CTYPE; do
+             value=`egrep "^${var}=" "$ENV_FILE" | tail -n1 | cut -d= -f2`
+             [ -n "$value" ] && eval export $var=$value
+
+             if [ -n "$value" ] && [ "$ENV_FILE" = /etc/environment ]; then
+                 log_warning_msg "/etc/environment has been deprecated for locale information; use /etc/default/locale for $var=$value instead"
+             fi
+         done
+     done
+
+# Get the timezone set.
+    if [ -z "$TZ" -a -e /etc/timezone ]; then
+        TZ=`cat /etc/timezone` 
+    fi
+}
+
+# Parse the system's environment
+if [ "$READ_ENV" = "yes" ] ; then
+    parse_environment
+fi
+
+
+case "$1" in
+start) log_daemon_msg "Starting periodic command scheduler" "cron"
+        start_daemon -p $PIDFILE $DAEMON $EXTRA_OPTS
+        log_end_msg $?
+       ;;
+stop)  log_daemon_msg "Stopping periodic command scheduler" "cron"
+        killproc -p $PIDFILE $DAEMON
+        RETVAL=$?
+        [ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
+        log_end_msg $RETVAL
+        ;;
+restart) log_daemon_msg "Restarting periodic command scheduler" "cron" 
+        $0 stop
+        $0 start
+        ;;
+reload|force-reload) log_daemon_msg "Reloading configuration files for periodic command scheduler" "cron"
+       # cron reloads automatically
+        log_end_msg 0
+        ;;
+status)
+        status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
+        ;;
+*)     log_action_msg "Usage: /etc/init.d/cron {start|stop|status|restart|reload|force-reload}"
+        exit 2
+        ;;
+esac
+exit 0
diff --git a/etc/init.d/cryptdisks b/etc/init.d/cryptdisks
new file mode 100755 (executable)
index 0000000..0cd4a83
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          cryptdisks
+# Required-Start:    checkroot cryptdisks-early
+# Required-Stop:     umountroot cryptdisks-early
+# Should-Start:      udev mdadm-raid lvm2
+# Should-Stop:       udev mdadm-raid lvm2
+# X-Start-Before:    checkfs
+# X-Stop-After:      umountfs
+# X-Interactive:     true
+# Default-Start:     S
+# Default-Stop:      0 6
+# Short-Description: Setup remaining encrypted block devices.
+# Description:
+### END INIT INFO
+
+set -e
+
+if [ -r /lib/cryptsetup/cryptdisks-functions ]; then
+       . /lib/cryptsetup/cryptdisks-functions
+else
+       exit 0
+fi
+
+INITSTATE="remaining"
+DEFAULT_LOUD="yes"
+
+case "$CRYPTDISKS_ENABLE" in
+[Nn]*)
+       exit 0
+       ;;
+esac
+
+case "$1" in
+start)
+       do_start
+       ;;
+stop)
+       do_stop
+       ;;
+restart|reload|force-reload)
+       do_stop
+       do_start
+       ;;
+force-start)
+       FORCE_START="yes"
+       do_start
+       ;;
+*)
+       echo "Usage: cryptdisks {start|stop|restart|reload|force-reload|force-start}"
+       exit 1
+       ;;
+esac
diff --git a/etc/init.d/cryptdisks-early b/etc/init.d/cryptdisks-early
new file mode 100755 (executable)
index 0000000..6498431
--- /dev/null
@@ -0,0 +1,53 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          cryptdisks-early
+# Required-Start:    checkroot
+# Required-Stop:     umountroot
+# Should-Start:      udev mdadm-raid
+# Should-Stop:       udev mdadm-raid
+# X-Start-Before:    lvm2
+# X-Stop-After:      lvm2 umountfs
+# X-Interactive:     true
+# Default-Start:     S
+# Default-Stop:      0 6
+# Short-Description: Setup early encrypted block devices.
+# Description:
+### END INIT INFO
+
+set -e
+
+if [ -r /lib/cryptsetup/cryptdisks-functions ]; then
+       . /lib/cryptsetup/cryptdisks-functions
+else
+       exit 0
+fi
+
+INITSTATE="early"
+DEFAULT_LOUD=""
+
+case "$CRYPTDISKS_ENABLE" in
+[Nn]*)
+       exit 0
+       ;;
+esac
+
+case "$1" in
+start)
+       do_start
+       ;;
+stop)
+       do_stop
+       ;;
+restart|reload|force-reload)
+       do_stop
+       do_start
+       ;;
+force-start)
+       FORCE_START="yes"
+       do_start
+       ;;
+*)
+       echo "Usage: cryptdisks-early {start|stop|restart|reload|force-reload|force-start}"
+       exit 1
+       ;;
+esac
diff --git a/etc/init.d/dbus b/etc/init.d/dbus
new file mode 100755 (executable)
index 0000000..105c83b
--- /dev/null
@@ -0,0 +1,129 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          dbus
+# Required-Start:    $remote_fs $syslog
+# Required-Stop:     $remote_fs $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:
+# Short-Description: D-Bus systemwide message bus
+# Description:       D-Bus is a simple interprocess messaging system, used
+#                    for sending messages between applications.
+### END INIT INFO
+# -*- coding: utf-8 -*-
+# Debian init.d script for D-BUS
+# Copyright © 2003 Colin Walters <walters@debian.org>
+# Copyright © 2005 Sjoerd Simons <sjoerd@debian.org>
+
+set -e
+
+DAEMON=/usr/bin/dbus-daemon
+UUIDGEN=/usr/bin/dbus-uuidgen
+UUIDGEN_OPTS=--ensure
+NAME=dbus
+DAEMONUSER=messagebus
+PIDDIR=/var/run/dbus
+PIDFILE=$PIDDIR/pid
+DESC="system message bus"
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Source defaults file; edit that file to configure this script.
+PARAMS=""
+if [ -e /etc/default/dbus ]; then
+  . /etc/default/dbus
+fi
+
+create_machineid() {
+  # Create machine-id file
+  if [ -x $UUIDGEN ]; then
+    $UUIDGEN $UUIDGEN_OPTS
+  fi
+}
+
+start_it_up()
+{
+  if [ ! -d $PIDDIR ]; then
+    mkdir -p $PIDDIR
+    chown $DAEMONUSER $PIDDIR
+    chgrp $DAEMONUSER $PIDDIR
+  fi
+
+  if ! mountpoint -q /proc/ ; then
+    log_failure_msg "Can't start $DESC - /proc is not mounted"
+    return
+  fi
+
+  if [ -e $PIDFILE ]; then
+    if $0 status > /dev/null ; then
+      log_success_msg "$DESC already started; not starting."
+      return
+    else
+      log_success_msg "Removing stale PID file $PIDFILE."
+      rm -f $PIDFILE
+    fi
+  fi
+
+  create_machineid
+
+  # Force libnss-systemd to avoid trying to communicate via D-Bus, which
+  # is never going to work well from within dbus-daemon. systemd
+  # special-cases this internally, but we might need to do the same when
+  # booting with sysvinit if libnss-systemd is still installed.
+  # (Workaround for #940971)
+  export SYSTEMD_NSS_BYPASS_BUS=1
+
+  log_daemon_msg "Starting $DESC" "$NAME"
+  start-stop-daemon --start --quiet --pidfile $PIDFILE \
+    --exec $DAEMON -- --system $PARAMS
+  log_end_msg $?
+}
+
+shut_it_down()
+{
+  log_daemon_msg "Stopping $DESC" "$NAME"
+  start-stop-daemon --stop --retry 5 --quiet --oknodo --pidfile $PIDFILE \
+    --user $DAEMONUSER
+  # We no longer include these arguments so that start-stop-daemon
+  # can do its job even given that we may have been upgraded.
+  # We rely on the pidfile being sanely managed
+  # --exec $DAEMON -- --system $PARAMS
+  log_end_msg $?
+  rm -f $PIDFILE
+}
+
+reload_it()
+{
+  create_machineid
+  log_action_begin_msg "Reloading $DESC config"
+  dbus-send --print-reply --system --type=method_call \
+            --dest=org.freedesktop.DBus \
+            / org.freedesktop.DBus.ReloadConfig > /dev/null
+  # hopefully this is enough time for dbus to reload it's config file.
+  log_action_end_msg $?
+}
+
+case "$1" in
+  start)
+    start_it_up
+  ;;
+  stop)
+    shut_it_down
+  ;;
+  reload|force-reload)
+    reload_it
+  ;;
+  restart)
+    shut_it_down
+    start_it_up
+  ;;
+  status)
+    status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
+    ;;
+  *)
+    echo "Usage: /etc/init.d/$NAME {start|stop|reload|restart|force-reload|status}" >&2
+    exit 2
+  ;;
+esac
+
diff --git a/etc/init.d/grub-common b/etc/init.d/grub-common
new file mode 100755 (executable)
index 0000000..3e80af4
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          grub-common
+# Required-Start:    $all
+# Required-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:
+# Short-Description: Record successful boot for GRUB
+# Description:       GRUB displays the boot menu at the next boot if it
+#                    believes that the previous boot failed. This script
+#                    informs it that the system booted successfully.
+### END INIT INFO
+
+which grub-editenv >/dev/null 2>&1 || exit 0
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+case $1 in
+    start|restart|force-reload)
+       log_action_msg "Recording successful boot for GRUB"
+       [ -s /boot/grub/grubenv ] || rm -f /boot/grub/grubenv
+       mkdir -p /boot/grub
+       grub-editenv /boot/grub/grubenv unset recordfail
+       log_end_msg $?
+       ;;
+    stop)
+       ;;
+    status)
+       exit 0
+       ;;
+    *)
+       echo "Usage: $0 {start|stop|status|restart|force-reload}" >&2
+       exit 3
+       ;;
+esac
+
+exit 0
diff --git a/etc/init.d/hwclock.sh b/etc/init.d/hwclock.sh
new file mode 100755 (executable)
index 0000000..208ca2d
--- /dev/null
@@ -0,0 +1,120 @@
+#!/bin/sh
+# hwclock.sh   Set and adjust the CMOS clock.
+#
+# Version:     @(#)hwclock.sh  2.00  14-Dec-1998  miquels@cistron.nl
+#
+# Patches:
+#              2000-01-30 Henrique M. Holschuh <hmh@rcm.org.br>
+#               - Minor cosmetic changes in an attempt to help new
+#                 users notice something IS changing their clocks
+#                 during startup/shutdown.
+#               - Added comments to alert users of hwclock issues
+#                 and discourage tampering without proper doc reading.
+#               2012-02-16 Roger Leigh <rleigh@debian.org>
+#                - Use the UTC/LOCAL setting in /etc/adjtime rather than
+#                  the UTC setting in /etc/default/rcS.  Additionally
+#                  source /etc/default/hwclock to permit configuration.
+
+### BEGIN INIT INFO
+# Provides:          hwclock
+# Required-Start:    mountdevsubfs
+# Required-Stop:     mountdevsubfs
+# Should-Stop:       umountfs
+# Default-Start:     S
+# X-Start-Before:    checkroot
+# Default-Stop:      0 6
+# Short-Description: Sync hardware and system clock time.
+### END INIT INFO
+
+# These defaults are user-overridable in /etc/default/hwclock
+BADYEAR=no
+HWCLOCKACCESS=yes
+HWCLOCKPARS=
+HCTOSYS_DEVICE=rtc0
+
+# We only want to use the system timezone or else we'll get
+# potential inconsistency at startup.
+unset TZ
+
+hwclocksh()
+{
+    [ ! -x /sbin/hwclock ] && return 0
+    [ ! -r /etc/default/rcS ] || . /etc/default/rcS
+    [ ! -r /etc/default/hwclock ] || . /etc/default/hwclock
+
+    . /lib/lsb/init-functions
+    verbose_log_action_msg() { [ "$VERBOSE" = no ] || log_action_msg "$@"; }
+
+    case "$BADYEAR" in
+       no|"")  BADYEAR="" ;;
+       yes)    BADYEAR="--badyear" ;;
+       *)      log_action_msg "unknown BADYEAR setting: \"$BADYEAR\""; return 1 ;;
+    esac
+
+    case "$1" in
+       start)
+           # If the admin deleted the hwclock config, create a blank
+           # template with the defaults.
+           if [ -w /etc ] && [ ! -f /etc/adjtime ] && [ ! -e /etc/adjtime ]; then
+               printf "0.0 0 0.0\n0\nUTC\n" > /etc/adjtime
+           fi
+
+           if [ -d /run/udev ] || [ -d /dev/.udev ]; then
+               return 0
+           fi
+
+           if [ "$HWCLOCKACCESS" != no ]; then
+               log_action_msg "Setting the system clock"
+
+               # Just for reporting.
+               if sed '3!d' /etc/adjtime | grep -q '^UTC$'; then
+                   UTC="--utc"
+               else
+                   UTC=
+               fi
+               # Copies Hardware Clock time to System Clock using the correct
+               # timezone for hardware clocks in local time, and sets kernel
+               # timezone. DO NOT REMOVE.
+               if /sbin/hwclock --rtc=/dev/$HCTOSYS_DEVICE --hctosys $HWCLOCKPARS $BADYEAR; then
+                   #   Announce the local time.
+                   verbose_log_action_msg "System Clock set to: `date $UTC`"
+               else
+                   log_warning_msg "Unable to set System Clock to: `date $UTC`"
+               fi
+           else
+               verbose_log_action_msg "Not setting System Clock"
+           fi
+           ;;
+       stop|restart|reload|force-reload)
+           #
+           # Updates the Hardware Clock with the System Clock time.
+           # This will *override* any changes made to the Hardware Clock.
+           #
+           # WARNING: If you disable this, any changes to the system
+           #          clock will not be carried across reboots.
+           #
+
+           if [ "$HWCLOCKACCESS" != no ]; then
+               log_action_msg "Saving the system clock"
+               if /sbin/hwclock --rtc=/dev/$HCTOSYS_DEVICE --systohc $HWCLOCKPARS $BADYEAR; then
+                   verbose_log_action_msg "Hardware Clock updated to `date`"
+               fi
+           else
+               verbose_log_action_msg "Not saving System Clock"
+           fi
+           ;;
+       show)
+           if [ "$HWCLOCKACCESS" != no ]; then
+               /sbin/hwclock --rtc=/dev/$HCTOSYS_DEVICE --show $HWCLOCKPARS $BADYEAR
+           fi
+           ;;
+       *)
+           log_success_msg "Usage: hwclock.sh {start|stop|reload|force-reload|show}"
+           log_success_msg "       start sets kernel (system) clock from hardware (RTC) clock"
+           log_success_msg "       stop and reload set hardware (RTC) clock from kernel (system) clock"
+           return 1
+           ;;
+    esac
+}
+
+hwclocksh "$@"
diff --git a/etc/init.d/irqbalance b/etc/init.d/irqbalance
new file mode 100755 (executable)
index 0000000..fd15764
--- /dev/null
@@ -0,0 +1,98 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          irqbalance
+# Required-Start:    $remote_fs $syslog
+# Required-Stop:     $remote_fs $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: daemon to balance interrupts for SMP systems
+### END INIT INFO
+# irqbalance init script
+# August 2003
+# Eric Dorland
+
+# Based on spamassassin init script
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/irqbalance
+NAME=irqbalance
+SNAME=irqbalance
+DESC="SMP IRQ Balancer"
+PIDFILE="/run/$NAME.pid"
+PNAME="irqbalance"
+DOPTIONS=""
+
+# Defaults - don't touch, edit /etc/default/
+OPTIONS=""
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+test -f /etc/default/irqbalance && . /etc/default/irqbalance
+
+# Beware: irqbalance tries to read and handle environment variables
+# directly itself, but since start-stop-daemon clears the env
+# we convert the variables to commandline arguments here...
+# (Note: in the daemon an option is enabled even if its set to
+#  e.g. the empty string or 0 or whatever. To disable it should not
+#  be exported at all!)
+# Warning: this will need to be maintained and updated on upgrades
+#          to new upstream release which might introduce new ones!
+if [ ! -z ${IRQBALANCE_ONESHOT+x} ]; then
+    DOPTIONS="--oneshot"
+fi
+if [ ! -z ${IRQBALANCE_ARGS+x} ]; then
+       OPTIONS="$OPTIONS $IRQBALANCE_ARGS"
+fi
+
+case "$1" in
+    start)
+        log_begin_msg "Starting $DESC: $NAME"
+
+        pid=$( pidofproc -p $PIDFILE $DAEMON )
+        if [ -n "$pid" ] ; then
+            log_begin_msg ". Already running"
+            log_end_msg 0
+            exit 0
+        fi
+
+        mkdir -p /run/irqbalance
+        start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- --pid=$PIDFILE $OPTIONS $DOPTIONS
+
+        log_end_msg $?
+        ;;
+    stop)
+        log_begin_msg "Stopping $DESC: $NAME"
+
+        start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
+        rm -f $PIDFILE
+
+        log_end_msg $?
+        ;;
+    restart|force-reload)
+        log_begin_msg "Restarting $DESC: $NAME"
+
+        start-stop-daemon --stop --retry 5 --quiet --oknodo --exec $DAEMON
+        rm -f $PIDFILE
+
+        mkdir -p /run/irqbalance
+        start-stop-daemon --start --quiet --oknodo --exec $DAEMON -- --pid=$PIDFILE $OPTIONS $DOPTIONS
+
+        log_end_msg $?
+        ;;
+    status)
+        if [ -z "${IRQBALANCE_ONESHOT+x}" ]; then
+            status_of_proc $DAEMON $NAME
+        else
+            echo "Irqbalance setup to run in oneshot mode."
+        fi
+        ;;
+    *)
+        N=/etc/init.d/$SNAME
+        echo "Usage: $N {start|stop|restart|force-reload}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/etc/init.d/iscsid b/etc/init.d/iscsid
new file mode 100755 (executable)
index 0000000..18b1856
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/sh
+# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
+if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
+    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
+fi
+### BEGIN INIT INFO
+# Provides:          iscsid
+# Required-Start:    $network $local_fs
+# Required-Stop:     $network $local_fs sendsigs
+# Default-Start:     S
+# Default-Stop:      0 1 6
+# Short-Description: iSCSI initiator daemon (iscsid)
+# Description:       The iSCSI initiator daemon takes care of
+#                    monitoring iSCSI connections to targets. It is
+#                    also the daemon providing the interface for the
+#                    iscisadm tool to talk to when administering iSCSI
+#                    connections.
+### END INIT INFO
+
+# Author: Christian Seiler <christian@iwakd.de>
+
+DESC="iSCSI initiator daemon"
+DAEMON=/sbin/iscsid
+PIDFILE=/run/iscsid.pid
+OMITDIR=/run/sendsigs.omit.d
+
+do_start_prepare() {
+       if ! /lib/open-iscsi/startup-checks.sh ; then
+               exit 1
+       fi
+}
+
+do_start_cleanup() {
+       ln -sf $PIDFILE $OMITDIR
+}
+
+do_stop_override() {
+       # Don't stop iscsid if we're on initramfs or we had some
+       # excluded sessions. We could actually stop it, it's not
+       # required for the kernel to continue working with active
+       # sessions, but it also doesn't hurt to leave it running.
+       if [ -f /etc/iscsi/iscsi.initramfs ] ||
+               ( [ -f /run/open-iscsi/shutdown-keep-sessions ] && [ -n "$(cat /run/open-iscsi/shutdown-keep-sessions)" ] )
+       then
+               return
+       fi
+       do_stop "$@"
+}
diff --git a/etc/init.d/keyboard-setup.sh b/etc/init.d/keyboard-setup.sh
new file mode 100755 (executable)
index 0000000..f1ab5ba
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          keyboard-setup.sh
+# Required-Start:    mountkernfs
+# Required-Stop:
+# X-Start-Before:    checkroot
+# Default-Start:     S
+# Default-Stop:
+# X-Interactive:     true
+# Short-Description: Set the console keyboard layout
+# Description:       Set the console keyboard as early as possible
+#                    so during the file systems checks the administrator
+#                    can interact.  At this stage of the boot process
+#                    only the ASCII symbols are supported.
+### END INIT INFO
+
+if [ -f /bin/setupcon ]; then
+    case "$1" in
+        stop|status)
+        # console-setup isn't a daemon
+        ;;
+        start|force-reload|restart|reload)
+            if [ -f /lib/lsb/init-functions ]; then
+                . /lib/lsb/init-functions
+            else
+                log_action_begin_msg () {
+                   echo -n "$@... "
+                }
+
+                log_action_end_msg () {
+                   if [ "$1" -eq 0 ]; then
+                       echo done.
+                   else
+                       echo failed.
+                   fi
+                }
+            fi
+           log_action_begin_msg "Setting up keyboard layout"
+            if /lib/console-setup/keyboard-setup.sh; then
+               log_action_end_msg 0
+           else
+               log_action_end_msg $?
+           fi
+           ;;
+        *)
+            echo 'Usage: /etc/init.d/keyboard-setup {start|reload|restart|force-reload|stop|status}'
+            exit 3
+            ;;
+    esac
+fi
diff --git a/etc/init.d/kmod b/etc/init.d/kmod
new file mode 100755 (executable)
index 0000000..d7ec083
--- /dev/null
@@ -0,0 +1,92 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides:          kmod
+# Required-Start:    
+# Required-Stop:     
+# Should-Start:      checkroot
+# Should-Stop:
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: Load the modules listed in /etc/modules.
+# Description:       Load the modules listed in /etc/modules.
+### END INIT INFO
+
+# Silently exit if the kernel does not support modules.
+[ -f /proc/modules ] || exit 0
+[ -x /sbin/modprobe  ] || exit 0
+
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+. /lib/lsb/init-functions
+
+PATH='/sbin:/bin'
+
+case "$1" in
+  start)
+  ;;
+
+  stop|restart|reload|force-reload)
+  log_warning_msg "Action '$1' is meaningless for this init script"
+  exit 0
+  ;;
+
+  *)
+  log_success_msg "Usage: $0 start"
+  exit 1
+esac
+
+load_module() {
+  local module args
+  module="$1"
+  args="$2"
+
+  if [ "$VERBOSE" != no ]; then
+    log_action_msg "Loading kernel module $module"
+    modprobe $module $args || true
+  else
+    modprobe $module $args > /dev/null 2>&1 || true
+  fi
+}
+
+modules_files() {
+  local modules_load_dirs='/etc/modules-load.d /run/modules-load.d /usr/local/lib/modules-load.d /usr/lib/modules-load.d /lib/modules-load.d'
+  local processed=' '
+  local add_etc_modules=true
+
+  for dir in $modules_load_dirs; do
+    [ -d $dir ] || continue
+    for file in $(run-parts --list --regex='\.conf$' $dir 2> /dev/null || true); do
+      local base=${file##*/}
+      if echo -n "$processed" | grep -qF " $base "; then
+        continue
+      fi
+      if [ "$add_etc_modules" -a -L $file \
+         -a "$(readlink -f $file)" = /etc/modules ]; then
+        add_etc_modules=
+      fi
+      processed="$processed$base "
+      echo $file
+    done
+  done
+
+  if [ "$add_etc_modules" ]; then
+    echo /etc/modules
+  fi
+}
+
+if [ "$VERBOSE" = no ]; then
+  log_action_begin_msg 'Loading kernel modules'
+fi
+
+files=$(modules_files)
+if [ "$files" ] ; then
+  grep -h '^[^#]' $files |
+  while read module args; do
+    [ "$module" ] || continue
+    load_module "$module" "$args"
+  done
+fi
+
+if [ "$VERBOSE" = no ]; then
+  log_action_end_msg 0
+fi
+
diff --git a/etc/init.d/lvm2 b/etc/init.d/lvm2
new file mode 100755 (executable)
index 0000000..33a4a3c
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          lvm2 lvm
+# Required-Start:    mountdevsubfs
+# Required-Stop:
+# Should-Start:      udev mdadm-raid cryptdisks-early multipath-tools-boot
+# Should-Stop:       umountroot mdadm-raid
+# X-Start-Before:    checkfs mountall
+# X-Stop-After:      umountfs
+# Default-Start:     S
+# Default-Stop:
+### END INIT INFO
+
+SCRIPTNAME=/etc/init.d/lvm2
+
+. /lib/lsb/init-functions
+
+[ -x /sbin/vgchange ] || exit 0
+
+case "$1" in
+  start)
+       log_action_begin_msg "Setting up LVM Volume Groups"
+       /sbin/lvm vgchange -aay --sysinit >/dev/null
+       log_action_end_msg "$?"
+       ;;
+  stop|restart|force-reload|status)
+       ;;
+  *)
+       echo "Usage: $SCRIPTNAME start" >&2
+       exit 3
+       ;;
+esac
+
diff --git a/etc/init.d/lvm2-lvmpolld b/etc/init.d/lvm2-lvmpolld
new file mode 100755 (executable)
index 0000000..0954cee
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh
+# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
+if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
+    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
+fi
+### BEGIN INIT INFO
+# Provides:          lvm2-lvmpolld
+# Required-Start:    $local_fs
+# Required-Stop:     $local_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: LVM2 poll daemon
+### END INIT INFO
+
+DESC="LVM2 poll daemon"
+DAEMON=/sbin/lvmpolld
+DAEMON_ARGS="-t 60"
+PIDFILE=/run/lvmpolld.pid
+
+do_start_prepare() {
+  mkdir -m 0700 -p /run/lvm
+}
diff --git a/etc/init.d/multipath-tools b/etc/init.d/multipath-tools
new file mode 100755 (executable)
index 0000000..5c1a3c1
--- /dev/null
@@ -0,0 +1,109 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          multipath-tools
+# Required-Start:    udev $local_fs $remote_fs $syslog
+# Required-Stop:     udev $local_fs $remote_fs $syslog
+# Should-Start:      iscsi
+# Should-Stop:       iscsi
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: multipath daemon
+# Description:
+### END INIT INFO
+
+PATH=/sbin:/bin:/usr/sbin/:/usr/bin
+DAEMON=/sbin/multipathd
+NAME=multipathd
+DESC="multipath daemon"
+syspath=/sys/block
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+if [ -f /etc/default/multipath-tools ] ; then
+       . /etc/default/multipath-tools
+fi
+
+teardown_slaves()
+{
+cd $1; 
+if [ -d "slaves" ]; then
+for slave in slaves/*;
+do
+       if [ "$slave" = "slaves/*" ]; then
+               read dev <  $1/dev
+               tablename=$(dmsetup table --target multipath | sed -n "s/\(.*\): .* $dev .*/\1/p")
+               if ! [ -z $tablename ]; then
+                       log_daemon_msg "Root is on a multipathed device, multipathd can not be stopped"
+                       DONT_STOP_MPATHD=1
+               fi
+       else
+               local_slave=`readlink -f $slave`;
+               teardown_slaves $local_slave;
+       fi
+       done
+               
+else
+               read dev <  $1/dev
+               tablename=$(dmsetup table --target multipath | sed -n "s/\(.*\): .* $dev .*/\1/p")
+               if ! [ -z $tablename ]; then
+                       log_daemon_msg "Root is on a multipathed device, multipathd can not be stopped"
+                       DONT_STOP_MPATHD=1
+               fi
+fi
+}
+
+
+case "$1" in
+  start)
+       log_daemon_msg "Starting $DESC" "$NAME"
+       modprobe -a scsi_dh_alua scsi_dh_emc scsi_dh_rdac dm-multipath 2> /dev/null || true
+       start-stop-daemon --oknodo --start --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+       log_end_msg $?
+       ;;
+  stop)
+       DONT_STOP_MPATHD=0
+       root_dev=$(awk '{ if ($1 !~ /^[ \t]*#/ && $1 ~ /\// && $2 == "/") { print $1; }}' /etc/mtab)
+       if [ -n "$root_dev" ]; then
+               dm_num=$(dmsetup info -c --noheadings -o minor $root_dev 2>/dev/null)
+       else
+               dm_num=
+       fi
+       if [ $? -ne 0 -o -z "$dm_num" ]; then
+               # Looks like we couldn't find a device mapper root device
+               # But we shouldn't bail out here, otherwise the stop target and the
+               # upgrade processes will break. See DBUG #674733
+               :
+       else
+               root_dm_device="dm-$dm_num"
+               [ -d "$syspath/$root_dm_device" ] && teardown_slaves $syspath/$root_dm_device
+       fi
+
+       if [ x$DONT_STOP_MPATHD = x0 ]; then
+               log_daemon_msg "Stopping $DESC" "$NAME"
+               start-stop-daemon --oknodo --stop --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
+               log_end_msg $?
+       fi
+       ;;
+  status)
+       status_of_proc -p /var/run/$NAME.pid $DAEMON $NAME && exit 0 || exit $?
+       ;;
+  reload|force-reload)
+       log_daemon_msg "Reloading $DESC" "$NAME"
+       start-stop-daemon --stop --signal 1 --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
+       log_end_msg $?
+       ;;
+  restart|force-reload)
+       $0 stop
+       sleep 1
+       $0 start
+       ;;
+  *)
+       N=/etc/init.d/multipath-tools
+       echo "Usage: $N {start|stop|status|restart|reload|force-reload}" >&2
+       exit 1
+       ;;
+esac
+
+exit 0
diff --git a/etc/init.d/nginx b/etc/init.d/nginx
new file mode 100755 (executable)
index 0000000..db10b7d
--- /dev/null
@@ -0,0 +1,196 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:      nginx
+# Required-Start:    $local_fs $remote_fs $network $syslog $named
+# Required-Stop:     $local_fs $remote_fs $network $syslog $named
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: starts the nginx web server
+# Description:       starts nginx using start-stop-daemon
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/nginx
+NAME=nginx
+DESC=nginx
+
+# Include nginx defaults if available
+if [ -r /etc/default/nginx ]; then
+       . /etc/default/nginx
+fi
+
+STOP_SCHEDULE="${STOP_SCHEDULE:-QUIT/5/TERM/5/KILL/5}"
+
+test -x $DAEMON || exit 0
+
+. /lib/init/vars.sh
+. /lib/lsb/init-functions
+
+# Try to extract nginx pidfile
+PID=$(cat /etc/nginx/nginx.conf | grep -Ev '^\s*#' | awk 'BEGIN { RS="[;{}]" } { if ($1 == "pid") print $2 }' | head -n1)
+if [ -z "$PID" ]; then
+       PID=/run/nginx.pid
+fi
+
+if [ -n "$ULIMIT" ]; then
+       # Set ulimit if it is set in /etc/default/nginx
+       ulimit $ULIMIT
+fi
+
+start_nginx() {
+       # Start the daemon/service
+       #
+       # Returns:
+       #   0 if daemon has been started
+       #   1 if daemon was already running
+       #   2 if daemon could not be started
+       start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON --test > /dev/null \
+               || return 1
+       start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON -- \
+               $DAEMON_OPTS 2>/dev/null \
+               || return 2
+}
+
+test_config() {
+       # Test the nginx configuration
+       $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1
+}
+
+stop_nginx() {
+       # Stops the daemon/service
+       #
+       # Return
+       #   0 if daemon has been stopped
+       #   1 if daemon was already stopped
+       #   2 if daemon could not be stopped
+       #   other if a failure occurred
+       start-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PID --name $NAME
+       RETVAL="$?"
+       sleep 1
+       return "$RETVAL"
+}
+
+reload_nginx() {
+       # Function that sends a SIGHUP to the daemon/service
+       start-stop-daemon --stop --signal HUP --quiet --pidfile $PID --name $NAME
+       return 0
+}
+
+rotate_logs() {
+       # Rotate log files
+       start-stop-daemon --stop --signal USR1 --quiet --pidfile $PID --name $NAME
+       return 0
+}
+
+upgrade_nginx() {
+       # Online upgrade nginx executable
+       # http://nginx.org/en/docs/control.html
+       #
+       # Return
+       #   0 if nginx has been successfully upgraded
+       #   1 if nginx is not running
+       #   2 if the pid files were not created on time
+       #   3 if the old master could not be killed
+       if start-stop-daemon --stop --signal USR2 --quiet --pidfile $PID --name $NAME; then
+               # Wait for both old and new master to write their pid file
+               while [ ! -s "${PID}.oldbin" ] || [ ! -s "${PID}" ]; do
+                       cnt=`expr $cnt + 1`
+                       if [ $cnt -gt 10 ]; then
+                               return 2
+                       fi
+                       sleep 1
+               done
+               # Everything is ready, gracefully stop the old master
+               if start-stop-daemon --stop --signal QUIT --quiet --pidfile "${PID}.oldbin" --name $NAME; then
+                       return 0
+               else
+                       return 3
+               fi
+       else
+               return 1
+       fi
+}
+
+case "$1" in
+       start)
+               log_daemon_msg "Starting $DESC" "$NAME"
+               start_nginx
+               case "$?" in
+                       0|1) log_end_msg 0 ;;
+                       2)   log_end_msg 1 ;;
+               esac
+               ;;
+       stop)
+               log_daemon_msg "Stopping $DESC" "$NAME"
+               stop_nginx
+               case "$?" in
+                       0|1) log_end_msg 0 ;;
+                       2)   log_end_msg 1 ;;
+               esac
+               ;;
+       restart)
+               log_daemon_msg "Restarting $DESC" "$NAME"
+
+               # Check configuration before stopping nginx
+               if ! test_config; then
+                       log_end_msg 1 # Configuration error
+                       exit $?
+               fi
+
+               stop_nginx
+               case "$?" in
+                       0|1)
+                               start_nginx
+                               case "$?" in
+                                       0) log_end_msg 0 ;;
+                                       1) log_end_msg 1 ;; # Old process is still running
+                                       *) log_end_msg 1 ;; # Failed to start
+                               esac
+                               ;;
+                       *)
+                               # Failed to stop
+                               log_end_msg 1
+                               ;;
+               esac
+               ;;
+       reload|force-reload)
+               log_daemon_msg "Reloading $DESC configuration" "$NAME"
+
+               # Check configuration before stopping nginx
+               #
+               # This is not entirely correct since the on-disk nginx binary
+               # may differ from the in-memory one, but that's not common.
+               # We prefer to check the configuration and return an error
+               # to the administrator.
+               if ! test_config; then
+                       log_end_msg 1 # Configuration error
+                       exit $?
+               fi
+
+               reload_nginx
+               log_end_msg $?
+               ;;
+       configtest|testconfig)
+               log_daemon_msg "Testing $DESC configuration"
+               test_config
+               log_end_msg $?
+               ;;
+       status)
+               status_of_proc -p $PID "$DAEMON" "$NAME" && exit 0 || exit $?
+               ;;
+       upgrade)
+               log_daemon_msg "Upgrading binary" "$NAME"
+               upgrade_nginx
+               log_end_msg $?
+               ;;
+       rotate)
+               log_daemon_msg "Re-opening $DESC log files" "$NAME"
+               rotate_logs
+               log_end_msg $?
+               ;;
+       *)
+               echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}" >&2
+               exit 3
+               ;;
+esac
diff --git a/etc/init.d/open-iscsi b/etc/init.d/open-iscsi
new file mode 100755 (executable)
index 0000000..5d98f9b
--- /dev/null
@@ -0,0 +1,116 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          open-iscsi iscsi
+# Required-Start:    $network $local_fs iscsid
+# Required-Stop:     $network $local_fs iscsid sendsigs
+# Default-Start:     S
+# Default-Stop:      0 1 6
+# Short-Description: Login to default iSCSI targets
+# Description:       Login to default iSCSI targets at boot and log out
+#                    of all iSCSI targets at shutdown.
+### END INIT INFO
+
+PATH=/sbin:/bin
+DAEMON=/sbin/iscsid
+ADM=/sbin/iscsiadm
+PIDFILE=/run/iscsid.pid
+NAMEFILE=/etc/iscsi/initiatorname.iscsi
+CONFIGFILE=/etc/iscsi/iscsid.conf
+OMITDIR=/run/sendsigs.omit.d
+
+[ -x "$DAEMON" ] || exit 0
+
+. /lib/lsb/init-functions
+
+# Include defaults if available
+if [ -f /etc/default/open-iscsi ]; then
+       . /etc/default/open-iscsi
+fi
+
+
+if [ ! -d /sys/class/ ]; then
+  log_failure_msg "iSCSI requires a mounted sysfs, not started."
+  exit 0
+fi
+
+RETVAL=0
+
+start() {
+       if ! [ -s $PIDFILE ] || ! kill -0 `sed -n 1p $PIDFILE` >/dev/null ; then
+               log_failure_msg "iSCSI initiator daemon not started: not logging in to default targets"
+               exit 1
+       fi
+
+       starttargets
+
+       # activate LVM, mount filesystems, etc.
+       /lib/open-iscsi/activate-storage.sh
+}
+
+starttargets() {
+       log_daemon_msg "Setting up iSCSI targets"
+       echo
+       $ADM -m node --loginall=automatic
+       log_end_msg 0
+}
+
+stoptargets() {
+       log_daemon_msg "Disconnecting iSCSI targets"
+       sync
+       # only logout if daemon is running, iscsiadm hangs otherwise
+        if [ -s $PIDFILE ] && kill -0 `sed -n 1p $PIDFILE` >/dev/null ; then
+               /lib/open-iscsi/logout-all.sh
+        fi
+
+       log_end_msg 0
+}
+
+stop() {
+       # Call umountiscsi.sh to unmount iSCSI devices first (always do
+       # that, regardless of whether root is on iSCSI, umountiscsi.sh
+       # will exclude it - and even if that shouldn't work, the mount
+       # point will be busy)
+       log_daemon_msg "Umounting iSCSI filesystems"
+       /lib/open-iscsi/umountiscsi.sh
+       umount_exit_status=$?
+       log_end_msg $umount_exit_status
+
+       if [ $umount_exit_status -ne 0 ]; then
+               log_failure_msg "Couldn't unmount all iSCSI devices. not logging out from any target."
+               exit 1
+       fi
+
+       stoptargets
+}
+
+restart() {
+       stop
+       start
+}
+
+restarttargets() {
+       stoptargets
+       starttargets
+}
+
+status() {
+       #XXX FIXME: what to do here?
+       #status iscsid
+       # list active sessions
+       echo Current active iSCSI sessions:
+       $ADM -m session
+}
+
+case "$1" in
+       start|starttargets|stop|stoptargets|restart|restarttargets|status)
+               $1
+               ;;
+       force-reload)
+               restart
+               ;;
+       *)
+               echo "Usage: $0 {start|stop|restart|force-reload|status}"
+               exit 1
+               ;;
+esac
+exit $RETVAL
diff --git a/etc/init.d/open-vm-tools b/etc/init.d/open-vm-tools
new file mode 100755 (executable)
index 0000000..fa7fcf6
--- /dev/null
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:            open-vm-tools
+# Required-Start:      $local_fs $remote_fs
+# Required-Stop:       $local_fs $remote_fs
+# X-Start-Before:
+# X-Stop-After:
+# Default-Start:       2 3 4 5
+# Default-Stop:                0 1 6
+# Description:         Runs the open-vm-tools services
+# Short-Description:   Runs the open-vm-tools services
+### END INIT INFO
+
+. /lib/lsb/init-functions
+
+exit_if_not_in_vm () {
+    if which systemd-detect-virt 1>/dev/null; then
+        checktool='systemd-detect-virt'
+    else
+        checktool='vmware-checkvm'
+    fi
+
+    if ! ${checktool} | grep -iq vmware; then
+        echo "open-vm-tools: not starting as this is not a VMware VM"
+        exit 0
+    fi
+}
+
+case "${1}" in
+    start)
+        # Check if we're running inside VMWare
+        exit_if_not_in_vm
+
+        log_daemon_msg "Starting open-vm daemon" "vmtoolsd"
+        start-stop-daemon --start --quiet --pidfile /var/run/vmtoolsd.pid --exec /usr/bin/vmtoolsd --test > /dev/null || exit 1
+        start-stop-daemon --start --quiet --pidfile /var/run/vmtoolsd.pid --exec /usr/bin/vmtoolsd -- --background /var/run/vmtoolsd.pid || exit 2
+        log_end_msg 0
+        ;;
+
+    stop)
+        log_daemon_msg "Stopping open-vm guest daemon" "vmtoolsd"
+        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile /var/run/vmtoolsd.pid --exec /usr/bin/vmtoolsd
+        RETURN="${?}"
+        [ "${RETURN}" = 2 ] && exit 2
+        # Many daemons don't delete their pidfiles when they exit.
+        rm -f /var/run/vmtoolsd.pid
+        log_end_msg 0
+        ;;
+
+    force-reload|restart)
+        ${0} stop
+        ${0} start
+        ;;
+
+    status)
+        status_of_proc -p /var/run/vmtoolsd.pid /usr/bin/vmtoolsd vmtoolsd && exit 0 || exit $?
+        ;;
+
+    *)
+        log_success_msg "Usage: ${0} {start|stop|restart|force-reload|status}"
+        exit 1
+        ;;
+esac
diff --git a/etc/init.d/plymouth b/etc/init.d/plymouth
new file mode 100755 (executable)
index 0000000..64ee8d2
--- /dev/null
@@ -0,0 +1,89 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:            plymouth
+# Required-Start:      udev $remote_fs $all
+# Required-Stop:       $remote_fs
+# Should-Start:                $x-display-manager
+# Should-Stop:         $x-display-manager
+# Default-Start:       2 3 4 5
+# Default-Stop:                0 6
+# Short-Description:   Stop plymouth during boot and start it on shutdown
+### END INIT INFO
+
+PATH="/sbin:/bin:/usr/sbin:/usr/bin"
+NAME="plymouth"
+DESC="Boot splash manager"
+
+test -x /sbin/plymouthd || exit 0
+
+if [ -r "/etc/default/${NAME}" ]
+then
+       . "/etc/default/${NAME}"
+fi
+
+. /lib/lsb/init-functions
+
+set -e
+
+SPLASH="true"
+for ARGUMENT in $(cat /proc/cmdline)
+do
+       case "${ARGUMENT}" in
+               splash*)
+                       SPLASH="true"
+                       ;;
+
+               nosplash*|plymouth.enable=0)
+                       SPLASH="false"
+                       ;;
+       esac
+done
+
+case "${1}" in
+       start)
+               case "${SPLASH}" in
+                       true)
+                               /bin/plymouth quit --retain-splash
+                               ;;
+               esac
+               ;;
+
+       stop)
+               case "${SPLASH}" in
+                       true)
+                               if ! plymouth --ping
+                               then
+                                       /sbin/plymouthd --mode=shutdown
+                               fi
+
+                               RUNLEVEL="$(/sbin/runlevel | cut -d " " -f 2)"
+
+                               case "${RUNLEVEL}" in
+                                       0)
+                                               TEXT="Shutting down system..."
+                                               ;;
+
+                                       6)
+                                               TEXT="Restarting system..."
+                                               ;;
+                               esac
+
+                               /bin/plymouth message --text="${TEXT}"
+
+                               /bin/plymouth --show-splash
+                               ;;
+               esac
+               ;;
+
+       restart|force-reload)
+
+               ;;
+
+       *)
+               echo "Usage: ${0} {start|stop|restart|force-reload}" >&2
+               exit 1
+               ;;
+esac
+
+exit 0
diff --git a/etc/init.d/plymouth-log b/etc/init.d/plymouth-log
new file mode 100755 (executable)
index 0000000..a0adb55
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:            plymouth-log
+# Required-Start:      $local_fs $remote_fs
+# Required-Stop:       $local_fs $remote_fs
+# Should-Start:
+# Should-Stop:
+# Default-Start:       S
+# Default-Stop:
+# Short-Description:   Inform plymouth that /var/log is writable
+### END INIT INFO
+
+PATH="/sbin:/bin:/usr/sbin:/usr/bin"
+NAME="plymouth-log"
+DESC="Boot splash manager (write log file)"
+
+test -x /bin/plymouth || exit 0
+
+if [ -r "/etc/default/${NAME}" ]
+then
+       . "/etc/default/${NAME}"
+fi
+
+. /lib/lsb/init-functions
+
+set -e
+
+case "${1}" in
+       start)
+               if plymouth --ping
+               then
+                       /bin/plymouth update-root-fs --read-write
+               fi
+               ;;
+
+       stop|restart|force-reload)
+
+               ;;
+
+       *)
+               echo "Usage: ${0} {start|stop|restart|force-reload}" >&2
+               exit 1
+               ;;
+esac
+
+exit 0
diff --git a/etc/init.d/postgresql b/etc/init.d/postgresql
new file mode 100755 (executable)
index 0000000..579fdd2
--- /dev/null
@@ -0,0 +1,61 @@
+#!/bin/sh
+set -e
+
+### BEGIN INIT INFO
+# Provides:            postgresql
+# Required-Start:      $local_fs $remote_fs $network $time
+# Required-Stop:       $local_fs $remote_fs $network $time
+# Should-Start:                $syslog
+# Should-Stop:         $syslog
+# Default-Start:       2 3 4 5
+# Default-Stop:                0 1 6
+# Short-Description:   PostgreSQL RDBMS server
+### END INIT INFO
+
+# Setting environment variables for the postmaster here does not work; please
+# set them in /etc/postgresql/<version>/<cluster>/environment instead.
+
+[ -r /usr/share/postgresql-common/init.d-functions ] || exit 0
+
+. /usr/share/postgresql-common/init.d-functions
+
+# versions can be specified explicitly
+if [ -n "$2" ]; then
+    versions="$2 $3 $4 $5 $6 $7 $8 $9"
+else
+    get_versions
+fi
+
+case "$1" in
+    start|stop|restart|reload)
+        if [ "$1" = "start" ]; then
+            create_socket_directory
+        fi
+       if [ -z "`pg_lsclusters -h`" ]; then
+           log_warning_msg 'No PostgreSQL clusters exist; see "man pg_createcluster"'
+           exit 0
+       fi
+       for v in $versions; do
+           $1 $v || EXIT=$?
+       done
+       exit ${EXIT:-0}
+        ;;
+    status)
+       LS=`pg_lsclusters -h`
+       # no clusters -> unknown status
+       [ -n "$LS" ] || exit 4
+       echo "$LS" | awk 'BEGIN {rc=0} {if (match($4, "down")) rc=3; printf ("%s/%s (port %s): %s\n", $1, $2, $3, $4)}; END {exit rc}'
+       ;;
+    force-reload)
+       for v in $versions; do
+           reload $v
+       done
+        ;;
+    *)
+        echo "Usage: $0 {start|stop|restart|reload|force-reload|status} [version ..]"
+        exit 1
+        ;;
+esac
+
+exit 0
+
diff --git a/etc/init.d/procps b/etc/init.d/procps
new file mode 100755 (executable)
index 0000000..4d7f4ce
--- /dev/null
@@ -0,0 +1,34 @@
+#! /bin/sh
+# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
+if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
+    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
+fi
+### BEGIN INIT INFO
+# Provides:          procps
+# Required-Start:    mountkernfs $local_fs
+# Required-Stop:
+# Should-Start:      udev module-init-tools
+# X-Start-Before:    $network
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: Configure kernel parameters at boottime
+# Description:  Loads kernel parameters that are specified in /etc/sysctl.conf
+### END INIT INFO
+#
+# written by Elrond <Elrond@Wunder-Nett.org>
+
+DESC="Setting kernel variables"
+DAEMON=/sbin/sysctl
+PIDFILE=none
+
+# Comment this out for sysctl to print every item changed
+QUIET_SYSCTL="-q"
+
+do_start_cmd() {
+       STATUS=0
+       $DAEMON $QUIET_SYSCTL --system || STATUS=$?
+       return $STATUS
+}
+
+do_stop() { return 0; }
+do_status() { return 0; }
diff --git a/etc/init.d/rsync b/etc/init.d/rsync
new file mode 100755 (executable)
index 0000000..3cb0447
--- /dev/null
@@ -0,0 +1,156 @@
+#! /bin/sh
+
+### BEGIN INIT INFO
+# Provides:          rsyncd
+# Required-Start:    $remote_fs $syslog
+# Required-Stop:     $remote_fs $syslog
+# Should-Start:      $named autofs
+# Default-Start:     2 3 4 5
+# Default-Stop:      
+# Short-Description: fast remote file copy program daemon
+# Description:       rsync is a program that allows files to be copied to and
+#                    from remote machines in much the same way as rcp.
+#                    This provides rsyncd daemon functionality.
+### END INIT INFO
+
+set -e
+
+# /etc/init.d/rsync: start and stop the rsync daemon
+
+DAEMON=/usr/bin/rsync
+RSYNC_ENABLE=false
+RSYNC_OPTS=''
+RSYNC_DEFAULTS_FILE=/etc/default/rsync
+RSYNC_CONFIG_FILE=/etc/rsyncd.conf
+RSYNC_PID_FILE=/var/run/rsync.pid
+RSYNC_NICE_PARM=''
+RSYNC_IONICE_PARM=''
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+if [ -s $RSYNC_DEFAULTS_FILE ]; then
+    . $RSYNC_DEFAULTS_FILE
+    case "x$RSYNC_ENABLE" in
+       xtrue|xfalse)   ;;
+       xinetd)         exit 0
+                       ;;
+       *)              log_failure_msg "Value of RSYNC_ENABLE in $RSYNC_DEFAULTS_FILE must be either 'true' or 'false';"
+                       log_failure_msg "not starting rsync daemon."
+                       exit 1
+                       ;;
+    esac
+    case "x$RSYNC_NICE" in
+       x[0-9]|x1[0-9]) RSYNC_NICE_PARM="--nicelevel $RSYNC_NICE";;
+       x)              ;;
+       *)              log_warning_msg "Value of RSYNC_NICE in $RSYNC_DEFAULTS_FILE must be a value between 0 and 19 (inclusive);"
+                       log_warning_msg "ignoring RSYNC_NICE now."
+                       ;;
+    esac
+    case "x$RSYNC_IONICE" in
+       x-c[123]*)      RSYNC_IONICE_PARM="$RSYNC_IONICE";;
+       x)              ;;
+       *)              log_warning_msg "Value of RSYNC_IONICE in $RSYNC_DEFAULTS_FILE must be -c1, -c2 or -c3;"
+                       log_warning_msg "ignoring RSYNC_IONICE now."
+                       ;;
+    esac
+fi
+
+export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
+
+rsync_start() {
+    if [ ! -s "$RSYNC_CONFIG_FILE" ]; then
+        log_failure_msg "missing or empty config file $RSYNC_CONFIG_FILE"
+        log_end_msg 1
+        exit 0
+    fi
+    # See ionice(1)
+    if [ -n "$RSYNC_IONICE_PARM" ] && [ -x /usr/bin/ionice ] &&
+        /usr/bin/ionice "$RSYNC_IONICE_PARM" true 2>/dev/null; then
+        /usr/bin/ionice "$RSYNC_IONICE_PARM" -p$$ > /dev/null 2>&1
+    fi
+    if start-stop-daemon --start --quiet --background \
+        --pidfile $RSYNC_PID_FILE --make-pidfile \
+        $RSYNC_NICE_PARM --exec $DAEMON \
+        -- --no-detach --daemon --config "$RSYNC_CONFIG_FILE" $RSYNC_OPTS
+    then
+        rc=0
+        sleep 1
+        if ! kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then
+            log_failure_msg "rsync daemon failed to start"
+            rc=1
+        fi
+    else
+        rc=1
+    fi
+    if [ $rc -eq 0 ]; then
+        log_end_msg 0
+    else
+        log_end_msg 1
+        rm -f $RSYNC_PID_FILE
+    fi
+} # rsync_start
+
+
+case "$1" in
+  start)
+       if "$RSYNC_ENABLE"; then
+           log_daemon_msg "Starting rsync daemon" "rsync"
+           if [ -s $RSYNC_PID_FILE ] && kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then
+               log_progress_msg "apparently already running"
+               log_end_msg 0
+               exit 0
+           fi
+            rsync_start
+        else
+            if [ -s "$RSYNC_CONFIG_FILE" ]; then
+                [ "$VERBOSE" != no ] && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..."
+            fi
+       fi
+       ;;
+  stop)
+       log_daemon_msg "Stopping rsync daemon" "rsync"
+       start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $RSYNC_PID_FILE
+       RETVAL="$?"
+       log_end_msg $RETVAL
+       if [ $RETVAL != 0 ]
+       then
+               exit 1
+       fi
+       rm -f $RSYNC_PID_FILE
+       ;;
+
+  reload|force-reload)
+       log_warning_msg "Reloading rsync daemon: not needed, as the daemon"
+       log_warning_msg "re-reads the config file whenever a client connects."
+       ;;
+
+  restart)
+       set +e
+       if $RSYNC_ENABLE; then
+           log_daemon_msg "Restarting rsync daemon" "rsync"
+           if [ -s $RSYNC_PID_FILE ] && kill -0 $(cat $RSYNC_PID_FILE) >/dev/null 2>&1; then
+               start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $RSYNC_PID_FILE
+           else
+               log_warning_msg "rsync daemon not running, attempting to start."
+               rm -f $RSYNC_PID_FILE
+           fi
+            rsync_start
+        else
+            if [ -s "$RSYNC_CONFIG_FILE" ]; then
+                [ "$VERBOSE" != no ] && log_warning_msg "rsync daemon not enabled in $RSYNC_DEFAULTS_FILE, not starting..."
+            fi
+       fi
+       ;;
+
+  status)
+       status_of_proc -p $RSYNC_PID_FILE "$DAEMON" rsync
+       exit $? # notreached due to set -e
+       ;;
+  *)
+       echo "Usage: /etc/init.d/rsync {start|stop|reload|force-reload|restart|status}"
+       exit 1
+esac
+
+exit 0
diff --git a/etc/init.d/rsyslog b/etc/init.d/rsyslog
new file mode 100755 (executable)
index 0000000..14017cf
--- /dev/null
@@ -0,0 +1,129 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          rsyslog
+# Required-Start:    $remote_fs $time
+# Required-Stop:     umountnfs $time
+# X-Stop-After:      sendsigs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: enhanced syslogd
+# Description:       Rsyslog is an enhanced multi-threaded syslogd.
+#                    It is quite compatible to stock sysklogd and can be 
+#                    used as a drop-in replacement.
+### END INIT INFO
+
+#
+# Author: Michael Biebl <biebl@debian.org>
+#
+
+# PATH should only include /usr/* if it runs after the mountnfs.sh script
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="enhanced syslogd"
+NAME=rsyslog
+
+RSYSLOGD=rsyslogd
+DAEMON=/usr/sbin/rsyslogd
+PIDFILE=/run/rsyslogd.pid
+
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Define LSB log_* functions.
+. /lib/lsb/init-functions
+
+do_start()
+{
+       # Return
+       #   0 if daemon has been started
+       #   1 if daemon was already running
+       #   other if daemon could not be started or a failure occured
+       start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $RSYSLOGD_OPTIONS
+}
+
+do_stop()
+{
+       # Return
+       #   0 if daemon has been stopped
+       #   1 if daemon was already stopped
+       #   other if daemon could not be stopped or a failure occurred
+       start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON
+}
+
+#
+# Tell rsyslogd to close all open files
+#
+do_rotate() {
+       start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE --exec $DAEMON
+}
+
+create_xconsole() {
+       XCONSOLE=/dev/xconsole
+       if [ "$(uname -s)" != "Linux" ]; then
+               XCONSOLE=/run/xconsole
+               ln -sf $XCONSOLE /dev/xconsole
+       fi
+       if [ ! -e $XCONSOLE ]; then
+               mknod -m 640 $XCONSOLE p
+               chown root:adm $XCONSOLE
+               [ -x /sbin/restorecon ] && /sbin/restorecon $XCONSOLE
+       fi
+}
+
+sendsigs_omit() {
+       OMITDIR=/run/sendsigs.omit.d
+       mkdir -p $OMITDIR
+       ln -sf $PIDFILE $OMITDIR/rsyslog
+}
+
+case "$1" in
+  start)
+       log_daemon_msg "Starting $DESC" "$RSYSLOGD"
+       create_xconsole
+       do_start
+       case "$?" in
+               0) sendsigs_omit
+                  log_end_msg 0 ;;
+               1) log_progress_msg "already started"
+                  log_end_msg 0 ;;
+               *) log_end_msg 1 ;;
+       esac
+
+       ;;
+  stop)
+       log_daemon_msg "Stopping $DESC" "$RSYSLOGD"
+       do_stop
+       case "$?" in
+               0) log_end_msg 0 ;;
+               1) log_progress_msg "already stopped"
+                  log_end_msg 0 ;;
+               *) log_end_msg 1 ;;
+       esac
+
+       ;;
+  rotate)
+       log_daemon_msg "Closing open files" "$RSYSLOGD"
+       do_rotate
+       log_end_msg $?
+       ;;
+  restart|force-reload)
+       $0 stop
+       $0 start
+       ;;
+  try-restart)
+       $0 status >/dev/null 2>&1 && $0 restart
+       ;;
+  status)
+       status_of_proc -p $PIDFILE $DAEMON $RSYSLOGD && exit 0 || exit $?
+       ;;
+  *)
+       echo "Usage: $SCRIPTNAME {start|stop|rotate|restart|force-reload|try-restart|status}" >&2
+       exit 3
+       ;;
+esac
+
+:
diff --git a/etc/init.d/screen-cleanup b/etc/init.d/screen-cleanup
new file mode 100755 (executable)
index 0000000..3eb4185
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/sh
+# $Id: init,v 1.3 2004/03/16 01:43:45 zal Exp $
+#
+# Script to remove stale screen named pipes on bootup.
+#
+
+### BEGIN INIT INFO
+# Provides:          screen-cleanup
+# Required-Start:    $remote_fs
+# Required-Stop:     $remote_fs
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: screen sessions cleaning
+# Description: Cleans up the screen session directory and fixes its
+#  permissions if needed.
+### END INIT INFO
+
+set -e
+
+test -f /usr/bin/screen || exit 0
+
+SCREENDIR=/run/screen
+
+case "$1" in
+start)
+    if test -L $SCREENDIR || ! test -d $SCREENDIR; then
+        rm -f $SCREENDIR
+        mkdir $SCREENDIR
+        chown root:utmp $SCREENDIR
+        [ -x /sbin/restorecon ] && /sbin/restorecon $SCREENDIR
+    fi
+    find $SCREENDIR -type p -delete
+# If the local admin has used dpkg-statoverride to install the screen
+# binary with different set[ug]id bits, change the permissions of
+# $SCREENDIR accordingly
+    BINARYPERM=`stat -c%a /usr/bin/screen`
+    if [ "$BINARYPERM" -ge 4000 ]; then
+        chmod 0755 $SCREENDIR
+    elif [ "$BINARYPERM" -ge 2000 ]; then
+        chmod 0775 $SCREENDIR
+    else
+        chmod 1777 $SCREENDIR
+    fi
+    ;;
+stop|restart|reload|force-reload)
+    ;;
+esac
+
+exit 0
diff --git a/etc/init.d/smartmontools b/etc/init.d/smartmontools
new file mode 100755 (executable)
index 0000000..7584d02
--- /dev/null
@@ -0,0 +1,123 @@
+#!/bin/sh -e
+# 
+# smartmontools init.d startup script
+#
+# (C) 2003,04,07 Guido Günther <agx@sigxcpu.org>
+# 
+# loosely based on the init script that comes with smartmontools which is
+# copyrighted 2002 by Bruce Allen <smartmontools-support@lists.sourceforge.net>
+#
+### BEGIN INIT INFO
+# Provides:          smartmontools
+# Required-Start:    $syslog $remote_fs
+# Required-Stop:     $syslog $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: SMART monitoring daemon
+### END INIT INFO
+
+SMARTCTL=/usr/sbin/smartctl
+DAEMON=/usr/sbin/smartd
+PIDFILE=/var/run/smartd.pid
+[ -x $SMARTCTL ] || exit 0
+[ -x $DAEMON ] || exit 0
+. /lib/lsb/init-functions
+
+RET=0
+
+[ -r /etc/default/rcS ] && . /etc/default/rcS
+[ -r /etc/default/smartmontools ] && . /etc/default/smartmontools
+
+smartd_opts="--pidfile $PIDFILE $smartd_opts"
+
+enable_smart() {
+  log_action_begin_msg "Enabling S.M.A.R.T."
+  for device in $enable_smart; do
+      log_action_cont_msg "$device"
+      if ! $SMARTCTL --quietmode=errorsonly --smart=on $device; then
+          log_action_cont_msg "(failed)"
+          RET=2
+      fi
+  done
+  log_action_end_msg 0
+}
+
+running_pid()
+{
+    # Check if a given process pid's cmdline matches a given name
+    pid=$1
+    name=$2
+    [ -z "$pid" ] && return 1
+    [ ! -d /proc/$pid ] &&  return 1
+    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
+    # Is this the expected child?
+    [ "$cmd" != "$name" ] &&  return 1
+    return 0
+}
+
+running()
+{
+# Check if the process is running looking at /proc
+# (works for all users)
+    # No pidfile, probably no daemon present
+    [ ! -f "$PIDFILE" ] && return 1
+    # Obtain the pid and check it against the binary name
+    pid=`cat $PIDFILE`
+    running_pid $pid $DAEMON || return 1
+    return 0
+}
+
+case "$1" in
+  start)
+        [ -n "$enable_smart" ] && enable_smart
+       log_daemon_msg "Starting S.M.A.R.T. daemon" "smartd"
+       if running; then
+           log_progress_msg "already running"
+           log_end_msg 0
+           exit 0
+       fi
+       rm -f $PIDFILE
+       if start-stop-daemon --start --quiet --pidfile $PIDFILE \
+                   --exec $DAEMON -- $smartd_opts; then
+           log_end_msg 0
+       else
+           log_end_msg 1
+           RET=1
+       fi
+       ;;
+  stop)
+       log_daemon_msg "Stopping S.M.A.R.T. daemon" "smartd"
+       start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
+       log_end_msg 0
+       ;;
+  reload|force-reload)
+         log_daemon_msg "Reloading S.M.A.R.T. daemon" "smartd"
+       if start-stop-daemon --stop --quiet --signal 1 \
+                       --pidfile $PIDFILE; then
+           log_end_msg 0
+       else
+           log_end_msg 1
+           RET=1
+       fi
+       ;;
+  restart)
+       log_daemon_msg "Restarting S.M.A.R.T. daemon" "smartd"
+       start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE
+       rm -f $PIDFILE
+       if start-stop-daemon --start --quiet --pidfile $PIDFILE \
+                   --exec $DAEMON -- $smartd_opts; then
+           log_end_msg 0
+       else
+           log_end_msg 1
+           RET=1
+       fi
+        ;;
+  status)
+       status_of_proc $DAEMON smartd && exit 0 || exit $?
+       ;;
+  *)
+       echo "Usage: /etc/init.d/smartmontools {start|stop|restart|reload|force-reload|status}"
+       exit 1
+esac
+
+exit $RET
diff --git a/etc/init.d/ssh b/etc/init.d/ssh
new file mode 100755 (executable)
index 0000000..620af70
--- /dev/null
@@ -0,0 +1,162 @@
+#! /bin/sh
+
+### BEGIN INIT INFO
+# Provides:            sshd
+# Required-Start:      $remote_fs $syslog
+# Required-Stop:       $remote_fs $syslog
+# Default-Start:       2 3 4 5
+# Default-Stop:                
+# Short-Description:   OpenBSD Secure Shell server
+### END INIT INFO
+
+set -e
+
+# /etc/init.d/ssh: start and stop the OpenBSD "secure shell(tm)" daemon
+
+test -x /usr/sbin/sshd || exit 0
+( /usr/sbin/sshd -\? 2>&1 | grep -q OpenSSH ) 2>/dev/null || exit 0
+
+umask 022
+
+if test -f /etc/default/ssh; then
+    . /etc/default/ssh
+fi
+
+. /lib/lsb/init-functions
+
+if [ -n "$2" ]; then
+    SSHD_OPTS="$SSHD_OPTS $2"
+fi
+
+# Are we running from init?
+run_by_init() {
+    ([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]
+}
+
+check_for_no_start() {
+    # forget it if we're trying to start, and /etc/ssh/sshd_not_to_be_run exists
+    if [ -e /etc/ssh/sshd_not_to_be_run ]; then 
+       if [ "$1" = log_end_msg ]; then
+           log_end_msg 0 || true
+       fi
+       if ! run_by_init; then
+           log_action_msg "OpenBSD Secure Shell server not in use (/etc/ssh/sshd_not_to_be_run)" || true
+       fi
+       exit 0
+    fi
+}
+
+check_dev_null() {
+    if [ ! -c /dev/null ]; then
+       if [ "$1" = log_end_msg ]; then
+           log_end_msg 1 || true
+       fi
+       if ! run_by_init; then
+           log_action_msg "/dev/null is not a character device!" || true
+       fi
+       exit 1
+    fi
+}
+
+check_privsep_dir() {
+    # Create the PrivSep empty dir if necessary
+    if [ ! -d /run/sshd ]; then
+       mkdir /run/sshd
+       chmod 0755 /run/sshd
+    fi
+}
+
+check_config() {
+    if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then
+       /usr/sbin/sshd $SSHD_OPTS -t || exit 1
+    fi
+}
+
+export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
+
+case "$1" in
+  start)
+       check_privsep_dir
+       check_for_no_start
+       check_dev_null
+       log_daemon_msg "Starting OpenBSD Secure Shell server" "sshd" || true
+       if start-stop-daemon --start --quiet --oknodo --chuid 0:0 --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then
+           log_end_msg 0 || true
+       else
+           log_end_msg 1 || true
+       fi
+       ;;
+  stop)
+       log_daemon_msg "Stopping OpenBSD Secure Shell server" "sshd" || true
+       if start-stop-daemon --stop --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd; then
+           log_end_msg 0 || true
+       else
+           log_end_msg 1 || true
+       fi
+       ;;
+
+  reload|force-reload)
+       check_for_no_start
+       check_config
+       log_daemon_msg "Reloading OpenBSD Secure Shell server's configuration" "sshd" || true
+       if start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd; then
+           log_end_msg 0 || true
+       else
+           log_end_msg 1 || true
+       fi
+       ;;
+
+  restart)
+       check_privsep_dir
+       check_config
+       log_daemon_msg "Restarting OpenBSD Secure Shell server" "sshd" || true
+       start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /run/sshd.pid --exec /usr/sbin/sshd
+       check_for_no_start log_end_msg
+       check_dev_null log_end_msg
+       if start-stop-daemon --start --quiet --oknodo --chuid 0:0 --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then
+           log_end_msg 0 || true
+       else
+           log_end_msg 1 || true
+       fi
+       ;;
+
+  try-restart)
+       check_privsep_dir
+       check_config
+       log_daemon_msg "Restarting OpenBSD Secure Shell server" "sshd" || true
+       RET=0
+       start-stop-daemon --stop --quiet --retry 30 --pidfile /run/sshd.pid --exec /usr/sbin/sshd || RET="$?"
+       case $RET in
+           0)
+               # old daemon stopped
+               check_for_no_start log_end_msg
+               check_dev_null log_end_msg
+               if start-stop-daemon --start --quiet --oknodo --chuid 0:0 --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then
+                   log_end_msg 0 || true
+               else
+                   log_end_msg 1 || true
+               fi
+               ;;
+           1)
+               # daemon not running
+               log_progress_msg "(not running)" || true
+               log_end_msg 0 || true
+               ;;
+           *)
+               # failed to stop
+               log_progress_msg "(failed to stop)" || true
+               log_end_msg 1 || true
+               ;;
+       esac
+       ;;
+
+  status)
+       status_of_proc -p /run/sshd.pid /usr/sbin/sshd sshd && exit 0 || exit $?
+       ;;
+
+  *)
+       log_action_msg "Usage: /etc/init.d/ssh {start|stop|reload|force-reload|restart|try-restart|status}" || true
+       exit 1
+esac
+
+exit 0
diff --git a/etc/init.d/sysstat b/etc/init.d/sysstat
new file mode 100755 (executable)
index 0000000..34209a5
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh
+# vim:ft=sh:et
+### BEGIN INIT INFO
+# Provides:          sysstat
+# Required-Start:    $remote_fs $local_fs $syslog
+# Required-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:
+# Short-Description: Start/stop sysstat's sadc
+# Description:       Sysstat contains system performance tools for Linux
+#                    The init file runs the sadc command in order to write
+#                    the "LINUX RESTART" mark to the daily data file
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/lib/sysstat/debian-sa1
+NAME=sadc
+DESC="the system activity data collector"
+
+test -f "$DAEMON" || exit 0
+umask 022
+
+# our configuration file
+DEFAULT=/etc/default/sysstat
+
+# default setting...
+ENABLED="false"
+
+# ...overridden in the configuration file
+test -r "$DEFAULT" && . "$DEFAULT"
+
+set -e 
+status=0
+
+. /lib/lsb/init-functions
+
+case "$1" in
+  start|restart|reload|force-reload)
+        if [ "$ENABLED" = "true" ] ; then
+                log_daemon_msg "Starting $DESC" "$NAME"
+                start-stop-daemon --start --quiet --exec $DAEMON -- --boot || status=$?
+                log_end_msg $status
+        fi
+        ;;
+  stop)
+        ;;
+  status)
+        if [ "$ENABLED" = "true" ] ; then
+                log_success_msg "sadc cron jobs are enabled"
+                exit 0
+        else
+                log_failure_msg "sadc cron jobs are disabled"
+                exit 3
+        fi
+        ;;
+  *)
+        log_failure_msg "Usage: $0 {start|stop|restart|reload|force-reload|status}"
+        exit 1
+        ;;
+esac
+
+exit $status
diff --git a/etc/init.d/udev b/etc/init.d/udev
new file mode 100755 (executable)
index 0000000..a10a586
--- /dev/null
@@ -0,0 +1,256 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides:          udev
+# Required-Start:    mountkernfs
+# Required-Stop:     umountroot
+# Default-Start:     S
+# Default-Stop:      0 6
+# Short-Description: Start systemd-udevd, populate /dev and load drivers.
+### END INIT INFO
+
+PATH="/sbin:/bin"
+NAME="systemd-udevd"
+DAEMON="/lib/systemd/systemd-udevd"
+DESC="hotplug events dispatcher"
+PIDFILE="/run/udev.pid"
+CTRLFILE="/run/udev/control"
+OMITDIR="/run/sendsigs.omit.d"
+
+# we need to unmount /dev/pts/ and remount it later over the devtmpfs
+unmount_devpts() {
+  if mountpoint -q /dev/pts/; then
+    umount -n -l /dev/pts/
+  fi
+
+  if mountpoint -q /dev/shm/; then
+    umount -n -l /dev/shm/
+  fi
+}
+
+# mount a devtmpfs over /dev, if somebody did not already do it
+mount_devtmpfs() {
+  if grep -E -q "^[^[:space:]]+ /dev devtmpfs" /proc/mounts; then
+    mount -n -o remount,nosuid,size=$tmpfs_size,mode=0755 -t devtmpfs devtmpfs /dev
+    return
+  fi
+
+  if ! mount -n -o nosuid,size=$tmpfs_size,mode=0755 -t devtmpfs devtmpfs /dev; then
+    log_failure_msg "udev requires devtmpfs support, not started"
+    log_end_msg 1
+  fi
+
+  return 0
+}
+
+create_dev_makedev() {
+  if [ -e /sbin/MAKEDEV ]; then
+    ln -sf /sbin/MAKEDEV /dev/MAKEDEV
+  else
+    ln -sf /bin/true /dev/MAKEDEV
+  fi
+}
+
+# shell version of /usr/bin/tty
+my_tty() {
+  [ -x /bin/readlink ] || return 0
+  [ -e /proc/self/fd/0 ] || return 0
+  readlink --silent /proc/self/fd/0 || true
+}
+
+warn_if_interactive() {
+  if [ "$RUNLEVEL" = "S" -a "$PREVLEVEL" = "N" ]; then
+    return
+  fi
+
+  TTY=$(my_tty)
+  if [ -z "$TTY" -o "$TTY" = "/dev/console" -o "$TTY" = "/dev/null" ]; then
+    return
+  fi
+
+  printf "\n\n\nIt has been detected that the command\n\n\t$0 $*\n\n"
+  printf "has been run from an interactive shell.\n"
+  printf "It will probably not do what you expect, so this script will wait\n"
+  printf "60 seconds before continuing. Press ^C to stop it.\n"
+  printf "RUNNING THIS COMMAND IS HIGHLY DISCOURAGED!\n\n\n\n"
+  sleep 60
+}
+
+make_static_nodes() {
+  [ -e /lib/modules/$(uname -r)/modules.devname ] || return 0
+  [ -x /bin/kmod ] || return 0
+
+  /bin/kmod static-nodes --format=tmpfiles --output=/proc/self/fd/1 | \
+  while read type name mode uid gid age arg; do
+    [ -e $name ] && continue
+    case "$type" in
+      c|b|c!|b!) mknod -m $mode $name $type $(echo $arg | sed 's/:/ /') ;;
+      d|d!) mkdir $name ;;
+      *) echo "unparseable line ($type $name $mode $uid $gid $age $arg)" >&2 ;;
+    esac
+
+    if [ -x /sbin/restorecon ]; then
+      /sbin/restorecon $name
+    fi
+  done
+}
+
+
+##############################################################################
+
+
+[ -x $DAEMON ] || exit 0
+
+# defaults
+tmpfs_size="10M"
+
+if [ -e /etc/udev/udev.conf ]; then
+  . /etc/udev/udev.conf
+fi
+
+. /lib/lsb/init-functions
+
+if [ ! -e /proc/filesystems ]; then
+  log_failure_msg "udev requires a mounted procfs, not started"
+  log_end_msg 1
+fi
+
+if ! grep -q '[[:space:]]devtmpfs$' /proc/filesystems; then
+  log_failure_msg "udev requires devtmpfs support, not started"
+  log_end_msg 1
+fi
+
+if [ ! -d /sys/class/ ]; then
+  log_failure_msg "udev requires a mounted sysfs, not started"
+  log_end_msg 1
+fi
+
+if [ ! -w /sys ]; then
+  log_warning_msg "udev does not support containers, not started"
+  exit 0
+fi
+
+if [ -d /sys/class/mem/null -a ! -L /sys/class/mem/null ] || \
+   [ -e /sys/block -a ! -e /sys/class/block ]; then
+  log_warning_msg "CONFIG_SYSFS_DEPRECATED must not be selected"
+  log_warning_msg "Booting will continue in 30 seconds but many things will be broken"
+  sleep 30
+fi
+
+# When modifying this script, do not forget that between the time that the
+# new /dev has been mounted and udevadm trigger has been run there will be
+# no /dev/null. This also means that you cannot use the "&" shell command.
+
+case "$1" in
+    start)
+    if [ ! -e "/run/udev/" ]; then
+        warn_if_interactive
+    fi
+
+    if [ -w /sys/kernel/uevent_helper ]; then
+        echo > /sys/kernel/uevent_helper
+    fi
+
+    if ! mountpoint -q /dev/; then
+        unmount_devpts
+        mount_devtmpfs
+        [ -d /proc/1 ] || mount -n /proc
+    fi
+
+    make_static_nodes
+
+    # clean up parts of the database created by the initramfs udev
+    udevadm info --cleanup-db
+
+    # set the SELinux context for devices created in the initramfs
+    [ -x /sbin/restorecon ] && /sbin/restorecon -R /dev
+
+    log_daemon_msg "Starting $DESC" "$NAME"
+    if start-stop-daemon --start --name $NAME --user root --quiet \
+        --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile \
+        --notify-await; then
+        # prevents udevd to be killed by sendsigs (see #791944)
+        mkdir -p $OMITDIR
+        ln -sf $PIDFILE $OMITDIR/$NAME
+        log_end_msg $?
+    else
+        log_warning_msg $?
+        log_warning_msg "Waiting 15 seconds and trying to continue anyway"
+        sleep 15
+    fi
+
+    log_action_begin_msg "Synthesizing the initial hotplug events (subsystems)"
+    if udevadm trigger --type=subsystems --action=add; then
+        log_action_end_msg $?
+    else
+        log_action_end_msg $?
+    fi
+    log_action_begin_msg "Synthesizing the initial hotplug events (devices)"
+    if udevadm trigger --type=devices --action=add; then
+        log_action_end_msg $?
+    else
+        log_action_end_msg $?
+    fi
+
+    create_dev_makedev
+
+    # wait for the systemd-udevd childs to finish
+    log_action_begin_msg "Waiting for /dev to be fully populated"
+    if udevadm settle; then
+        log_action_end_msg 0
+    else
+        log_action_end_msg 0 'timeout'
+    fi
+    ;;
+
+    stop)
+    log_daemon_msg "Stopping $DESC" "$NAME"
+    if start-stop-daemon --stop --name $NAME --user root --quiet \
+        --pidfile $PIDFILE --remove-pidfile --oknodo --retry 5; then
+        # prevents cryptsetup/dmsetup hangs (see #791944)
+        rm -f $CTRLFILE
+        log_end_msg $?
+    else
+        log_end_msg $?
+    fi
+    ;;
+
+    restart)
+    log_daemon_msg "Stopping $DESC" "$NAME"
+    if start-stop-daemon --stop --name $NAME --user root --quiet \
+        --pidfile $PIDFILE --remove-pidfile --oknodo --retry 5; then
+        # prevents cryptsetup/dmsetup hangs (see #791944)
+        rm -f $CTRLFILE
+        log_end_msg $?
+    else
+        log_end_msg $? || true
+    fi
+
+    log_daemon_msg "Starting $DESC" "$NAME"
+    if start-stop-daemon --start --name $NAME --user root --quiet \
+        --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile \
+        --notify-await; then
+        # prevents udevd to be killed by sendsigs (see #791944)
+        mkdir -p $OMITDIR
+        ln -sf $PIDFILE $OMITDIR/$NAME
+        log_end_msg $?
+    else
+        log_end_msg $?
+    fi
+    ;;
+
+    reload|force-reload)
+    udevadm control --reload-rules
+    ;;
+
+    status)
+    status_of_proc $DAEMON $NAME && exit 0 || exit $?
+    ;;
+
+    *)
+    echo "Usage: /etc/init.d/udev {start|stop|restart|reload|force-reload|status}" >&2
+    exit 1
+    ;;
+esac
+
+exit 0
+
diff --git a/etc/init.d/ufw b/etc/init.d/ufw
new file mode 100755 (executable)
index 0000000..c491994
--- /dev/null
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:          ufw
+# Required-Start:    $local_fs
+# Required-Stop:     $local_fs
+# Default-Start:     S
+# Default-Stop:      1
+# Short-Description: start firewall
+# Description: Start ufw firewall
+### END INIT INFO
+
+set -e
+
+PATH="/sbin:/bin"
+
+[ -d /lib/ufw ] || exit 0
+
+. /lib/lsb/init-functions
+
+for s in "/lib/ufw/ufw-init-functions" "/etc/ufw/ufw.conf" "/etc/default/ufw" ; do
+    if [ -s "$s" ]; then
+        . "$s"
+    else
+        log_failure_msg "Could not find $s (aborting)"
+        exit 1
+    fi
+done
+
+error=0
+case "$1" in
+start)
+    if [ "$ENABLED" = "yes" ] || [ "$ENABLED" = "YES" ]; then
+        log_action_begin_msg "Starting firewall:" "ufw"
+        output=`ufw_start` || error="$?"
+        if [ "$error" = "0" ]; then
+            log_action_cont_msg "Setting kernel variables ($IPT_SYSCTL)"
+        fi
+        if [ ! -z "$output" ]; then
+            echo "$output" | while read line ; do
+                log_action_cont_msg "$line"
+            done
+        fi
+    else
+        log_action_begin_msg "Skip starting firewall:" "ufw (not enabled)"
+    fi
+    log_action_end_msg $error
+    exit $error
+    ;;
+stop)
+    if [ "$ENABLED" = "yes" ] || [ "$ENABLED" = "YES" ]; then
+        log_action_begin_msg "Stopping firewall:" "ufw"
+        output=`ufw_stop` || error="$?"
+        if [ ! -z "$output" ]; then
+            log_action_cont_msg "$output"
+        fi
+    else
+        log_action_begin_msg "Skip stopping firewall:" "ufw (not enabled)"
+    fi
+    log_action_end_msg $error
+    exit $error
+    ;;
+restart|force-reload)
+    log_action_begin_msg "Reloading firewall:" "ufw"
+    output=`ufw_reload` || error="$?"
+    if [ ! -z "$output" ]; then
+        log_action_cont_msg "$output"
+    fi
+    log_action_end_msg $error
+    exit $error
+    ;;
+status)
+    output=`ufw_status` || error="$?"
+    if [ ! -z "$output" ]; then
+        log_action_cont_msg "$output"
+    fi
+    log_action_end_msg $error
+    exit $error
+    ;;
+*)
+    echo "Usage: /etc/init.d/ufw {start|stop|restart|force-reload|status}"
+    exit 1
+    ;;
+esac
+
+exit 0
diff --git a/etc/init.d/unattended-upgrades b/etc/init.d/unattended-upgrades
new file mode 100755 (executable)
index 0000000..f77a730
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+#
+### BEGIN INIT INFO
+# Required-Start:    $local_fs $remote_fs
+# Required-Stop:     $local_fs $remote_fs
+# Provides:          unattended-upgrade-shutdown-check
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 6
+# Short-Description: Check if unattended upgrades are being applied
+# Description:       Check if unattended upgrades are being applied
+#                    and wait for them to finish
+### END INIT INFO
+set -e
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+NAME="unattended-upgrades-shutdown"
+DESC="unattended package upgrades shutdown"
+SCRIPTNAME="/etc/init.d/$NAME"
+SHUTDOWN_HELPER="/usr/share/unattended-upgrades/unattended-upgrade-shutdown"
+
+if [ -x /usr/bin/python3 ]; then
+    PYTHON=python3
+else
+    PYTHON=python
+fi
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+. /lib/lsb/init-functions
+
+case "$1" in
+start|restart|force-reload|status)
+       # nothing, just to keep update-rc.d happy (see debian #630732)
+       ;;
+stop)
+       if [ -e $SHUTDOWN_HELPER ]; then
+               [ "$VERBOSE" != "no" ] && log_action_begin_msg "Checking for running $DESC"
+               $PYTHON $SHUTDOWN_HELPER
+               [ "$VERBOSE" != "no" ] && log_action_end_msg $? "$NAME"
+       fi
+       ;;
+*)
+       echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+       exit 3
+       ;;
+esac
+:
diff --git a/etc/init.d/uuidd b/etc/init.d/uuidd
new file mode 100755 (executable)
index 0000000..cb615d1
--- /dev/null
@@ -0,0 +1,62 @@
+#! /bin/sh -e
+### BEGIN INIT INFO
+# Provides:          uuidd
+# Required-Start:    $time $local_fs $remote_fs
+# Required-Stop:     $time $local_fs $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: uuidd daemon
+# Description:       Init script for the uuid generation daemon
+### END INIT INFO
+#
+# Author:      "Theodore Ts'o" <tytso@mit.edu>
+#
+set -e
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+DAEMON=/usr/sbin/uuidd
+UUIDD_USER=uuidd
+UUIDD_GROUP=uuidd
+UUIDD_DIR=/run/uuidd
+PIDFILE=$UUIDD_DIR/uuidd.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+case "$1" in
+  start)
+       log_daemon_msg "Starting uuid generator" "uuidd"
+       if ! test -d $UUIDD_DIR; then
+               mkdir -p $UUIDD_DIR
+               chown -R $UUIDD_USER:$UUIDD_GROUP $UUIDD_DIR
+       fi
+       start_daemon -p $PIDFILE $DAEMON
+       log_end_msg $?
+    ;;
+  stop)
+       log_daemon_msg "Stopping uuid generator" "uuidd"
+       killproc -p $PIDFILE $DAEMON
+       log_end_msg $?
+    ;;
+  status)
+       if pidofproc -p $PIDFILE $DAEMON >/dev/null 2>&1; then
+           echo "$DAEMON is running";
+           exit 0;
+       else
+           echo "$DAEMON is NOT running";
+           if test -f $PIDFILE; then exit 2; fi
+           exit 3;
+       fi
+    ;;
+  force-reload|restart)
+    $0 stop
+    $0 start
+    ;;
+  *)
+    echo "Usage: /etc/init.d/uuidd {start|stop|restart|force-reload}"
+    exit 1
+    ;;
+esac
+
+exit 0
diff --git a/etc/initramfs-tools/initramfs.conf b/etc/initramfs-tools/initramfs.conf
new file mode 100644 (file)
index 0000000..70ec614
--- /dev/null
@@ -0,0 +1,81 @@
+#
+# initramfs.conf
+# Configuration file for mkinitramfs(8). See initramfs.conf(5).
+#
+# Note that configuration options from this file can be overridden
+# by config files in the /etc/initramfs-tools/conf.d directory.
+
+#
+# MODULES: [ most | netboot | dep | list ]
+#
+# most - Add most filesystem and all harddrive drivers.
+#
+# dep - Try and guess which modules to load.
+#
+# netboot - Add the base modules, network modules, but skip block devices.
+#
+# list - Only include modules from the 'additional modules' list
+#
+
+MODULES=most
+
+#
+# BUSYBOX: [ y | n | auto ]
+#
+# Use busybox shell and utilities.  If set to n, klibc utilities will be used.
+# If set to auto (or unset), busybox will be used if installed and klibc will
+# be used otherwise.
+#
+
+BUSYBOX=auto
+
+#
+# COMPCACHE_SIZE: [ "x K" | "x M" | "x G" | "x %" ]
+#
+# Amount of RAM to use for RAM-based compressed swap space.
+#
+# An empty value - compcache isn't used, or added to the initramfs at all.
+# An integer and K (e.g. 65536 K) - use a number of kilobytes.
+# An integer and M (e.g. 256 M) - use a number of megabytes.
+# An integer and G (e.g. 1 G) - use a number of gigabytes.
+# An integer and % (e.g. 50 %) - use a percentage of the amount of RAM.
+#
+# You can optionally install the compcache package to configure this setting
+# via debconf and have userspace scripts to load and unload compcache.
+#
+
+COMPCACHE_SIZE=""
+
+#
+# COMPRESS: [ gzip | bzip2 | lz4 | lzma | lzop | xz ]
+#
+
+COMPRESS=lz4
+
+#
+# NFS Section of the config.
+#
+
+#
+# DEVICE: ...
+#
+# Specify a specific network interface, like eth0
+# Overridden by optional ip= or BOOTIF= bootarg
+#
+
+DEVICE=
+
+#
+# NFSROOT: [ auto | HOST:MOUNT ]
+#
+
+NFSROOT=auto
+
+#
+# RUNSIZE: ...
+#
+# The size of the /run tmpfs mount point, like 256M or 10%
+# Overridden by optional initramfs.runsize= bootarg
+#
+
+RUNSIZE=10%
diff --git a/etc/initramfs-tools/modules b/etc/initramfs-tools/modules
new file mode 100644 (file)
index 0000000..dd9dc54
--- /dev/null
@@ -0,0 +1,11 @@
+# List of modules that you want to include in your initramfs.
+# They will be loaded at boot time in the order below.
+#
+# Syntax:  module_name [args ...]
+#
+# You must run update-initramfs(8) to effect this change.
+#
+# Examples:
+#
+# raid1
+# sd_mod
diff --git a/etc/initramfs-tools/update-initramfs.conf b/etc/initramfs-tools/update-initramfs.conf
new file mode 100644 (file)
index 0000000..31823e2
--- /dev/null
@@ -0,0 +1,20 @@
+#
+# Configuration file for update-initramfs(8)
+#
+
+#
+# update_initramfs [ yes | all | no ]
+#
+# Default is yes
+# If set to all update-initramfs will update all initramfs
+# If set to no disables any update to initramfs beside kernel upgrade
+
+update_initramfs=yes
+
+#
+# backup_initramfs [ yes | no ]
+#
+# Default is no
+# If set to no leaves no .bak backup files.
+
+backup_initramfs=no
diff --git a/etc/inputrc b/etc/inputrc
new file mode 100644 (file)
index 0000000..d3da985
--- /dev/null
@@ -0,0 +1,67 @@
+# /etc/inputrc - global inputrc for libreadline
+# See readline(3readline) and `info rluserman' for more information.
+
+# Be 8 bit clean.
+set input-meta on
+set output-meta on
+
+# To allow the use of 8bit-characters like the german umlauts, uncomment
+# the line below. However this makes the meta key not work as a meta key,
+# which is annoying to those which don't need to type in 8-bit characters.
+
+# set convert-meta off
+
+# try to enable the application keypad when it is called.  Some systems
+# need this to enable the arrow keys.
+# set enable-keypad on
+
+# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys
+
+# do not bell on tab-completion
+# set bell-style none
+# set bell-style visible
+
+# some defaults / modifications for the emacs mode
+$if mode=emacs
+
+# allow the use of the Home/End keys
+"\e[1~": beginning-of-line
+"\e[4~": end-of-line
+
+# allow the use of the Delete/Insert keys
+"\e[3~": delete-char
+"\e[2~": quoted-insert
+
+# mappings for "page up" and "page down" to step to the beginning/end
+# of the history
+# "\e[5~": beginning-of-history
+# "\e[6~": end-of-history
+
+# alternate mappings for "page up" and "page down" to search the history
+# "\e[5~": history-search-backward
+# "\e[6~": history-search-forward
+
+# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
+"\e[1;5C": forward-word
+"\e[1;5D": backward-word
+"\e[5C": forward-word
+"\e[5D": backward-word
+"\e\e[C": forward-word
+"\e\e[D": backward-word
+
+$if term=rxvt
+"\e[7~": beginning-of-line
+"\e[8~": end-of-line
+"\eOc": forward-word
+"\eOd": backward-word
+$endif
+
+# for non RH/Debian xterm, can't hurt for RH/Debian xterm
+# "\eOH": beginning-of-line
+# "\eOF": end-of-line
+
+# for freebsd console
+# "\e[H": beginning-of-line
+# "\e[F": end-of-line
+
+$endif
diff --git a/etc/iproute2/bpf_pinning b/etc/iproute2/bpf_pinning
new file mode 100644 (file)
index 0000000..2b39c70
--- /dev/null
@@ -0,0 +1,6 @@
+#
+# subpath mappings from mount point for pinning
+#
+#3     tracing
+#4     foo/bar
+#5     tc/cls1
diff --git a/etc/iproute2/ematch_map b/etc/iproute2/ematch_map
new file mode 100644 (file)
index 0000000..4d6bb2f
--- /dev/null
@@ -0,0 +1,8 @@
+# lookup table for ematch kinds
+1      cmp
+2      nbyte
+3      u32
+4      meta
+7      canid
+8      ipset
+9      ipt
diff --git a/etc/iproute2/group b/etc/iproute2/group
new file mode 100644 (file)
index 0000000..6f000b2
--- /dev/null
@@ -0,0 +1,2 @@
+# device group names
+0      default
diff --git a/etc/iproute2/nl_protos b/etc/iproute2/nl_protos
new file mode 100644 (file)
index 0000000..7c17cf0
--- /dev/null
@@ -0,0 +1,23 @@
+# Netlink protocol names mapping
+
+0   rtnl
+1   unused
+2   usersock
+3   fw
+4   tcpdiag
+5   nflog
+6   xfrm
+7   selinux
+8   iscsi
+9   audit
+10  fiblookup
+11  connector
+12  nft
+13  ip6fw
+14  dec-rt
+15  uevent
+16  genl
+18  scsi-trans
+19  ecryptfs
+20  rdma
+21  crypto
diff --git a/etc/iproute2/rt_dsfield b/etc/iproute2/rt_dsfield
new file mode 100644 (file)
index 0000000..1426d60
--- /dev/null
@@ -0,0 +1,26 @@
+# Differentiated field values
+# These include the DSCP and unused bits
+0x0    default
+# Newer RFC2597 values
+0x28   AF11
+0x30   AF12
+0x38   AF13
+0x48   AF21
+0x50   AF22
+0x58   AF23
+0x68   AF31
+0x70   AF32
+0x78   AF33
+0x88   AF41
+0x90   AF42
+0x98   AF43
+# Older values RFC2474
+0x20   CS1
+0x40   CS2
+0x60   CS3
+0x80   CS4
+0xA0   CS5
+0xC0   CS6
+0xE0   CS7
+# RFC 2598
+0xB8   EF
diff --git a/etc/iproute2/rt_protos b/etc/iproute2/rt_protos
new file mode 100644 (file)
index 0000000..b3a0ec8
--- /dev/null
@@ -0,0 +1,23 @@
+#
+# Reserved protocols.
+#
+0      unspec
+1      redirect
+2      kernel
+3      boot
+4      static
+8      gated
+9      ra
+10     mrt
+11     zebra
+12     bird
+13     dnrouted
+14     xorp
+15     ntk
+16      dhcp
+42     babel
+186    bgp
+187    isis
+188    ospf
+189    rip
+192    eigrp
diff --git a/etc/iproute2/rt_protos.d/README b/etc/iproute2/rt_protos.d/README
new file mode 100644 (file)
index 0000000..f9c599c
--- /dev/null
@@ -0,0 +1,2 @@
+Each file in this directory is an rt_protos configuration file. iproute2
+commands scan this directory processing all files that end in '.conf'.
diff --git a/etc/iproute2/rt_realms b/etc/iproute2/rt_realms
new file mode 100644 (file)
index 0000000..eedd76d
--- /dev/null
@@ -0,0 +1,13 @@
+#
+# reserved values
+#
+0      cosmos
+#
+# local
+#
+#1     inr.ac
+#2     inr.ruhep
+#3     freenet
+#4     radio-msu
+#5     russia
+#6     internet
diff --git a/etc/iproute2/rt_scopes b/etc/iproute2/rt_scopes
new file mode 100644 (file)
index 0000000..8514bc1
--- /dev/null
@@ -0,0 +1,11 @@
+#
+# reserved values
+#
+0      global
+255    nowhere
+254    host
+253    link
+#
+# pseudo-reserved
+#
+200    site
diff --git a/etc/iproute2/rt_tables b/etc/iproute2/rt_tables
new file mode 100644 (file)
index 0000000..541abfd
--- /dev/null
@@ -0,0 +1,11 @@
+#
+# reserved values
+#
+255    local
+254    main
+253    default
+0      unspec
+#
+# local
+#
+#1     inr.ruhep
diff --git a/etc/iproute2/rt_tables.d/README b/etc/iproute2/rt_tables.d/README
new file mode 100644 (file)
index 0000000..0920cb1
--- /dev/null
@@ -0,0 +1,2 @@
+Each file in this directory is an rt_tables configuration file. iproute2
+commands scan this directory processing all files that end in '.conf'.
diff --git a/etc/iscsi/initiatorname.iscsi b/etc/iscsi/initiatorname.iscsi
new file mode 100644 (file)
index 0000000..8cd09cc
--- /dev/null
@@ -0,0 +1,6 @@
+## DO NOT EDIT OR REMOVE THIS FILE!
+## If you remove this file, the iSCSI daemon will not start.
+## If you change the InitiatorName, existing access control lists
+## may reject this initiator.  The InitiatorName must be unique
+## for each iSCSI initiator.  Do NOT duplicate iSCSI InitiatorNames.
+InitiatorName=iqn.1993-08.org.debian:01:af5bf2af245
diff --git a/etc/iscsi/iscsid.conf b/etc/iscsi/iscsid.conf
new file mode 100644 (file)
index 0000000..1aa74db
--- /dev/null
@@ -0,0 +1,316 @@
+#
+# Open-iSCSI default configuration.
+# Could be located at /etc/iscsi/iscsid.conf or ~/.iscsid.conf
+#
+# Note: To set any of these values for a specific node/session run
+# the iscsiadm --mode node --op command for the value. See the README
+# and man page for iscsiadm for details on the --op command.
+#
+
+######################
+# iscsid daemon config
+######################
+# If you want iscsid to start the first time an iscsi tool
+# needs to access it, instead of starting it when the init
+# scripts run, set the iscsid startup command here. This
+# should normally only need to be done by distro package
+# maintainers.
+#
+# Default for Fedora and RHEL. (uncomment to activate).
+# iscsid.startup = /etc/rc.d/init.d/iscsid force-start
+iscsid.startup = /bin/systemctl start iscsid.socket
+#
+# Default for upstream open-iscsi scripts (uncomment to activate).
+# iscsid.startup = /sbin/iscsid
+
+# Check for active mounts on devices reachable through a session
+# and refuse to logout if there are any.  Defaults to "No".
+# iscsid.safe_logout = Yes
+
+#############################
+# NIC/HBA and driver settings
+#############################
+# open-iscsi can create a session and bind it to a NIC/HBA.
+# To set this up see the example iface config file.
+
+#*****************
+# Startup settings
+#*****************
+
+# To request that the iscsi initd scripts startup a session set to "automatic".
+# node.startup = automatic
+#
+# To manually startup the session set to "manual". The default is manual.
+node.startup = manual
+
+# For "automatic" startup nodes, setting this to "Yes" will try logins on each
+# available iface until one succeeds, and then stop.  The default "No" will try
+# logins on all available ifaces simultaneously.
+node.leading_login = No
+
+# *************
+# CHAP Settings
+# *************
+
+# To enable CHAP authentication set node.session.auth.authmethod
+# to CHAP. The default is None.
+#node.session.auth.authmethod = CHAP
+
+# To set a CHAP username and password for initiator
+# authentication by the target(s), uncomment the following lines:
+#node.session.auth.username = username
+#node.session.auth.password = password
+
+# To set a CHAP username and password for target(s)
+# authentication by the initiator, uncomment the following lines:
+#node.session.auth.username_in = username_in
+#node.session.auth.password_in = password_in
+
+# To enable CHAP authentication for a discovery session to the target
+# set discovery.sendtargets.auth.authmethod to CHAP. The default is None.
+#discovery.sendtargets.auth.authmethod = CHAP
+
+# To set a discovery session CHAP username and password for the initiator
+# authentication by the target(s), uncomment the following lines:
+#discovery.sendtargets.auth.username = username
+#discovery.sendtargets.auth.password = password
+
+# To set a discovery session CHAP username and password for target(s)
+# authentication by the initiator, uncomment the following lines:
+#discovery.sendtargets.auth.username_in = username_in
+#discovery.sendtargets.auth.password_in = password_in
+
+# ********
+# Timeouts
+# ********
+#
+# See the iSCSI README's Advanced Configuration section for tips
+# on setting timeouts when using multipath or doing root over iSCSI.
+#
+# To specify the length of time to wait for session re-establishment
+# before failing SCSI commands back to the application when running
+# the Linux SCSI Layer error handler, edit the line.
+# The value is in seconds and the default is 120 seconds.
+# Special values:
+# - If the value is 0, IO will be failed immediately.
+# - If the value is less than 0, IO will remain queued until the session
+# is logged back in, or until the user runs the logout command.
+node.session.timeo.replacement_timeout = 120
+
+# To specify the time to wait for login to complete, edit the line.
+# The value is in seconds and the default is 15 seconds.
+node.conn[0].timeo.login_timeout = 15
+
+# To specify the time to wait for logout to complete, edit the line.
+# The value is in seconds and the default is 15 seconds.
+node.conn[0].timeo.logout_timeout = 15
+
+# Time interval to wait for on connection before sending a ping.
+node.conn[0].timeo.noop_out_interval = 5
+
+# To specify the time to wait for a Nop-out response before failing
+# the connection, edit this line. Failing the connection will
+# cause IO to be failed back to the SCSI layer. If using dm-multipath
+# this will cause the IO to be failed to the multipath layer.
+node.conn[0].timeo.noop_out_timeout = 5
+
+# To specify the time to wait for abort response before
+# failing the operation and trying a logical unit reset edit the line.
+# The value is in seconds and the default is 15 seconds.
+node.session.err_timeo.abort_timeout = 15
+
+# To specify the time to wait for a logical unit response
+# before failing the operation and trying session re-establishment
+# edit the line.
+# The value is in seconds and the default is 30 seconds.
+node.session.err_timeo.lu_reset_timeout = 30
+
+# To specify the time to wait for a target response
+# before failing the operation and trying session re-establishment
+# edit the line.
+# The value is in seconds and the default is 30 seconds.
+node.session.err_timeo.tgt_reset_timeout = 30
+
+
+#******
+# Retry
+#******
+
+# To specify the number of times iscsid should retry a login
+# if the login attempt fails due to the node.conn[0].timeo.login_timeout
+# expiring modify the following line. Note that if the login fails
+# quickly (before node.conn[0].timeo.login_timeout fires) because the network
+# layer or the target returns an error, iscsid may retry the login more than
+# node.session.initial_login_retry_max times.
+#
+# This retry count along with node.conn[0].timeo.login_timeout
+# determines the maximum amount of time iscsid will try to
+# establish the initial login. node.session.initial_login_retry_max is
+# multiplied by the node.conn[0].timeo.login_timeout to determine the
+# maximum amount.
+#
+# The default node.session.initial_login_retry_max is 8 and
+# node.conn[0].timeo.login_timeout is 15 so we have:
+#
+# node.conn[0].timeo.login_timeout * node.session.initial_login_retry_max =
+#                                                              120 seconds
+#
+# Valid values are any integer value. This only
+# affects the initial login. Setting it to a high value can slow
+# down the iscsi service startup. Setting it to a low value can
+# cause a session to not get logged into, if there are distuptions
+# during startup or if the network is not ready at that time.
+node.session.initial_login_retry_max = 8
+
+################################
+# session and device queue depth
+################################
+
+# To control how many commands the session will queue set
+# node.session.cmds_max to an integer between 2 and 2048 that is also
+# a power of 2. The default is 128.
+node.session.cmds_max = 128
+
+# To control the device's queue depth set node.session.queue_depth
+# to a value between 1 and 1024. The default is 32.
+node.session.queue_depth = 32
+
+##################################
+# MISC SYSTEM PERFORMANCE SETTINGS
+##################################
+
+# For software iscsi (iscsi_tcp) and iser (ib_iser) each session
+# has a thread used to transmit or queue data to the hardware. For
+# cxgb3i you will get a thread per host.
+#
+# Setting the thread's priority to a lower value can lead to higher throughput
+# and lower latencies. The lowest value is -20. Setting the priority to
+# a higher value, can lead to reduced IO performance, but if you are seeing
+# the iscsi or scsi threads dominate the use of the CPU then you may want
+# to set this value higher.
+#
+# Note: For cxgb3i you must set all sessions to the same value, or the
+# behavior is not defined.
+#
+# The default value is -20. The setting must be between -20 and 20.
+node.session.xmit_thread_priority = -20
+
+
+#***************
+# iSCSI settings
+#***************
+
+# To enable R2T flow control (i.e., the initiator must wait for an R2T
+# command before sending any data), uncomment the following line:
+#
+#node.session.iscsi.InitialR2T = Yes
+#
+# To disable R2T flow control (i.e., the initiator has an implied
+# initial R2T of "FirstBurstLength" at offset 0), uncomment the following line:
+#
+# The defaults is No.
+node.session.iscsi.InitialR2T = No
+
+#
+# To disable immediate data (i.e., the initiator does not send
+# unsolicited data with the iSCSI command PDU), uncomment the following line:
+#
+#node.session.iscsi.ImmediateData = No
+#
+# To enable immediate data (i.e., the initiator sends unsolicited data
+# with the iSCSI command packet), uncomment the following line:
+#
+# The default is Yes
+node.session.iscsi.ImmediateData = Yes
+
+# To specify the maximum number of unsolicited data bytes the initiator
+# can send in an iSCSI PDU to a target, edit the following line.
+#
+# The value is the number of bytes in the range of 512 to (2^24-1) and
+# the default is 262144
+node.session.iscsi.FirstBurstLength = 262144
+
+# To specify the maximum SCSI payload that the initiator will negotiate
+# with the target for, edit the following line.
+#
+# The value is the number of bytes in the range of 512 to (2^24-1) and
+# the defauls it 16776192
+node.session.iscsi.MaxBurstLength = 16776192
+
+# To specify the maximum number of data bytes the initiator can receive
+# in an iSCSI PDU from a target, edit the following line.
+#
+# The value is the number of bytes in the range of 512 to (2^24-1) and
+# the default is 262144
+node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
+
+# To specify the maximum number of data bytes the initiator will send
+# in an iSCSI PDU to the target, edit the following line.
+#
+# The value is the number of bytes in the range of 512 to (2^24-1).
+# Zero is a special case. If set to zero, the initiator will use
+# the target's MaxRecvDataSegmentLength for the MaxXmitDataSegmentLength.
+# The default is 0.
+node.conn[0].iscsi.MaxXmitDataSegmentLength = 0
+
+# To specify the maximum number of data bytes the initiator can receive
+# in an iSCSI PDU from a target during a discovery session, edit the
+# following line.
+#
+# The value is the number of bytes in the range of 512 to (2^24-1) and
+# the default is 32768
+# 
+discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
+
+# To allow the targets to control the setting of the digest checking,
+# with the initiator requesting a preference of enabling the checking, uncomment# one or both of the following lines:
+#node.conn[0].iscsi.HeaderDigest = CRC32C,None
+#node.conn[0].iscsi.DataDigest = CRC32C,None
+#
+# To allow the targets to control the setting of the digest checking,
+# with the initiator requesting a preference of disabling the checking,
+# uncomment one or both of the following lines:
+#node.conn[0].iscsi.HeaderDigest = None,CRC32C
+#node.conn[0].iscsi.DataDigest = None,CRC32C
+#
+# To enable CRC32C digest checking for the header and/or data part of
+# iSCSI PDUs, uncomment one or both of the following lines:
+#node.conn[0].iscsi.HeaderDigest = CRC32C
+#node.conn[0].iscsi.DataDigest = CRC32C
+#
+# To disable digest checking for the header and/or data part of
+# iSCSI PDUs, uncomment one or both of the following lines:
+#node.conn[0].iscsi.HeaderDigest = None
+#node.conn[0].iscsi.DataDigest = None
+#
+# The default is to never use DataDigests or HeaderDigests.
+#
+
+# For multipath configurations, you may want more than one session to be
+# created on each iface record.  If node.session.nr_sessions is greater
+# than 1, performing a 'login' for that node will ensure that the
+# appropriate number of sessions is created.
+node.session.nr_sessions = 1
+
+#************
+# Workarounds
+#************
+
+# Some targets like IET prefer after an initiator has sent a task
+# management function like an ABORT TASK or LOGICAL UNIT RESET, that
+# it does not respond to PDUs like R2Ts. To enable this behavior uncomment
+# the following line (The default behavior is Yes):
+node.session.iscsi.FastAbort = Yes
+
+# Some targets like Equalogic prefer that after an initiator has sent
+# a task management function like an ABORT TASK or LOGICAL UNIT RESET, that
+# it continue to respond to R2Ts. To enable this uncomment this line
+# node.session.iscsi.FastAbort = No
+
+# To prevent doing automatic scans that would add unwanted luns to the system
+# we can disable them and have sessions only do manually requested scans.
+# Automatic scans are performed on startup, on login, and on AEN/AER reception
+# on devices supporting it.  For HW drivers all sessions will use the value
+# defined in the configuration file.  This configuration option is independent
+# of scsi_mod scan parameter. (The default behavior is auto):
+node.session.scan = auto
diff --git a/etc/issue b/etc/issue
new file mode 100644 (file)
index 0000000..2105b54
--- /dev/null
+++ b/etc/issue
@@ -0,0 +1,2 @@
+Ubuntu 20.04.4 LTS \n \l
+
diff --git a/etc/issue.net b/etc/issue.net
new file mode 100644 (file)
index 0000000..a3bf199
--- /dev/null
@@ -0,0 +1 @@
+Ubuntu 20.04.4 LTS
diff --git a/etc/kernel/postinst.d/initramfs-tools b/etc/kernel/postinst.d/initramfs-tools
new file mode 100755 (executable)
index 0000000..5d02e57
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh -e
+
+version="$1"
+bootopt=""
+
+command -v update-initramfs >/dev/null 2>&1 || exit 0
+
+# passing the kernel version is required
+if [ -z "${version}" ]; then
+       echo >&2 "W: initramfs-tools: ${DPKG_MAINTSCRIPT_PACKAGE:-kernel package} did not pass a version number"
+       exit 2
+fi
+
+# exit if kernel does not need an initramfs
+if [ "$INITRD" = 'No' ]; then
+       exit 0
+fi
+
+# absolute file name of kernel image may be passed as a second argument;
+# create the initrd in the same directory
+if [ -n "$2" ]; then
+       bootdir=$(dirname "$2")
+       bootopt="-b ${bootdir}"
+fi
+
+# avoid running multiple times
+if [ -n "$DEB_MAINT_PARAMS" ]; then
+       eval set -- "$DEB_MAINT_PARAMS"
+       if [ -z "$1" ] || [ "$1" != "configure" ]; then
+               exit 0
+       fi
+fi
+
+# we're good - create initramfs.  update runs do_bootloader
+# shellcheck disable=SC2086
+INITRAMFS_TOOLS_KERNEL_HOOK=1 update-initramfs -c -k "${version}" ${bootopt} >&2
diff --git a/etc/kernel/postinst.d/unattended-upgrades b/etc/kernel/postinst.d/unattended-upgrades
new file mode 100755 (executable)
index 0000000..3f54dea
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+case "$DPKG_MAINTSCRIPT_PACKAGE::$DPKG_MAINTSCRIPT_NAME" in
+   linux-image-extra*::postrm)
+      exit 0;;
+esac
+
+if [ -d /var/run ]; then
+    touch /var/run/reboot-required
+    if ! grep -q "^$DPKG_MAINTSCRIPT_PACKAGE$" /var/run/reboot-required.pkgs 2> /dev/null ; then
+        echo "$DPKG_MAINTSCRIPT_PACKAGE" >> /var/run/reboot-required.pkgs
+    fi
+fi
diff --git a/etc/kernel/postinst.d/update-notifier b/etc/kernel/postinst.d/update-notifier
new file mode 120000 (symlink)
index 0000000..e34356c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/update-notifier/notify-reboot-required
\ No newline at end of file
diff --git a/etc/kernel/postinst.d/xx-update-initrd-links b/etc/kernel/postinst.d/xx-update-initrd-links
new file mode 100755 (executable)
index 0000000..51f2a39
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+set -e
+
+# installkernel script calls postinst.d without any DEB_MAINT_PARAMS set
+# linux-image-* postinst calls postinst.d with DEB_MAINT_PARAMS set
+# do nothing in case linux-image-* calls this, as it already calls `linux-update-symlinks`
+[ -z "$DEB_MAINT_PARAMS" ] || exit 0
+
+# installkernel must call postinst.d with two args, version & image_path
+version="$1"
+image_path="$2"
+
+[ -n "$version" ] || exit 0
+[ -n "$image_path" ] || exit 0
+
+# call linux-update-symlinks in install mode, which will correctly
+# update vmlinuz & initrd.img symlinks. Even if initrd.img does not
+# exist yet, or has already been created by the initramfs-update
+# postinst.d hook. It will also honor kernel_img.conf settings to
+# link_in_boot yes/no. Thus matching behaviour of linux-image-*
+# postinst call to linux-update-symlinks.
+linux-update-symlinks install $version $image_path
+
+exit 0
diff --git a/etc/kernel/postinst.d/zz-update-grub b/etc/kernel/postinst.d/zz-update-grub
new file mode 100755 (executable)
index 0000000..5ed065f
--- /dev/null
@@ -0,0 +1,26 @@
+#! /bin/sh
+set -e
+
+which update-grub >/dev/null 2>&1 || exit 0
+
+if type systemd-detect-virt >/dev/null 2>&1 &&
+   systemd-detect-virt --quiet --container; then
+       exit 0
+fi
+
+set -- $DEB_MAINT_PARAMS
+mode="${1#\'}"
+mode="${mode%\'}"
+case $0:$mode in
+    # Only run on postinst configure and postrm remove, to avoid wasting
+    # time by calling update-grub multiple times on upgrade and removal.
+    # Also run if we have no DEB_MAINT_PARAMS, in order to work with old
+    # kernel packages.
+    */postinst.d/*:|*/postinst.d/*:configure|*/postrm.d/*:|*/postrm.d/*:remove)
+       if [ -e /boot/grub/grub.cfg ]; then
+               exec update-grub
+       fi
+       ;;
+esac
+
+exit 0
diff --git a/etc/kernel/postrm.d/initramfs-tools b/etc/kernel/postrm.d/initramfs-tools
new file mode 100755 (executable)
index 0000000..471da86
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh -e
+
+version="$1"
+bootopt=""
+
+[ -x /usr/sbin/update-initramfs ] || exit 0
+
+# passing the kernel version is required
+if [ -z "${version}" ]; then
+       echo >&2 "W: initramfs-tools: ${DPKG_MAINTSCRIPT_PACKAGE:-kernel package} did not pass a version number"
+       exit 0
+fi
+
+# exit if custom kernel does not need an initramfs
+if [ "$INITRD" = 'No' ]; then
+       exit 0
+fi
+
+# absolute file name of kernel image may be passed as a second argument;
+# create the initrd in the same directory
+if [ -n "$2" ]; then
+       bootdir=$(dirname "$2")
+       bootopt="-b ${bootdir}"
+fi
+
+# avoid running multiple times
+if [ -n "$DEB_MAINT_PARAMS" ]; then
+       eval set -- "$DEB_MAINT_PARAMS"
+       if [ -z "$1" ] || [ "$1" != "remove" ]; then
+               exit 0
+       fi
+fi
+
+# delete initramfs
+# shellcheck disable=SC2086
+INITRAMFS_TOOLS_KERNEL_HOOK=1 update-initramfs -d -k "${version}" ${bootopt} >&2
diff --git a/etc/kernel/postrm.d/zz-update-grub b/etc/kernel/postrm.d/zz-update-grub
new file mode 100755 (executable)
index 0000000..5ed065f
--- /dev/null
@@ -0,0 +1,26 @@
+#! /bin/sh
+set -e
+
+which update-grub >/dev/null 2>&1 || exit 0
+
+if type systemd-detect-virt >/dev/null 2>&1 &&
+   systemd-detect-virt --quiet --container; then
+       exit 0
+fi
+
+set -- $DEB_MAINT_PARAMS
+mode="${1#\'}"
+mode="${mode%\'}"
+case $0:$mode in
+    # Only run on postinst configure and postrm remove, to avoid wasting
+    # time by calling update-grub multiple times on upgrade and removal.
+    # Also run if we have no DEB_MAINT_PARAMS, in order to work with old
+    # kernel packages.
+    */postinst.d/*:|*/postinst.d/*:configure|*/postrm.d/*:|*/postrm.d/*:remove)
+       if [ -e /boot/grub/grub.cfg ]; then
+               exec update-grub
+       fi
+       ;;
+esac
+
+exit 0
diff --git a/etc/kernel/preinst.d/intel-microcode b/etc/kernel/preinst.d/intel-microcode
new file mode 100755 (executable)
index 0000000..d98b40c
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+#
+# /etc/kernel/preinst.d script for intel-microcode version 3
+# Copyright (C) 2014 Henrique de Moraes Holschuh <hmh@debian.org>
+# Released under the GPL v2 or later license
+#
+# This script makes sure the cpuid module is loaded, before the
+# kernel image has a chance to replace it with a new one that
+# might not be compatible with the current kernel.
+#
+# We need the cpuid module for iucode_tool --scan-system,
+# which is used by the initramfs hook.
+#
+
+grep -q cpu/cpuid /proc/devices || modprobe -q cpuid || true
+
+:
diff --git a/etc/ld.so.cache b/etc/ld.so.cache
new file mode 100644 (file)
index 0000000..8502955
Binary files /dev/null and b/etc/ld.so.cache differ
diff --git a/etc/ld.so.conf b/etc/ld.so.conf
new file mode 100644 (file)
index 0000000..20c9763
--- /dev/null
@@ -0,0 +1,2 @@
+include /etc/ld.so.conf.d/*.conf
+
diff --git a/etc/ld.so.conf.d/fakeroot-x86_64-linux-gnu.conf b/etc/ld.so.conf.d/fakeroot-x86_64-linux-gnu.conf
new file mode 100644 (file)
index 0000000..bf03379
--- /dev/null
@@ -0,0 +1 @@
+/usr/lib/x86_64-linux-gnu/libfakeroot
diff --git a/etc/ld.so.conf.d/libc.conf b/etc/ld.so.conf.d/libc.conf
new file mode 100644 (file)
index 0000000..463b8bb
--- /dev/null
@@ -0,0 +1,2 @@
+# libc default configuration
+/usr/local/lib
diff --git a/etc/ld.so.conf.d/x86_64-linux-gnu.conf b/etc/ld.so.conf.d/x86_64-linux-gnu.conf
new file mode 100644 (file)
index 0000000..cd691ab
--- /dev/null
@@ -0,0 +1,4 @@
+# Multiarch support
+/usr/local/lib/x86_64-linux-gnu
+/lib/x86_64-linux-gnu
+/usr/lib/x86_64-linux-gnu
diff --git a/etc/ld.so.conf.d/zz_i386-biarch-compat.conf b/etc/ld.so.conf.d/zz_i386-biarch-compat.conf
new file mode 100644 (file)
index 0000000..447564e
--- /dev/null
@@ -0,0 +1,3 @@
+# Legacy biarch compatibility support
+/lib32
+/usr/lib32
diff --git a/etc/ldap/ldap.conf b/etc/ldap/ldap.conf
new file mode 100644 (file)
index 0000000..42d42b0
--- /dev/null
@@ -0,0 +1,17 @@
+#
+# LDAP Defaults
+#
+
+# See ldap.conf(5) for details
+# This file should be world readable but not world writable.
+
+#BASE  dc=example,dc=com
+#URI   ldap://ldap.example.com ldap://ldap-master.example.com:666
+
+#SIZELIMIT     12
+#TIMELIMIT     15
+#DEREF         never
+
+# TLS certificates (needed for GnuTLS)
+TLS_CACERT     /etc/ssl/certs/ca-certificates.crt
+
diff --git a/etc/legal b/etc/legal
new file mode 100644 (file)
index 0000000..cf276aa
--- /dev/null
+++ b/etc/legal
@@ -0,0 +1,8 @@
+
+The programs included with the Ubuntu system are free software;
+the exact distribution terms for each program are described in the
+individual files in /usr/share/doc/*/copyright.
+
+Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
+applicable law.
+
diff --git a/etc/libaudit.conf b/etc/libaudit.conf
new file mode 100644 (file)
index 0000000..90855d7
--- /dev/null
@@ -0,0 +1,7 @@
+# This is the configuration file for libaudit tunables.
+# It is currently only used for the failure_action tunable.
+
+# failure_action can be: log, ignore, terminate
+failure_action = ignore
+
+
diff --git a/etc/libblockdev/conf.d/00-default.cfg b/etc/libblockdev/conf.d/00-default.cfg
new file mode 100644 (file)
index 0000000..6412ab9
--- /dev/null
@@ -0,0 +1,43 @@
+# This is the default configuration for the libblockdev library. For
+# each supported technology/plugin there is a separate section/group
+# with the 'sonames' key. The value of the key has to be a list of
+# sonames of shared objects that should be attempted to be loaded for
+# the plugin falling back to the next one in the list.
+#
+# So this example:
+# [lvm]
+# sonames=libbd_lvm-dbus.so.0;libbd_lvm.so.0
+#
+# would result in the libbd_lvm-dbus.so.0 shared object attempted to
+# be loaded and if that failed, the libbd_lvm.so.0 would be attempted
+# to be loaded.
+
+[btrfs]
+sonames=libbd_btrfs.so.2
+
+[crypto]
+sonames=libbd_crypto.so.2
+
+[dm]
+sonames=libbd_dm.so.2
+
+[kbd]
+sonames=libbd_kbd.so.2
+
+[loop]
+sonames=libbd_loop.so.2
+
+[lvm]
+sonames=libbd_lvm.so.2
+
+[mdraid]
+sonames=libbd_mdraid.so.2
+
+[mpath]
+sonames=libbd_mpath.so.2
+
+[swap]
+sonames=libbd_swap.so.2
+
+[s390]
+sonames=libbd_s390.so.2
diff --git a/etc/libnl-3/classid b/etc/libnl-3/classid
new file mode 100644 (file)
index 0000000..2203243
--- /dev/null
@@ -0,0 +1,45 @@
+###############################################################################
+#
+# ClassID <-> Name Translation Table
+#
+# This file can be used to assign names to classids for easier reference
+# in all libnl tools.
+#
+# Format:
+#   <MAJ:>             <NAME>          # qdisc definition
+#   <MAJ:MIN>          <NAME>          # class deifnition
+#   <NAME:MIN>         <NAME>          # class definition referencing an
+#                                        existing qdisc definition.
+#
+# Example:
+#   1:                 top             # top -> 1:0
+#   top:1              interactive     # interactive -> 1:1
+#   top:2              www             # www -> 1:2
+#   top:3              bulk            # bulk -> 1:3
+#   2:1                        test_class      # test_class -> 2:1
+#
+# Illegal Example:
+#   30:1                classD
+#   classD:2            invalidClass    # classD refers to a class, not a qdisc
+#
+###############################################################################
+
+# <CLASSID>            <NAME>
+
+# Reserved default classids
+0:0                    none
+ffff:ffff              root
+ffff:fff1              ingress
+
+#
+# List your classid definitions here:
+#
+
+
+
+###############################################################################
+# List of auto-generated classids
+#
+# DO NOT ADD CLASSID DEFINITIONS BELOW THIS LINE
+#
+# <CLASSID>            <NAME>
diff --git a/etc/libnl-3/pktloc b/etc/libnl-3/pktloc
new file mode 100644 (file)
index 0000000..8559161
--- /dev/null
@@ -0,0 +1,76 @@
+#
+# Location definitions for packet matching
+#
+
+# name         alignment       offset          mask            shift
+ip.version     u8              net+0           0xF0            4
+ip.hdrlen      u8              net+0           0x0F
+ip.diffserv    u8              net+1
+ip.length      u16             net+2
+ip.id          u16             net+4
+ip.flag.res    u8              net+6           0xff            7
+ip.df          u8              net+6           0x40            6
+ip.mf          u8              net+6           0x20            5
+ip.offset      u16             net+6           0x1FFF
+ip.ttl         u8              net+8
+ip.proto       u8              net+9
+ip.chksum      u16             net+10
+ip.src         u32             net+12
+ip.dst         u32             net+16
+
+# if ip.ihl > 5
+ip.opts                u32             net+20
+
+
+#
+# IP version 6
+#
+# name         alignment       offset          mask            shift
+ip6.version    u8              net+0           0xF0            4
+ip6.tc         u16             net+0           0xFF0           4
+ip6.flowlabel  u32             net+0           0xFFFFF
+ip6.length     u16             net+4
+ip6.nexthdr    u8              net+6
+ip6.hoplimit   u8              net+7
+ip6.src                16              net+8
+ip6.dst                16              net+24
+
+#
+# Transmission Control Protocol (TCP)
+#
+# name         alignment       offset          mask            shift
+tcp.sport      u16             tcp+0
+tcp.dport      u16             tcp+2
+tcp.seq                u32             tcp+4
+tcp.ack                u32             tcp+8
+
+# Data offset (4 bits)
+tcp.off                u8              tcp+12          0xF0            4
+
+# Reserved [0 0 0] (3 bits)
+tcp.reserved   u8              tcp+12          0x04            1
+
+# ECN [N C E] (3 bits)
+tcp.ecn                u16             tcp+12          0x01C00         6
+
+# Individual TCP flags (0|1) (6 bits in total)
+tcp.flag.urg   u8              tcp+13          0x20            5
+tcp.flag.ack   u8              tcp+13          0x10            4
+tcp.flag.psh   u8              tcp+13          0x08            3
+tcp.flag.rst   u8              tcp+13          0x04            2
+tcp.flag.syn   u8              tcp+13          0x02            1
+tcp.flag.fin   u8              tcp+13          0x01
+
+tcp.win                u16             tcp+14
+tcp.csum       u16             tcp+16
+tcp.urg                u16             tcp+18
+tcp.opts       u32             tcp+20
+
+#
+# User Datagram Protocol (UDP)
+#
+# name         alignment       offset          mask            shift
+udp.sport      u16             tcp+0
+udp.dport      u16             tcp+2
+udp.length     u16             tcp+4
+udp.csum       u16             tcp+6
diff --git a/etc/locale.alias b/etc/locale.alias
new file mode 100644 (file)
index 0000000..3766afc
--- /dev/null
@@ -0,0 +1,82 @@
+# Locale name alias data base.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
+
+# The format of this file is the same as for the corresponding file of
+# the X Window System, which normally can be found in
+#      /usr/lib/X11/locale/locale.alias
+# A single line contains two fields: an alias and a substitution value.
+# All entries are case independent.
+
+# Note: This file is obsolete and is kept around for the time being for
+# backward compatibility.  Nobody should rely on the names defined here.
+# Locales should always be specified by their full name.
+
+# Note: This file used to contain the following lines:
+#      bokmaal         nb_NO.ISO-8859-1
+#      franc,ais       fr_FR.ISO-8859-1
+# except that the "aa" was actually the byte '\0xE5' (the Latin-1
+# encoding for U+00E5 LATIN SMALL LETTER A WITH RING ABOVE) and the
+# "c," was actually the byte '\xE7' (the Latin-1 encoding for U+00E7
+# LATIN SMALL LETTER C WITH CEDILLA).  These lines were removed
+# because they caused 'locale -a' to output text encoded in Latin-1,
+# which broke applications in UTF-8 locales.  See:
+# https://sourceware.org/bugzilla/show_bug.cgi?id=18412
+
+bokmal         nb_NO.ISO-8859-1
+catalan                ca_ES.ISO-8859-1
+croatian       hr_HR.ISO-8859-2
+czech          cs_CZ.ISO-8859-2
+danish          da_DK.ISO-8859-1
+dansk          da_DK.ISO-8859-1
+deutsch                de_DE.ISO-8859-1
+dutch          nl_NL.ISO-8859-1
+eesti          et_EE.ISO-8859-15
+estonian       et_EE.ISO-8859-15
+finnish         fi_FI.ISO-8859-1
+french         fr_FR.ISO-8859-1
+galego         gl_ES.ISO-8859-1
+galician       gl_ES.ISO-8859-1
+german         de_DE.ISO-8859-1
+greek           el_GR.ISO-8859-7
+hebrew          he_IL.ISO-8859-8
+hrvatski       hr_HR.ISO-8859-2
+hungarian       hu_HU.ISO-8859-2
+icelandic       is_IS.ISO-8859-1
+italian         it_IT.ISO-8859-1
+japanese       ja_JP.eucJP
+japanese.euc   ja_JP.eucJP
+ja_JP          ja_JP.eucJP
+ja_JP.ujis     ja_JP.eucJP
+japanese.sjis  ja_JP.SJIS
+korean         ko_KR.eucKR
+korean.euc     ko_KR.eucKR
+ko_KR          ko_KR.eucKR
+lithuanian      lt_LT.ISO-8859-13
+no_NO          nb_NO.ISO-8859-1
+no_NO.ISO-8859-1 nb_NO.ISO-8859-1
+norwegian       nb_NO.ISO-8859-1
+nynorsk                nn_NO.ISO-8859-1
+polish          pl_PL.ISO-8859-2
+portuguese      pt_PT.ISO-8859-1
+romanian        ro_RO.ISO-8859-2
+russian         ru_RU.KOI8-R
+slovak          sk_SK.ISO-8859-2
+slovene         sl_SI.ISO-8859-2
+slovenian       sl_SI.ISO-8859-2
+spanish         es_ES.ISO-8859-1
+swedish         sv_SE.ISO-8859-1
+thai           th_TH.TIS-620
+turkish         tr_TR.ISO-8859-9
diff --git a/etc/locale.gen b/etc/locale.gen
new file mode 100644 (file)
index 0000000..f3b0386
--- /dev/null
@@ -0,0 +1,506 @@
+# This file lists locales that you wish to have built. You can find a list
+# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add
+# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
+# this file, you need to rerun locale-gen.
+
+
+# aa_DJ ISO-8859-1
+# aa_DJ.UTF-8 UTF-8
+# aa_ER UTF-8
+# aa_ER@saaho UTF-8
+# aa_ET UTF-8
+# af_ZA ISO-8859-1
+# af_ZA.UTF-8 UTF-8
+# agr_PE UTF-8
+# ak_GH UTF-8
+# am_ET UTF-8
+# an_ES ISO-8859-15
+# an_ES.UTF-8 UTF-8
+# anp_IN UTF-8
+# ar_AE ISO-8859-6
+# ar_AE.UTF-8 UTF-8
+# ar_BH ISO-8859-6
+# ar_BH.UTF-8 UTF-8
+# ar_DZ ISO-8859-6
+# ar_DZ.UTF-8 UTF-8
+# ar_EG ISO-8859-6
+# ar_EG.UTF-8 UTF-8
+# ar_IN UTF-8
+# ar_IQ ISO-8859-6
+# ar_IQ.UTF-8 UTF-8
+# ar_JO ISO-8859-6
+# ar_JO.UTF-8 UTF-8
+# ar_KW ISO-8859-6
+# ar_KW.UTF-8 UTF-8
+# ar_LB ISO-8859-6
+# ar_LB.UTF-8 UTF-8
+# ar_LY ISO-8859-6
+# ar_LY.UTF-8 UTF-8
+# ar_MA ISO-8859-6
+# ar_MA.UTF-8 UTF-8
+# ar_OM ISO-8859-6
+# ar_OM.UTF-8 UTF-8
+# ar_QA ISO-8859-6
+# ar_QA.UTF-8 UTF-8
+# ar_SA ISO-8859-6
+# ar_SA.UTF-8 UTF-8
+# ar_SD ISO-8859-6
+# ar_SD.UTF-8 UTF-8
+# ar_SS UTF-8
+# ar_SY ISO-8859-6
+# ar_SY.UTF-8 UTF-8
+# ar_TN ISO-8859-6
+# ar_TN.UTF-8 UTF-8
+# ar_YE ISO-8859-6
+# ar_YE.UTF-8 UTF-8
+# as_IN UTF-8
+# ast_ES ISO-8859-15
+# ast_ES.UTF-8 UTF-8
+# ayc_PE UTF-8
+# az_AZ UTF-8
+# az_IR UTF-8
+# be_BY CP1251
+# be_BY.UTF-8 UTF-8
+# be_BY@latin UTF-8
+# bem_ZM UTF-8
+# ber_DZ UTF-8
+# ber_MA UTF-8
+# bg_BG CP1251
+# bg_BG.UTF-8 UTF-8
+# bhb_IN.UTF-8 UTF-8
+# bho_IN UTF-8
+# bho_NP UTF-8
+# bi_VU UTF-8
+# bn_BD UTF-8
+# bn_IN UTF-8
+# bo_CN UTF-8
+# bo_IN UTF-8
+# br_FR ISO-8859-1
+# br_FR.UTF-8 UTF-8
+# br_FR@euro ISO-8859-15
+# brx_IN UTF-8
+# bs_BA ISO-8859-2
+# bs_BA.UTF-8 UTF-8
+# byn_ER UTF-8
+# ca_AD ISO-8859-15
+# ca_AD.UTF-8 UTF-8
+# ca_ES ISO-8859-1
+# ca_ES.UTF-8 UTF-8
+# ca_ES@euro ISO-8859-15
+# ca_ES@valencia UTF-8
+# ca_FR ISO-8859-15
+# ca_FR.UTF-8 UTF-8
+# ca_IT ISO-8859-15
+# ca_IT.UTF-8 UTF-8
+# ce_RU UTF-8
+# chr_US UTF-8
+# ckb_IQ UTF-8
+# cmn_TW UTF-8
+# crh_UA UTF-8
+# cs_CZ ISO-8859-2
+# cs_CZ.UTF-8 UTF-8
+# csb_PL UTF-8
+# cv_RU UTF-8
+# cy_GB ISO-8859-14
+# cy_GB.UTF-8 UTF-8
+# da_DK ISO-8859-1
+# da_DK.UTF-8 UTF-8
+# de_AT ISO-8859-1
+# de_AT.UTF-8 UTF-8
+# de_AT@euro ISO-8859-15
+# de_BE ISO-8859-1
+# de_BE.UTF-8 UTF-8
+# de_BE@euro ISO-8859-15
+# de_CH ISO-8859-1
+# de_CH.UTF-8 UTF-8
+# de_DE ISO-8859-1
+# de_DE.UTF-8 UTF-8
+# de_DE@euro ISO-8859-15
+# de_IT ISO-8859-1
+# de_IT.UTF-8 UTF-8
+# de_LI.UTF-8 UTF-8
+# de_LU ISO-8859-1
+# de_LU.UTF-8 UTF-8
+# de_LU@euro ISO-8859-15
+# doi_IN UTF-8
+# dsb_DE UTF-8
+# dv_MV UTF-8
+# dz_BT UTF-8
+# el_CY ISO-8859-7
+# el_CY.UTF-8 UTF-8
+# el_GR ISO-8859-7
+# el_GR.UTF-8 UTF-8
+# el_GR@euro ISO-8859-7
+# en_AG UTF-8
+# en_AU ISO-8859-1
+# en_AU.UTF-8 UTF-8
+# en_BW ISO-8859-1
+# en_BW.UTF-8 UTF-8
+# en_CA ISO-8859-1
+# en_CA.UTF-8 UTF-8
+# en_DK ISO-8859-1
+# en_DK.ISO-8859-15 ISO-8859-15
+# en_DK.UTF-8 UTF-8
+# en_GB ISO-8859-1
+# en_GB.ISO-8859-15 ISO-8859-15
+# en_GB.UTF-8 UTF-8
+# en_HK ISO-8859-1
+# en_HK.UTF-8 UTF-8
+# en_IE ISO-8859-1
+# en_IE.UTF-8 UTF-8
+# en_IE@euro ISO-8859-15
+# en_IL UTF-8
+# en_IN UTF-8
+# en_NG UTF-8
+# en_NZ ISO-8859-1
+# en_NZ.UTF-8 UTF-8
+# en_PH ISO-8859-1
+# en_PH.UTF-8 UTF-8
+# en_SC.UTF-8 UTF-8
+# en_SG ISO-8859-1
+# en_SG.UTF-8 UTF-8
+# en_US ISO-8859-1
+# en_US.ISO-8859-15 ISO-8859-15
+en_US.UTF-8 UTF-8
+# en_ZA ISO-8859-1
+# en_ZA.UTF-8 UTF-8
+# en_ZM UTF-8
+# en_ZW ISO-8859-1
+# en_ZW.UTF-8 UTF-8
+# eo UTF-8
+# eo_US.UTF-8 UTF-8
+# es_AR ISO-8859-1
+# es_AR.UTF-8 UTF-8
+# es_BO ISO-8859-1
+# es_BO.UTF-8 UTF-8
+# es_CL ISO-8859-1
+# es_CL.UTF-8 UTF-8
+# es_CO ISO-8859-1
+# es_CO.UTF-8 UTF-8
+# es_CR ISO-8859-1
+# es_CR.UTF-8 UTF-8
+# es_CU UTF-8
+# es_DO ISO-8859-1
+# es_DO.UTF-8 UTF-8
+# es_EC ISO-8859-1
+# es_EC.UTF-8 UTF-8
+# es_ES ISO-8859-1
+# es_ES.UTF-8 UTF-8
+# es_ES@euro ISO-8859-15
+# es_GT ISO-8859-1
+# es_GT.UTF-8 UTF-8
+# es_HN ISO-8859-1
+# es_HN.UTF-8 UTF-8
+# es_MX ISO-8859-1
+# es_MX.UTF-8 UTF-8
+# es_NI ISO-8859-1
+# es_NI.UTF-8 UTF-8
+# es_PA ISO-8859-1
+# es_PA.UTF-8 UTF-8
+# es_PE ISO-8859-1
+# es_PE.UTF-8 UTF-8
+# es_PR ISO-8859-1
+# es_PR.UTF-8 UTF-8
+# es_PY ISO-8859-1
+# es_PY.UTF-8 UTF-8
+# es_SV ISO-8859-1
+# es_SV.UTF-8 UTF-8
+# es_US ISO-8859-1
+# es_US.UTF-8 UTF-8
+# es_UY ISO-8859-1
+# es_UY.UTF-8 UTF-8
+# es_VE ISO-8859-1
+# es_VE.UTF-8 UTF-8
+# et_EE ISO-8859-1
+# et_EE.ISO-8859-15 ISO-8859-15
+# et_EE.UTF-8 UTF-8
+# eu_ES ISO-8859-1
+# eu_ES.UTF-8 UTF-8
+# eu_ES@euro ISO-8859-15
+# eu_FR ISO-8859-1
+# eu_FR.UTF-8 UTF-8
+# eu_FR@euro ISO-8859-15
+# fa_IR UTF-8
+# ff_SN UTF-8
+# fi_FI ISO-8859-1
+# fi_FI.UTF-8 UTF-8
+# fi_FI@euro ISO-8859-15
+# fil_PH UTF-8
+# fo_FO ISO-8859-1
+# fo_FO.UTF-8 UTF-8
+# fr_BE ISO-8859-1
+# fr_BE.UTF-8 UTF-8
+# fr_BE@euro ISO-8859-15
+# fr_CA ISO-8859-1
+# fr_CA.UTF-8 UTF-8
+# fr_CH ISO-8859-1
+# fr_CH.UTF-8 UTF-8
+# fr_FR ISO-8859-1
+# fr_FR.UTF-8 UTF-8
+# fr_FR@euro ISO-8859-15
+# fr_LU ISO-8859-1
+# fr_LU.UTF-8 UTF-8
+# fr_LU@euro ISO-8859-15
+# fur_IT UTF-8
+# fy_DE UTF-8
+# fy_NL UTF-8
+# ga_IE ISO-8859-1
+# ga_IE.UTF-8 UTF-8
+# ga_IE@euro ISO-8859-15
+# gd_GB ISO-8859-15
+# gd_GB.UTF-8 UTF-8
+# gez_ER UTF-8
+# gez_ER@abegede UTF-8
+# gez_ET UTF-8
+# gez_ET@abegede UTF-8
+# gl_ES ISO-8859-1
+# gl_ES.UTF-8 UTF-8
+# gl_ES@euro ISO-8859-15
+# gu_IN UTF-8
+# gv_GB ISO-8859-1
+# gv_GB.UTF-8 UTF-8
+# ha_NG UTF-8
+# hak_TW UTF-8
+# he_IL ISO-8859-8
+# he_IL.UTF-8 UTF-8
+# hi_IN UTF-8
+# hif_FJ UTF-8
+# hne_IN UTF-8
+# hr_HR ISO-8859-2
+# hr_HR.UTF-8 UTF-8
+# hsb_DE ISO-8859-2
+# hsb_DE.UTF-8 UTF-8
+# ht_HT UTF-8
+# hu_HU ISO-8859-2
+# hu_HU.UTF-8 UTF-8
+# hy_AM UTF-8
+# hy_AM.ARMSCII-8 ARMSCII-8
+# ia_FR UTF-8
+# id_ID ISO-8859-1
+# id_ID.UTF-8 UTF-8
+# ig_NG UTF-8
+# ik_CA UTF-8
+# is_IS ISO-8859-1
+# is_IS.UTF-8 UTF-8
+# it_CH ISO-8859-1
+# it_CH.UTF-8 UTF-8
+# it_IT ISO-8859-1
+# it_IT.UTF-8 UTF-8
+# it_IT@euro ISO-8859-15
+# iu_CA UTF-8
+# ja_JP.EUC-JP EUC-JP
+# ja_JP.UTF-8 UTF-8
+# ka_GE GEORGIAN-PS
+# ka_GE.UTF-8 UTF-8
+# kab_DZ UTF-8
+# kk_KZ PT154
+# kk_KZ.RK1048 RK1048
+# kk_KZ.UTF-8 UTF-8
+# kl_GL ISO-8859-1
+# kl_GL.UTF-8 UTF-8
+# km_KH UTF-8
+# kn_IN UTF-8
+# ko_KR.EUC-KR EUC-KR
+# ko_KR.UTF-8 UTF-8
+# kok_IN UTF-8
+# ks_IN UTF-8
+# ks_IN@devanagari UTF-8
+# ku_TR ISO-8859-9
+# ku_TR.UTF-8 UTF-8
+# kw_GB ISO-8859-1
+# kw_GB.UTF-8 UTF-8
+# ky_KG UTF-8
+# lb_LU UTF-8
+# lg_UG ISO-8859-10
+# lg_UG.UTF-8 UTF-8
+# li_BE UTF-8
+# li_NL UTF-8
+# lij_IT UTF-8
+# ln_CD UTF-8
+# lo_LA UTF-8
+# lt_LT ISO-8859-13
+# lt_LT.UTF-8 UTF-8
+# lv_LV ISO-8859-13
+# lv_LV.UTF-8 UTF-8
+# lzh_TW UTF-8
+# mag_IN UTF-8
+# mai_IN UTF-8
+# mai_NP UTF-8
+# mfe_MU UTF-8
+# mg_MG ISO-8859-15
+# mg_MG.UTF-8 UTF-8
+# mhr_RU UTF-8
+# mi_NZ ISO-8859-13
+# mi_NZ.UTF-8 UTF-8
+# miq_NI UTF-8
+# mjw_IN UTF-8
+# mk_MK ISO-8859-5
+# mk_MK.UTF-8 UTF-8
+# ml_IN UTF-8
+# mn_MN UTF-8
+# mni_IN UTF-8
+# mnw_MM UTF-8
+# mr_IN UTF-8
+# ms_MY ISO-8859-1
+# ms_MY.UTF-8 UTF-8
+# mt_MT ISO-8859-3
+# mt_MT.UTF-8 UTF-8
+# my_MM UTF-8
+# nan_TW UTF-8
+# nan_TW@latin UTF-8
+# nb_NO ISO-8859-1
+# nb_NO.UTF-8 UTF-8
+# nds_DE UTF-8
+# nds_NL UTF-8
+# ne_NP UTF-8
+# nhn_MX UTF-8
+# niu_NU UTF-8
+# niu_NZ UTF-8
+# nl_AW UTF-8
+# nl_BE ISO-8859-1
+# nl_BE.UTF-8 UTF-8
+# nl_BE@euro ISO-8859-15
+# nl_NL ISO-8859-1
+# nl_NL.UTF-8 UTF-8
+# nl_NL@euro ISO-8859-15
+# nn_NO ISO-8859-1
+# nn_NO.UTF-8 UTF-8
+# nr_ZA UTF-8
+# nso_ZA UTF-8
+# oc_FR ISO-8859-1
+# oc_FR.UTF-8 UTF-8
+# om_ET UTF-8
+# om_KE ISO-8859-1
+# om_KE.UTF-8 UTF-8
+# or_IN UTF-8
+# os_RU UTF-8
+# pa_IN UTF-8
+# pa_PK UTF-8
+# pap_AW UTF-8
+# pap_CW UTF-8
+# pl_PL ISO-8859-2
+# pl_PL.UTF-8 UTF-8
+# ps_AF UTF-8
+# pt_BR ISO-8859-1
+# pt_BR.UTF-8 UTF-8
+# pt_PT ISO-8859-1
+# pt_PT.UTF-8 UTF-8
+# pt_PT@euro ISO-8859-15
+# quz_PE UTF-8
+# raj_IN UTF-8
+# ro_RO ISO-8859-2
+# ro_RO.UTF-8 UTF-8
+# ru_RU ISO-8859-5
+# ru_RU.CP1251 CP1251
+# ru_RU.KOI8-R KOI8-R
+# ru_RU.UTF-8 UTF-8
+# ru_UA KOI8-U
+# ru_UA.UTF-8 UTF-8
+# rw_RW UTF-8
+# sa_IN UTF-8
+# sah_RU UTF-8
+# sat_IN UTF-8
+# sc_IT UTF-8
+# sd_IN UTF-8
+# sd_IN@devanagari UTF-8
+# sd_PK UTF-8
+# se_NO UTF-8
+# sgs_LT UTF-8
+# shn_MM UTF-8
+# shs_CA UTF-8
+# si_LK UTF-8
+# sid_ET UTF-8
+# sk_SK ISO-8859-2
+# sk_SK.UTF-8 UTF-8
+# sl_SI ISO-8859-2
+# sl_SI.UTF-8 UTF-8
+# sm_WS UTF-8
+# so_DJ ISO-8859-1
+# so_DJ.UTF-8 UTF-8
+# so_ET UTF-8
+# so_KE ISO-8859-1
+# so_KE.UTF-8 UTF-8
+# so_SO ISO-8859-1
+# so_SO.UTF-8 UTF-8
+# sq_AL ISO-8859-1
+# sq_AL.UTF-8 UTF-8
+# sq_MK UTF-8
+# sr_ME UTF-8
+# sr_RS UTF-8
+# sr_RS@latin UTF-8
+# ss_ZA UTF-8
+# st_ZA ISO-8859-1
+# st_ZA.UTF-8 UTF-8
+# sv_FI ISO-8859-1
+# sv_FI.UTF-8 UTF-8
+# sv_FI@euro ISO-8859-15
+# sv_SE ISO-8859-1
+# sv_SE.ISO-8859-15 ISO-8859-15
+# sv_SE.UTF-8 UTF-8
+# sw_KE UTF-8
+# sw_TZ UTF-8
+# szl_PL UTF-8
+# ta_IN UTF-8
+# ta_LK UTF-8
+# tcy_IN.UTF-8 UTF-8
+# te_IN UTF-8
+# tg_TJ KOI8-T
+# tg_TJ.UTF-8 UTF-8
+# th_TH TIS-620
+# th_TH.UTF-8 UTF-8
+# the_NP UTF-8
+# ti_ER UTF-8
+# ti_ET UTF-8
+# tig_ER UTF-8
+# tk_TM UTF-8
+# tl_PH ISO-8859-1
+# tl_PH.UTF-8 UTF-8
+# tn_ZA UTF-8
+# to_TO UTF-8
+# tpi_PG UTF-8
+# tr_CY ISO-8859-9
+# tr_CY.UTF-8 UTF-8
+# tr_TR ISO-8859-9
+# tr_TR.UTF-8 UTF-8
+# ts_ZA UTF-8
+# tt_RU UTF-8
+# tt_RU@iqtelif UTF-8
+# ug_CN UTF-8
+# ug_CN@latin UTF-8
+# uk_UA KOI8-U
+# uk_UA.UTF-8 UTF-8
+# unm_US UTF-8
+# ur_IN UTF-8
+# ur_PK UTF-8
+# uz_UZ ISO-8859-1
+# uz_UZ.UTF-8 UTF-8
+# uz_UZ@cyrillic UTF-8
+# ve_ZA UTF-8
+# vi_VN UTF-8
+# wa_BE ISO-8859-1
+# wa_BE.UTF-8 UTF-8
+# wa_BE@euro ISO-8859-15
+# wae_CH UTF-8
+# wal_ET UTF-8
+# wo_SN UTF-8
+# xh_ZA ISO-8859-1
+# xh_ZA.UTF-8 UTF-8
+# yi_US CP1255
+# yi_US.UTF-8 UTF-8
+# yo_NG UTF-8
+# yue_HK UTF-8
+# yuw_PG UTF-8
+# zh_CN GB2312
+# zh_CN.GB18030 GB18030
+# zh_CN.GBK GBK
+# zh_CN.UTF-8 UTF-8
+# zh_HK BIG5-HKSCS
+# zh_HK.UTF-8 UTF-8
+# zh_SG GB2312
+# zh_SG.GBK GBK
+# zh_SG.UTF-8 UTF-8
+# zh_TW BIG5
+# zh_TW.EUC-TW EUC-TW
+# zh_TW.UTF-8 UTF-8
+# zu_ZA ISO-8859-1
+# zu_ZA.UTF-8 UTF-8
diff --git a/etc/localtime b/etc/localtime
new file mode 120000 (symlink)
index 0000000..e59d7a1
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/zoneinfo/Etc/UTC
\ No newline at end of file
diff --git a/etc/logcheck/ignore.d.server/gpg-agent b/etc/logcheck/ignore.d.server/gpg-agent
new file mode 100644 (file)
index 0000000..6de7991
--- /dev/null
@@ -0,0 +1,11 @@
+^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ systemd\[[[:digit:]]+\]: Listening on GnuPG cryptographic agent and passphrase cache\.$
+^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ systemd\[[[:digit:]]+\]: Listening on GnuPG network certificate management daemon\.$
+^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ systemd\[[[:digit:]]+\]: Listening on GnuPG cryptographic agent and passphrase cache \(restricted\)\.$
+^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ systemd\[[[:digit:]]+\]: Listening on GnuPG cryptographic agent and passphrase cache \(access for web browsers\)\.$
+^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ systemd\[[[:digit:]]+\]: Listening on GnuPG cryptographic agent \(ssh-agent emulation\)\.$
+^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ systemd\[[[:digit:]]+\]: Closed GnuPG network certificate management daemon\.$
+^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ systemd\[[[:digit:]]+\]: Closed GnuPG cryptographic agent and passphrase cache\.$
+^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ systemd\[[[:digit:]]+\]: Closed GnuPG cryptographic agent and passphrase cache \(restricted\)\.$
+^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ systemd\[[[:digit:]]+\]: Closed GnuPG cryptographic agent \(ssh-agent emulation\)\.$
+^\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ systemd\[[[:digit:]]+\]: Closed GnuPG cryptographic agent and passphrase cache \(access for web browsers\)\.$
+
diff --git a/etc/logcheck/ignore.d.server/libsasl2-modules b/etc/logcheck/ignore.d.server/libsasl2-modules
new file mode 100644 (file)
index 0000000..0cf93aa
--- /dev/null
@@ -0,0 +1 @@
+\w{3} [ :0-9]{11} [._[:alnum:]-]+ [._[:alnum:]-]+: DIGEST-MD5 common mech free
diff --git a/etc/logcheck/ignore.d.server/mdadm b/etc/logcheck/ignore.d.server/mdadm
new file mode 100644 (file)
index 0000000..051c473
--- /dev/null
@@ -0,0 +1,23 @@
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: md driver [.[:digit:]]+ MAX_MD_DEVS=[[:digit:]]+, MD_SB_DISKS=[[:digit:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: bitmap version [.[:digit:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: md[[:digit:]]+ stopped\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: md[[:digit:]]+ still in use\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: cannot remove active disk [[:alnum:]]+ from md[[:digit:]]+ \.\.\. ?$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: raid([01456]|456|10) personality registered for level ([01456]|10)$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: (data-check|requested-resync|resync|reshape|recovery) of RAID array md[[:digit:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: resuming (data-check|requested-resync|resync|reshape|recovery) of md[[:digit:]]+ from checkpoint\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: md[[:digit:]]+: (data-check|requested-resync|resync|reshape|recovery) done\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: minimum _guaranteed_  ?speed: [[:digit:]]+ KB/sec/disk\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: using maximum available idle IO bandwidth \(but not more than [[:digit:]]+ KB/sec\) for (data-check|requested-resync|resync|reshape|recovery)\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: delaying (data-check|requested-resync|resync|reshape|recovery) of md[[:digit:]]+ until md[[:digit:]]+ has finished \(they share one or more physical units\)$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: using [[:digit:]]+k window, over a total of [[:digit:]]+( blocks|k)\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: (un)?bind<[^>]+>$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: export_rdev\([^)]+\)$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? raid[[:digit:]]+: raid set [[:alnum:]]+ active with [[:digit:]]+ out of [[:digit:]]+ mirrors$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? RAID([01456]|10) conf printout:$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])?[[:space:]]+---( [wrf]d:[[:digit:]]+){2,3}$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])?[[:space:]]+disk [[:digit:]]+,( wo:[[:digit:]]+,)? o:[[:digit:]]+, dev:[[:alnum:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ mdadm(\[[[:digit:]]+\])?: Rebuild((Start|Finish)ed|[[:digit:]]+) event detected on md device /dev/[-_./[:alnum:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ mdadm(\[[[:digit:]]+\])?: SpareActive event detected on md device /dev/[-_./[:alnum:]]+, component device /dev/[-_./[:alnum:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ mdadm(\[[[:digit:]]+\])?: (New|Degraded)Array event detected on md device /dev/[-_./[:alnum:]]+$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ mdadm(\[[[:digit:]]+\])?: DeviceDisappeared event detected on md device /dev/[-_./[:alnum:]]+$
diff --git a/etc/logcheck/ignore.d.server/rsyslog b/etc/logcheck/ignore.d.server/rsyslog
new file mode 100644 (file)
index 0000000..c29d5bf
--- /dev/null
@@ -0,0 +1,5 @@
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: imklog [0-9.]+, log source = /proc/kmsg started.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: Kernel logging \(proc\) stopped.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ rsyslogd: \[origin software="rsyslogd" swVersion="[0-9.]+" x-pid="[0-9]+" x-info="https://www.rsyslog.com"\] start$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ rsyslogd: \[origin software="rsyslogd" swVersion="[0-9.]+" x-pid="[0-9]+" x-info="https://www.rsyslog.com"\] exiting on signal [0-9]+.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ rsyslogd: \[origin software="rsyslogd" swVersion="[0-9.]+" x-pid="[0-9]+" x-info="https://www.rsyslog.com"\] rsyslogd was HUPed$
diff --git a/etc/logcheck/violations.d/mdadm b/etc/logcheck/violations.d/mdadm
new file mode 100644 (file)
index 0000000..ea8cce7
--- /dev/null
@@ -0,0 +1,3 @@
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? md: kicking non-fresh [[:alnum:]]+ from array!$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])? raid[[:digit:]]+: Disk failure on [[:alnum:]]+, disabling device\.$
+^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel:( \[ *[[:digit:]]+\.[[:digit:]]+\])?[[:space:]]+Operation continuing on [[:digit:]]+ devices?$
diff --git a/etc/login.defs b/etc/login.defs
new file mode 100644 (file)
index 0000000..7c32d63
--- /dev/null
@@ -0,0 +1,341 @@
+#
+# /etc/login.defs - Configuration control definitions for the login package.
+#
+# Three items must be defined:  MAIL_DIR, ENV_SUPATH, and ENV_PATH.
+# If unspecified, some arbitrary (and possibly incorrect) value will
+# be assumed.  All other items are optional - if not specified then
+# the described action or option will be inhibited.
+#
+# Comment lines (lines beginning with "#") and blank lines are ignored.
+#
+# Modified for Linux.  --marekm
+
+# REQUIRED for useradd/userdel/usermod
+#   Directory where mailboxes reside, _or_ name of file, relative to the
+#   home directory.  If you _do_ define MAIL_DIR and MAIL_FILE,
+#   MAIL_DIR takes precedence.
+#
+#   Essentially:
+#      - MAIL_DIR defines the location of users mail spool files
+#        (for mbox use) by appending the username to MAIL_DIR as defined
+#        below.
+#      - MAIL_FILE defines the location of the users mail spool files as the
+#        fully-qualified filename obtained by prepending the user home
+#        directory before $MAIL_FILE
+#
+# NOTE: This is no more used for setting up users MAIL environment variable
+#       which is, starting from shadow 4.0.12-1 in Debian, entirely the
+#       job of the pam_mail PAM modules
+#       See default PAM configuration files provided for
+#       login, su, etc.
+#
+# This is a temporary situation: setting these variables will soon
+# move to /etc/default/useradd and the variables will then be
+# no more supported
+MAIL_DIR        /var/mail
+#MAIL_FILE      .mail
+
+#
+# Enable logging and display of /var/log/faillog login failure info.
+# This option conflicts with the pam_tally PAM module.
+#
+FAILLOG_ENAB           yes
+
+#
+# Enable display of unknown usernames when login failures are recorded.
+#
+# WARNING: Unknown usernames may become world readable. 
+# See #290803 and #298773 for details about how this could become a security
+# concern
+LOG_UNKFAIL_ENAB       no
+
+#
+# Enable logging of successful logins
+#
+LOG_OK_LOGINS          no
+
+#
+# Enable "syslog" logging of su activity - in addition to sulog file logging.
+# SYSLOG_SG_ENAB does the same for newgrp and sg.
+#
+SYSLOG_SU_ENAB         yes
+SYSLOG_SG_ENAB         yes
+
+#
+# If defined, all su activity is logged to this file.
+#
+#SULOG_FILE    /var/log/sulog
+
+#
+# If defined, file which maps tty line to TERM environment parameter.
+# Each line of the file is in a format something like "vt100  tty01".
+#
+#TTYTYPE_FILE  /etc/ttytype
+
+#
+# If defined, login failures will be logged here in a utmp format
+# last, when invoked as lastb, will read /var/log/btmp, so...
+#
+FTMP_FILE      /var/log/btmp
+
+#
+# If defined, the command name to display when running "su -".  For
+# example, if this is defined as "su" then a "ps" will display the
+# command is "-su".  If not defined, then "ps" would display the
+# name of the shell actually being run, e.g. something like "-sh".
+#
+SU_NAME                su
+
+#
+# If defined, file which inhibits all the usual chatter during the login
+# sequence.  If a full pathname, then hushed mode will be enabled if the
+# user's name or shell are found in the file.  If not a full pathname, then
+# hushed mode will be enabled if the file exists in the user's home directory.
+#
+HUSHLOGIN_FILE .hushlogin
+#HUSHLOGIN_FILE        /etc/hushlogins
+
+#
+# *REQUIRED*  The default PATH settings, for superuser and normal users.
+#
+# (they are minimal, add the rest in the shell startup files)
+ENV_SUPATH     PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ENV_PATH       PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
+
+#
+# Terminal permissions
+#
+#      TTYGROUP        Login tty will be assigned this group ownership.
+#      TTYPERM         Login tty will be set to this permission.
+#
+# If you have a "write" program which is "setgid" to a special group
+# which owns the terminals, define TTYGROUP to the group number and
+# TTYPERM to 0620.  Otherwise leave TTYGROUP commented out and assign
+# TTYPERM to either 622 or 600.
+#
+# In Debian /usr/bin/bsd-write or similar programs are setgid tty
+# However, the default and recommended value for TTYPERM is still 0600
+# to not allow anyone to write to anyone else console or terminal
+
+# Users can still allow other people to write them by issuing 
+# the "mesg y" command.
+
+TTYGROUP       tty
+TTYPERM                0600
+
+#
+# Login configuration initializations:
+#
+#      ERASECHAR       Terminal ERASE character ('\010' = backspace).
+#      KILLCHAR        Terminal KILL character ('\025' = CTRL/U).
+#      UMASK           Default "umask" value.
+#
+# The ERASECHAR and KILLCHAR are used only on System V machines.
+# 
+# UMASK is the default umask value for pam_umask and is used by
+# useradd and newusers to set the mode of the new home directories.
+# 022 is the "historical" value in Debian for UMASK
+# 027, or even 077, could be considered better for privacy
+# There is no One True Answer here : each sysadmin must make up his/her
+# mind.
+#
+# If USERGROUPS_ENAB is set to "yes", that will modify this UMASK default value
+# for private user groups, i. e. the uid is the same as gid, and username is
+# the same as the primary group name: for these, the user permissions will be
+# used as group permissions, e. g. 022 will become 002.
+#
+# Prefix these values with "0" to get octal, "0x" to get hexadecimal.
+#
+ERASECHAR      0177
+KILLCHAR       025
+UMASK          022
+
+#
+# Password aging controls:
+#
+#      PASS_MAX_DAYS   Maximum number of days a password may be used.
+#      PASS_MIN_DAYS   Minimum number of days allowed between password changes.
+#      PASS_WARN_AGE   Number of days warning given before a password expires.
+#
+PASS_MAX_DAYS  99999
+PASS_MIN_DAYS  0
+PASS_WARN_AGE  7
+
+#
+# Min/max values for automatic uid selection in useradd
+#
+UID_MIN                         1000
+UID_MAX                        60000
+# System accounts
+#SYS_UID_MIN             100
+#SYS_UID_MAX             999
+
+#
+# Min/max values for automatic gid selection in groupadd
+#
+GID_MIN                         1000
+GID_MAX                        60000
+# System accounts
+#SYS_GID_MIN             100
+#SYS_GID_MAX             999
+
+#
+# Max number of login retries if password is bad. This will most likely be
+# overriden by PAM, since the default pam_unix module has it's own built
+# in of 3 retries. However, this is a safe fallback in case you are using
+# an authentication module that does not enforce PAM_MAXTRIES.
+#
+LOGIN_RETRIES          5
+
+#
+# Max time in seconds for login
+#
+LOGIN_TIMEOUT          60
+
+#
+# Which fields may be changed by regular users using chfn - use
+# any combination of letters "frwh" (full name, room number, work
+# phone, home phone).  If not defined, no changes are allowed.
+# For backward compatibility, "yes" = "rwh" and "no" = "frwh".
+# 
+CHFN_RESTRICT          rwh
+
+#
+# Should login be allowed if we can't cd to the home directory?
+# Default in no.
+#
+DEFAULT_HOME   yes
+
+#
+# If defined, this command is run when removing a user.
+# It should remove any at/cron/print jobs etc. owned by
+# the user to be removed (passed as the first argument).
+#
+#USERDEL_CMD   /usr/sbin/userdel_local
+
+#
+# Enable setting of the umask group bits to be the same as owner bits
+# (examples: 022 -> 002, 077 -> 007) for non-root users, if the uid is
+# the same as gid, and username is the same as the primary group name.
+#
+# If set to yes, userdel will remove the user's group if it contains no
+# more members, and useradd will create by default a group with the name
+# of the user.
+#
+USERGROUPS_ENAB yes
+
+#
+# Instead of the real user shell, the program specified by this parameter
+# will be launched, although its visible name (argv[0]) will be the shell's.
+# The program may do whatever it wants (logging, additional authentification,
+# banner, ...) before running the actual shell.
+#
+# FAKE_SHELL /bin/fakeshell
+
+#
+# If defined, either full pathname of a file containing device names or
+# a ":" delimited list of device names.  Root logins will be allowed only
+# upon these devices.
+#
+# This variable is used by login and su.
+#
+#CONSOLE       /etc/consoles
+#CONSOLE       console:tty01:tty02:tty03:tty04
+
+#
+# List of groups to add to the user's supplementary group set
+# when logging in on the console (as determined by the CONSOLE
+# setting).  Default is none.
+#
+# Use with caution - it is possible for users to gain permanent
+# access to these groups, even when not logged in on the console.
+# How to do it is left as an exercise for the reader...
+#
+# This variable is used by login and su.
+#
+#CONSOLE_GROUPS                floppy:audio:cdrom
+
+#
+# If set to "yes", new passwords will be encrypted using the MD5-based
+# algorithm compatible with the one used by recent releases of FreeBSD.
+# It supports passwords of unlimited length and longer salt strings.
+# Set to "no" if you need to copy encrypted passwords to other systems
+# which don't understand the new algorithm.  Default is "no".
+#
+# This variable is deprecated. You should use ENCRYPT_METHOD.
+#
+#MD5_CRYPT_ENAB        no
+
+#
+# If set to MD5 , MD5-based algorithm will be used for encrypting password
+# If set to SHA256, SHA256-based algorithm will be used for encrypting password
+# If set to SHA512, SHA512-based algorithm will be used for encrypting password
+# If set to DES, DES-based algorithm will be used for encrypting password (default)
+# Overrides the MD5_CRYPT_ENAB option
+#
+# Note: It is recommended to use a value consistent with
+# the PAM modules configuration.
+#
+ENCRYPT_METHOD SHA512
+
+#
+# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512.
+#
+# Define the number of SHA rounds.
+# With a lot of rounds, it is more difficult to brute forcing the password.
+# But note also that it more CPU resources will be needed to authenticate
+# users.
+#
+# If not specified, the libc will choose the default number of rounds (5000).
+# The values must be inside the 1000-999999999 range.
+# If only one of the MIN or MAX values is set, then this value will be used.
+# If MIN > MAX, the highest value will be used.
+#
+# SHA_CRYPT_MIN_ROUNDS 5000
+# SHA_CRYPT_MAX_ROUNDS 5000
+
+################# OBSOLETED BY PAM ##############
+#                                              #
+# These options are now handled by PAM. Please #
+# edit the appropriate file in /etc/pam.d/ to  #
+# enable the equivelants of them.
+#
+###############
+
+#MOTD_FILE
+#DIALUPS_CHECK_ENAB
+#LASTLOG_ENAB
+#MAIL_CHECK_ENAB
+#OBSCURE_CHECKS_ENAB
+#PORTTIME_CHECKS_ENAB
+#SU_WHEEL_ONLY
+#CRACKLIB_DICTPATH
+#PASS_CHANGE_TRIES
+#PASS_ALWAYS_WARN
+#ENVIRON_FILE
+#NOLOGINS_FILE
+#ISSUE_FILE
+#PASS_MIN_LEN
+#PASS_MAX_LEN
+#ULIMIT
+#ENV_HZ
+#CHFN_AUTH
+#CHSH_AUTH
+#FAIL_DELAY
+
+################# OBSOLETED #######################
+#                                                #
+# These options are no more handled by shadow.    #
+#                                                 #
+# Shadow utilities will display a warning if they #
+# still appear.                                   #
+#                                                 #
+###################################################
+
+# CLOSE_SESSIONS
+# LOGIN_STRING
+# NO_PASSWORD_CONSOLE
+# QMAIL_DIR
+
+
+
diff --git a/etc/logrotate.conf b/etc/logrotate.conf
new file mode 100644 (file)
index 0000000..19eefe1
--- /dev/null
@@ -0,0 +1,24 @@
+# see "man logrotate" for details
+# rotate log files weekly
+weekly
+
+# use the adm group by default, since this is the owning group
+# of /var/log/syslog.
+su root adm
+
+# keep 4 weeks worth of backlogs
+rotate 4
+
+# create new (empty) log files after rotating old ones
+create
+
+# use date as a suffix of the rotated file
+#dateext
+
+# uncomment this if you want your log files compressed
+#compress
+
+# packages drop log rotation information into this directory
+include /etc/logrotate.d
+
+# system-specific logs may be also be configured here.
diff --git a/etc/logrotate.d/alternatives b/etc/logrotate.d/alternatives
new file mode 100644 (file)
index 0000000..41c8a9c
--- /dev/null
@@ -0,0 +1,9 @@
+/var/log/alternatives.log {
+       monthly
+       rotate 12
+       compress
+       delaycompress
+       missingok
+       notifempty
+       create 644 root root
+}
diff --git a/etc/logrotate.d/apport b/etc/logrotate.d/apport
new file mode 100644 (file)
index 0000000..e255fea
--- /dev/null
@@ -0,0 +1,9 @@
+/var/log/apport.log {
+       daily
+       rotate 7
+       delaycompress
+       compress
+       notifempty
+       missingok
+}
+
diff --git a/etc/logrotate.d/apt b/etc/logrotate.d/apt
new file mode 100644 (file)
index 0000000..9a6e5d1
--- /dev/null
@@ -0,0 +1,16 @@
+/var/log/apt/term.log {
+  rotate 12
+  monthly
+  compress
+  missingok
+  notifempty
+}
+
+/var/log/apt/history.log {
+  rotate 12
+  monthly
+  compress
+  missingok
+  notifempty
+}
+
diff --git a/etc/logrotate.d/bootlog b/etc/logrotate.d/bootlog
new file mode 100644 (file)
index 0000000..9be1a64
--- /dev/null
@@ -0,0 +1,8 @@
+/var/log/boot.log
+{
+    missingok
+    daily
+    copytruncate
+    rotate 7
+    notifempty
+}
diff --git a/etc/logrotate.d/btmp b/etc/logrotate.d/btmp
new file mode 100644 (file)
index 0000000..0aa1ae1
--- /dev/null
@@ -0,0 +1,7 @@
+# no packages own btmp -- we'll rotate it here
+/var/log/btmp {
+    missingok
+    monthly
+    create 0660 root utmp
+    rotate 1
+}
diff --git a/etc/logrotate.d/certbot b/etc/logrotate.d/certbot
new file mode 100644 (file)
index 0000000..05caa95
--- /dev/null
@@ -0,0 +1,6 @@
+/var/log/letsencrypt/*.log {
+    rotate 12
+    weekly
+    compress
+    missingok
+}
\ No newline at end of file
diff --git a/etc/logrotate.d/dpkg b/etc/logrotate.d/dpkg
new file mode 100644 (file)
index 0000000..cf36f08
--- /dev/null
@@ -0,0 +1,9 @@
+/var/log/dpkg.log {
+       monthly
+       rotate 12
+       compress
+       delaycompress
+       missingok
+       notifempty
+       create 644 root root
+}
diff --git a/etc/logrotate.d/nginx b/etc/logrotate.d/nginx
new file mode 100644 (file)
index 0000000..423c6ad
--- /dev/null
@@ -0,0 +1,18 @@
+/var/log/nginx/*.log {
+       daily
+       missingok
+       rotate 14
+       compress
+       delaycompress
+       notifempty
+       create 0640 www-data adm
+       sharedscripts
+       prerotate
+               if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
+                       run-parts /etc/logrotate.d/httpd-prerotate; \
+               fi \
+       endscript
+       postrotate
+               invoke-rc.d nginx rotate >/dev/null 2>&1
+       endscript
+}
diff --git a/etc/logrotate.d/postgresql-common b/etc/logrotate.d/postgresql-common
new file mode 100644 (file)
index 0000000..0cbf10a
--- /dev/null
@@ -0,0 +1,10 @@
+/var/log/postgresql/*.log {
+       weekly
+       rotate 10
+       copytruncate
+       delaycompress
+       compress
+       notifempty
+       missingok
+       su root root
+}
diff --git a/etc/logrotate.d/rsyslog b/etc/logrotate.d/rsyslog
new file mode 100644 (file)
index 0000000..a69d4e5
--- /dev/null
@@ -0,0 +1,37 @@
+/var/log/syslog
+{
+       rotate 7
+       daily
+       missingok
+       notifempty
+       delaycompress
+       compress
+       postrotate
+               /usr/lib/rsyslog/rsyslog-rotate
+       endscript
+}
+
+/var/log/mail.info
+/var/log/mail.warn
+/var/log/mail.err
+/var/log/mail.log
+/var/log/daemon.log
+/var/log/kern.log
+/var/log/auth.log
+/var/log/user.log
+/var/log/lpr.log
+/var/log/cron.log
+/var/log/debug
+/var/log/messages
+{
+       rotate 4
+       weekly
+       missingok
+       notifempty
+       compress
+       delaycompress
+       sharedscripts
+       postrotate
+               /usr/lib/rsyslog/rsyslog-rotate
+       endscript
+}
diff --git a/etc/logrotate.d/ubuntu-advantage-tools b/etc/logrotate.d/ubuntu-advantage-tools
new file mode 100644 (file)
index 0000000..7c64857
--- /dev/null
@@ -0,0 +1,12 @@
+# use the root group by default, since this is the owning group
+# of /var/log/ubuntu-advantage*.log files.
+/var/log/ubuntu-advantage*.log {
+    su root root
+    create 0644 root root
+    rotate 6
+    monthly
+    compress
+    delaycompress
+    missingok
+    notifempty
+}
diff --git a/etc/logrotate.d/ufw b/etc/logrotate.d/ufw
new file mode 100644 (file)
index 0000000..560f7a5
--- /dev/null
@@ -0,0 +1,13 @@
+/var/log/ufw.log
+{
+       rotate 4
+       weekly
+       missingok
+       notifempty
+       compress
+       delaycompress
+       sharedscripts
+       postrotate
+               invoke-rc.d rsyslog rotate >/dev/null 2>&1 || true
+       endscript
+}
diff --git a/etc/logrotate.d/unattended-upgrades b/etc/logrotate.d/unattended-upgrades
new file mode 100644 (file)
index 0000000..8393767
--- /dev/null
@@ -0,0 +1,10 @@
+/var/log/unattended-upgrades/unattended-upgrades.log 
+/var/log/unattended-upgrades/unattended-upgrades-dpkg.log
+/var/log/unattended-upgrades/unattended-upgrades-shutdown.log
+{
+  rotate 6
+  monthly
+  compress
+  missingok
+  notifempty
+}
diff --git a/etc/logrotate.d/wtmp b/etc/logrotate.d/wtmp
new file mode 100644 (file)
index 0000000..cc8a151
--- /dev/null
@@ -0,0 +1,8 @@
+# no packages own wtmp -- we'll rotate it here
+/var/log/wtmp {
+    missingok
+    monthly
+    create 0664 root utmp
+    minsize 1M
+    rotate 1
+}
diff --git a/etc/lsb-release b/etc/lsb-release
new file mode 100644 (file)
index 0000000..d68631b
--- /dev/null
@@ -0,0 +1,4 @@
+DISTRIB_ID=Ubuntu
+DISTRIB_RELEASE=20.04
+DISTRIB_CODENAME=focal
+DISTRIB_DESCRIPTION="Ubuntu 20.04.4 LTS"
diff --git a/etc/ltrace.conf b/etc/ltrace.conf
new file mode 100644 (file)
index 0000000..8f83986
--- /dev/null
@@ -0,0 +1,543 @@
+; ltrace.conf
+;
+; ~/.ltrace.conf will also be read, if it exists. The -F option may be
+; used to suppress the automatic inclusion of both this file and
+; ~/.ltrace.conf, and load a different config file or config files
+; instead.
+;
+; See ltrace.conf(5) for description of syntax of this file.
+
+; arpa/inet.h
+typedef in_addr = struct(hex(uint));
+int inet_aton(string, +in_addr*);
+hex(uint) inet_addr(string);
+hex(uint) inet_network(string);
+string inet_ntoa(in_addr);
+in_addr inet_makeaddr(hex(int), hex(int));
+hex(uint) inet_lnaof(in_addr);
+hex(uint) inet_netof(in_addr);
+
+; bfd.h
+void bfd_init();
+int bfd_set_default_target(string);
+addr bfd_scan_vma(string, addr, int);
+addr bfd_openr(string,string);
+int bfd_check_format(addr,int);
+
+; ctype.h
+char tolower(char);
+char toupper(char);
+addr __ctype_b_loc();
+addr __ctype_tolower_loc();
+addr __ctype_toupper_loc();
+ulong __ctype_get_mb_cur_max();
+
+; curses.h
+int waddch(addr, char);
+int mvprintw(int, int, format);
+int wmove(addr, int, int);
+int waddnstr(addr, string, int);
+string tgoto(string, int, int);
+
+; dirent.h
+int closedir(addr);
+addr opendir(string);
+addr readdir(addr);
+addr readdir64(addr);
+
+; dlfcn.h
+addr  dlopen(string, int);
+string dlerror();
+addr  dlsym(addr, string);
+int dlclose(addr);
+
+; errno.h
+addr __errno_location();
+
+; fcntl.h
+int open(string,int,octal);            ; WARNING: 3rd argument may not be there
+int open64(string,int,octal);          ; WARNING: 3rd argument may not be there
+
+; fnmatch.h
+int fnmatch(string, string, int);
+
+; getopt.h
+int getopt_long(int,addr,string,addr,int*);
+int getopt_long_only(int,addr,string,addr,addr);
+
+; grp.h
+void endgrent();
+addr getgrnam(string);
+void setgrent();
+addr getgrent();
+
+; libintl.h
+string __dcgettext(string,string,int);
+string bindtextdomain(string, string);
+string textdomain(string);
+
+; libio.h
+char _IO_getc(file);
+int _IO_putc(char,file);
+
+; locale.h
+string setlocale(enum(LC_CTYPE=0, LC_NUMERIC=1, LC_TIME=2, LC_COLLATE=3, LC_MONETARY=4, LC_MESSAGES=5, LC_ALL=6, LC_PAPER=7, LC_NAME=8, LC_ADDRESS=9, LC_TELEPHONE=10, LC_MEASUREMENT=11, LC_IDENTIFICATION=12), string);
+
+; mcheck.h
+void mtrace();
+void muntrace();
+
+; mqueue.h
+int mq_open(string, int, octal, addr);  ; WARNING: 3rd and 4th arguments may not be there
+int mq_close(int);
+int mq_unlink(string);
+int mq_getattr(int, addr);
+int mq_setattr(int, addr, addr);
+int mq_notify(int, addr);
+int mq_send(int, string3, ulong, uint);
+int mq_timedsend(int, string3, ulong, uint, addr);
+long mq_receive(int, +string0, ulong, addr);
+long mq_timedreceive(int, +string0, ulong, addr, addr);
+
+; netdb.h
+void endhostent();
+void endnetent();
+void endnetgrent();
+void endprotoent();
+void endservent();
+void freeaddrinfo(addr);
+string gai_strerror(int);
+int getaddrinfo(string, string, addr, addr);
+addr gethostbyaddr(string, uint, int);
+addr gethostbyname(string);
+addr gethostent();
+int getnameinfo(addr, uint, string, uint, string, uint, uint);
+addr getnetbyaddr(uint, int);
+addr getnetbyname(string);
+addr getnetent();
+int getnetgrent(addr, addr, addr);
+addr getprotobyname(string);
+addr getprotobynumber(int);
+addr getprotoent();
+addr getservbyname(string, string);
+addr getservbyport(int, string);
+addr getservent();
+void herror(string);
+string hstrerror(int);
+int rcmd(addr, ushort, string, string, string, addr);
+int rcmd_af(addr, ushort, string, string, string, addr, int);
+int rexec(addr, int, string, string, string, addr);
+int rexec_af(addr, int, string, string, string, addr, int);
+int rresvport (addr);
+int rresvport_af (addr, int);
+int ruserok(string, int, string, string);
+int ruserok_af(string, int, string, string, int);
+void sethostent(int);
+void setnetent(int);
+int setnetgrent(string);
+void setprotoent(int);
+void setservent(int);
+
+; netinet/in.h
+uint ntohs(uint);
+
+; pcap.h
+string pcap_lookupdev(addr);
+addr pcap_open_live(string, int, int, int, addr);
+int pcap_snapshot(addr);
+int pcap_lookupnet(string, addr, addr, addr);
+int pcap_compile(addr, addr, string, int, addr);
+
+; pwd.h
+string getpass(string);
+void endpwent();
+addr getpwnam(string);
+void setpwent();
+
+; readline/readline.h
+string readline(string);
+
+; signal.h
+typedef signum = enum(SIGHUP=1, SIGINT=2, SIGQUIT=3, SIGILL=4, SIGTRAP=5, SIGABRT=6, SIGBUS=7, SIGFPE=8, SIGKILL=9, SIGUSR1=10, SIGSEGV=11, SIGUSR2=12, SIGPIPE=13, SIGALRM=14, SIGTERM=15, SIGSTKFLT=16, SIGCHLD=17, SIGCONT=18, SIGSTOP=19, SIGTSTP=20, SIGTTIN=21, SIGTTOU=22, SIGURG=23, SIGXCPU=24, SIGXFSZ=25, SIGVTALRM=26, SIGPROF=27, SIGWINCH=28, SIGIO=29, SIGPWR=30, SIGSYS=31, SIGRTMIN_0=32, SIGRTMIN_1=33, SIGRTMIN_2=34, SIGRTMIN_3=35, SIGRTMIN_4=36, SIGRTMIN_5=37, SIGRTMIN_6=38, SIGRTMIN_7=39, SIGRTMIN_8=40, SIGRTMIN_9=41, SIGRTMIN_10=42, SIGRTMIN_11=43, SIGRTMIN_12=44, SIGRTMIN_13=45, SIGRTMIN_14=46, SIGRTMIN_15=47, SIGRTMIN_16=48, SIGRTMIN_17=49, SIGRTMIN_18=50, SIGRTMIN_19=51, SIGRTMIN_20=52, SIGRTMIN_21=53, SIGRTMIN_22=54, SIGRTMIN_23=55, SIGRTMIN_24=56, SIGRTMIN_25=57, SIGRTMIN_26=58, SIGRTMIN_27=59, SIGRTMIN_28=60, SIGRTMIN_29=61, SIGRTMIN_30=62, SIGRTMIN_31=63);
+typedef sigset_t = bitvec(ulong);
+; elm3 should be flags
+typedef sigaction = struct(addr, sigset_t, hex(int), addr);
+int kill(int, signum);
+int sigemptyset(+sigset_t*);
+int sigaddset(+sigset_t*, signum);
+int sigdelset(+sigset_t*, signum);
+int sigfillset(+sigset_t*);
+int sigismember(sigset_t*, signum);
+addr signal(signum,addr);
+int sigaction(signum, sigaction*, +sigaction*);
+int sigprocmask(enum(SIG_BLOCK=1, SIG_UNBLOCK=2, SIG_SETMASK=3), sigset_t*, +sigset_t*);
+int sigpending(+sigset_t*);
+int sigsuspend(sigset_t*);
+int sigisemptyset(sigset_t*);
+int sigorset(+sigset_t*, sigset_t*, sigset_t*);
+int sigandset(+sigset_t*, sigset_t*, sigset_t*);
+
+; stdio.h
+int fclose(file);
+int feof(file);
+int ferror(file);
+int fflush(file);
+char fgetc(file);
+addr fgets(+string, int, file);
+int fileno(file);
+file fopen(string,string);
+file fopen64(string,string);
+int fprintf(file,format);
+int fputc(char,file);
+int fputs(string,file);
+ulong fread(addr,ulong,ulong,file);
+ulong fread_unlocked(addr,ulong,ulong,file);
+ulong fwrite(string,ulong,ulong,file);
+ulong fwrite_unlocked(string,ulong,ulong,file);
+int pclose(addr);
+void perror(string);
+addr popen(string, string);
+int printf(format);
+int puts(string);
+int remove(string);
+int snprintf(+string2,ulong,format);
+int sprintf(+string,format);
+string tempnam(string,string);
+int vfprintf(file,string,addr);
+int vsnprintf(+string2,ulong,string,addr);
+int setvbuf(file,addr,int,ulong);
+void setbuf(file,addr);
+void setbuffer(file,addr,ulong);
+void setlinebuf(file);
+int rename(string,string);
+
+; stdlib.h
+long __strtol_internal(string,addr,int);
+ulong __strtoul_internal(string,addr,int);
+int atexit(addr);
+addr bsearch(string, addr, ulong, ulong, addr);
+addr calloc(ulong, ulong);
+void exit(int);
+void free(addr);
+string getenv(string);
+int putenv(string);
+int setenv(string,string,int);
+void unsetenv(string);
+addr malloc(ulong);
+void qsort(addr,ulong,ulong,addr);
+int random();
+addr realloc(addr,ulong);
+void srandom(uint);
+int system(string);
+
+; string.h
+void bcopy(addr,addr,ulong);
+void bzero(addr,ulong);
+string basename(string);
+string index(string,char);
+addr memchr(string,char,ulong);
+addr memcpy(addr,string(array(char, arg3)*),ulong);
+addr memmove(addr,string(array(char, arg3)*),ulong);
+addr memset(addr,char,long);
+string rindex(string,char);
+addr stpcpy(addr,string);
+int strcasecmp(string, string);
+string strcat(string, string);
+string strchr(string,char);
+int strcoll(string,string);
+ulong strlen(string);
+int strcmp(string,string);
+addr strcpy(addr,string);
+addr strdup(string);
+string strerror(int);
+int strncmp(string,string,ulong);
+addr strncpy(addr,string3,ulong);
+string strrchr(string,char);
+string strsep(addr,string);
+ulong strspn(string,string);
+ulong strcspn(string,string);
+string strstr(string,string);
+string strtok(string, string);
+
+; sys/ioctl.h
+int ioctl(int, int, addr);
+
+; sys/socket.h
+int socket(int,int,int);
+
+; sys/stat.h
+int __fxstat(int,int,addr);
+int __xstat(int,string,addr);
+int __lxstat(int,string,addr);
+int __fxstat64(int,int,addr);
+int __xstat64(int,string,addr);
+int __lxstat64(int,string,addr);
+int chmod(string,octal);
+int fchmod(int,octal);
+int mkfifo(string,octal);
+octal umask(octal);
+
+; sys/utsname.h
+int uname(addr);
+
+; sys/vfs.h
+int statfs(string,addr);
+
+; syslog.h
+void closelog();
+void openlog(string,int,int);
+void syslog(int,format);
+
+; term.h
+int tputs(string, int, addr);
+
+; termios.h
+int tcgetattr(int,addr);
+int tcsetattr(int,int,addr);
+
+; time.h
+string ctime(addr);
+int gettimeofday(addr, addr);
+addr gmtime(addr);
+addr localtime(addr);
+ulong strftime(+string2,ulong,string,addr);
+long time(addr);
+
+; unistd.h
+void _exit(int);
+int access(string, int);
+uint alarm(uint);
+int chdir(string);
+int chown(string,int,int);
+int close(int);
+string crypt(string,string);
+int dup2(int,int);
+int execlp(string,string,addr,addr,addr);
+int execv(string,addr);
+int fchdir(int);
+int fork();
+int ftruncate(int,ulong);
+string2 getcwd(addr,ulong);
+int getdomainname(+string2,ulong);
+int geteuid();
+int getegid();
+int getgid();
+int gethostname(+string2,ulong);
+string getlogin();
+int getopt(int,addr,string);
+int getpid();
+int getppid();
+int getuid();
+int getpgrp();
+int setpgrp();
+int getpgid(int);
+int isatty(int);
+int link(string,string);
+int mkdir(string,octal);
+long read(int, +string[retval], ulong);
+int rmdir(string);
+int seteuid(uint);
+int setgid(int);
+int sethostname(+string2,ulong);
+int setpgid(int,int);
+int setreuid(uint, uint);
+int setuid(int);
+uint sleep(uint);
+int symlink(string,string);
+int sync();
+int truncate(string,ulong);
+string ttyname(int);
+int unlink(string);
+void usleep(uint);
+long write(int, string3, ulong);
+addr sbrk(long);
+int getpagesize();
+long lseek(int,long,int);
+int pipe(addr);
+
+; utmp.h
+void endutent();
+addr getutent();
+void setutent();
+
+; wchar.h
+int fwide(addr, int);
+
+; sys/wait.h
+int wait(addr);
+int waitpid(int,addr,int);
+
+; X11/Xlib.h
+void XCloseDisplay(addr);
+int XMapWindow(addr,addr);
+addr XOpenDisplay(string);
+
+; sys/acl.h
+int acl_add_perm(addr,uint);
+int acl_calc_mask(addr);
+int acl_clear_perms(addr);
+int acl_copy_entry(addr,addr);
+int acl_copy_ext(addr,addr,int);
+addr acl_copy_int(addr);
+int acl_create_entry(addr,addr);
+int acl_delete_def_file(string);
+int acl_delete_entry(addr,addr);
+int acl_delete_perm(addr,uint);
+addr acl_dup(addr);
+int acl_free(addr);
+addr acl_from_text(string);
+int acl_get_entry(addr,int,addr);
+addr acl_get_fd(int);
+addr acl_get_file(string,int);
+int acl_get_permset(addr,addr);
+addr acl_get_qualifier(addr);
+int acl_get_tag_type(addr,addr);
+addr acl_init(int);
+int acl_set_fd(int,addr);
+int acl_set_file(string,int,addr);
+int acl_set_permset(addr,addr);
+int acl_set_qualifier(addr,addr);
+int acl_set_tag_type(addr,int);
+int acl_size(addr);
+string acl_to_text(addr,addr);
+int acl_valid(addr);
+
+; acl/libacl.h
+int acl_check(addr,addr);
+int acl_cmp(addr,addr);
+int acl_entries(addr);
+int acl_equiv_mode(addr,addr);
+string acl_error(int);
+int acl_extended_fd(int);
+int acl_extended_file(string);
+addr acl_from_mode(octal);
+int acl_get_perm(addr,uint);
+string acl_to_any_text(addr,string,char,int);
+
+; other symbols not included above
+long a64l(string);
+string l64a(long);
+void abort();
+int abs(int);
+long labs(long);
+
+typedef mntent = struct(string, string, string, string, int, int);
+int addmntent(file, mntent*);
+int endmntent(file);
+int __endmntent(file);
+file setmntent(string,string);
+file __setmntent(string,string);
+mntent *getmntent(addr);
+mntent *getmntent_r(file, +mntent*, string, int);
+mntent *__getmntent_r(file, +mntent*, string, int);
+string hasmntopt(mntent*, string);
+
+; SYSCALLS
+addr  SYS_brk(addr);
+int   SYS_close(int);
+int   SYS_execve(string,addr,addr);
+void  SYS_exit(int);
+void  SYS_exit_group(int);
+int   SYS_fork();
+int   SYS_getcwd(+string2,ulong);
+int   SYS_getpid();
+;addr SYS_mmap(addr,ulong,int,int,int,long);
+int   SYS_munmap(addr,ulong);
+int   SYS_open(string,int,octal);
+int   SYS_personality(uint);
+long  SYS_read(int,+string0,ulong);
+int   SYS_stat(string,addr);
+octal SYS_umask(octal);
+int   SYS_uname(addr);
+long  SYS_write(int,string3,ulong);
+int   SYS_sync();
+int   SYS_setxattr(string,string,addr,uint,int);
+int   SYS_lsetxattr(string,string,addr,uint,int);
+int   SYS_fsetxattr(int,string,addr,uint,int);
+int   SYS_getxattr(string,string,addr,uint);
+int   SYS_lgetxattr(string,string,addr,uint);
+int   SYS_fgetxattr(int,string,addr,uint);
+int   SYS_listxattr(string,addr,uint);
+int   SYS_llistxattr(string,addr,uint);
+int   SYS_flistxattr(int,addr,uint);
+int   SYS_removexattr(string,string);
+int   SYS_lremovexattr(string,string);
+int   SYS_fremovexattr(int,string);
+int   SYS_chdir(string);
+int   SYS_fchdir(int);
+int   SYS_chmod(string,octal);
+int   SYS_fchmod(int,octal);
+int   SYS_chown(string,int,int);
+int   SYS_fchown(int,int,int);
+int   SYS_lchown(string,int,int);
+int   SYS_chroot(string);
+int   SYS_dup(int);
+int   SYS_dup2(int,int);
+int   SYS_fdatasync(int);
+int   SYS_fsync(int);
+int   SYS_getpriority(int,int);
+int   SYS_setpriority(int,int,int);
+int   SYS_getrlimit(int,addr);
+int   SYS_setrlimit(int,addr);
+int   SYS_gettimeofday(addr,addr);
+int   SYS_settimeofday(addr,addr);
+int   SYS_setfsgid(int);
+int   SYS_setfsuid(int);
+int   SYS_getuid();
+int   SYS_setuid(int);
+int   SYS_getgid();
+int   SYS_setgid(int);
+int   SYS_getsid(int);
+int   SYS_setsid(int);
+int   SYS_setreuid(int,int);
+int   SYS_setregid(int,int);
+int   SYS_geteuid();
+int   SYS_getegid();
+int   SYS_setpgid(int,int);
+int   SYS_getresuid(addr,addr,addr);
+int   SYS_setresuid(int,int,int);
+int   SYS_getresgid(addr,addr,addr);
+int   SYS_setresgid(int,int,int);
+int   SYS_kill(int,int);
+int   SYS_link(string,string);
+int   SYS_madvise(addr,ulong,int);
+int   SYS_mkdir(string,octal);
+int   SYS_mknod(string,octal,int);
+int   SYS_msync(addr,ulong,int);
+int   SYS_nice(int);
+int   SYS_poll(addr,uint,int);
+int   SYS_readdir(uint,addr,uint);
+int   SYS_readlink(string,string,ulong);
+int   SYS_reboot(int,int,int,addr);
+int   SYS_rename(string,string);
+int   SYS_rmdir(string);
+int   SYS_sigaltstack(addr,addr);
+int   SYS_statfs(string,addr);
+int   SYS_fstatfs(int,addr);
+int   SYS_fstat(int,addr);
+int   SYS_lstat(string,addr);
+int   SYS_stime(addr);
+int   SYS_symlink(string, string);
+int   SYS_sysinfo(addr);
+int   SYS_syslog(int,string,int);
+int   SYS_truncate(string,long);
+int   SYS_ftruncate(int,long);
+int   SYS_mount(string,string,string,ulong,addr);
+int   SYS_umount(string);
+int   SYS_umount2(string,int);
+int   SYS_unlink(string);
+int   SYS_utime(string,addr);
+long  SYS_lseek(int,long,int);
+addr  SYS_signal(int,addr);
+int   SYS_sigaction(int,addr,addr);
+int   SYS_pause();
+int   SYS_sigpending(addr);
+int   SYS_sigprocmask(int,addr,addr);
+int   SYS_sigqueue(int,int,addr);
+int   SYS_sigsuspend(addr);
+int   SYS_wait(addr);
+int   SYS_waitpid(int,addr,int);
+ulong SYS_readv(int,addr,int);
+ulong SYS_writev(int,addr,int);
+int   SYS_mprotect(addr,int,int);
+int   SYS_access(string,octal);
diff --git a/etc/lvm/lvm.conf b/etc/lvm/lvm.conf
new file mode 100644 (file)
index 0000000..e3a4984
--- /dev/null
@@ -0,0 +1,2282 @@
+# This is an example configuration file for the LVM2 system.
+# It contains the default settings that would be used if there was no
+# /etc/lvm/lvm.conf file.
+#
+# Refer to 'man lvm.conf' for further information including the file layout.
+#
+# Refer to 'man lvm.conf' for information about how settings configured in
+# this file are combined with built-in values and command line options to
+# arrive at the final values used by LVM.
+#
+# Refer to 'man lvmconfig' for information about displaying the built-in
+# and configured values used by LVM.
+#
+# If a default value is set in this file (not commented out), then a
+# new version of LVM using this file will continue using that value,
+# even if the new version of LVM changes the built-in default value.
+#
+# To put this file in a different directory and override /etc/lvm set
+# the environment variable LVM_SYSTEM_DIR before running the tools.
+#
+# N.B. Take care that each setting only appears once if uncommenting
+# example settings in this file.
+
+
+# Configuration section config.
+# How LVM configuration settings are handled.
+config {
+
+       # Configuration option config/checks.
+       # If enabled, any LVM configuration mismatch is reported.
+       # This implies checking that the configuration key is understood by
+       # LVM and that the value of the key is the proper type. If disabled,
+       # any configuration mismatch is ignored and the default value is used
+       # without any warning (a message about the configuration key not being
+       # found is issued in verbose mode only).
+       checks = 1
+
+       # Configuration option config/abort_on_errors.
+       # Abort the LVM process if a configuration mismatch is found.
+       abort_on_errors = 0
+
+       # Configuration option config/profile_dir.
+       # Directory where LVM looks for configuration profiles.
+       profile_dir = "/etc/lvm/profile"
+}
+
+# Configuration section devices.
+# How LVM uses block devices.
+devices {
+
+       # Configuration option devices/dir.
+       # Directory in which to create volume group device nodes.
+       # Commands also accept this as a prefix on volume group names.
+       # This configuration option is advanced.
+       dir = "/dev"
+
+       # Configuration option devices/scan.
+       # Directories containing device nodes to use with LVM.
+       # This configuration option is advanced.
+       scan = [ "/dev" ]
+
+       # Configuration option devices/obtain_device_list_from_udev.
+       # Obtain the list of available devices from udev.
+       # This avoids opening or using any inapplicable non-block devices or
+       # subdirectories found in the udev directory. Any device node or
+       # symlink not managed by udev in the udev directory is ignored. This
+       # setting applies only to the udev-managed device directory; other
+       # directories will be scanned fully. LVM needs to be compiled with
+       # udev support for this setting to apply.
+       obtain_device_list_from_udev = 1
+
+       # Configuration option devices/external_device_info_source.
+       # Select an external device information source.
+       # Some information may already be available in the system and LVM can
+       # use this information to determine the exact type or use of devices it
+       # processes. Using an existing external device information source can
+       # speed up device processing as LVM does not need to run its own native
+       # routines to acquire this information. For example, this information
+       # is used to drive LVM filtering like MD component detection, multipath
+       # component detection, partition detection and others.
+       # 
+       # Accepted values:
+       #   none
+       #     No external device information source is used.
+       #   udev
+       #     Reuse existing udev database records. Applicable only if LVM is
+       #     compiled with udev support.
+       # 
+       external_device_info_source = "none"
+
+       # Configuration option devices/hints.
+       # Use a local file to remember which devices have PVs on them.
+       # Some commands will use this as an optimization to reduce device
+       # scanning, and will only scan the listed PVs. Removing the hint file
+       # will cause lvm to generate a new one. Disable hints if PVs will
+       # be copied onto devices using non-lvm commands, like dd.
+       # 
+       # Accepted values:
+       #   all
+       #     Use all hints.
+       #   none
+       #     Use no hints.
+       # 
+       # This configuration option has an automatic default value.
+       # hints = "all"
+
+       # Configuration option devices/preferred_names.
+       # Select which path name to display for a block device.
+       # If multiple path names exist for a block device, and LVM needs to
+       # display a name for the device, the path names are matched against
+       # each item in this list of regular expressions. The first match is
+       # used. Try to avoid using undescriptive /dev/dm-N names, if present.
+       # If no preferred name matches, or if preferred_names are not defined,
+       # the following built-in preferences are applied in order until one
+       # produces a preferred name:
+       # Prefer names with path prefixes in the order of:
+       # /dev/mapper, /dev/disk, /dev/dm-*, /dev/block.
+       # Prefer the name with the least number of slashes.
+       # Prefer a name that is a symlink.
+       # Prefer the path with least value in lexicographical order.
+       # 
+       # Example
+       # preferred_names = [ "^/dev/mpath/", "^/dev/mapper/mpath", "^/dev/[hs]d" ]
+       # 
+       # This configuration option does not have a default value defined.
+
+       # Configuration option devices/filter.
+       # Limit the block devices that are used by LVM commands.
+       # This is a list of regular expressions used to accept or reject block
+       # device path names. Each regex is delimited by a vertical bar '|'
+       # (or any character) and is preceded by 'a' to accept the path, or
+       # by 'r' to reject the path. The first regex in the list to match the
+       # path is used, producing the 'a' or 'r' result for the device.
+       # When multiple path names exist for a block device, if any path name
+       # matches an 'a' pattern before an 'r' pattern, then the device is
+       # accepted. If all the path names match an 'r' pattern first, then the
+       # device is rejected. Unmatching path names do not affect the accept
+       # or reject decision. If no path names for a device match a pattern,
+       # then the device is accepted. Be careful mixing 'a' and 'r' patterns,
+       # as the combination might produce unexpected results (test changes.)
+       # Run vgscan after changing the filter to regenerate the cache.
+       # 
+       # Example
+       # Accept every block device:
+       # filter = [ "a|.*|" ]
+       # Reject the cdrom drive:
+       # filter = [ "r|/dev/cdrom|" ]
+       # Work with just loopback devices, e.g. for testing:
+       # filter = [ "a|loop|", "r|.*|" ]
+       # Accept all loop devices and ide drives except hdc:
+       # filter = [ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
+       # Use anchors to be very specific:
+       # filter = [ "a|^/dev/hda8$|", "r|.*|" ]
+       # 
+       # This configuration option has an automatic default value.
+       # filter = [ "a|.*|" ]
+
+       # Configuration option devices/global_filter.
+       # Limit the block devices that are used by LVM system components.
+       # Because devices/filter may be overridden from the command line, it is
+       # not suitable for system-wide device filtering, e.g. udev.
+       # Use global_filter to hide devices from these LVM system components.
+       # The syntax is the same as devices/filter. Devices rejected by
+       # global_filter are not opened by LVM.
+       # This configuration option has an automatic default value.
+       # global_filter = [ "a|.*|" ]
+
+       # Configuration option devices/types.
+       # List of additional acceptable block device types.
+       # These are of device type names from /proc/devices, followed by the
+       # maximum number of partitions.
+       # 
+       # Example
+       # types = [ "fd", 16 ]
+       # 
+       # This configuration option is advanced.
+       # This configuration option does not have a default value defined.
+
+       # Configuration option devices/sysfs_scan.
+       # Restrict device scanning to block devices appearing in sysfs.
+       # This is a quick way of filtering out block devices that are not
+       # present on the system. sysfs must be part of the kernel and mounted.)
+       sysfs_scan = 1
+
+       # Configuration option devices/scan_lvs.
+       # Scan LVM LVs for layered PVs, allowing LVs to be used as PVs.
+       # When 1, LVM will detect PVs layered on LVs, and caution must be
+       # taken to avoid a host accessing a layered VG that may not belong
+       # to it, e.g. from a guest image. This generally requires excluding
+       # the LVs with device filters. Also, when this setting is enabled,
+       # every LVM command will scan every active LV on the system (unless
+       # filtered), which can cause performance problems on systems with
+       # many active LVs. When this setting is 0, LVM will not detect or
+       # use PVs that exist on LVs, and will not allow a PV to be created on
+       # an LV. The LVs are ignored using a built in device filter that
+       # identifies and excludes LVs.
+       scan_lvs = 0
+
+       # Configuration option devices/multipath_component_detection.
+       # Ignore devices that are components of DM multipath devices.
+       multipath_component_detection = 1
+
+       # Configuration option devices/md_component_detection.
+       # Enable detection and exclusion of MD component devices.
+       # An MD component device is a block device that MD uses as part
+       # of a software RAID virtual device. When an LVM PV is created
+       # on an MD device, LVM must only use the top level MD device as
+       # the PV, and should ignore the underlying component devices.
+       # In cases where the MD superblock is located at the end of the
+       # component devices, it is more difficult for LVM to consistently
+       # identify an MD component, see the md_component_checks setting.
+       md_component_detection = 1
+
+       # Configuration option devices/md_component_checks.
+       # The checks LVM should use to detect MD component devices.
+       # MD component devices are block devices used by MD software RAID.
+       # 
+       # Accepted values:
+       #   auto
+       #     LVM will skip scanning the end of devices when it has other
+       #     indications that the device is not an MD component.
+       #   start
+       #     LVM will only scan the start of devices for MD superblocks.
+       #     This does not incur extra I/O by LVM.
+       #   full
+       #     LVM will scan the start and end of devices for MD superblocks.
+       #     This requires an extra read at the end of devices.
+       # 
+       # This configuration option has an automatic default value.
+       # md_component_checks = "auto"
+
+       # Configuration option devices/fw_raid_component_detection.
+       # Ignore devices that are components of firmware RAID devices.
+       # LVM must use an external_device_info_source other than none for this
+       # detection to execute.
+       fw_raid_component_detection = 0
+
+       # Configuration option devices/md_chunk_alignment.
+       # Align the start of a PV data area with md device's stripe-width.
+       # This applies if a PV is placed directly on an md device.
+       # default_data_alignment will be overriden if it is not aligned
+       # with the value detected for this setting.
+       # This setting is overriden by data_alignment_detection,
+       # data_alignment, and the --dataalignment option.
+       md_chunk_alignment = 1
+
+       # Configuration option devices/default_data_alignment.
+       # Align the start of a PV data area with this number of MiB.
+       # Set to 1 for 1MiB, 2 for 2MiB, etc. Set to 0 to disable.
+       # This setting is overriden by data_alignment and the --dataalignment
+       # option.
+       # This configuration option has an automatic default value.
+       # default_data_alignment = 1
+
+       # Configuration option devices/data_alignment_detection.
+       # Align the start of a PV data area with sysfs io properties.
+       # The start of a PV data area will be a multiple of minimum_io_size or
+       # optimal_io_size exposed in sysfs. minimum_io_size is the smallest
+       # request the device can perform without incurring a read-modify-write
+       # penalty, e.g. MD chunk size. optimal_io_size is the device's
+       # preferred unit of receiving I/O, e.g. MD stripe width.
+       # minimum_io_size is used if optimal_io_size is undefined (0).
+       # If md_chunk_alignment is enabled, that detects the optimal_io_size.
+       # default_data_alignment and md_chunk_alignment will be overriden
+       # if they are not aligned with the value detected for this setting.
+       # This setting is overriden by data_alignment and the --dataalignment
+       # option.
+       data_alignment_detection = 1
+
+       # Configuration option devices/data_alignment.
+       # Align the start of a PV data area with this number of KiB.
+       # When non-zero, this setting overrides default_data_alignment.
+       # Set to 0 to disable, in which case default_data_alignment
+       # is used to align the first PE in units of MiB.
+       # This setting is overriden by the --dataalignment option.
+       data_alignment = 0
+
+       # Configuration option devices/data_alignment_offset_detection.
+       # Shift the start of an aligned PV data area based on sysfs information.
+       # After a PV data area is aligned, it will be shifted by the
+       # alignment_offset exposed in sysfs. This offset is often 0, but may
+       # be non-zero. Certain 4KiB sector drives that compensate for windows
+       # partitioning will have an alignment_offset of 3584 bytes (sector 7
+       # is the lowest aligned logical block, the 4KiB sectors start at
+       # LBA -1, and consequently sector 63 is aligned on a 4KiB boundary).
+       # This setting is overriden by the --dataalignmentoffset option.
+       data_alignment_offset_detection = 1
+
+       # Configuration option devices/ignore_suspended_devices.
+       # Ignore DM devices that have I/O suspended while scanning devices.
+       # Otherwise, LVM waits for a suspended device to become accessible.
+       # This should only be needed in recovery situations.
+       ignore_suspended_devices = 0
+
+       # Configuration option devices/ignore_lvm_mirrors.
+       # Do not scan 'mirror' LVs to avoid possible deadlocks.
+       # This avoids possible deadlocks when using the 'mirror' segment type.
+       # This setting determines whether LVs using the 'mirror' segment type
+       # are scanned for LVM labels. This affects the ability of mirrors to
+       # be used as physical volumes. If this setting is enabled, it is
+       # impossible to create VGs on top of mirror LVs, i.e. to stack VGs on
+       # mirror LVs. If this setting is disabled, allowing mirror LVs to be
+       # scanned, it may cause LVM processes and I/O to the mirror to become
+       # blocked. This is due to the way that the mirror segment type handles
+       # failures. In order for the hang to occur, an LVM command must be run
+       # just after a failure and before the automatic LVM repair process
+       # takes place, or there must be failures in multiple mirrors in the
+       # same VG at the same time with write failures occurring moments before
+       # a scan of the mirror's labels. The 'mirror' scanning problems do not
+       # apply to LVM RAID types like 'raid1' which handle failures in a
+       # different way, making them a better choice for VG stacking.
+       ignore_lvm_mirrors = 1
+
+       # Configuration option devices/require_restorefile_with_uuid.
+       # Allow use of pvcreate --uuid without requiring --restorefile.
+       require_restorefile_with_uuid = 1
+
+       # Configuration option devices/pv_min_size.
+       # Minimum size in KiB of block devices which can be used as PVs.
+       # In a clustered environment all nodes must use the same value.
+       # Any value smaller than 512KiB is ignored. The previous built-in
+       # value was 512.
+       pv_min_size = 2048
+
+       # Configuration option devices/issue_discards.
+       # Issue discards to PVs that are no longer used by an LV.
+       # Discards are sent to an LV's underlying physical volumes when the LV
+       # is no longer using the physical volumes' space, e.g. lvremove,
+       # lvreduce. Discards inform the storage that a region is no longer
+       # used. Storage that supports discards advertise the protocol-specific
+       # way discards should be issued by the kernel (TRIM, UNMAP, or
+       # WRITE SAME with UNMAP bit set). Not all storage will support or
+       # benefit from discards, but SSDs and thinly provisioned LUNs
+       # generally do. If enabled, discards will only be issued if both the
+       # storage and kernel provide support.
+       issue_discards = 1
+
+       # Configuration option devices/allow_changes_with_duplicate_pvs.
+       # Allow VG modification while a PV appears on multiple devices.
+       # When a PV appears on multiple devices, LVM attempts to choose the
+       # best device to use for the PV. If the devices represent the same
+       # underlying storage, the choice has minimal consequence. If the
+       # devices represent different underlying storage, the wrong choice
+       # can result in data loss if the VG is modified. Disabling this
+       # setting is the safest option because it prevents modifying a VG
+       # or activating LVs in it while a PV appears on multiple devices.
+       # Enabling this setting allows the VG to be used as usual even with
+       # uncertain devices.
+       allow_changes_with_duplicate_pvs = 0
+
+       # Configuration option devices/allow_mixed_block_sizes.
+       # Allow PVs in the same VG with different logical block sizes.
+       # When allowed, the user is responsible to ensure that an LV is
+       # using PVs with matching block sizes when necessary.
+       allow_mixed_block_sizes = 0
+}
+
+# Configuration section allocation.
+# How LVM selects space and applies properties to LVs.
+allocation {
+
+       # Configuration option allocation/cling_tag_list.
+       # Advise LVM which PVs to use when searching for new space.
+       # When searching for free space to extend an LV, the 'cling' allocation
+       # policy will choose space on the same PVs as the last segment of the
+       # existing LV. If there is insufficient space and a list of tags is
+       # defined here, it will check whether any of them are attached to the
+       # PVs concerned and then seek to match those PV tags between existing
+       # extents and new extents.
+       # 
+       # Example
+       # Use the special tag "@*" as a wildcard to match any PV tag:
+       # cling_tag_list = [ "@*" ]
+       # LVs are mirrored between two sites within a single VG, and
+       # PVs are tagged with either @site1 or @site2 to indicate where
+       # they are situated:
+       # cling_tag_list = [ "@site1", "@site2" ]
+       # 
+       # This configuration option does not have a default value defined.
+
+       # Configuration option allocation/maximise_cling.
+       # Use a previous allocation algorithm.
+       # Changes made in version 2.02.85 extended the reach of the 'cling'
+       # policies to detect more situations where data can be grouped onto
+       # the same disks. This setting can be used to disable the changes
+       # and revert to the previous algorithm.
+       maximise_cling = 1
+
+       # Configuration option allocation/use_blkid_wiping.
+       # Use blkid to detect and erase existing signatures on new PVs and LVs.
+       # The blkid library can detect more signatures than the native LVM
+       # detection code, but may take longer. LVM needs to be compiled with
+       # blkid wiping support for this setting to apply. LVM native detection
+       # code is currently able to recognize: MD device signatures,
+       # swap signature, and LUKS signatures. To see the list of signatures
+       # recognized by blkid, check the output of the 'blkid -k' command.
+       use_blkid_wiping = 1
+
+       # Configuration option allocation/wipe_signatures_when_zeroing_new_lvs.
+       # Look for and erase any signatures while zeroing a new LV.
+       # The --wipesignatures option overrides this setting.
+       # Zeroing is controlled by the -Z/--zero option, and if not specified,
+       # zeroing is used by default if possible. Zeroing simply overwrites the
+       # first 4KiB of a new LV with zeroes and does no signature detection or
+       # wiping. Signature wiping goes beyond zeroing and detects exact types
+       # and positions of signatures within the whole LV. It provides a
+       # cleaner LV after creation as all known signatures are wiped. The LV
+       # is not claimed incorrectly by other tools because of old signatures
+       # from previous use. The number of signatures that LVM can detect
+       # depends on the detection code that is selected (see
+       # use_blkid_wiping.) Wiping each detected signature must be confirmed.
+       # When this setting is disabled, signatures on new LVs are not detected
+       # or erased unless the --wipesignatures option is used directly.
+       wipe_signatures_when_zeroing_new_lvs = 1
+
+       # Configuration option allocation/mirror_logs_require_separate_pvs.
+       # Mirror logs and images will always use different PVs.
+       # The default setting changed in version 2.02.85.
+       mirror_logs_require_separate_pvs = 0
+
+       # Configuration option allocation/raid_stripe_all_devices.
+       # Stripe across all PVs when RAID stripes are not specified.
+       # If enabled, all PVs in the VG or on the command line are used for
+       # raid0/4/5/6/10 when the command does not specify the number of
+       # stripes to use.
+       # This was the default behaviour until release 2.02.162.
+       # This configuration option has an automatic default value.
+       # raid_stripe_all_devices = 0
+
+       # Configuration option allocation/cache_pool_metadata_require_separate_pvs.
+       # Cache pool metadata and data will always use different PVs.
+       cache_pool_metadata_require_separate_pvs = 0
+
+       # Configuration option allocation/cache_metadata_format.
+       # Sets default metadata format for new cache.
+       # 
+       # Accepted values:
+       #   0  Automatically detected best available format
+       #   1  Original format
+       #   2  Improved 2nd. generation format
+       # 
+       # This configuration option has an automatic default value.
+       # cache_metadata_format = 0
+
+       # Configuration option allocation/cache_mode.
+       # The default cache mode used for new cache.
+       # 
+       # Accepted values:
+       #   writethrough
+       #     Data blocks are immediately written from the cache to disk.
+       #   writeback
+       #     Data blocks are written from the cache back to disk after some
+       #     delay to improve performance.
+       # 
+       # This setting replaces allocation/cache_pool_cachemode.
+       # This configuration option has an automatic default value.
+       # cache_mode = "writethrough"
+
+       # Configuration option allocation/cache_policy.
+       # The default cache policy used for new cache volume.
+       # Since kernel 4.2 the default policy is smq (Stochastic multiqueue),
+       # otherwise the older mq (Multiqueue) policy is selected.
+       # This configuration option does not have a default value defined.
+
+       # Configuration section allocation/cache_settings.
+       # Settings for the cache policy.
+       # See documentation for individual cache policies for more info.
+       # This configuration section has an automatic default value.
+       # cache_settings {
+       # }
+
+       # Configuration option allocation/cache_pool_chunk_size.
+       # The minimal chunk size in KiB for cache pool volumes.
+       # Using a chunk_size that is too large can result in wasteful use of
+       # the cache, where small reads and writes can cause large sections of
+       # an LV to be mapped into the cache. However, choosing a chunk_size
+       # that is too small can result in more overhead trying to manage the
+       # numerous chunks that become mapped into the cache. The former is
+       # more of a problem than the latter in most cases, so the default is
+       # on the smaller end of the spectrum. Supported values range from
+       # 32KiB to 1GiB in multiples of 32.
+       # This configuration option does not have a default value defined.
+
+       # Configuration option allocation/cache_pool_max_chunks.
+       # The maximum number of chunks in a cache pool.
+       # For cache target v1.9 the recommended maximumm is 1000000 chunks.
+       # Using cache pool with more chunks may degrade cache performance.
+       # This configuration option does not have a default value defined.
+
+       # Configuration option allocation/thin_pool_metadata_require_separate_pvs.
+       # Thin pool metdata and data will always use different PVs.
+       thin_pool_metadata_require_separate_pvs = 0
+
+       # Configuration option allocation/thin_pool_zero.
+       # Thin pool data chunks are zeroed before they are first used.
+       # Zeroing with a larger thin pool chunk size reduces performance.
+       # This configuration option has an automatic default value.
+       # thin_pool_zero = 1
+
+       # Configuration option allocation/thin_pool_discards.
+       # The discards behaviour of thin pool volumes.
+       # 
+       # Accepted values:
+       #   ignore
+       #   nopassdown
+       #   passdown
+       # 
+       # This configuration option has an automatic default value.
+       # thin_pool_discards = "passdown"
+
+       # Configuration option allocation/thin_pool_chunk_size_policy.
+       # The chunk size calculation policy for thin pool volumes.
+       # 
+       # Accepted values:
+       #   generic
+       #     If thin_pool_chunk_size is defined, use it. Otherwise, calculate
+       #     the chunk size based on estimation and device hints exposed in
+       #     sysfs - the minimum_io_size. The chunk size is always at least
+       #     64KiB.
+       #   performance
+       #     If thin_pool_chunk_size is defined, use it. Otherwise, calculate
+       #     the chunk size for performance based on device hints exposed in
+       #     sysfs - the optimal_io_size. The chunk size is always at least
+       #     512KiB.
+       # 
+       # This configuration option has an automatic default value.
+       # thin_pool_chunk_size_policy = "generic"
+
+       # Configuration option allocation/thin_pool_chunk_size.
+       # The minimal chunk size in KiB for thin pool volumes.
+       # Larger chunk sizes may improve performance for plain thin volumes,
+       # however using them for snapshot volumes is less efficient, as it
+       # consumes more space and takes extra time for copying. When unset,
+       # lvm tries to estimate chunk size starting from 64KiB. Supported
+       # values are in the range 64KiB to 1GiB.
+       # This configuration option does not have a default value defined.
+
+       # Configuration option allocation/physical_extent_size.
+       # Default physical extent size in KiB to use for new VGs.
+       # This configuration option has an automatic default value.
+       # physical_extent_size = 4096
+
+       # Configuration option allocation/vdo_use_compression.
+       # Enables or disables compression when creating a VDO volume.
+       # Compression may be disabled if necessary to maximize performance
+       # or to speed processing of data that is unlikely to compress.
+       # This configuration option has an automatic default value.
+       # vdo_use_compression = 1
+
+       # Configuration option allocation/vdo_use_deduplication.
+       # Enables or disables deduplication when creating a VDO volume.
+       # Deduplication may be disabled in instances where data is not expected
+       # to have good deduplication rates but compression is still desired.
+       # This configuration option has an automatic default value.
+       # vdo_use_deduplication = 1
+
+       # Configuration option allocation/vdo_use_metadata_hints.
+       # Enables or disables whether VDO volume should tag its latency-critical
+       # writes with the REQ_SYNC flag. Some device mapper targets such as dm-raid5
+       # process writes with this flag at a higher priority.
+       # Default is enabled.
+       # This configuration option has an automatic default value.
+       # vdo_use_metadata_hints = 1
+
+       # Configuration option allocation/vdo_minimum_io_size.
+       # The minimum IO size for VDO volume to accept, in bytes.
+       # Valid values are 512 or 4096. The recommended and default value is 4096.
+       # This configuration option has an automatic default value.
+       # vdo_minimum_io_size = 4096
+
+       # Configuration option allocation/vdo_block_map_cache_size_mb.
+       # Specifies the amount of memory in MiB allocated for caching block map
+       # pages for VDO volume. The value must be a multiple of 4096 and must be
+       # at least 128MiB and less than 16TiB. The cache must be at least 16MiB
+       # per logical thread. Note that there is a memory overhead of 15%.
+       # This configuration option has an automatic default value.
+       # vdo_block_map_cache_size_mb = 128
+
+       # Configuration option allocation/vdo_block_map_period.
+       # The speed with which the block map cache writes out modified block map pages.
+       # A smaller era length is likely to reduce the amount time spent rebuilding,
+       # at the cost of increased block map writes during normal operation.
+       # The maximum and recommended value is 16380; the minimum value is 1.
+       # This configuration option has an automatic default value.
+       # vdo_block_map_period = 16380
+
+       # Configuration option allocation/vdo_check_point_frequency.
+       # The default check point frequency for VDO volume.
+       # This configuration option has an automatic default value.
+       # vdo_check_point_frequency = 0
+
+       # Configuration option allocation/vdo_use_sparse_index.
+       # Enables sparse indexing for VDO volume.
+       # This configuration option has an automatic default value.
+       # vdo_use_sparse_index = 0
+
+       # Configuration option allocation/vdo_index_memory_size_mb.
+       # Specifies the amount of index memory in MiB for VDO volume.
+       # The value must be at least 256MiB and at most 1TiB.
+       # This configuration option has an automatic default value.
+       # vdo_index_memory_size_mb = 256
+
+       # Configuration option allocation/vdo_slab_size_mb.
+       # Specifies the size in MiB of the increment by which a VDO is grown.
+       # Using a smaller size constrains the total maximum physical size
+       # that can be accommodated. Must be a power of two between 128MiB and 32GiB.
+       # This configuration option has an automatic default value.
+       # vdo_slab_size_mb = 2048
+
+       # Configuration option allocation/vdo_ack_threads.
+       # Specifies the number of threads to use for acknowledging
+       # completion of requested VDO I/O operations.
+       # The value must be at in range [0..100].
+       # This configuration option has an automatic default value.
+       # vdo_ack_threads = 1
+
+       # Configuration option allocation/vdo_bio_threads.
+       # Specifies the number of threads to use for submitting I/O
+       # operations to the storage device of VDO volume.
+       # The value must be in range [1..100]
+       # Each additional thread after the first will use an additional 18MiB of RAM,
+       # plus 1.12 MiB of RAM per megabyte of configured read cache size.
+       # This configuration option has an automatic default value.
+       # vdo_bio_threads = 4
+
+       # Configuration option allocation/vdo_bio_rotation.
+       # Specifies the number of I/O operations to enqueue for each bio-submission
+       # thread before directing work to the next. The value must be in range [1..1024].
+       # This configuration option has an automatic default value.
+       # vdo_bio_rotation = 64
+
+       # Configuration option allocation/vdo_cpu_threads.
+       # Specifies the number of threads to use for CPU-intensive work such as
+       # hashing or compression for VDO volume. The value must be in range [1..100]
+       # This configuration option has an automatic default value.
+       # vdo_cpu_threads = 2
+
+       # Configuration option allocation/vdo_hash_zone_threads.
+       # Specifies the number of threads across which to subdivide parts of the VDO
+       # processing based on the hash value computed from the block data.
+       # The value must be at in range [0..100].
+       # vdo_hash_zone_threads, vdo_logical_threads and vdo_physical_threads must be
+       # either all zero or all non-zero.
+       # This configuration option has an automatic default value.
+       # vdo_hash_zone_threads = 1
+
+       # Configuration option allocation/vdo_logical_threads.
+       # Specifies the number of threads across which to subdivide parts of the VDO
+       # processing based on the hash value computed from the block data.
+       # A logical thread count of 9 or more will require explicitly specifying
+       # a sufficiently large block map cache size, as well.
+       # The value must be in range [0..100].
+       # vdo_hash_zone_threads, vdo_logical_threads and vdo_physical_threads must be
+       # either all zero or all non-zero.
+       # This configuration option has an automatic default value.
+       # vdo_logical_threads = 1
+
+       # Configuration option allocation/vdo_physical_threads.
+       # Specifies the number of threads across which to subdivide parts of the VDO
+       # processing based on physical block addresses.
+       # Each additional thread after the first will use an additional 10MiB of RAM.
+       # The value must be in range [0..16].
+       # vdo_hash_zone_threads, vdo_logical_threads and vdo_physical_threads must be
+       # either all zero or all non-zero.
+       # This configuration option has an automatic default value.
+       # vdo_physical_threads = 1
+
+       # Configuration option allocation/vdo_write_policy.
+       # Specifies the write policy:
+       # auto  - VDO will check the storage device and determine whether it supports flushes.
+       #         If it does, VDO will run in async mode, otherwise it will run in sync mode.
+       # sync  - Writes are acknowledged only after data is stably written.
+       #         This policy is not supported if the underlying storage is not also synchronous.
+       # async - Writes are acknowledged after data has been cached for writing to stable storage.
+       #         Data which has not been flushed is not guaranteed to persist in this mode.
+       # This configuration option has an automatic default value.
+       # vdo_write_policy = "auto"
+
+       # Configuration option allocation/vdo_max_discard.
+       # Specified te maximum size of discard bio accepted, in 4096 byte blocks.
+       # I/O requests to a VDO volume are normally split into 4096-byte blocks,
+       # and processed up to 2048 at a time. However, discard requests to a VDO volume
+       # can be automatically split to a larger size, up to <max discard> 4096-byte blocks
+       # in a single bio, and are limited to 1500 at a time.
+       # Increasing this value may provide better overall performance, at the cost of
+       # increased latency for the individual discard requests.
+       # The default and minimum is 1. The maximum is UINT_MAX / 4096.
+       # This configuration option has an automatic default value.
+       # vdo_max_discard = 1
+}
+
+# Configuration section log.
+# How LVM log information is reported.
+log {
+
+       # Configuration option log/report_command_log.
+       # Enable or disable LVM log reporting.
+       # If enabled, LVM will collect a log of operations, messages,
+       # per-object return codes with object identification and associated
+       # error numbers (errnos) during LVM command processing. Then the
+       # log is either reported solely or in addition to any existing
+       # reports, depending on LVM command used. If it is a reporting command
+       # (e.g. pvs, vgs, lvs, lvm fullreport), then the log is reported in
+       # addition to any existing reports. Otherwise, there's only log report
+       # on output. For all applicable LVM commands, you can request that
+       # the output has only log report by using --logonly command line
+       # option. Use log/command_log_cols and log/command_log_sort settings
+       # to define fields to display and sort fields for the log report.
+       # You can also use log/command_log_selection to define selection
+       # criteria used each time the log is reported.
+       # This configuration option has an automatic default value.
+       # report_command_log = 0
+
+       # Configuration option log/command_log_sort.
+       # List of columns to sort by when reporting command log.
+       # See <lvm command> --logonly --configreport log -o help
+       # for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # command_log_sort = "log_seq_num"
+
+       # Configuration option log/command_log_cols.
+       # List of columns to report when reporting command log.
+       # See <lvm command> --logonly --configreport log -o help
+       # for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # command_log_cols = "log_seq_num,log_type,log_context,log_object_type,log_object_name,log_object_id,log_object_group,log_object_group_id,log_message,log_errno,log_ret_code"
+
+       # Configuration option log/command_log_selection.
+       # Selection criteria used when reporting command log.
+       # You can define selection criteria that are applied each
+       # time log is reported. This way, it is possible to control the
+       # amount of log that is displayed on output and you can select
+       # only parts of the log that are important for you. To define
+       # selection criteria, use fields from log report. See also
+       # <lvm command> --logonly --configreport log -S help for the
+       # list of possible fields and selection operators. You can also
+       # define selection criteria for log report on command line directly
+       # using <lvm command> --configreport log -S <selection criteria>
+       # which has precedence over log/command_log_selection setting.
+       # For more information about selection criteria in general, see
+       # lvm(8) man page.
+       # This configuration option has an automatic default value.
+       # command_log_selection = "!(log_type=status && message=success)"
+
+       # Configuration option log/verbose.
+       # Controls the messages sent to stdout or stderr.
+       verbose = 0
+
+       # Configuration option log/silent.
+       # Suppress all non-essential messages from stdout.
+       # This has the same effect as -qq. When enabled, the following commands
+       # still produce output: dumpconfig, lvdisplay, lvmdiskscan, lvs, pvck,
+       # pvdisplay, pvs, version, vgcfgrestore -l, vgdisplay, vgs.
+       # Non-essential messages are shifted from log level 4 to log level 5
+       # for syslog and lvm2_log_fn purposes.
+       # Any 'yes' or 'no' questions not overridden by other arguments are
+       # suppressed and default to 'no'.
+       silent = 0
+
+       # Configuration option log/syslog.
+       # Send log messages through syslog.
+       syslog = 1
+
+       # Configuration option log/file.
+       # Write error and debug log messages to a file specified here.
+       # This configuration option does not have a default value defined.
+
+       # Configuration option log/overwrite.
+       # Overwrite the log file each time the program is run.
+       overwrite = 0
+
+       # Configuration option log/level.
+       # The level of log messages that are sent to the log file or syslog.
+       # There are 6 syslog-like log levels currently in use: 2 to 7 inclusive.
+       # 7 is the most verbose (LOG_DEBUG).
+       level = 0
+
+       # Configuration option log/indent.
+       # Indent messages according to their severity.
+       # This configuration option has an automatic default value.
+       # indent = 0
+
+       # Configuration option log/command_names.
+       # Display the command name on each line of output.
+       command_names = 0
+
+       # Configuration option log/prefix.
+       # A prefix to use before the log message text.
+       # (After the command name, if selected).
+       # Two spaces allows you to see/grep the severity of each message.
+       # To make the messages look similar to the original LVM tools use:
+       # indent = 0, command_names = 1, prefix = " -- "
+       prefix = "  "
+
+       # Configuration option log/activation.
+       # Log messages during activation.
+       # Don't use this in low memory situations (can deadlock).
+       activation = 0
+
+       # Configuration option log/debug_classes.
+       # Select log messages by class.
+       # Some debugging messages are assigned to a class and only appear in
+       # debug output if the class is listed here. Classes currently
+       # available: memory, devices, io, activation, allocation,
+       # metadata, cache, locking, lvmpolld. Use "all" to see everything.
+       debug_classes = [ "memory", "devices", "io", "activation", "allocation", "metadata", "cache", "locking", "lvmpolld", "dbus" ]
+
+       # Configuration option log/debug_file_fields.
+       # The fields included in debug output written to log file.
+       # Use "all" to include everything (the default).
+       # This configuration option is advanced.
+       # This configuration option has an automatic default value.
+       # debug_file_fields = [ "time", "command", "fileline", "message" ]
+
+       # Configuration option log/debug_output_fields.
+       # The fields included in debug output written to stderr.
+       # Use "all" to include everything (the default).
+       # This configuration option is advanced.
+       # This configuration option has an automatic default value.
+       # debug_output_fields = [ "time", "command", "fileline", "message" ]
+}
+
+# Configuration section backup.
+# How LVM metadata is backed up and archived.
+# In LVM, a 'backup' is a copy of the metadata for the current system,
+# and an 'archive' contains old metadata configurations. They are
+# stored in a human readable text format.
+backup {
+
+       # Configuration option backup/backup.
+       # Maintain a backup of the current metadata configuration.
+       # Think very hard before turning this off!
+       backup = 1
+
+       # Configuration option backup/backup_dir.
+       # Location of the metadata backup files.
+       # Remember to back up this directory regularly!
+       backup_dir = "/etc/lvm/backup"
+
+       # Configuration option backup/archive.
+       # Maintain an archive of old metadata configurations.
+       # Think very hard before turning this off.
+       archive = 1
+
+       # Configuration option backup/archive_dir.
+       # Location of the metdata archive files.
+       # Remember to back up this directory regularly!
+       archive_dir = "/etc/lvm/archive"
+
+       # Configuration option backup/retain_min.
+       # Minimum number of archives to keep.
+       retain_min = 10
+
+       # Configuration option backup/retain_days.
+       # Minimum number of days to keep archive files.
+       retain_days = 30
+}
+
+# Configuration section shell.
+# Settings for running LVM in shell (readline) mode.
+shell {
+
+       # Configuration option shell/history_size.
+       # Number of lines of history to store in ~/.lvm_history.
+       history_size = 100
+}
+
+# Configuration section global.
+# Miscellaneous global LVM settings.
+global {
+
+       # Configuration option global/umask.
+       # The file creation mask for any files and directories created.
+       # Interpreted as octal if the first digit is zero.
+       umask = 077
+
+       # Configuration option global/test.
+       # No on-disk metadata changes will be made in test mode.
+       # Equivalent to having the -t option on every command.
+       test = 0
+
+       # Configuration option global/units.
+       # Default value for --units argument.
+       units = "r"
+
+       # Configuration option global/si_unit_consistency.
+       # Distinguish between powers of 1024 and 1000 bytes.
+       # The LVM commands distinguish between powers of 1024 bytes,
+       # e.g. KiB, MiB, GiB, and powers of 1000 bytes, e.g. KB, MB, GB.
+       # If scripts depend on the old behaviour, disable this setting
+       # temporarily until they are updated.
+       si_unit_consistency = 1
+
+       # Configuration option global/suffix.
+       # Display unit suffix for sizes.
+       # This setting has no effect if the units are in human-readable form
+       # (global/units = "h") in which case the suffix is always displayed.
+       suffix = 1
+
+       # Configuration option global/activation.
+       # Enable/disable communication with the kernel device-mapper.
+       # Disable to use the tools to manipulate LVM metadata without
+       # activating any logical volumes. If the device-mapper driver
+       # is not present in the kernel, disabling this should suppress
+       # the error messages.
+       activation = 1
+
+       # Configuration option global/proc.
+       # Location of proc filesystem.
+       # This configuration option is advanced.
+       proc = "/proc"
+
+       # Configuration option global/etc.
+       # Location of /etc system configuration directory.
+       etc = "/etc"
+
+       # Configuration option global/wait_for_locks.
+       # When disabled, fail if a lock request would block.
+       wait_for_locks = 1
+
+       # Configuration option global/locking_dir.
+       # Directory to use for LVM command file locks.
+       # Local non-LV directory that holds file-based locks while commands are
+       # in progress. A directory like /tmp that may get wiped on reboot is OK.
+       locking_dir = "/run/lock/lvm"
+
+       # Configuration option global/prioritise_write_locks.
+       # Allow quicker VG write access during high volume read access.
+       # When there are competing read-only and read-write access requests for
+       # a volume group's metadata, instead of always granting the read-only
+       # requests immediately, delay them to allow the read-write requests to
+       # be serviced. Without this setting, write access may be stalled by a
+       # high volume of read-only requests. This option only affects
+       # locking_type 1 viz. local file-based locking.
+       prioritise_write_locks = 1
+
+       # Configuration option global/library_dir.
+       # Search this directory first for shared libraries.
+       # This configuration option does not have a default value defined.
+
+       # Configuration option global/abort_on_internal_errors.
+       # Abort a command that encounters an internal error.
+       # Treat any internal errors as fatal errors, aborting the process that
+       # encountered the internal error. Please only enable for debugging.
+       abort_on_internal_errors = 0
+
+       # Configuration option global/metadata_read_only.
+       # No operations that change on-disk metadata are permitted.
+       # Additionally, read-only commands that encounter metadata in need of
+       # repair will still be allowed to proceed exactly as if the repair had
+       # been performed (except for the unchanged vg_seqno). Inappropriate
+       # use could mess up your system, so seek advice first!
+       metadata_read_only = 0
+
+       # Configuration option global/mirror_segtype_default.
+       # The segment type used by the short mirroring option -m.
+       # The --type mirror|raid1 option overrides this setting.
+       # 
+       # Accepted values:
+       #   mirror
+       #     The original RAID1 implementation from LVM/DM. It is
+       #     characterized by a flexible log solution (core, disk, mirrored),
+       #     and by the necessity to block I/O while handling a failure.
+       #     There is an inherent race in the dmeventd failure handling logic
+       #     with snapshots of devices using this type of RAID1 that in the
+       #     worst case could cause a deadlock. (Also see
+       #     devices/ignore_lvm_mirrors.)
+       #   raid1
+       #     This is a newer RAID1 implementation using the MD RAID1
+       #     personality through device-mapper. It is characterized by a
+       #     lack of log options. (A log is always allocated for every
+       #     device and they are placed on the same device as the image,
+       #     so no separate devices are required.) This mirror
+       #     implementation does not require I/O to be blocked while
+       #     handling a failure. This mirror implementation is not
+       #     cluster-aware and cannot be used in a shared (active/active)
+       #     fashion in a cluster.
+       # 
+       mirror_segtype_default = "raid1"
+
+       # Configuration option global/support_mirrored_mirror_log.
+       # Enable mirrored 'mirror' log type for testing.
+       # 
+       # This type is deprecated to create or convert to but can
+       # be enabled to test that activation of existing mirrored
+       # logs and conversion to disk/core works.
+       # 
+       # Not supported for regular operation!
+       support_mirrored_mirror_log = 0
+
+       # Configuration option global/raid10_segtype_default.
+       # The segment type used by the -i -m combination.
+       # The --type raid10|mirror option overrides this setting.
+       # The --stripes/-i and --mirrors/-m options can both be specified
+       # during the creation of a logical volume to use both striping and
+       # mirroring for the LV. There are two different implementations.
+       # 
+       # Accepted values:
+       #   raid10
+       #     LVM uses MD's RAID10 personality through DM. This is the
+       #     preferred option.
+       #   mirror
+       #     LVM layers the 'mirror' and 'stripe' segment types. The layering
+       #     is done by creating a mirror LV on top of striped sub-LVs,
+       #     effectively creating a RAID 0+1 array. The layering is suboptimal
+       #     in terms of providing redundancy and performance.
+       # 
+       raid10_segtype_default = "raid10"
+
+       # Configuration option global/sparse_segtype_default.
+       # The segment type used by the -V -L combination.
+       # The --type snapshot|thin option overrides this setting.
+       # The combination of -V and -L options creates a sparse LV. There are
+       # two different implementations.
+       # 
+       # Accepted values:
+       #   snapshot
+       #     The original snapshot implementation from LVM/DM. It uses an old
+       #     snapshot that mixes data and metadata within a single COW
+       #     storage volume and performs poorly when the size of stored data
+       #     passes hundreds of MB.
+       #   thin
+       #     A newer implementation that uses thin provisioning. It has a
+       #     bigger minimal chunk size (64KiB) and uses a separate volume for
+       #     metadata. It has better performance, especially when more data
+       #     is used. It also supports full snapshots.
+       # 
+       sparse_segtype_default = "thin"
+
+       # Configuration option global/lvdisplay_shows_full_device_path.
+       # Enable this to reinstate the previous lvdisplay name format.
+       # The default format for displaying LV names in lvdisplay was changed
+       # in version 2.02.89 to show the LV name and path separately.
+       # Previously this was always shown as /dev/vgname/lvname even when that
+       # was never a valid path in the /dev filesystem.
+       # This configuration option has an automatic default value.
+       # lvdisplay_shows_full_device_path = 0
+
+       # Configuration option global/event_activation.
+       # Activate LVs based on system-generated device events.
+       # When a device appears on the system, a system-generated event runs
+       # the pvscan command to activate LVs if the new PV completes the VG.
+       # Use auto_activation_volume_list to select which LVs should be
+       # activated from these events (the default is all.)
+       # When event_activation is disabled, the system will generally run
+       # a direct activation command to activate LVs in complete VGs.
+       event_activation = 1
+
+       # Configuration option global/use_aio.
+       # Use async I/O when reading and writing devices.
+       # This configuration option has an automatic default value.
+       # use_aio = 1
+
+       # Configuration option global/use_lvmlockd.
+       # Use lvmlockd for locking among hosts using LVM on shared storage.
+       # Applicable only if LVM is compiled with lockd support in which
+       # case there is also lvmlockd(8) man page available for more
+       # information.
+       use_lvmlockd = 0
+
+       # Configuration option global/lvmlockd_lock_retries.
+       # Retry lvmlockd lock requests this many times.
+       # Applicable only if LVM is compiled with lockd support
+       # This configuration option has an automatic default value.
+       # lvmlockd_lock_retries = 3
+
+       # Configuration option global/sanlock_lv_extend.
+       # Size in MiB to extend the internal LV holding sanlock locks.
+       # The internal LV holds locks for each LV in the VG, and after enough
+       # LVs have been created, the internal LV needs to be extended. lvcreate
+       # will automatically extend the internal LV when needed by the amount
+       # specified here. Setting this to 0 disables the automatic extension
+       # and can cause lvcreate to fail. Applicable only if LVM is compiled
+       # with lockd support
+       # This configuration option has an automatic default value.
+       # sanlock_lv_extend = 256
+
+       # Configuration option global/thin_check_executable.
+       # The full path to the thin_check command.
+       # LVM uses this command to check that a thin metadata device is in a
+       # usable state. When a thin pool is activated and after it is
+       # deactivated, this command is run. Activation will only proceed if
+       # the command has an exit status of 0. Set to "" to skip this check.
+       # (Not recommended.) Also see thin_check_options.
+       # (See package device-mapper-persistent-data or thin-provisioning-tools)
+       # This configuration option has an automatic default value.
+       # thin_check_executable = "/usr/sbin/thin_check"
+
+       # Configuration option global/thin_dump_executable.
+       # The full path to the thin_dump command.
+       # LVM uses this command to dump thin pool metadata.
+       # (See package device-mapper-persistent-data or thin-provisioning-tools)
+       # This configuration option has an automatic default value.
+       # thin_dump_executable = "/usr/sbin/thin_dump"
+
+       # Configuration option global/thin_repair_executable.
+       # The full path to the thin_repair command.
+       # LVM uses this command to repair a thin metadata device if it is in
+       # an unusable state. Also see thin_repair_options.
+       # (See package device-mapper-persistent-data or thin-provisioning-tools)
+       # This configuration option has an automatic default value.
+       # thin_repair_executable = "/usr/sbin/thin_repair"
+
+       # Configuration option global/thin_check_options.
+       # List of options passed to the thin_check command.
+       # With thin_check version 2.1 or newer you can add the option
+       # --ignore-non-fatal-errors to let it pass through ignorable errors
+       # and fix them later. With thin_check version 3.2 or newer you should
+       # include the option --clear-needs-check-flag.
+       # This configuration option has an automatic default value.
+       # thin_check_options = [ "-q", "--clear-needs-check-flag" ]
+
+       # Configuration option global/thin_repair_options.
+       # List of options passed to the thin_repair command.
+       # This configuration option has an automatic default value.
+       # thin_repair_options = [ "" ]
+
+       # Configuration option global/thin_disabled_features.
+       # Features to not use in the thin driver.
+       # This can be helpful for testing, or to avoid using a feature that is
+       # causing problems. Features include: block_size, discards,
+       # discards_non_power_2, external_origin, metadata_resize,
+       # external_origin_extend, error_if_no_space.
+       # 
+       # Example
+       # thin_disabled_features = [ "discards", "block_size" ]
+       # 
+       # This configuration option does not have a default value defined.
+
+       # Configuration option global/cache_disabled_features.
+       # Features to not use in the cache driver.
+       # This can be helpful for testing, or to avoid using a feature that is
+       # causing problems. Features include: policy_mq, policy_smq, metadata2.
+       # 
+       # Example
+       # cache_disabled_features = [ "policy_smq" ]
+       # 
+       # This configuration option does not have a default value defined.
+
+       # Configuration option global/cache_check_executable.
+       # The full path to the cache_check command.
+       # LVM uses this command to check that a cache metadata device is in a
+       # usable state. When a cached LV is activated and after it is
+       # deactivated, this command is run. Activation will only proceed if the
+       # command has an exit status of 0. Set to "" to skip this check.
+       # (Not recommended.) Also see cache_check_options.
+       # (See package device-mapper-persistent-data or thin-provisioning-tools)
+       # This configuration option has an automatic default value.
+       # cache_check_executable = "/usr/sbin/cache_check"
+
+       # Configuration option global/cache_dump_executable.
+       # The full path to the cache_dump command.
+       # LVM uses this command to dump cache pool metadata.
+       # (See package device-mapper-persistent-data or thin-provisioning-tools)
+       # This configuration option has an automatic default value.
+       # cache_dump_executable = "/usr/sbin/cache_dump"
+
+       # Configuration option global/cache_repair_executable.
+       # The full path to the cache_repair command.
+       # LVM uses this command to repair a cache metadata device if it is in
+       # an unusable state. Also see cache_repair_options.
+       # (See package device-mapper-persistent-data or thin-provisioning-tools)
+       # This configuration option has an automatic default value.
+       # cache_repair_executable = "/usr/sbin/cache_repair"
+
+       # Configuration option global/cache_check_options.
+       # List of options passed to the cache_check command.
+       # With cache_check version 5.0 or newer you should include the option
+       # --clear-needs-check-flag.
+       # This configuration option has an automatic default value.
+       # cache_check_options = [ "-q", "--clear-needs-check-flag" ]
+
+       # Configuration option global/cache_repair_options.
+       # List of options passed to the cache_repair command.
+       # This configuration option has an automatic default value.
+       # cache_repair_options = [ "" ]
+
+       # Configuration option global/vdo_format_executable.
+       # The full path to the vdoformat command.
+       # LVM uses this command to initial data volume for VDO type logical volume
+       # This configuration option has an automatic default value.
+       # vdo_format_executable = "autodetect"
+
+       # Configuration option global/vdo_format_options.
+       # List of options passed added to standard vdoformat command.
+       # This configuration option has an automatic default value.
+       # vdo_format_options = [ "" ]
+
+       # Configuration option global/fsadm_executable.
+       # The full path to the fsadm command.
+       # LVM uses this command to help with lvresize -r operations.
+       # This configuration option has an automatic default value.
+       # fsadm_executable = "/sbin/fsadm"
+
+       # Configuration option global/system_id_source.
+       # The method LVM uses to set the local system ID.
+       # Volume Groups can also be given a system ID (by vgcreate, vgchange,
+       # or vgimport.) A VG on shared storage devices is accessible only to
+       # the host with a matching system ID. See 'man lvmsystemid' for
+       # information on limitations and correct usage.
+       # 
+       # Accepted values:
+       #   none
+       #     The host has no system ID.
+       #   lvmlocal
+       #     Obtain the system ID from the system_id setting in the 'local'
+       #     section of an lvm configuration file, e.g. lvmlocal.conf.
+       #   uname
+       #     Set the system ID from the hostname (uname) of the system.
+       #     System IDs beginning localhost are not permitted.
+       #   machineid
+       #     Use the contents of the machine-id file to set the system ID.
+       #     Some systems create this file at installation time.
+       #     See 'man machine-id' and global/etc.
+       #   file
+       #     Use the contents of another file (system_id_file) to set the
+       #     system ID.
+       # 
+       system_id_source = "none"
+
+       # Configuration option global/system_id_file.
+       # The full path to the file containing a system ID.
+       # This is used when system_id_source is set to 'file'.
+       # Comments starting with the character # are ignored.
+       # This configuration option does not have a default value defined.
+
+       # Configuration option global/use_lvmpolld.
+       # Use lvmpolld to supervise long running LVM commands.
+       # When enabled, control of long running LVM commands is transferred
+       # from the original LVM command to the lvmpolld daemon. This allows
+       # the operation to continue independent of the original LVM command.
+       # After lvmpolld takes over, the LVM command displays the progress
+       # of the ongoing operation. lvmpolld itself runs LVM commands to
+       # manage the progress of ongoing operations. lvmpolld can be used as
+       # a native systemd service, which allows it to be started on demand,
+       # and to use its own control group. When this option is disabled, LVM
+       # commands will supervise long running operations by forking themselves.
+       # Applicable only if LVM is compiled with lvmpolld support.
+       use_lvmpolld = 1
+
+       # Configuration option global/notify_dbus.
+       # Enable D-Bus notification from LVM commands.
+       # When enabled, an LVM command that changes PVs, changes VG metadata,
+       # or changes the activation state of an LV will send a notification.
+       notify_dbus = 1
+
+       # Configuration option global/io_memory_size.
+       # The amount of memory in KiB that LVM allocates to perform disk io.
+       # LVM performance may benefit from more io memory when there are many
+       # disks or VG metadata is large. Increasing this size may be necessary
+       # when a single copy of VG metadata is larger than the current setting.
+       # This value should usually not be decreased from the default; setting
+       # it too low can result in lvm failing to read VGs.
+       # This configuration option has an automatic default value.
+       # io_memory_size = 8192
+}
+
+# Configuration section activation.
+activation {
+
+       # Configuration option activation/checks.
+       # Perform internal checks of libdevmapper operations.
+       # Useful for debugging problems with activation. Some of the checks may
+       # be expensive, so it's best to use this only when there seems to be a
+       # problem.
+       checks = 0
+
+       # Configuration option activation/udev_sync.
+       # Use udev notifications to synchronize udev and LVM.
+       # The --nodevsync option overrides this setting.
+       # When disabled, LVM commands will not wait for notifications from
+       # udev, but continue irrespective of any possible udev processing in
+       # the background. Only use this if udev is not running or has rules
+       # that ignore the devices LVM creates. If enabled when udev is not
+       # running, and LVM processes are waiting for udev, run the command
+       # 'dmsetup udevcomplete_all' to wake them up.
+       udev_sync = 1
+
+       # Configuration option activation/udev_rules.
+       # Use udev rules to manage LV device nodes and symlinks.
+       # When disabled, LVM will manage the device nodes and symlinks for
+       # active LVs itself. Manual intervention may be required if this
+       # setting is changed while LVs are active.
+       udev_rules = 1
+
+       # Configuration option activation/verify_udev_operations.
+       # Use extra checks in LVM to verify udev operations.
+       # This enables additional checks (and if necessary, repairs) on entries
+       # in the device directory after udev has completed processing its
+       # events. Useful for diagnosing problems with LVM/udev interactions.
+       verify_udev_operations = 0
+
+       # Configuration option activation/retry_deactivation.
+       # Retry failed LV deactivation.
+       # If LV deactivation fails, LVM will retry for a few seconds before
+       # failing. This may happen because a process run from a quick udev rule
+       # temporarily opened the device.
+       retry_deactivation = 1
+
+       # Configuration option activation/missing_stripe_filler.
+       # Method to fill missing stripes when activating an incomplete LV.
+       # Using 'error' will make inaccessible parts of the device return I/O
+       # errors on access. Using 'zero' will return success (and zero) on I/O
+       # You can instead use a device path, in which case,
+       # that device will be used in place of missing stripes. Using anything
+       # other than 'error' with mirrored or snapshotted volumes is likely to
+       # result in data corruption.
+       # This configuration option is advanced.
+       missing_stripe_filler = "error"
+
+       # Configuration option activation/use_linear_target.
+       # Use the linear target to optimize single stripe LVs.
+       # When disabled, the striped target is used. The linear target is an
+       # optimised version of the striped target that only handles a single
+       # stripe.
+       use_linear_target = 1
+
+       # Configuration option activation/reserved_stack.
+       # Stack size in KiB to reserve for use while devices are suspended.
+       # Insufficent reserve risks I/O deadlock during device suspension.
+       reserved_stack = 64
+
+       # Configuration option activation/reserved_memory.
+       # Memory size in KiB to reserve for use while devices are suspended.
+       # Insufficent reserve risks I/O deadlock during device suspension.
+       reserved_memory = 8192
+
+       # Configuration option activation/process_priority.
+       # Nice value used while devices are suspended.
+       # Use a high priority so that LVs are suspended
+       # for the shortest possible time.
+       process_priority = -18
+
+       # Configuration option activation/volume_list.
+       # Only LVs selected by this list are activated.
+       # If this list is defined, an LV is only activated if it matches an
+       # entry in this list. If this list is undefined, it imposes no limits
+       # on LV activation (all are allowed).
+       # 
+       # Accepted values:
+       #   vgname
+       #     The VG name is matched exactly and selects all LVs in the VG.
+       #   vgname/lvname
+       #     The VG name and LV name are matched exactly and selects the LV.
+       #   @tag
+       #     Selects an LV if the specified tag matches a tag set on the LV
+       #     or VG.
+       #   @*
+       #     Selects an LV if a tag defined on the host is also set on the LV
+       #     or VG. See tags/hosttags. If any host tags exist but volume_list
+       #     is not defined, a default single-entry list containing '@*'
+       #     is assumed.
+       # 
+       # Example
+       # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
+       # 
+       # This configuration option does not have a default value defined.
+
+       # Configuration option activation/auto_activation_volume_list.
+       # Only LVs selected by this list are auto-activated.
+       # This list works like volume_list, but it is used only by
+       # auto-activation commands. It does not apply to direct activation
+       # commands. If this list is defined, an LV is only auto-activated
+       # if it matches an entry in this list. If this list is undefined, it
+       # imposes no limits on LV auto-activation (all are allowed.) If this
+       # list is defined and empty, i.e. "[]", then no LVs are selected for
+       # auto-activation. An LV that is selected by this list for
+       # auto-activation, must also be selected by volume_list (if defined)
+       # before it is activated. Auto-activation is an activation command that
+       # includes the 'a' argument: --activate ay or -a ay. The 'a' (auto)
+       # argument for auto-activation is meant to be used by activation
+       # commands that are run automatically by the system, as opposed to LVM
+       # commands run directly by a user. A user may also use the 'a' flag
+       # directly to perform auto-activation. Also see pvscan(8) for more
+       # information about auto-activation.
+       # 
+       # Accepted values:
+       #   vgname
+       #     The VG name is matched exactly and selects all LVs in the VG.
+       #   vgname/lvname
+       #     The VG name and LV name are matched exactly and selects the LV.
+       #   @tag
+       #     Selects an LV if the specified tag matches a tag set on the LV
+       #     or VG.
+       #   @*
+       #     Selects an LV if a tag defined on the host is also set on the LV
+       #     or VG. See tags/hosttags. If any host tags exist but volume_list
+       #     is not defined, a default single-entry list containing '@*'
+       #     is assumed.
+       # 
+       # Example
+       # auto_activation_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
+       # 
+       # This configuration option does not have a default value defined.
+
+       # Configuration option activation/read_only_volume_list.
+       # LVs in this list are activated in read-only mode.
+       # If this list is defined, each LV that is to be activated is checked
+       # against this list, and if it matches, it is activated in read-only
+       # mode. This overrides the permission setting stored in the metadata,
+       # e.g. from --permission rw.
+       # 
+       # Accepted values:
+       #   vgname
+       #     The VG name is matched exactly and selects all LVs in the VG.
+       #   vgname/lvname
+       #     The VG name and LV name are matched exactly and selects the LV.
+       #   @tag
+       #     Selects an LV if the specified tag matches a tag set on the LV
+       #     or VG.
+       #   @*
+       #     Selects an LV if a tag defined on the host is also set on the LV
+       #     or VG. See tags/hosttags. If any host tags exist but volume_list
+       #     is not defined, a default single-entry list containing '@*'
+       #     is assumed.
+       # 
+       # Example
+       # read_only_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
+       # 
+       # This configuration option does not have a default value defined.
+
+       # Configuration option activation/raid_region_size.
+       # Size in KiB of each raid or mirror synchronization region.
+       # The clean/dirty state of data is tracked for each region.
+       # The value is rounded down to a power of two if necessary, and
+       # is ignored if it is not a multiple of the machine memory page size.
+       raid_region_size = 2048
+
+       # Configuration option activation/error_when_full.
+       # Return errors if a thin pool runs out of space.
+       # The --errorwhenfull option overrides this setting.
+       # When enabled, writes to thin LVs immediately return an error if the
+       # thin pool is out of data space. When disabled, writes to thin LVs
+       # are queued if the thin pool is out of space, and processed when the
+       # thin pool data space is extended. New thin pools are assigned the
+       # behavior defined here.
+       # This configuration option has an automatic default value.
+       # error_when_full = 0
+
+       # Configuration option activation/readahead.
+       # Setting to use when there is no readahead setting in metadata.
+       # 
+       # Accepted values:
+       #   none
+       #     Disable readahead.
+       #   auto
+       #     Use default value chosen by kernel.
+       # 
+       readahead = "auto"
+
+       # Configuration option activation/raid_fault_policy.
+       # Defines how a device failure in a RAID LV is handled.
+       # This includes LVs that have the following segment types:
+       # raid1, raid4, raid5*, and raid6*.
+       # If a device in the LV fails, the policy determines the steps
+       # performed by dmeventd automatically, and the steps perfomed by the
+       # manual command lvconvert --repair --use-policies.
+       # Automatic handling requires dmeventd to be monitoring the LV.
+       # 
+       # Accepted values:
+       #   warn
+       #     Use the system log to warn the user that a device in the RAID LV
+       #     has failed. It is left to the user to run lvconvert --repair
+       #     manually to remove or replace the failed device. As long as the
+       #     number of failed devices does not exceed the redundancy of the LV
+       #     (1 device for raid4/5, 2 for raid6), the LV will remain usable.
+       #   allocate
+       #     Attempt to use any extra physical volumes in the VG as spares and
+       #     replace faulty devices.
+       # 
+       raid_fault_policy = "warn"
+
+       # Configuration option activation/mirror_image_fault_policy.
+       # Defines how a device failure in a 'mirror' LV is handled.
+       # An LV with the 'mirror' segment type is composed of mirror images
+       # (copies) and a mirror log. A disk log ensures that a mirror LV does
+       # not need to be re-synced (all copies made the same) every time a
+       # machine reboots or crashes. If a device in the LV fails, this policy
+       # determines the steps perfomed by dmeventd automatically, and the steps
+       # performed by the manual command lvconvert --repair --use-policies.
+       # Automatic handling requires dmeventd to be monitoring the LV.
+       # 
+       # Accepted values:
+       #   remove
+       #     Simply remove the faulty device and run without it. If the log
+       #     device fails, the mirror would convert to using an in-memory log.
+       #     This means the mirror will not remember its sync status across
+       #     crashes/reboots and the entire mirror will be re-synced. If a
+       #     mirror image fails, the mirror will convert to a non-mirrored
+       #     device if there is only one remaining good copy.
+       #   allocate
+       #     Remove the faulty device and try to allocate space on a new
+       #     device to be a replacement for the failed device. Using this
+       #     policy for the log is fast and maintains the ability to remember
+       #     sync state through crashes/reboots. Using this policy for a
+       #     mirror device is slow, as it requires the mirror to resynchronize
+       #     the devices, but it will preserve the mirror characteristic of
+       #     the device. This policy acts like 'remove' if no suitable device
+       #     and space can be allocated for the replacement.
+       #   allocate_anywhere
+       #     Not yet implemented. Useful to place the log device temporarily
+       #     on the same physical volume as one of the mirror images. This
+       #     policy is not recommended for mirror devices since it would break
+       #     the redundant nature of the mirror. This policy acts like
+       #     'remove' if no suitable device and space can be allocated for the
+       #     replacement.
+       # 
+       mirror_image_fault_policy = "remove"
+
+       # Configuration option activation/mirror_log_fault_policy.
+       # Defines how a device failure in a 'mirror' log LV is handled.
+       # The mirror_image_fault_policy description for mirrored LVs also
+       # applies to mirrored log LVs.
+       mirror_log_fault_policy = "allocate"
+
+       # Configuration option activation/snapshot_autoextend_threshold.
+       # Auto-extend a snapshot when its usage exceeds this percent.
+       # Setting this to 100 disables automatic extension.
+       # The minimum value is 50 (a smaller value is treated as 50.)
+       # Also see snapshot_autoextend_percent.
+       # Automatic extension requires dmeventd to be monitoring the LV.
+       # 
+       # Example
+       # Using 70% autoextend threshold and 20% autoextend size, when a 1G
+       # snapshot exceeds 700M, it is extended to 1.2G, and when it exceeds
+       # 840M, it is extended to 1.44G:
+       # snapshot_autoextend_threshold = 70
+       # 
+       snapshot_autoextend_threshold = 100
+
+       # Configuration option activation/snapshot_autoextend_percent.
+       # Auto-extending a snapshot adds this percent extra space.
+       # The amount of additional space added to a snapshot is this
+       # percent of its current size.
+       # 
+       # Example
+       # Using 70% autoextend threshold and 20% autoextend size, when a 1G
+       # snapshot exceeds 700M, it is extended to 1.2G, and when it exceeds
+       # 840M, it is extended to 1.44G:
+       # snapshot_autoextend_percent = 20
+       # 
+       snapshot_autoextend_percent = 20
+
+       # Configuration option activation/thin_pool_autoextend_threshold.
+       # Auto-extend a thin pool when its usage exceeds this percent.
+       # Setting this to 100 disables automatic extension.
+       # The minimum value is 50 (a smaller value is treated as 50.)
+       # Also see thin_pool_autoextend_percent.
+       # Automatic extension requires dmeventd to be monitoring the LV.
+       # 
+       # Example
+       # Using 70% autoextend threshold and 20% autoextend size, when a 1G
+       # thin pool exceeds 700M, it is extended to 1.2G, and when it exceeds
+       # 840M, it is extended to 1.44G:
+       # thin_pool_autoextend_threshold = 70
+       # 
+       thin_pool_autoextend_threshold = 100
+
+       # Configuration option activation/thin_pool_autoextend_percent.
+       # Auto-extending a thin pool adds this percent extra space.
+       # The amount of additional space added to a thin pool is this
+       # percent of its current size.
+       # 
+       # Example
+       # Using 70% autoextend threshold and 20% autoextend size, when a 1G
+       # thin pool exceeds 700M, it is extended to 1.2G, and when it exceeds
+       # 840M, it is extended to 1.44G:
+       # thin_pool_autoextend_percent = 20
+       # 
+       thin_pool_autoextend_percent = 20
+
+       # Configuration option activation/vdo_pool_autoextend_threshold.
+       # Auto-extend a VDO pool when its usage exceeds this percent.
+       # Setting this to 100 disables automatic extension.
+       # The minimum value is 50 (a smaller value is treated as 50.)
+       # Also see vdo_pool_autoextend_percent.
+       # Automatic extension requires dmeventd to be monitoring the LV.
+       # 
+       # Example
+       # Using 70% autoextend threshold and 20% autoextend size, when a 10G
+       # VDO pool exceeds 7G, it is extended to 12G, and when it exceeds
+       # 8.4G, it is extended to 14.4G:
+       # vdo_pool_autoextend_threshold = 70
+       # 
+       vdo_pool_autoextend_threshold = 100
+
+       # Configuration option activation/vdo_pool_autoextend_percent.
+       # Auto-extending a VDO pool adds this percent extra space.
+       # The amount of additional space added to a VDO pool is this
+       # percent of its current size.
+       # 
+       # Example
+       # Using 70% autoextend threshold and 20% autoextend size, when a 10G
+       # VDO pool exceeds 7G, it is extended to 12G, and when it exceeds
+       # 8.4G, it is extended to 14.4G:
+       # This configuration option has an automatic default value.
+       # vdo_pool_autoextend_percent = 20
+
+       # Configuration option activation/mlock_filter.
+       # Do not mlock these memory areas.
+       # While activating devices, I/O to devices being (re)configured is
+       # suspended. As a precaution against deadlocks, LVM pins memory it is
+       # using so it is not paged out, and will not require I/O to reread.
+       # Groups of pages that are known not to be accessed during activation
+       # do not need to be pinned into memory. Each string listed in this
+       # setting is compared against each line in /proc/self/maps, and the
+       # pages corresponding to lines that match are not pinned. On some
+       # systems, locale-archive was found to make up over 80% of the memory
+       # used by the process.
+       # 
+       # Example
+       # mlock_filter = [ "locale/locale-archive", "gconv/gconv-modules.cache" ]
+       # 
+       # This configuration option is advanced.
+       # This configuration option does not have a default value defined.
+
+       # Configuration option activation/use_mlockall.
+       # Use the old behavior of mlockall to pin all memory.
+       # Prior to version 2.02.62, LVM used mlockall() to pin the whole
+       # process's memory while activating devices.
+       use_mlockall = 0
+
+       # Configuration option activation/monitoring.
+       # Monitor LVs that are activated.
+       # The --ignoremonitoring option overrides this setting.
+       # When enabled, LVM will ask dmeventd to monitor activated LVs.
+       monitoring = 1
+
+       # Configuration option activation/polling_interval.
+       # Check pvmove or lvconvert progress at this interval (seconds).
+       # When pvmove or lvconvert must wait for the kernel to finish
+       # synchronising or merging data, they check and report progress at
+       # intervals of this number of seconds. If this is set to 0 and there
+       # is only one thing to wait for, there are no progress reports, but
+       # the process is awoken immediately once the operation is complete.
+       polling_interval = 15
+
+       # Configuration option activation/auto_set_activation_skip.
+       # Set the activation skip flag on new thin snapshot LVs.
+       # The --setactivationskip option overrides this setting.
+       # An LV can have a persistent 'activation skip' flag. The flag causes
+       # the LV to be skipped during normal activation. The lvchange/vgchange
+       # -K option is required to activate LVs that have the activation skip
+       # flag set. When this setting is enabled, the activation skip flag is
+       # set on new thin snapshot LVs.
+       # This configuration option has an automatic default value.
+       # auto_set_activation_skip = 1
+
+       # Configuration option activation/activation_mode.
+       # How LVs with missing devices are activated.
+       # The --activationmode option overrides this setting.
+       # 
+       # Accepted values:
+       #   complete
+       #     Only allow activation of an LV if all of the Physical Volumes it
+       #     uses are present. Other PVs in the Volume Group may be missing.
+       #   degraded
+       #     Like complete, but additionally RAID LVs of segment type raid1,
+       #     raid4, raid5, radid6 and raid10 will be activated if there is no
+       #     data loss, i.e. they have sufficient redundancy to present the
+       #     entire addressable range of the Logical Volume.
+       #   partial
+       #     Allows the activation of any LV even if a missing or failed PV
+       #     could cause data loss with a portion of the LV inaccessible.
+       #     This setting should not normally be used, but may sometimes
+       #     assist with data recovery.
+       # 
+       activation_mode = "degraded"
+
+       # Configuration option activation/lock_start_list.
+       # Locking is started only for VGs selected by this list.
+       # The rules are the same as those for volume_list.
+       # This configuration option does not have a default value defined.
+
+       # Configuration option activation/auto_lock_start_list.
+       # Locking is auto-started only for VGs selected by this list.
+       # The rules are the same as those for auto_activation_volume_list.
+       # This configuration option does not have a default value defined.
+}
+
+# Configuration section metadata.
+# This configuration section has an automatic default value.
+# metadata {
+
+       # Configuration option metadata/check_pv_device_sizes.
+       # Check device sizes are not smaller than corresponding PV sizes.
+       # If device size is less than corresponding PV size found in metadata,
+       # there is always a risk of data loss. If this option is set, then LVM
+       # issues a warning message each time it finds that the device size is
+       # less than corresponding PV size. You should not disable this unless
+       # you are absolutely sure about what you are doing!
+       # This configuration option is advanced.
+       # This configuration option has an automatic default value.
+       # check_pv_device_sizes = 1
+
+       # Configuration option metadata/record_lvs_history.
+       # When enabled, LVM keeps history records about removed LVs in
+       # metadata. The information that is recorded in metadata for
+       # historical LVs is reduced when compared to original
+       # information kept in metadata for live LVs. Currently, this
+       # feature is supported for thin and thin snapshot LVs only.
+       # This configuration option has an automatic default value.
+       # record_lvs_history = 0
+
+       # Configuration option metadata/lvs_history_retention_time.
+       # Retention time in seconds after which a record about individual
+       # historical logical volume is automatically destroyed.
+       # A value of 0 disables this feature.
+       # This configuration option has an automatic default value.
+       # lvs_history_retention_time = 0
+
+       # Configuration option metadata/pvmetadatacopies.
+       # Number of copies of metadata to store on each PV.
+       # The --pvmetadatacopies option overrides this setting.
+       # 
+       # Accepted values:
+       #   2
+       #     Two copies of the VG metadata are stored on the PV, one at the
+       #     front of the PV, and one at the end.
+       #   1
+       #     One copy of VG metadata is stored at the front of the PV.
+       #   0
+       #     No copies of VG metadata are stored on the PV. This may be
+       #     useful for VGs containing large numbers of PVs.
+       # 
+       # This configuration option is advanced.
+       # This configuration option has an automatic default value.
+       # pvmetadatacopies = 1
+
+       # Configuration option metadata/vgmetadatacopies.
+       # Number of copies of metadata to maintain for each VG.
+       # The --vgmetadatacopies option overrides this setting.
+       # If set to a non-zero value, LVM automatically chooses which of the
+       # available metadata areas to use to achieve the requested number of
+       # copies of the VG metadata. If you set a value larger than the the
+       # total number of metadata areas available, then metadata is stored in
+       # them all. The value 0 (unmanaged) disables this automatic management
+       # and allows you to control which metadata areas are used at the
+       # individual PV level using pvchange --metadataignore y|n.
+       # This configuration option has an automatic default value.
+       # vgmetadatacopies = 0
+
+       # Configuration option metadata/pvmetadatasize.
+       # The default size of the metadata area in units of 512 byte sectors.
+       # The metadata area begins at an offset of the page size from the start
+       # of the device. The first PE is by default at 1 MiB from the start of
+       # the device. The space between these is the default metadata area size.
+       # The actual size of the metadata area may be larger than what is set
+       # here due to default_data_alignment making the first PE a MiB multiple.
+       # The metadata area begins with a 512 byte header and is followed by a
+       # circular buffer used for VG metadata text. The maximum size of the VG
+       # metadata is about half the size of the metadata buffer. VGs with large
+       # numbers of PVs or LVs, or VGs containing complex LV structures, may need
+       # additional space for VG metadata. The --metadatasize option overrides
+       # this setting.
+       # This configuration option does not have a default value defined.
+
+       # Configuration option metadata/pvmetadataignore.
+       # Ignore metadata areas on a new PV.
+       # The --metadataignore option overrides this setting.
+       # If metadata areas on a PV are ignored, LVM will not store metadata
+       # in them.
+       # This configuration option is advanced.
+       # This configuration option has an automatic default value.
+       # pvmetadataignore = 0
+
+       # Configuration option metadata/stripesize.
+       # This configuration option is advanced.
+       # This configuration option has an automatic default value.
+       # stripesize = 64
+# }
+
+# Configuration section report.
+# LVM report command output formatting.
+# This configuration section has an automatic default value.
+# report {
+
+       # Configuration option report/output_format.
+       # Format of LVM command's report output.
+       # If there is more than one report per command, then the format
+       # is applied for all reports. You can also change output format
+       # directly on command line using --reportformat option which
+       # has precedence over log/output_format setting.
+       # Accepted values:
+       #   basic
+       #     Original format with columns and rows. If there is more than
+       #     one report per command, each report is prefixed with report's
+       #     name for identification.
+       #   json
+       #     JSON format.
+       # This configuration option has an automatic default value.
+       # output_format = "basic"
+
+       # Configuration option report/compact_output.
+       # Do not print empty values for all report fields.
+       # If enabled, all fields that don't have a value set for any of the
+       # rows reported are skipped and not printed. Compact output is
+       # applicable only if report/buffered is enabled. If you need to
+       # compact only specified fields, use compact_output=0 and define
+       # report/compact_output_cols configuration setting instead.
+       # This configuration option has an automatic default value.
+       # compact_output = 0
+
+       # Configuration option report/compact_output_cols.
+       # Do not print empty values for specified report fields.
+       # If defined, specified fields that don't have a value set for any
+       # of the rows reported are skipped and not printed. Compact output
+       # is applicable only if report/buffered is enabled. If you need to
+       # compact all fields, use compact_output=1 instead in which case
+       # the compact_output_cols setting is then ignored.
+       # This configuration option has an automatic default value.
+       # compact_output_cols = ""
+
+       # Configuration option report/aligned.
+       # Align columns in report output.
+       # This configuration option has an automatic default value.
+       # aligned = 1
+
+       # Configuration option report/buffered.
+       # Buffer report output.
+       # When buffered reporting is used, the report's content is appended
+       # incrementally to include each object being reported until the report
+       # is flushed to output which normally happens at the end of command
+       # execution. Otherwise, if buffering is not used, each object is
+       # reported as soon as its processing is finished.
+       # This configuration option has an automatic default value.
+       # buffered = 1
+
+       # Configuration option report/headings.
+       # Show headings for columns on report.
+       # This configuration option has an automatic default value.
+       # headings = 1
+
+       # Configuration option report/separator.
+       # A separator to use on report after each field.
+       # This configuration option has an automatic default value.
+       # separator = " "
+
+       # Configuration option report/list_item_separator.
+       # A separator to use for list items when reported.
+       # This configuration option has an automatic default value.
+       # list_item_separator = ","
+
+       # Configuration option report/prefixes.
+       # Use a field name prefix for each field reported.
+       # This configuration option has an automatic default value.
+       # prefixes = 0
+
+       # Configuration option report/quoted.
+       # Quote field values when using field name prefixes.
+       # This configuration option has an automatic default value.
+       # quoted = 1
+
+       # Configuration option report/columns_as_rows.
+       # Output each column as a row.
+       # If set, this also implies report/prefixes=1.
+       # This configuration option has an automatic default value.
+       # columns_as_rows = 0
+
+       # Configuration option report/binary_values_as_numeric.
+       # Use binary values 0 or 1 instead of descriptive literal values.
+       # For columns that have exactly two valid values to report
+       # (not counting the 'unknown' value which denotes that the
+       # value could not be determined).
+       # This configuration option has an automatic default value.
+       # binary_values_as_numeric = 0
+
+       # Configuration option report/time_format.
+       # Set time format for fields reporting time values.
+       # Format specification is a string which may contain special character
+       # sequences and ordinary character sequences. Ordinary character
+       # sequences are copied verbatim. Each special character sequence is
+       # introduced by the '%' character and such sequence is then
+       # substituted with a value as described below.
+       # 
+       # Accepted values:
+       #   %a
+       #     The abbreviated name of the day of the week according to the
+       #     current locale.
+       #   %A
+       #     The full name of the day of the week according to the current
+       #     locale.
+       #   %b
+       #     The abbreviated month name according to the current locale.
+       #   %B
+       #     The full month name according to the current locale.
+       #   %c
+       #     The preferred date and time representation for the current
+       #     locale (alt E)
+       #   %C
+       #     The century number (year/100) as a 2-digit integer. (alt E)
+       #   %d
+       #     The day of the month as a decimal number (range 01 to 31).
+       #     (alt O)
+       #   %D
+       #     Equivalent to %m/%d/%y. (For Americans only. Americans should
+       #     note that in other countries%d/%m/%y is rather common. This
+       #     means that in international context this format is ambiguous and
+       #     should not be used.
+       #   %e
+       #     Like %d, the day of the month as a decimal number, but a leading
+       #     zero is replaced by a space. (alt O)
+       #   %E
+       #     Modifier: use alternative local-dependent representation if
+       #     available.
+       #   %F
+       #     Equivalent to %Y-%m-%d (the ISO 8601 date format).
+       #   %G
+       #     The ISO 8601 week-based year with century as adecimal number.
+       #     The 4-digit year corresponding to the ISO week number (see %V).
+       #     This has the same format and value as %Y, except that if the
+       #     ISO week number belongs to the previous or next year, that year
+       #     is used instead.
+       #   %g
+       #     Like %G, but without century, that is, with a 2-digit year
+       #     (00-99).
+       #   %h
+       #     Equivalent to %b.
+       #   %H
+       #     The hour as a decimal number using a 24-hour clock
+       #     (range 00 to 23). (alt O)
+       #   %I
+       #     The hour as a decimal number using a 12-hour clock
+       #     (range 01 to 12). (alt O)
+       #   %j
+       #     The day of the year as a decimal number (range 001 to 366).
+       #   %k
+       #     The hour (24-hour clock) as a decimal number (range 0 to 23);
+       #     single digits are preceded by a blank. (See also %H.)
+       #   %l
+       #     The hour (12-hour clock) as a decimal number (range 1 to 12);
+       #     single digits are preceded by a blank. (See also %I.)
+       #   %m
+       #     The month as a decimal number (range 01 to 12). (alt O)
+       #   %M
+       #     The minute as a decimal number (range 00 to 59). (alt O)
+       #   %O
+       #     Modifier: use alternative numeric symbols.
+       #   %p
+       #     Either "AM" or "PM" according to the given time value,
+       #     or the corresponding strings for the current locale. Noon is
+       #     treated as "PM" and midnight as "AM".
+       #   %P
+       #     Like %p but in lowercase: "am" or "pm" or a corresponding
+       #     string for the current locale.
+       #   %r
+       #     The time in a.m. or p.m. notation. In the POSIX locale this is
+       #     equivalent to %I:%M:%S %p.
+       #   %R
+       #     The time in 24-hour notation (%H:%M). For a version including
+       #     the seconds, see %T below.
+       #   %s
+       #     The number of seconds since the Epoch,
+       #     1970-01-01 00:00:00 +0000 (UTC)
+       #   %S
+       #     The second as a decimal number (range 00 to 60). (The range is
+       #     up to 60 to allow for occasional leap seconds.) (alt O)
+       #   %t
+       #     A tab character.
+       #   %T
+       #     The time in 24-hour notation (%H:%M:%S).
+       #   %u
+       #     The day of the week as a decimal, range 1 to 7, Monday being 1.
+       #     See also %w. (alt O)
+       #   %U
+       #     The week number of the current year as a decimal number,
+       #     range 00 to 53, starting with the first Sunday as the first
+       #     day of week 01. See also %V and %W. (alt O)
+       #   %V
+       #     The ISO 8601 week number of the current year as a decimal number,
+       #     range 01 to 53, where week 1 is the first week that has at least
+       #     4 days in the new year. See also %U and %W. (alt O)
+       #   %w
+       #     The day of the week as a decimal, range 0 to 6, Sunday being 0.
+       #     See also %u. (alt O)
+       #   %W
+       #     The week number of the current year as a decimal number,
+       #     range 00 to 53, starting with the first Monday as the first day
+       #     of week 01. (alt O)
+       #   %x
+       #     The preferred date representation for the current locale without
+       #     the time. (alt E)
+       #   %X
+       #     The preferred time representation for the current locale without
+       #     the date. (alt E)
+       #   %y
+       #     The year as a decimal number without a century (range 00 to 99).
+       #     (alt E, alt O)
+       #   %Y
+       #     The year as a decimal number including the century. (alt E)
+       #   %z
+       #     The +hhmm or -hhmm numeric timezone (that is, the hour and minute
+       #     offset from UTC).
+       #   %Z
+       #     The timezone name or abbreviation.
+       #   %%
+       #     A literal '%' character.
+       # 
+       # This configuration option has an automatic default value.
+       # time_format = "%Y-%m-%d %T %z"
+
+       # Configuration option report/devtypes_sort.
+       # List of columns to sort by when reporting 'lvm devtypes' command.
+       # See 'lvm devtypes -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # devtypes_sort = "devtype_name"
+
+       # Configuration option report/devtypes_cols.
+       # List of columns to report for 'lvm devtypes' command.
+       # See 'lvm devtypes -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # devtypes_cols = "devtype_name,devtype_max_partitions,devtype_description"
+
+       # Configuration option report/devtypes_cols_verbose.
+       # List of columns to report for 'lvm devtypes' command in verbose mode.
+       # See 'lvm devtypes -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # devtypes_cols_verbose = "devtype_name,devtype_max_partitions,devtype_description"
+
+       # Configuration option report/lvs_sort.
+       # List of columns to sort by when reporting 'lvs' command.
+       # See 'lvs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # lvs_sort = "vg_name,lv_name"
+
+       # Configuration option report/lvs_cols.
+       # List of columns to report for 'lvs' command.
+       # See 'lvs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # lvs_cols = "lv_name,vg_name,lv_attr,lv_size,pool_lv,origin,data_percent,metadata_percent,move_pv,mirror_log,copy_percent,convert_lv"
+
+       # Configuration option report/lvs_cols_verbose.
+       # List of columns to report for 'lvs' command in verbose mode.
+       # See 'lvs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # lvs_cols_verbose = "lv_name,vg_name,seg_count,lv_attr,lv_size,lv_major,lv_minor,lv_kernel_major,lv_kernel_minor,pool_lv,origin,data_percent,metadata_percent,move_pv,copy_percent,mirror_log,convert_lv,lv_uuid,lv_profile"
+
+       # Configuration option report/vgs_sort.
+       # List of columns to sort by when reporting 'vgs' command.
+       # See 'vgs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # vgs_sort = "vg_name"
+
+       # Configuration option report/vgs_cols.
+       # List of columns to report for 'vgs' command.
+       # See 'vgs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # vgs_cols = "vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free"
+
+       # Configuration option report/vgs_cols_verbose.
+       # List of columns to report for 'vgs' command in verbose mode.
+       # See 'vgs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # vgs_cols_verbose = "vg_name,vg_attr,vg_extent_size,pv_count,lv_count,snap_count,vg_size,vg_free,vg_uuid,vg_profile"
+
+       # Configuration option report/pvs_sort.
+       # List of columns to sort by when reporting 'pvs' command.
+       # See 'pvs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # pvs_sort = "pv_name"
+
+       # Configuration option report/pvs_cols.
+       # List of columns to report for 'pvs' command.
+       # See 'pvs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # pvs_cols = "pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free"
+
+       # Configuration option report/pvs_cols_verbose.
+       # List of columns to report for 'pvs' command in verbose mode.
+       # See 'pvs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # pvs_cols_verbose = "pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,dev_size,pv_uuid"
+
+       # Configuration option report/segs_sort.
+       # List of columns to sort by when reporting 'lvs --segments' command.
+       # See 'lvs --segments -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # segs_sort = "vg_name,lv_name,seg_start"
+
+       # Configuration option report/segs_cols.
+       # List of columns to report for 'lvs --segments' command.
+       # See 'lvs --segments -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # segs_cols = "lv_name,vg_name,lv_attr,stripes,segtype,seg_size"
+
+       # Configuration option report/segs_cols_verbose.
+       # List of columns to report for 'lvs --segments' command in verbose mode.
+       # See 'lvs --segments -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # segs_cols_verbose = "lv_name,vg_name,lv_attr,seg_start,seg_size,stripes,segtype,stripesize,chunksize"
+
+       # Configuration option report/pvsegs_sort.
+       # List of columns to sort by when reporting 'pvs --segments' command.
+       # See 'pvs --segments -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # pvsegs_sort = "pv_name,pvseg_start"
+
+       # Configuration option report/pvsegs_cols.
+       # List of columns to sort by when reporting 'pvs --segments' command.
+       # See 'pvs --segments -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # pvsegs_cols = "pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,pvseg_start,pvseg_size"
+
+       # Configuration option report/pvsegs_cols_verbose.
+       # List of columns to sort by when reporting 'pvs --segments' command in verbose mode.
+       # See 'pvs --segments -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # pvsegs_cols_verbose = "pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,pvseg_start,pvseg_size,lv_name,seg_start_pe,segtype,seg_pe_ranges"
+
+       # Configuration option report/vgs_cols_full.
+       # List of columns to report for lvm fullreport's 'vgs' subreport.
+       # See 'vgs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # vgs_cols_full = "vg_all"
+
+       # Configuration option report/pvs_cols_full.
+       # List of columns to report for lvm fullreport's 'vgs' subreport.
+       # See 'pvs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # pvs_cols_full = "pv_all"
+
+       # Configuration option report/lvs_cols_full.
+       # List of columns to report for lvm fullreport's 'lvs' subreport.
+       # See 'lvs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # lvs_cols_full = "lv_all"
+
+       # Configuration option report/pvsegs_cols_full.
+       # List of columns to report for lvm fullreport's 'pvseg' subreport.
+       # See 'pvs --segments -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # pvsegs_cols_full = "pvseg_all,pv_uuid,lv_uuid"
+
+       # Configuration option report/segs_cols_full.
+       # List of columns to report for lvm fullreport's 'seg' subreport.
+       # See 'lvs --segments -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # segs_cols_full = "seg_all,lv_uuid"
+
+       # Configuration option report/vgs_sort_full.
+       # List of columns to sort by when reporting lvm fullreport's 'vgs' subreport.
+       # See 'vgs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # vgs_sort_full = "vg_name"
+
+       # Configuration option report/pvs_sort_full.
+       # List of columns to sort by when reporting lvm fullreport's 'vgs' subreport.
+       # See 'pvs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # pvs_sort_full = "pv_name"
+
+       # Configuration option report/lvs_sort_full.
+       # List of columns to sort by when reporting lvm fullreport's 'lvs' subreport.
+       # See 'lvs -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # lvs_sort_full = "vg_name,lv_name"
+
+       # Configuration option report/pvsegs_sort_full.
+       # List of columns to sort by when reporting for lvm fullreport's 'pvseg' subreport.
+       # See 'pvs --segments -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # pvsegs_sort_full = "pv_uuid,pvseg_start"
+
+       # Configuration option report/segs_sort_full.
+       # List of columns to sort by when reporting lvm fullreport's 'seg' subreport.
+       # See 'lvs --segments -o help' for the list of possible fields.
+       # This configuration option has an automatic default value.
+       # segs_sort_full = "lv_uuid,seg_start"
+
+       # Configuration option report/mark_hidden_devices.
+       # Use brackets [] to mark hidden devices.
+       # This configuration option has an automatic default value.
+       # mark_hidden_devices = 1
+
+       # Configuration option report/two_word_unknown_device.
+       # Use the two words 'unknown device' in place of '[unknown]'.
+       # This is displayed when the device for a PV is not known.
+       # This configuration option has an automatic default value.
+       # two_word_unknown_device = 0
+# }
+
+# Configuration section dmeventd.
+# Settings for the LVM event daemon.
+dmeventd {
+
+       # Configuration option dmeventd/mirror_library.
+       # The library dmeventd uses when monitoring a mirror device.
+       # libdevmapper-event-lvm2mirror.so attempts to recover from
+       # failures. It removes failed devices from a volume group and
+       # reconfigures a mirror as necessary. If no mirror library is
+       # provided, mirrors are not monitored through dmeventd.
+       mirror_library = "libdevmapper-event-lvm2mirror.so"
+
+       # Configuration option dmeventd/raid_library.
+       # This configuration option has an automatic default value.
+       # raid_library = "libdevmapper-event-lvm2raid.so"
+
+       # Configuration option dmeventd/snapshot_library.
+       # The library dmeventd uses when monitoring a snapshot device.
+       # libdevmapper-event-lvm2snapshot.so monitors the filling of snapshots
+       # and emits a warning through syslog when the usage exceeds 80%. The
+       # warning is repeated when 85%, 90% and 95% of the snapshot is filled.
+       snapshot_library = "libdevmapper-event-lvm2snapshot.so"
+
+       # Configuration option dmeventd/thin_library.
+       # The library dmeventd uses when monitoring a thin device.
+       # libdevmapper-event-lvm2thin.so monitors the filling of a pool
+       # and emits a warning through syslog when the usage exceeds 80%. The
+       # warning is repeated when 85%, 90% and 95% of the pool is filled.
+       thin_library = "libdevmapper-event-lvm2thin.so"
+
+       # Configuration option dmeventd/thin_command.
+       # The plugin runs command with each 5% increment when thin-pool data volume
+       # or metadata volume gets above 50%.
+       # Command which starts with 'lvm ' prefix is internal lvm command.
+       # You can write your own handler to customise behaviour in more details.
+       # User handler is specified with the full path starting with '/'.
+       # This configuration option has an automatic default value.
+       # thin_command = "lvm lvextend --use-policies"
+
+       # Configuration option dmeventd/vdo_library.
+       # The library dmeventd uses when monitoring a VDO pool device.
+       # libdevmapper-event-lvm2vdo.so monitors the filling of a pool
+       # and emits a warning through syslog when the usage exceeds 80%. The
+       # warning is repeated when 85%, 90% and 95% of the pool is filled.
+       # This configuration option has an automatic default value.
+       # vdo_library = "libdevmapper-event-lvm2vdo.so"
+
+       # Configuration option dmeventd/vdo_command.
+       # The plugin runs command with each 5% increment when VDO pool volume
+       # gets above 50%.
+       # Command which starts with 'lvm ' prefix is internal lvm command.
+       # You can write your own handler to customise behaviour in more details.
+       # User handler is specified with the full path starting with '/'.
+       # This configuration option has an automatic default value.
+       # vdo_command = "lvm lvextend --use-policies"
+
+       # Configuration option dmeventd/executable.
+       # The full path to the dmeventd binary.
+       # This configuration option has an automatic default value.
+       # executable = "/sbin/dmeventd"
+}
+
+# Configuration section tags.
+# Host tag settings.
+# This configuration section has an automatic default value.
+# tags {
+
+       # Configuration option tags/hosttags.
+       # Create a host tag using the machine name.
+       # The machine name is nodename returned by uname(2).
+       # This configuration option has an automatic default value.
+       # hosttags = 0
+
+       # Configuration section tags/<tag>.
+       # Replace this subsection name with a custom tag name.
+       # Multiple subsections like this can be created. The '@' prefix for
+       # tags is optional. This subsection can contain host_list, which is a
+       # list of machine names. If the name of the local machine is found in
+       # host_list, then the name of this subsection is used as a tag and is
+       # applied to the local machine as a 'host tag'. If this subsection is
+       # empty (has no host_list), then the subsection name is always applied
+       # as a 'host tag'.
+       # 
+       # Example
+       # The host tag foo is given to all hosts, and the host tag
+       # bar is given to the hosts named machine1 and machine2.
+       # tags { foo { } bar { host_list = [ "machine1", "machine2" ] } }
+       # 
+       # This configuration section has variable name.
+       # This configuration section has an automatic default value.
+       # tag {
+
+               # Configuration option tags/<tag>/host_list.
+               # A list of machine names.
+               # These machine names are compared to the nodename returned
+               # by uname(2). If the local machine name matches an entry in
+               # this list, the name of the subsection is applied to the
+               # machine as a 'host tag'.
+               # This configuration option does not have a default value defined.
+       # }
+# }
diff --git a/etc/lvm/lvmlocal.conf b/etc/lvm/lvmlocal.conf
new file mode 100644 (file)
index 0000000..2fe6446
--- /dev/null
@@ -0,0 +1,57 @@
+# This is a local configuration file template for the LVM2 system
+# which should be installed as /etc/lvm/lvmlocal.conf .
+#
+# Refer to 'man lvm.conf' for information about the file layout.
+#
+# To put this file in a different directory and override
+# /etc/lvm set the environment variable LVM_SYSTEM_DIR before
+# running the tools.
+#
+# The lvmlocal.conf file is normally expected to contain only the
+# "local" section which contains settings that should not be shared or
+# repeated among different hosts.  (But if other sections are present,
+# they *will* get processed.  Settings in this file override equivalent
+# ones in lvm.conf and are in turn overridden by ones in any enabled
+# lvm_<tag>.conf files.)
+#
+# Please take care that each setting only appears once if uncommenting
+# example settings in this file and never copy this file between hosts.
+
+
+# Configuration section local.
+# LVM settings that are specific to the local host.
+local {
+
+       # Configuration option local/system_id.
+       # Defines the local system ID for lvmlocal mode.
+       # This is used when global/system_id_source is set to 'lvmlocal' in the
+       # main configuration file, e.g. lvm.conf. When used, it must be set to
+       # a unique value among all hosts sharing access to the storage,
+       # e.g. a host name.
+       # 
+       # Example
+       # Set no system ID:
+       # system_id = ""
+       # Set the system_id to a specific name:
+       # system_id = "host1"
+       # 
+       # This configuration option has an automatic default value.
+       # system_id = ""
+
+       # Configuration option local/extra_system_ids.
+       # A list of extra VG system IDs the local host can access.
+       # VGs with the system IDs listed here (in addition to the host's own
+       # system ID) can be fully accessed by the local host. (These are
+       # system IDs that the host sees in VGs, not system IDs that identify
+       # the local host, which is determined by system_id_source.)
+       # Use this only after consulting 'man lvmsystemid' to be certain of
+       # correct usage and possible dangers.
+       # This configuration option does not have a default value defined.
+
+       # Configuration option local/host_id.
+       # The lvmlockd sanlock host_id.
+       # This must be unique among all hosts, and must be between 1 and 2000.
+       # Applicable only if LVM is compiled with lockd support
+       # This configuration option has an automatic default value.
+       # host_id = 0
+}
diff --git a/etc/lvm/profile/cache-mq.profile b/etc/lvm/profile/cache-mq.profile
new file mode 100644 (file)
index 0000000..3c90331
--- /dev/null
@@ -0,0 +1,20 @@
+# Demo configuration 'mq' cache policy
+#
+# Note: This policy has been deprecated in favor of the smq policy
+# keyword "default" means, setting is left with kernel defaults.
+#
+
+allocation {
+       cache_pool_chunk_size = 64
+       cache_mode = "writethrough"
+       cache_policy = "mq"
+       cache_settings {
+               mq {
+                       sequential_threshold = "default"        #  #nr_sequential_ios
+                       random_threshold = "default"            #  #nr_random_ios
+                       read_promote_adjustment = "default"
+                       write_promote_adjustment = "default"
+                       discard_promote_adjustment = "default"
+               }
+       }
+}
diff --git a/etc/lvm/profile/cache-smq.profile b/etc/lvm/profile/cache-smq.profile
new file mode 100644 (file)
index 0000000..c457481
--- /dev/null
@@ -0,0 +1,14 @@
+# Demo configuration 'smq' cache policy
+#
+# The stochastic multi-queue (smq) policy addresses some of the problems
+# with the multiqueue (mq) policy and uses less memory.
+#
+
+allocation {
+       cache_pool_chunk_size = 64
+       cache_mode = "writethrough"
+       cache_policy = "smq"
+       cache_settings {
+               # currently no settings for "smq" policy
+       }
+}
diff --git a/etc/lvm/profile/command_profile_template.profile b/etc/lvm/profile/command_profile_template.profile
new file mode 100644 (file)
index 0000000..bf56799
--- /dev/null
@@ -0,0 +1,74 @@
+# This is a command profile template for the LVM2 system.
+#
+# It contains all configuration settings that are customizable by command
+# profiles. To create a new command profile, select the settings you want
+# to customize and add them in a new file named <profile_name>.profile.
+# Then install the new profile in a directory as defined by config/profile_dir
+# setting found in /etc/lvm/lvm.conf file.
+#
+# Command profiles can be referenced by using the --commandprofile option then.
+#
+# Refer to 'man lvm.conf' for further information about profiles and
+# general configuration file layout.
+#
+allocation {
+       cache_mode="writethrough"
+       cache_settings {
+       }
+}
+log {
+       report_command_log=0
+       command_log_sort="log_seq_num"
+       command_log_cols="log_seq_num,log_type,log_context,log_object_type,log_object_name,log_object_id,log_object_group,log_object_group_id,log_message,log_errno,log_ret_code"
+       command_log_selection="!(log_type=status && message=success)"
+}
+global {
+       units="h"
+       si_unit_consistency=1
+       suffix=1
+       lvdisplay_shows_full_device_path=0
+}
+report {
+       output_format="basic"
+       compact_output=0
+       compact_output_cols=""
+       aligned=1
+       buffered=1
+       headings=1
+       separator=" "
+       list_item_separator=","
+       prefixes=0
+       quoted=1
+       columns_as_rows=0
+       binary_values_as_numeric=0
+       time_format="%Y-%m-%d %T %z"
+       devtypes_sort="devtype_name"
+       devtypes_cols="devtype_name,devtype_max_partitions,devtype_description"
+       devtypes_cols_verbose="devtype_name,devtype_max_partitions,devtype_description"
+       lvs_sort="vg_name,lv_name"
+       lvs_cols="lv_name,vg_name,lv_attr,lv_size,pool_lv,origin,data_percent,metadata_percent,move_pv,mirror_log,copy_percent,convert_lv"
+       lvs_cols_verbose="lv_name,vg_name,seg_count,lv_attr,lv_size,lv_major,lv_minor,lv_kernel_major,lv_kernel_minor,pool_lv,origin,data_percent,metadata_percent,move_pv,copy_percent,mirror_log,convert_lv,lv_uuid,lv_profile"
+       vgs_sort="vg_name"
+       vgs_cols="vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free"
+       vgs_cols_verbose="vg_name,vg_attr,vg_extent_size,pv_count,lv_count,snap_count,vg_size,vg_free,vg_uuid,vg_profile"
+       pvs_sort="pv_name"
+       pvs_cols="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free"
+       pvs_cols_verbose="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,dev_size,pv_uuid"
+       segs_sort="vg_name,lv_name,seg_start"
+       segs_cols="lv_name,vg_name,lv_attr,stripes,segtype,seg_size"
+       segs_cols_verbose="lv_name,vg_name,lv_attr,seg_start,seg_size,stripes,segtype,stripesize,chunksize"
+       pvsegs_sort="pv_name,pvseg_start"
+       pvsegs_cols="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,pvseg_start,pvseg_size"
+       pvsegs_cols_verbose="pv_name,vg_name,pv_fmt,pv_attr,pv_size,pv_free,pvseg_start,pvseg_size,lv_name,seg_start_pe,segtype,seg_pe_ranges"
+       vgs_cols_full="vg_all"
+       pvs_cols_full="pv_all"
+       lvs_cols_full="lv_all"
+       pvsegs_cols_full="pvseg_all,pv_uuid,lv_uuid"
+       segs_cols_full="seg_all,lv_uuid"
+       vgs_sort_full="vg_name"
+       pvs_sort_full="pv_name"
+       lvs_sort_full="vg_name,lv_name"
+       pvsegs_sort_full="pv_uuid,pvseg_start"
+       segs_sort_full="lv_uuid,seg_start"
+       mark_hidden_devices=1
+}
diff --git a/etc/lvm/profile/lvmdbusd.profile b/etc/lvm/profile/lvmdbusd.profile
new file mode 100644 (file)
index 0000000..2cdc6da
--- /dev/null
@@ -0,0 +1,50 @@
+#
+# DO NOT EDIT THIS FILE!
+#
+# LVM configuration profile used by lvmdbusd daemon.
+#
+# This sets up LVM to produce output in the most suitable format for processing
+# by lvmdbusd daemon which utilizes LVM shell to execute LVM commands.
+#
+# Do not edit this file in any way. This profile is distributed together with
+# lvmdbusd and it contains configuration that is important for lvmdbusd to
+# cooperate and interface with LVM correctly.
+#
+
+global {
+       # use bytes for expected and deterministic output
+       units=b
+       # no need for suffix if we have units set
+       suffix=0
+}
+
+report {
+       compact_output=0
+       compact_output_cols=""
+       binary_values_as_numeric=0
+       # time in number of seconds since the Epoch
+       time_format="%s"
+       mark_hidden_devices=1
+       # lvmdbusd expects JSON output
+       output_format=json
+       # *_cols_full for lvm fullreport's fields which lvmdbusd relies on to update its state
+       vgs_cols_full="vg_name,vg_uuid,vg_fmt,vg_size,vg_free,vg_sysid,vg_extent_size,vg_extent_count,vg_free_count,vg_profile,max_lv,max_pv,pv_count,lv_count,snap_count,vg_seqno,vg_mda_count,vg_mda_free,vg_mda_size,vg_mda_used_count,vg_attr,vg_tags"
+       pvs_cols_full="pv_name,pv_uuid,pv_fmt,pv_size,pv_free,pv_used,dev_size,pv_mda_size,pv_mda_free,pv_ba_start,pv_ba_size,pe_start,pv_pe_count,pv_pe_alloc_count,pv_attr,pv_tags,vg_name,vg_uuid"
+       lvs_cols_full="lv_uuid,lv_name,lv_path,lv_size,vg_name,pool_lv_uuid,pool_lv,origin_uuid,origin,data_percent,lv_attr,lv_tags,vg_uuid,lv_active,data_lv,metadata_lv,lv_parent,lv_role,lv_layout"
+       pvsegs_cols_full="pvseg_start,pvseg_size,segtype,pv_uuid,lv_uuid,pv_name"
+       segs_cols_full="seg_pe_ranges,segtype,lv_uuid"
+       vgs_sort_full="vg_name"
+       pvs_sort_full="pv_name"
+       lvs_sort_full="vg_name,lv_name"
+       pvsegs_sort_full="pv_uuid,pvseg_start"
+       segs_sort_full="lv_uuid,seg_start"
+}
+
+log {
+       # lvmdbusd relies on command log report to inspect LVM command's execution status
+       report_command_log=1
+       # display only outermost LVM shell-related log that lvmdbusd inspects first after LVM command execution (it calls 'lastlog' for more detailed log afterwards if needed)
+       command_log_selection="log_context=shell"
+       command_log_cols="log_seq_num,log_type,log_context,log_object_type,log_object_name,log_object_id,log_object_group,log_object_group_id,log_message,log_errno,log_ret_code"
+       command_log_sort="log_seq_num"
+}
diff --git a/etc/lvm/profile/metadata_profile_template.profile b/etc/lvm/profile/metadata_profile_template.profile
new file mode 100644 (file)
index 0000000..5836a63
--- /dev/null
@@ -0,0 +1,24 @@
+# This is a metadata profile template for the LVM2 system.
+#
+# It contains all configuration settings that are customizable by metadata
+# profiles. To create a new metadata profile, select the settings you want
+# to customize and add them in a new file named <profile_name>.profile.
+# Then install the new profile in a directory as defined by config/profile_dir
+# setting found in /etc/lvm/lvm.conf file.
+#
+# Metadata profiles can be referenced by using the --metadataprofile LVM2
+# command line option.
+#
+# Refer to 'man lvm.conf' for further information about profiles and
+# general configuration file layout.
+#
+allocation {
+       thin_pool_zero=1
+       thin_pool_discards="passdown"
+       thin_pool_chunk_size_policy="generic"
+#      thin_pool_chunk_size=128
+}
+activation {
+       thin_pool_autoextend_threshold=100
+       thin_pool_autoextend_percent=20
+}
diff --git a/etc/lvm/profile/thin-generic.profile b/etc/lvm/profile/thin-generic.profile
new file mode 100644 (file)
index 0000000..229a7fc
--- /dev/null
@@ -0,0 +1,4 @@
+allocation {
+       thin_pool_chunk_size_policy = "generic"
+       thin_pool_zero = 1
+}
diff --git a/etc/lvm/profile/thin-performance.profile b/etc/lvm/profile/thin-performance.profile
new file mode 100644 (file)
index 0000000..2914de2
--- /dev/null
@@ -0,0 +1,4 @@
+allocation {
+       thin_pool_chunk_size_policy = "performance"
+       thin_pool_zero = 0
+}
diff --git a/etc/lvm/profile/vdo-small.profile b/etc/lvm/profile/vdo-small.profile
new file mode 100644 (file)
index 0000000..2044fc2
--- /dev/null
@@ -0,0 +1,24 @@
+# Demo configuration for 'VDO' using less memory.
+# ~lvmconfig --type full | grep vdo
+
+allocation {
+       vdo_use_compression=1
+       vdo_use_deduplication=1
+       vdo_use_metadata_hints=1
+       vdo_minimum_io_size=4096
+       vdo_block_map_cache_size_mb=128
+       vdo_block_map_period=16380
+       vdo_check_point_frequency=0
+       vdo_use_sparse_index=0
+       vdo_index_memory_size_mb=256
+       vdo_slab_size_mb=2048
+       vdo_ack_threads=1
+       vdo_bio_threads=1
+       vdo_bio_rotation=64
+       vdo_cpu_threads=2
+       vdo_hash_zone_threads=1
+       vdo_logical_threads=1
+       vdo_physical_threads=1
+       vdo_write_policy="auto"
+       vdo_max_discard=1
+}
diff --git a/etc/machine-id b/etc/machine-id
new file mode 100644 (file)
index 0000000..fd6f700
--- /dev/null
@@ -0,0 +1 @@
+2d2af241f7a8487eb0c9b8fad347cb9f
diff --git a/etc/magic b/etc/magic
new file mode 100644 (file)
index 0000000..283a863
--- /dev/null
+++ b/etc/magic
@@ -0,0 +1,3 @@
+# Magic local data for file(1) command.
+# Insert here your local magic data. Format is described in magic(5).
+
diff --git a/etc/magic.mime b/etc/magic.mime
new file mode 100644 (file)
index 0000000..283a863
--- /dev/null
@@ -0,0 +1,3 @@
+# Magic local data for file(1) command.
+# Insert here your local magic data. Format is described in magic(5).
+
diff --git a/etc/mailcap b/etc/mailcap
new file mode 100644 (file)
index 0000000..ad26a5a
--- /dev/null
@@ -0,0 +1,66 @@
+###############################################################################
+#
+#  MIME media types and programs that process those types
+#
+#  Much of this file is generated automatically by the program "update-mime".
+#  Please see the "update-mime" man page for more information.
+#
+#  Users can add their own rules if they wish by creating a ".mailcap"
+#  file in their home directory.  Entries included there will take
+#  precedence over those listed here.
+#
+###############################################################################
+
+
+###############################################################################
+#
+#  User section follows:  Any entries included in this section will take
+#  precedence over those created by "update-mime".  DO NOT CHANGE the
+#  "User Section Begins" and "User Section Ends" lines, or anything outside
+#  of this section!
+#
+
+# ----- User Section Begins ----- #
+# -----  User Section Ends  ----- #
+
+###############################################################################
+
+text/plain; less '%s'; needsterminal
+application/x-troff-man; /usr/bin/man -X100 -l '%s'; test=test -n "$DISPLAY" -a -e /usr/bin/gxditview; description=Man page
+text/troff; /usr/bin/man -X100 -l '%s'; test=test -n "$DISPLAY" -a -e /usr/bin/gxditview; description=Man page
+application/x-troff-man; /usr/bin/man -l '%s'; needsterminal; description=Man page
+text/troff; /usr/bin/man -l '%s'; needsterminal; description=Man page
+text/html; /usr/bin/sensible-browser %s; description=HTML Text; nametemplate=%s.html
+application/x-troff-man; /usr/bin/nroff -mandoc -Tutf8; copiousoutput; print=/usr/bin/nroff -mandoc -Tutf8 | print text/plain:-
+text/troff; /usr/bin/nroff -mandoc -Tutf8; copiousoutput; print=/usr/bin/nroff -mandoc -Tutf8 | print text/plain:-
+application/x-info; /usr/bin/info -f '%s'; needsterminal; description=GNU Info document
+text/plain; more %s; needsterminal
+x-scheme-handler/snap; /usr/bin/snap handle-link %s; test=test -n "$DISPLAY"
+text/english; vim %s; needsterminal
+text/plain; vim %s; needsterminal
+text/x-makefile; vim %s; needsterminal
+text/x-c++hdr; vim %s; needsterminal
+text/x-c++src; vim %s; needsterminal
+text/x-chdr; vim %s; needsterminal
+text/x-csrc; vim %s; needsterminal
+text/x-java; vim %s; needsterminal
+text/x-moc; vim %s; needsterminal
+text/x-pascal; vim %s; needsterminal
+text/x-tcl; vim %s; needsterminal
+text/x-tex; vim %s; needsterminal
+application/x-shellscript; vim %s; needsterminal
+text/x-c; vim %s; needsterminal
+text/x-c++; vim %s; needsterminal
+text/plain; view %s; edit=vim %s; compose=vim %s; test=test -x /usr/bin/vim; needsterminal
+text/plain; view %s; edit=vi %s; compose=vi %s; needsterminal
+application/x-troff-man; /usr/bin/man -Tascii -l '%s' | col -b; copiousoutput; description=Man page
+text/troff; /usr/bin/man -Tascii -l '%s' | col -b; copiousoutput; description=Man page
+text/*; less '%s'; needsterminal
+text/*; view %s; edit=vim %s; compose=vim %s; test=test -x /usr/bin/vim; needsterminal
+application/x-info; /usr/bin/info --subnodes -o /dev/stdout -f '%s' 2>/dev/null; copiousoutput; description=GNU Info document
+application/x-tar; /bin/tar tvf '%s'; print=/bin/tar tvf - | print text/plain:-; copiousoutput
+application/x-gtar; /bin/tar tvf '%s'; print=/bin/tar tvf - | print text/plain:-; copiousoutput
+application/x-ustar; /bin/tar tvf '%s'; print=/bin/tar tvf - | print text/plain:-; copiousoutput
+text/*; more %s; needsterminal
+text/*; view %s; edit=vi %s; compose=vi %s; needsterminal
+application/vnd.debian.binary-package; /usr/lib/mime/debian-view %s; needsterminal; description=Debian GNU/Linux Package; nametemplate=%s.deb
diff --git a/etc/mailcap.order b/etc/mailcap.order
new file mode 100644 (file)
index 0000000..7f38c23
--- /dev/null
@@ -0,0 +1,10 @@
+###############################################################################
+#
+#  Mailcap.order:  This file allows a system-wide override of MIME program
+#  preferences.  See the mailcap.order(5) man page for more information.
+#
+#  After modifying this file, be sure to run /usr/sbin/update-mime (as root)
+#  to propagate the changes into the /etc/mailcap file.
+#
+################################################################################
+
diff --git a/etc/manpath.config b/etc/manpath.config
new file mode 100644 (file)
index 0000000..7c2792e
--- /dev/null
@@ -0,0 +1,132 @@
+# manpath.config
+#
+# This file is used by the man-db package to configure the man and cat paths.
+# It is also used to provide a manpath for those without one by examining
+# their PATH environment variable. For details see the manpath(5) man page.
+#
+# Lines beginning with `#' are comments and are ignored. Any combination of
+# tabs or spaces may be used as `whitespace' separators.
+#
+# There are three mappings allowed in this file:
+# --------------------------------------------------------
+# MANDATORY_MANPATH                    manpath_element
+# MANPATH_MAP          path_element    manpath_element
+# MANDB_MAP            global_manpath  [relative_catpath]
+#---------------------------------------------------------
+# every automatically generated MANPATH includes these fields
+#
+#MANDATORY_MANPATH                     /usr/src/pvm3/man
+#
+MANDATORY_MANPATH                      /usr/man
+MANDATORY_MANPATH                      /usr/share/man
+MANDATORY_MANPATH                      /usr/local/share/man
+#---------------------------------------------------------
+# set up PATH to MANPATH mapping
+# ie. what man tree holds man pages for what binary directory.
+#
+#              *PATH*        ->        *MANPATH*
+#
+MANPATH_MAP    /bin                    /usr/share/man
+MANPATH_MAP    /usr/bin                /usr/share/man
+MANPATH_MAP    /sbin                   /usr/share/man
+MANPATH_MAP    /usr/sbin               /usr/share/man
+MANPATH_MAP    /usr/local/bin          /usr/local/man
+MANPATH_MAP    /usr/local/bin          /usr/local/share/man
+MANPATH_MAP    /usr/local/sbin         /usr/local/man
+MANPATH_MAP    /usr/local/sbin         /usr/local/share/man
+MANPATH_MAP    /usr/X11R6/bin          /usr/X11R6/man
+MANPATH_MAP    /usr/bin/X11            /usr/X11R6/man
+MANPATH_MAP    /usr/games              /usr/share/man
+MANPATH_MAP    /opt/bin                /opt/man
+MANPATH_MAP    /opt/sbin               /opt/man
+#---------------------------------------------------------
+# For a manpath element to be treated as a system manpath (as most of those
+# above should normally be), it must be mentioned below. Each line may have
+# an optional extra string indicating the catpath associated with the
+# manpath. If no catpath string is used, the catpath will default to the
+# given manpath.
+#
+# You *must* provide all system manpaths, including manpaths for alternate
+# operating systems, locale specific manpaths, and combinations of both, if
+# they exist, otherwise the permissions of the user running man/mandb will
+# be used to manipulate the manual pages. Also, mandb will not initialise
+# the database cache for any manpaths not mentioned below unless explicitly
+# requested to do so.
+#
+# In a per-user configuration file, this directive only controls the
+# location of catpaths and the creation of database caches; it has no effect
+# on privileges.
+#
+# Any manpaths that are subdirectories of other manpaths must be mentioned
+# *before* the containing manpath. E.g. /usr/man/preformat must be listed
+# before /usr/man.
+#
+#              *MANPATH*     ->        *CATPATH*
+#
+MANDB_MAP      /usr/man                /var/cache/man/fsstnd
+MANDB_MAP      /usr/share/man          /var/cache/man
+MANDB_MAP      /usr/local/man          /var/cache/man/oldlocal
+MANDB_MAP      /usr/local/share/man    /var/cache/man/local
+MANDB_MAP      /usr/X11R6/man          /var/cache/man/X11R6
+MANDB_MAP      /opt/man                /var/cache/man/opt
+MANDB_MAP      /snap/man               /var/cache/man/snap
+#
+#---------------------------------------------------------
+# Program definitions.  These are commented out by default as the value
+# of the definition is already the default.  To change: uncomment a
+# definition and modify it.
+#
+#DEFINE        pager   pager
+#DEFINE        cat     cat
+#DEFINE        tr      tr '\255\267\264\327' '\055\157\047\170'
+#DEFINE                grep    grep
+#DEFINE        troff   groff -mandoc
+#DEFINE        nroff   nroff -mandoc
+#DEFINE        eqn     eqn
+#DEFINE        neqn    neqn
+#DEFINE        tbl     tbl
+#DEFINE        col     col
+#DEFINE        vgrind  vgrind
+#DEFINE        refer   refer
+#DEFINE        grap    grap
+#DEFINE        pic     pic -S
+#
+#DEFINE                compressor      gzip -c7
+#---------------------------------------------------------
+# Misc definitions: same as program definitions above.
+#
+#DEFINE                whatis_grep_flags               -i
+#DEFINE                apropos_grep_flags              -iEw
+#DEFINE                apropos_regex_grep_flags        -iE
+#---------------------------------------------------------
+# Section names. Manual sections will be searched in the order listed here;
+# the default is 1, n, l, 8, 3, 0, 2, 5, 4, 9, 6, 7. Multiple SECTION
+# directives may be given for clarity, and will be concatenated together in
+# the expected way.
+# If a particular extension is not in this list (say, 1mh), it will be
+# displayed with the rest of the section it belongs to. The effect of this
+# is that you only need to explicitly list extensions if you want to force a
+# particular order. Sections with extensions should usually be adjacent to
+# their main section (e.g. "1 1mh 8 ...").
+#
+SECTION                1 n l 8 3 2 3posix 3pm 3perl 3am 5 4 9 6 7
+#
+#---------------------------------------------------------
+# Range of terminal widths permitted when displaying cat pages. If the
+# terminal falls outside this range, cat pages will not be created (if
+# missing) or displayed.
+#
+#MINCATWIDTH   80
+#MAXCATWIDTH   80
+#
+# If CATWIDTH is set to a non-zero number, cat pages will always be
+# formatted for a terminal of the given width, regardless of the width of
+# the terminal actually being used. This should generally be within the
+# range set by MINCATWIDTH and MAXCATWIDTH.
+#
+#CATWIDTH      0
+#
+#---------------------------------------------------------
+# Flags.
+# NOCACHE keeps man from creating cat pages.
+#NOCACHE
diff --git a/etc/mdadm/mdadm.conf b/etc/mdadm/mdadm.conf
new file mode 100644 (file)
index 0000000..481c472
--- /dev/null
@@ -0,0 +1,22 @@
+# mdadm.conf
+#
+# !NB! Run update-initramfs -u after updating this file.
+# !NB! This will ensure that initramfs has an uptodate copy.
+#
+# Please refer to mdadm.conf(5) for information about this file.
+#
+
+# by default (built-in), scan all partitions (/proc/partitions) and all
+# containers for MD superblocks. alternatively, specify devices to scan, using
+# wildcards if desired.
+#DEVICE partitions containers
+
+# automatically tag new arrays as belonging to the local system
+HOMEHOST <system>
+
+# instruct the monitoring daemon where to send mail alerts
+MAILADDR root
+
+# definitions of existing MD arrays
+
+# This configuration was auto-generated on Fri, 31 Jul 2020 16:29:35 +0000 by mkconf
diff --git a/etc/mime.types b/etc/mime.types
new file mode 100644 (file)
index 0000000..8e26dee
--- /dev/null
@@ -0,0 +1,846 @@
+###############################################################################
+#
+#  MIME media types and the extensions that represent them.
+#
+#  The format of this file is a media type on the left and zero or more
+#  filename extensions on the right.  Programs using this file will map
+#  files ending with those extensions to the associated type.
+#
+#  This file is part of the "mime-support" package.  Please report a bug using
+#  the "reportbug" command of the "reportbug" package if you would like new
+#  types or extensions to be added.
+#
+#  The reason that all types are managed by the mime-support package instead
+#  allowing individual packages to install types in much the same way as they
+#  add entries in to the mailcap file is so these types can be referenced by
+#  other programs (such as a web server) even if the specific support package
+#  for that type is not installed.
+#
+#  Users can add their own types if they wish by creating a ".mime.types"
+#  file in their home directory.  Definitions included there will take
+#  precedence over those listed here.
+#
+###############################################################################
+
+
+application/activemessage
+application/andrew-inset                       ez
+application/annodex                            anx
+application/applefile
+application/atom+xml                           atom
+application/atomcat+xml                                atomcat
+application/atomicmail
+application/atomserv+xml                       atomsrv
+application/batch-SMTP
+application/bbolin                             lin
+application/beep+xml
+application/cals-1840
+application/commonground
+application/cu-seeme                           cu
+application/cybercash
+application/davmount+xml                       davmount
+application/dca-rft
+application/dec-dx
+application/dicom                              dcm
+application/docbook+xml
+application/dsptype                            tsp
+application/dvcs
+application/ecmascript                         es
+application/edi-consent
+application/edi-x12
+application/edifact
+application/epub+zip                           epub
+application/eshop
+application/font-sfnt                          otf ttf
+application/font-tdpfr                         pfr
+application/font-woff                          woff
+application/futuresplash                       spl
+application/ghostview
+application/gzip                               gz
+application/hta                                        hta
+application/http
+application/hyperstudio
+application/iges
+application/index
+application/index.cmd
+application/index.obj
+application/index.response
+application/index.vnd
+application/iotp
+application/ipp
+application/isup
+application/java-archive                       jar
+application/java-serialized-object             ser
+application/java-vm                            class
+application/javascript                         js mjs
+application/json                               json
+application/ld+json                            jsonld
+application/m3g                                        m3g
+application/mac-binhex40                       hqx
+application/mac-compactpro                     cpt
+application/macwriteii
+application/marc
+application/mathematica                                nb nbp
+application/mbox                               mbox
+application/ms-tnef
+application/msaccess                           mdb
+application/msword                             doc dot
+application/mxf                                        mxf
+application/news-message-id
+application/news-transmission
+application/ocsp-request
+application/ocsp-response
+application/octet-stream                       bin deploy msu msp
+application/oda                                        oda
+application/oebps-package+xml                  opf
+application/ogg                                        ogx
+application/onenote                            one onetoc2 onetmp onepkg
+application/parityfec
+application/pdf                                        pdf
+application/pgp-encrypted                      pgp
+application/pgp-keys                           key
+application/pgp-signature                      sig
+application/pics-rules                         prf
+application/pkcs10
+application/pkcs7-mime
+application/pkcs7-signature
+application/pkix-cert
+application/pkix-crl
+application/pkixcmp
+application/postscript                         ps ai eps epsi epsf eps2 eps3
+application/prs.alvestrand.titrax-sheet
+application/prs.cww
+application/prs.nprend
+application/qsig
+application/rar                                        rar
+application/rdf+xml                            rdf
+application/remote-printing
+application/riscos
+application/rtf                                        rtf
+application/sdp
+application/set-payment
+application/set-payment-initiation
+application/set-registration
+application/set-registration-initiation
+application/sgml
+application/sgml-open-catalog
+application/sieve
+application/sla                                        stl
+application/slate
+application/smil+xml                           smi smil
+application/timestamp-query
+application/timestamp-reply
+application/vemmi
+application/wasm                                wasm
+application/whoispp-query
+application/whoispp-response
+application/wita
+application/x400-bp
+application/xhtml+xml                          xhtml xht
+application/xml                                        xml xsd
+application/xml-dtd
+application/xml-external-parsed-entity
+application/xslt+xml                           xsl xslt
+application/xspf+xml                           xspf
+application/zip                                        zip
+application/vnd.3M.Post-it-Notes
+application/vnd.accpac.simply.aso
+application/vnd.accpac.simply.imp
+application/vnd.acucobol
+application/vnd.aether.imp
+application/vnd.android.package-archive                                                apk
+application/vnd.anser-web-certificate-issue-initiation
+application/vnd.anser-web-funds-transfer-initiation
+application/vnd.audiograph
+application/vnd.bmi
+application/vnd.businessobjects
+application/vnd.canon-cpdl
+application/vnd.canon-lips
+application/vnd.cinderella                                                     cdy
+application/vnd.claymore
+application/vnd.commerce-battelle
+application/vnd.commonspace
+application/vnd.comsocaller
+application/vnd.contact.cmsg
+application/vnd.cosmocaller
+application/vnd.ctc-posml
+application/vnd.cups-postscript
+application/vnd.cups-raster
+application/vnd.cups-raw
+application/vnd.cybank
+application/vnd.debian.binary-package                                          deb ddeb udeb
+application/vnd.dna
+application/vnd.dpgraph
+application/vnd.dxr
+application/vnd.ecdis-update
+application/vnd.ecowin.chart
+application/vnd.ecowin.filerequest
+application/vnd.ecowin.fileupdate
+application/vnd.ecowin.series
+application/vnd.ecowin.seriesrequest
+application/vnd.ecowin.seriesupdate
+application/vnd.enliven
+application/vnd.epson.esf
+application/vnd.epson.msf
+application/vnd.epson.quickanime
+application/vnd.epson.salt
+application/vnd.epson.ssf
+application/vnd.ericsson.quickcall
+application/vnd.eudora.data
+application/vnd.fdf
+application/vnd.ffsns
+application/vnd.flographit
+application/vnd.font-fontforge-sfd                                             sfd
+application/vnd.framemaker
+application/vnd.fsc.weblaunch
+application/vnd.fujitsu.oasys
+application/vnd.fujitsu.oasys2
+application/vnd.fujitsu.oasys3
+application/vnd.fujitsu.oasysgp
+application/vnd.fujitsu.oasysprs
+application/vnd.fujixerox.ddd
+application/vnd.fujixerox.docuworks
+application/vnd.fujixerox.docuworks.binder
+application/vnd.fut-misnet
+application/vnd.google-earth.kml+xml                                           kml
+application/vnd.google-earth.kmz                                               kmz
+application/vnd.grafeq
+application/vnd.groove-account
+application/vnd.groove-identity-message
+application/vnd.groove-injector
+application/vnd.groove-tool-message
+application/vnd.groove-tool-template
+application/vnd.groove-vcard
+application/vnd.hhe.lesson-player
+application/vnd.hp-HPGL
+application/vnd.hp-PCL
+application/vnd.hp-PCLXL
+application/vnd.hp-hpid
+application/vnd.hp-hps
+application/vnd.httphone
+application/vnd.hzn-3d-crossword
+application/vnd.ibm.MiniPay
+application/vnd.ibm.afplinedata
+application/vnd.ibm.modcap
+application/vnd.informix-visionary
+application/vnd.intercon.formnet
+application/vnd.intertrust.digibox
+application/vnd.intertrust.nncp
+application/vnd.intu.qbo
+application/vnd.intu.qfx
+application/vnd.irepository.package+xml
+application/vnd.is-xpr
+application/vnd.japannet-directory-service
+application/vnd.japannet-jpnstore-wakeup
+application/vnd.japannet-payment-wakeup
+application/vnd.japannet-registration
+application/vnd.japannet-registration-wakeup
+application/vnd.japannet-setstore-wakeup
+application/vnd.japannet-verification
+application/vnd.japannet-verification-wakeup
+application/vnd.koan
+application/vnd.lotus-1-2-3
+application/vnd.lotus-approach
+application/vnd.lotus-freelance
+application/vnd.lotus-notes
+application/vnd.lotus-organizer
+application/vnd.lotus-screencam
+application/vnd.lotus-wordpro
+application/vnd.mcd
+application/vnd.mediastation.cdkey
+application/vnd.meridian-slingshot
+application/vnd.mif
+application/vnd.minisoft-hp3000-save
+application/vnd.mitsubishi.misty-guard.trustweb
+application/vnd.mobius.daf
+application/vnd.mobius.dis
+application/vnd.mobius.msl
+application/vnd.mobius.plc
+application/vnd.mobius.txf
+application/vnd.motorola.flexsuite
+application/vnd.motorola.flexsuite.adsi
+application/vnd.motorola.flexsuite.fis
+application/vnd.motorola.flexsuite.gotap
+application/vnd.motorola.flexsuite.kmr
+application/vnd.motorola.flexsuite.ttc
+application/vnd.motorola.flexsuite.wem
+application/vnd.mozilla.xul+xml                                                        xul
+application/vnd.ms-artgalry
+application/vnd.ms-asf
+application/vnd.ms-excel                                                       xls xlb xlt
+application/vnd.ms-excel.addin.macroEnabled.12                                 xlam
+application/vnd.ms-excel.sheet.binary.macroEnabled.12                          xlsb
+application/vnd.ms-excel.sheet.macroEnabled.12                                 xlsm
+application/vnd.ms-excel.template.macroEnabled.12                              xltm
+application/vnd.ms-fontobject                                                  eot
+application/vnd.ms-lrm
+application/vnd.ms-officetheme                                                 thmx
+application/vnd.ms-pki.seccat                                                  cat
+#application/vnd.ms-pki.stl                                                    stl
+application/vnd.ms-powerpoint                                                  ppt pps
+application/vnd.ms-powerpoint.addin.macroEnabled.12                            ppam
+application/vnd.ms-powerpoint.presentation.macroEnabled.12                     pptm
+application/vnd.ms-powerpoint.slide.macroEnabled.12                            sldm
+application/vnd.ms-powerpoint.slideshow.macroEnabled.12                                ppsm
+application/vnd.ms-powerpoint.template.macroEnabled.12                         potm
+application/vnd.ms-project
+application/vnd.ms-tnef
+application/vnd.ms-word.document.macroEnabled.12                               docm
+application/vnd.ms-word.template.macroEnabled.12                               dotm
+application/vnd.ms-works
+application/vnd.mseq
+application/vnd.msign
+application/vnd.music-niff
+application/vnd.musician
+application/vnd.netfpx
+application/vnd.noblenet-directory
+application/vnd.noblenet-sealer
+application/vnd.noblenet-web
+application/vnd.novadigm.EDM
+application/vnd.novadigm.EDX
+application/vnd.novadigm.EXT
+application/vnd.oasis.opendocument.chart                                       odc
+application/vnd.oasis.opendocument.database                                    odb
+application/vnd.oasis.opendocument.formula                                     odf
+application/vnd.oasis.opendocument.graphics                                    odg
+application/vnd.oasis.opendocument.graphics-template                           otg
+application/vnd.oasis.opendocument.image                                       odi
+application/vnd.oasis.opendocument.presentation                                        odp
+application/vnd.oasis.opendocument.presentation-template                       otp
+application/vnd.oasis.opendocument.spreadsheet                                 ods
+application/vnd.oasis.opendocument.spreadsheet-template                                ots
+application/vnd.oasis.opendocument.text                                                odt
+application/vnd.oasis.opendocument.text-master                                 odm
+application/vnd.oasis.opendocument.text-template                               ott
+application/vnd.oasis.opendocument.text-web                                    oth
+application/vnd.openxmlformats-officedocument.presentationml.presentation      pptx
+application/vnd.openxmlformats-officedocument.presentationml.slide             sldx
+application/vnd.openxmlformats-officedocument.presentationml.slideshow         ppsx
+application/vnd.openxmlformats-officedocument.presentationml.template          potx
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet              xlsx
+application/vnd.openxmlformats-officedocument.spreadsheetml.template           xltx
+application/vnd.openxmlformats-officedocument.wordprocessingml.document                docx
+application/vnd.openxmlformats-officedocument.wordprocessingml.template                dotx
+application/vnd.osa.netdeploy
+application/vnd.palm
+application/vnd.pg.format
+application/vnd.pg.osasli
+application/vnd.powerbuilder6
+application/vnd.powerbuilder6-s
+application/vnd.powerbuilder7
+application/vnd.powerbuilder7-s
+application/vnd.powerbuilder75
+application/vnd.powerbuilder75-s
+application/vnd.previewsystems.box
+application/vnd.publishare-delta-tree
+application/vnd.pvi.ptid1
+application/vnd.pwg-xhtml-print+xml
+application/vnd.rapid
+application/vnd.rim.cod                                                                cod
+application/vnd.s3sms
+application/vnd.seemail
+application/vnd.shana.informed.formdata
+application/vnd.shana.informed.formtemplate
+application/vnd.shana.informed.interchange
+application/vnd.shana.informed.package
+application/vnd.smaf                                                           mmf
+application/vnd.sss-cod
+application/vnd.sss-dtf
+application/vnd.sss-ntf
+application/vnd.stardivision.calc                                              sdc
+application/vnd.stardivision.chart                                             sds
+application/vnd.stardivision.draw                                              sda
+application/vnd.stardivision.impress                                           sdd
+application/vnd.stardivision.math                                              sdf
+application/vnd.stardivision.writer                                            sdw
+application/vnd.stardivision.writer-global                                     sgl
+application/vnd.street-stream
+application/vnd.sun.xml.calc                                                   sxc
+application/vnd.sun.xml.calc.template                                          stc
+application/vnd.sun.xml.draw                                                   sxd
+application/vnd.sun.xml.draw.template                                          std
+application/vnd.sun.xml.impress                                                        sxi
+application/vnd.sun.xml.impress.template                                       sti
+application/vnd.sun.xml.math                                                   sxm
+application/vnd.sun.xml.writer                                                 sxw
+application/vnd.sun.xml.writer.global                                          sxg
+application/vnd.sun.xml.writer.template                                                stw
+application/vnd.svd
+application/vnd.swiftview-ics
+application/vnd.symbian.install                                                        sis
+application/vnd.tcpdump.pcap                                                   cap pcap
+application/vnd.triscape.mxs
+application/vnd.trueapp
+application/vnd.truedoc
+application/vnd.tve-trigger
+application/vnd.ufdl
+application/vnd.uplanet.alert
+application/vnd.uplanet.alert-wbxml
+application/vnd.uplanet.bearer-choice
+application/vnd.uplanet.bearer-choice-wbxml
+application/vnd.uplanet.cacheop
+application/vnd.uplanet.cacheop-wbxml
+application/vnd.uplanet.channel
+application/vnd.uplanet.channel-wbxml
+application/vnd.uplanet.list
+application/vnd.uplanet.list-wbxml
+application/vnd.uplanet.listcmd
+application/vnd.uplanet.listcmd-wbxml
+application/vnd.uplanet.signal
+application/vnd.vcx
+application/vnd.vectorworks
+application/vnd.vidsoft.vidconference
+application/vnd.visio                                                          vsd vst vsw vss
+application/vnd.vividence.scriptfile
+application/vnd.wap.sic
+application/vnd.wap.slc
+application/vnd.wap.wbxml                                                      wbxml
+application/vnd.wap.wmlc                                                       wmlc
+application/vnd.wap.wmlscriptc                                                 wmlsc
+application/vnd.webturbo
+application/vnd.wordperfect                                                    wpd
+application/vnd.wordperfect5.1                                                 wp5
+application/vnd.wrq-hp3000-labelled
+application/vnd.wt.stf
+application/vnd.xara
+application/vnd.xfdl
+application/vnd.yellowriver-custom-menu
+application/zlib
+application/x-123                              wk
+application/x-7z-compressed                    7z
+application/x-abiword                          abw
+application/x-apple-diskimage                  dmg
+application/x-bcpio                            bcpio
+application/x-bittorrent                       torrent
+application/x-cab                              cab
+application/x-cbr                              cbr
+application/x-cbz                              cbz
+application/x-cdf                              cdf cda
+application/x-cdlink                           vcd
+application/x-chess-pgn                                pgn
+application/x-comsol                           mph
+application/x-core
+application/x-cpio                             cpio
+application/x-csh                              csh
+application/x-debian-package                   deb udeb
+application/x-director                         dcr dir dxr
+application/x-dms                              dms
+application/x-doom                             wad
+application/x-dvi                              dvi
+application/x-executable
+application/x-font                             pfa pfb gsf
+application/x-font-pcf                         pcf pcf.Z
+application/x-freemind                         mm
+application/x-futuresplash                     spl
+application/x-ganttproject                     gan
+application/x-gnumeric                         gnumeric
+application/x-go-sgf                           sgf
+application/x-graphing-calculator              gcf
+application/x-gtar                             gtar
+application/x-gtar-compressed                  tgz taz
+application/x-hdf                              hdf
+#application/x-httpd-eruby                     rhtml
+#application/x-httpd-php                       phtml pht php
+#application/x-httpd-php-source                        phps
+#application/x-httpd-php3                      php3
+#application/x-httpd-php3-preprocessed         php3p
+#application/x-httpd-php4                      php4
+#application/x-httpd-php5                      php5
+application/x-hwp                              hwp
+application/x-ica                              ica
+application/x-info                             info
+application/x-internet-signup                  ins isp
+application/x-iphone                           iii
+application/x-iso9660-image                    iso
+application/x-jam                              jam
+application/x-java-applet
+application/x-java-bean
+application/x-java-jnlp-file                   jnlp
+application/x-jmol                             jmz
+application/x-kchart                           chrt
+application/x-kdelnk
+application/x-killustrator                     kil
+application/x-koan                             skp skd skt skm
+application/x-kpresenter                       kpr kpt
+application/x-kspread                          ksp
+application/x-kword                            kwd kwt
+application/x-latex                            latex
+application/x-lha                              lha
+application/x-lyx                              lyx
+application/x-lzh                              lzh
+application/x-lzx                              lzx
+application/x-maker                            frm maker frame fm fb book fbdoc
+application/x-mif                              mif
+application/x-mpegURL                          m3u8
+application/x-ms-application                   application
+application/x-ms-manifest                      manifest
+application/x-ms-wmd                           wmd
+application/x-ms-wmz                           wmz
+application/x-msdos-program                    com exe bat dll
+application/x-msi                              msi
+application/x-netcdf                           nc
+application/x-ns-proxy-autoconfig              pac
+application/x-nwc                              nwc
+application/x-object                           o
+application/x-oz-application                   oza
+application/x-pkcs7-certreqresp                        p7r
+application/x-pkcs7-crl                                crl
+application/x-python-code                      pyc pyo
+application/x-qgis                             qgs shp shx
+application/x-quicktimeplayer                  qtl
+application/x-rdp                              rdp
+application/x-redhat-package-manager           rpm
+application/x-rss+xml                          rss
+application/x-ruby                             rb
+application/x-rx
+application/x-scilab                           sci sce
+application/x-scilab-xcos                      xcos
+application/x-sh                               sh
+application/x-shar                             shar
+application/x-shellscript
+application/x-shockwave-flash                  swf swfl
+application/x-silverlight                      scr
+application/x-sql                              sql
+application/x-stuffit                          sit sitx
+application/x-sv4cpio                          sv4cpio
+application/x-sv4crc                           sv4crc
+application/x-tar                              tar
+application/x-tcl                              tcl
+application/x-tex-gf                           gf
+application/x-tex-pk                           pk
+application/x-texinfo                          texinfo texi
+application/x-trash                            ~ % bak old sik
+application/x-troff                            t tr roff
+application/x-troff-man                                man
+application/x-troff-me                         me
+application/x-troff-ms                         ms
+application/x-ustar                            ustar
+application/x-videolan
+application/x-wais-source                      src
+application/x-wingz                            wz
+application/x-x509-ca-cert                     crt
+application/x-xcf                              xcf
+application/x-xfig                             fig
+application/x-xpinstall                                xpi
+application/x-xz                               xz
+
+audio/32kadpcm
+audio/3gpp
+audio/amr                                      amr
+audio/amr-wb                                   awb
+audio/annodex                                  axa
+audio/basic                                    au snd
+audio/csound                                   csd orc sco
+audio/flac                                     flac
+audio/g.722.1
+audio/l16
+audio/midi                                     mid midi kar
+audio/mp4a-latm
+audio/mpa-robust
+audio/mpeg                                     mpga mpega mp2 mp3 m4a
+audio/mpegurl                                  m3u
+audio/ogg                                      oga ogg opus spx
+audio/parityfec
+audio/prs.sid                                  sid
+audio/telephone-event
+audio/tone
+audio/vnd.cisco.nse
+audio/vnd.cns.anp1
+audio/vnd.cns.inf1
+audio/vnd.digital-winds
+audio/vnd.everad.plj
+audio/vnd.lucent.voice
+audio/vnd.nortel.vbk
+audio/vnd.nuera.ecelp4800
+audio/vnd.nuera.ecelp7470
+audio/vnd.nuera.ecelp9600
+audio/vnd.octel.sbc
+audio/vnd.qcelp
+audio/vnd.rhetorex.32kadpcm
+audio/vnd.vmx.cvsd
+audio/x-aiff                                   aif aiff aifc
+audio/x-gsm                                    gsm
+audio/x-mpegurl                                        m3u
+audio/x-ms-wma                                 wma
+audio/x-ms-wax                                 wax
+audio/x-pn-realaudio-plugin
+audio/x-pn-realaudio                           ra rm ram
+audio/x-realaudio                              ra
+audio/x-scpls                                  pls
+audio/x-sd2                                    sd2
+audio/x-wav                                    wav
+
+chemical/x-alchemy                             alc
+chemical/x-cache                               cac cache
+chemical/x-cache-csf                           csf
+chemical/x-cactvs-binary                       cbin cascii ctab
+chemical/x-cdx                                 cdx
+chemical/x-cerius                              cer
+chemical/x-chem3d                              c3d
+chemical/x-chemdraw                            chm
+chemical/x-cif                                 cif
+chemical/x-cmdf                                        cmdf
+chemical/x-cml                                 cml
+chemical/x-compass                             cpa
+chemical/x-crossfire                           bsd
+chemical/x-csml                                        csml csm
+chemical/x-ctx                                 ctx
+chemical/x-cxf                                 cxf cef
+#chemical/x-daylight-smiles                    smi
+chemical/x-embl-dl-nucleotide                  emb embl
+chemical/x-galactic-spc                                spc
+chemical/x-gamess-input                                inp gam gamin
+chemical/x-gaussian-checkpoint                 fch fchk
+chemical/x-gaussian-cube                       cub
+chemical/x-gaussian-input                      gau gjc gjf
+chemical/x-gaussian-log                                gal
+chemical/x-gcg8-sequence                       gcg
+chemical/x-genbank                             gen
+chemical/x-hin                                 hin
+chemical/x-isostar                             istr ist
+chemical/x-jcamp-dx                            jdx dx
+chemical/x-kinemage                            kin
+chemical/x-macmolecule                         mcm
+chemical/x-macromodel-input                    mmd mmod
+chemical/x-mdl-molfile                         mol
+chemical/x-mdl-rdfile                          rd
+chemical/x-mdl-rxnfile                         rxn
+chemical/x-mdl-sdfile                          sd sdf
+chemical/x-mdl-tgf                             tgf
+#chemical/x-mif                                        mif
+chemical/x-mmcif                               mcif
+chemical/x-mol2                                        mol2
+chemical/x-molconn-Z                           b
+chemical/x-mopac-graph                         gpt
+chemical/x-mopac-input                         mop mopcrt mpc zmt
+chemical/x-mopac-out                           moo
+chemical/x-mopac-vib                           mvb
+chemical/x-ncbi-asn1                           asn
+chemical/x-ncbi-asn1-ascii                     prt ent
+chemical/x-ncbi-asn1-binary                    val aso
+chemical/x-ncbi-asn1-spec                      asn
+chemical/x-pdb                                 pdb ent
+chemical/x-rosdal                              ros
+chemical/x-swissprot                           sw
+chemical/x-vamas-iso14976                      vms
+chemical/x-vmd                                 vmd
+chemical/x-xtel                                        xtel
+chemical/x-xyz                                 xyz
+
+font/collection                                        ttc
+font/otf                                       ttf otf
+font/sfnt                                      ttf otf
+font/ttf                                       ttf otf
+font/woff                                      woff
+font/woff2                                     woff2
+
+image/cgm
+image/g3fax
+image/gif                                      gif
+image/ief                                      ief
+image/jp2                                      jp2 jpg2
+image/jpeg                                     jpeg jpg jpe
+image/jpm                                      jpm
+image/jpx                                      jpx jpf
+image/naplps
+image/pcx                                      pcx
+image/png                                      png
+image/prs.btif
+image/prs.pti
+image/svg+xml                                  svg svgz
+image/tiff                                     tiff tif
+image/vnd.cns.inf2
+image/vnd.djvu                                 djvu djv
+image/vnd.dwg
+image/vnd.dxf
+image/vnd.fastbidsheet
+image/vnd.fpx
+image/vnd.fst
+image/vnd.fujixerox.edmics-mmr
+image/vnd.fujixerox.edmics-rlc
+image/vnd.microsoft.icon                       ico
+image/vnd.mix
+image/vnd.net-fpx
+image/vnd.svf
+image/vnd.wap.wbmp                             wbmp
+image/vnd.xiff
+image/x-canon-cr2                              cr2
+image/x-canon-crw                              crw
+image/x-cmu-raster                             ras
+image/x-coreldraw                              cdr
+image/x-coreldrawpattern                       pat
+image/x-coreldrawtemplate                      cdt
+image/x-corelphotopaint                                cpt
+image/x-epson-erf                              erf
+image/x-icon
+image/x-jg                                     art
+image/x-jng                                    jng
+image/x-ms-bmp                                 bmp
+image/x-nikon-nef                              nef
+image/x-olympus-orf                            orf
+image/x-photoshop                              psd
+image/x-portable-anymap                                pnm
+image/x-portable-bitmap                                pbm
+image/x-portable-graymap                       pgm
+image/x-portable-pixmap                                ppm
+image/x-rgb                                    rgb
+image/x-xbitmap                                        xbm
+image/x-xpixmap                                        xpm
+image/x-xwindowdump                            xwd
+
+inode/chardevice
+inode/blockdevice
+inode/directory-locked
+inode/directory
+inode/fifo
+inode/socket
+
+message/delivery-status
+message/disposition-notification
+message/external-body
+message/http
+message/s-http
+message/news
+message/partial
+message/rfc822                                 eml
+
+model/iges                                     igs iges
+model/mesh                                     msh mesh silo
+model/vnd.dwf
+model/vnd.flatland.3dml
+model/vnd.gdl
+model/vnd.gs-gdl
+model/vnd.gtw
+model/vnd.mts
+model/vnd.vtu
+model/vrml                                     wrl vrml
+model/x3d+vrml                                 x3dv
+model/x3d+xml                                  x3d
+model/x3d+binary                               x3db
+
+multipart/alternative
+multipart/appledouble
+multipart/byteranges
+multipart/digest
+multipart/encrypted
+multipart/form-data
+multipart/header-set
+multipart/mixed
+multipart/parallel
+multipart/related
+multipart/report
+multipart/signed
+multipart/voice-message
+
+text/cache-manifest                            appcache
+text/calendar                                  ics icz
+text/css                                       css
+text/csv                                       csv
+text/directory
+text/english
+text/enriched
+text/h323                                      323
+text/html                                      html htm shtml
+text/iuls                                      uls
+text/mathml                                    mml
+text/markdown                                   md markdown
+text/parityfec
+text/plain                                     asc txt text pot brf srt
+text/prs.lines.tag
+text/rfc822-headers
+text/richtext                                  rtx
+text/rtf
+text/scriptlet                                 sct wsc
+text/t140
+text/texmacs                                   tm
+text/tab-separated-values                      tsv
+text/turtle                                    ttl
+text/uri-list
+text/vcard                                     vcf vcard
+text/vnd.abc
+text/vnd.curl
+text/vnd.debian.copyright
+text/vnd.DMClientScript
+text/vnd.flatland.3dml
+text/vnd.fly
+text/vnd.fmi.flexstor
+text/vnd.in3d.3dml
+text/vnd.in3d.spot
+text/vnd.IPTC.NewsML
+text/vnd.IPTC.NITF
+text/vnd.latex-z
+text/vnd.motorola.reflex
+text/vnd.ms-mediapackage
+text/vnd.sun.j2me.app-descriptor               jad
+text/vnd.wap.si
+text/vnd.wap.sl
+text/vnd.wap.wml                               wml
+text/vnd.wap.wmlscript                         wmls
+text/x-bibtex                                  bib
+text/x-boo                                     boo
+text/x-c++hdr                                  h++ hpp hxx hh
+text/x-c++src                                  c++ cpp cxx cc
+text/x-chdr                                    h
+text/x-component                               htc
+text/x-crontab
+text/x-csh                                     csh
+text/x-csrc                                    c
+text/x-dsrc                                    d
+text/x-diff                                    diff patch
+text/x-haskell                                 hs
+text/x-java                                    java
+text/x-lilypond                                        ly
+text/x-literate-haskell                                lhs
+text/x-makefile
+text/x-moc                                     moc
+text/x-pascal                                  p pas
+text/x-pcs-gcd                                 gcd
+text/x-perl                                    pl pm
+text/x-python                                  py
+text/x-scala                                   scala
+text/x-server-parsed-html
+text/x-setext                                  etx
+text/x-sfv                                     sfv
+text/x-sh                                      sh
+text/x-tcl                                     tcl tk
+text/x-tex                                     tex ltx sty cls
+text/x-vcalendar                               vcs
+
+video/3gpp                                     3gp
+video/annodex                                  axv
+video/dl                                       dl
+video/dv                                       dif dv
+video/fli                                      fli
+video/gl                                       gl
+video/mpeg                                     mpeg mpg mpe
+video/MP2T                                     ts
+video/mp4                                      mp4
+video/quicktime                                        qt mov
+video/mp4v-es
+video/ogg                                      ogv
+video/parityfec
+video/pointer
+video/webm                                     webm
+video/vnd.fvt
+video/vnd.motorola.video
+video/vnd.motorola.videop
+video/vnd.mpegurl                              mxu
+video/vnd.mts
+video/vnd.nokia.interleaved-multimedia
+video/vnd.vivo
+video/x-flv                                    flv
+video/x-la-asf                                 lsf lsx
+video/x-mng                                    mng
+video/x-ms-asf                                 asf asx
+video/x-ms-wm                                  wm
+video/x-ms-wmv                                 wmv
+video/x-ms-wmx                                 wmx
+video/x-ms-wvx                                 wvx
+video/x-msvideo                                        avi
+video/x-sgi-movie                              movie
+video/x-matroska                               mpv mkv
+
+x-conference/x-cooltalk                                ice
+
+x-epoc/x-sisx-app                              sisx
+x-world/x-vrml                                 vrm vrml wrl
diff --git a/etc/mke2fs.conf b/etc/mke2fs.conf
new file mode 100644 (file)
index 0000000..d99dc70
--- /dev/null
@@ -0,0 +1,48 @@
+[defaults]
+       base_features = sparse_super,large_file,filetype,resize_inode,dir_index,ext_attr
+       default_mntopts = acl,user_xattr
+       enable_periodic_fsck = 0
+       blocksize = 4096
+       inode_size = 256
+       inode_ratio = 16384
+
+[fs_types]
+       ext3 = {
+               features = has_journal
+       }
+       ext4 = {
+               features = has_journal,extent,huge_file,flex_bg,metadata_csum,64bit,dir_nlink,extra_isize
+               inode_size = 256
+       }
+       small = {
+               inode_size = 128
+               inode_ratio = 4096
+       }
+       floppy = {
+               inode_size = 128
+               inode_ratio = 8192
+       }
+       big = {
+               inode_ratio = 32768
+       }
+       huge = {
+               inode_ratio = 65536
+       }
+       news = {
+               inode_ratio = 4096
+       }
+       largefile = {
+               inode_ratio = 1048576
+               blocksize = -1
+       }
+       largefile4 = {
+               inode_ratio = 4194304
+               blocksize = -1
+       }
+       hurd = {
+            blocksize = 4096
+            inode_size = 128
+       }
+
+[options]
+       fname_encoding = utf8
diff --git a/etc/modprobe.d/amd64-microcode-blacklist.conf b/etc/modprobe.d/amd64-microcode-blacklist.conf
new file mode 100644 (file)
index 0000000..1dc2c23
--- /dev/null
@@ -0,0 +1,3 @@
+# The microcode module attempts to apply a microcode update when
+# it autoloads.  This is not always safe, so we block it by default.
+blacklist microcode
diff --git a/etc/modprobe.d/blacklist-ath_pci.conf b/etc/modprobe.d/blacklist-ath_pci.conf
new file mode 100644 (file)
index 0000000..bb1a85b
--- /dev/null
@@ -0,0 +1,7 @@
+# For some Atheros 5K RF MACs, the madwifi driver loads buts fails to
+# correctly initialize the hardware, leaving it in a state from
+# which ath5k cannot recover. To prevent this condition, stop
+# madwifi from loading by default. Use Jockey to select one driver
+# or the other. (Ubuntu: #315056, #323830)
+blacklist ath_pci
+
diff --git a/etc/modprobe.d/blacklist-firewire.conf b/etc/modprobe.d/blacklist-firewire.conf
new file mode 100644 (file)
index 0000000..ae591b3
--- /dev/null
@@ -0,0 +1,10 @@
+# Select the legacy firewire stack over the new CONFIG_FIREWIRE one.
+
+blacklist ohci1394
+blacklist sbp2
+blacklist dv1394
+blacklist raw1394
+blacklist video1394
+
+#blacklist firewire-ohci
+#blacklist firewire-sbp2
diff --git a/etc/modprobe.d/blacklist-framebuffer.conf b/etc/modprobe.d/blacklist-framebuffer.conf
new file mode 100644 (file)
index 0000000..9fd5eca
--- /dev/null
@@ -0,0 +1,31 @@
+# Framebuffer drivers are generally buggy and poorly-supported, and cause
+# suspend failures, kernel panics and general mayhem.  For this reason we
+# never load them automatically.
+blacklist aty128fb
+blacklist atyfb
+blacklist radeonfb
+blacklist cirrusfb
+blacklist cyber2000fb
+blacklist cyblafb
+blacklist gx1fb
+blacklist hgafb
+blacklist i810fb
+blacklist intelfb
+blacklist kyrofb
+blacklist lxfb
+blacklist matroxfb_base
+blacklist neofb
+blacklist nvidiafb
+blacklist pm2fb
+blacklist rivafb
+blacklist s1d13xxxfb
+blacklist savagefb
+blacklist sisfb
+blacklist sstfb
+blacklist tdfxfb
+blacklist tridentfb
+#blacklist vesafb
+blacklist vfb
+blacklist viafb
+blacklist vt8623fb
+blacklist udlfb
diff --git a/etc/modprobe.d/blacklist-rare-network.conf b/etc/modprobe.d/blacklist-rare-network.conf
new file mode 100644 (file)
index 0000000..6c30188
--- /dev/null
@@ -0,0 +1,22 @@
+# Many less commonly used network protocols have recently had various
+# security flaws discovered. In an effort to reduce the scope of future
+# vulnerability exploitations, they are being blacklisted here so that
+# unprivileged users cannot use them by default. System owners can still
+# either modify this file, or specifically modprobe any needed protocols.
+
+# ax25
+alias net-pf-3 off
+# netrom
+alias net-pf-6 off
+# x25
+alias net-pf-9 off
+# rose
+alias net-pf-11 off
+# decnet
+alias net-pf-12 off
+# econet
+alias net-pf-19 off
+# rds
+alias net-pf-21 off
+# af_802154
+alias net-pf-36 off
diff --git a/etc/modprobe.d/blacklist.conf b/etc/modprobe.d/blacklist.conf
new file mode 100644 (file)
index 0000000..eecdf12
--- /dev/null
@@ -0,0 +1,52 @@
+# This file lists those modules which we don't want to be loaded by
+# alias expansion, usually so some other driver will be loaded for the
+# device instead.
+
+# evbug is a debug tool that should be loaded explicitly
+blacklist evbug
+
+# these drivers are very simple, the HID drivers are usually preferred
+blacklist usbmouse
+blacklist usbkbd
+
+# replaced by e100
+blacklist eepro100
+
+# replaced by tulip
+blacklist de4x5
+
+# causes no end of confusion by creating unexpected network interfaces
+blacklist eth1394
+
+# snd_intel8x0m can interfere with snd_intel8x0, doesn't seem to support much
+# hardware on its own (Ubuntu bug #2011, #6810)
+blacklist snd_intel8x0m
+
+# Conflicts with dvb driver (which is better for handling this device)
+blacklist snd_aw2
+
+# replaced by p54pci
+blacklist prism54
+
+# replaced by b43 and ssb.
+blacklist bcm43xx
+
+# most apps now use garmin usb driver directly (Ubuntu: #114565)
+blacklist garmin_gps
+
+# replaced by asus-laptop (Ubuntu: #184721)
+blacklist asus_acpi
+
+# low-quality, just noise when being used for sound playback, causes
+# hangs at desktop session start (Ubuntu: #246969)
+blacklist snd_pcsp
+
+# ugly and loud noise, getting on everyone's nerves; this should be done by a
+# nice pulseaudio bing (Ubuntu: #77010)
+blacklist pcspkr
+
+# EDAC driver for amd76x clashes with the agp driver preventing the aperture
+# from being initialised (Ubuntu: #297750). Blacklist so that the driver
+# continues to build and is installable for the few cases where its
+# really needed.
+blacklist amd76x_edac
diff --git a/etc/modprobe.d/intel-microcode-blacklist.conf b/etc/modprobe.d/intel-microcode-blacklist.conf
new file mode 100644 (file)
index 0000000..1dc2c23
--- /dev/null
@@ -0,0 +1,3 @@
+# The microcode module attempts to apply a microcode update when
+# it autoloads.  This is not always safe, so we block it by default.
+blacklist microcode
diff --git a/etc/modprobe.d/iwlwifi.conf b/etc/modprobe.d/iwlwifi.conf
new file mode 100644 (file)
index 0000000..5a83edd
--- /dev/null
@@ -0,0 +1,7 @@
+# /etc/modprobe.d/iwlwifi.conf
+# iwlwifi will dyamically load either iwldvm or iwlmvm depending on the
+# microcode file installed on the system.  When removing iwlwifi, first
+# remove the iwl?vm module and then iwlwifi.
+remove iwlwifi \
+(/sbin/lsmod | grep -o -e ^iwlmvm -e ^iwldvm -e ^iwlwifi | xargs /sbin/rmmod) \
+&& /sbin/modprobe -r mac80211
diff --git a/etc/modprobe.d/mdadm.conf b/etc/modprobe.d/mdadm.conf
new file mode 100644 (file)
index 0000000..5ad1249
--- /dev/null
@@ -0,0 +1,8 @@
+# mdadm module configuration file
+# set start_ro=1 to make newly assembled arrays read-only initially,
+# to prevent metadata writes.  This is needed in order to allow
+# resume-from-disk to work - new boot should not perform writes
+# because it will be done behind the back of the system being
+# resumed.  See http://bugs.debian.org/415441 for details.
+
+options md_mod start_ro=1
diff --git a/etc/modules b/etc/modules
new file mode 100644 (file)
index 0000000..a88e208
--- /dev/null
@@ -0,0 +1,5 @@
+# /etc/modules: kernel modules to load at boot time.
+#
+# This file contains the names of kernel modules that should be loaded
+# at boot time, one per line. Lines beginning with "#" are ignored.
+
diff --git a/etc/modules-load.d/modules.conf b/etc/modules-load.d/modules.conf
new file mode 120000 (symlink)
index 0000000..464b823
--- /dev/null
@@ -0,0 +1 @@
+../modules
\ No newline at end of file
diff --git a/etc/mtab b/etc/mtab
new file mode 120000 (symlink)
index 0000000..5c4677a
--- /dev/null
+++ b/etc/mtab
@@ -0,0 +1 @@
+../proc/self/mounts
\ No newline at end of file
diff --git a/etc/multipath.conf b/etc/multipath.conf
new file mode 100644 (file)
index 0000000..d19039f
--- /dev/null
@@ -0,0 +1,3 @@
+defaults {
+    user_friendly_names yes
+}
diff --git a/etc/multipath/wwids b/etc/multipath/wwids
new file mode 100644 (file)
index 0000000..9a427a6
--- /dev/null
@@ -0,0 +1,5 @@
+# Multipath wwids, Version : 1.0
+# NOTE: This file is automatically maintained by multipath and multipathd.
+# You should not need to edit this file in normal circumstances.
+#
+# Valid WWIDs:
diff --git a/etc/nanorc b/etc/nanorc
new file mode 100644 (file)
index 0000000..9104c9b
--- /dev/null
@@ -0,0 +1,300 @@
+## Sample initialization file for GNU nano.
+##
+## This file should not be in DOS or Mac format, and characters
+## specially interpreted by the shell should not be escaped here.
+##
+## To make sure an option is disabled, use "unset <option>".
+##
+## For the options that take parameters, the default value is given.
+## Other options are unset by default.
+##
+## Inside string parameters, quotes should not be escaped.  The last
+## double quote on the line will be seen as the closing quote.
+
+## Make the 'nextword' function (Ctrl+Right) stop at word ends
+## instead of at beginnings.
+# set afterends
+
+## When soft line wrapping is enabled, make it wrap lines at blanks
+## (tabs and spaces) instead of always at the edge of the screen.
+# set atblanks
+
+## Automatically indent a newly created line to the same number of
+## tabs and/or spaces as the preceding line -- or as the next line
+## if the preceding line is the beginning of a paragraph.
+# set autoindent
+
+## Back up files to the current filename plus a tilde.
+# set backup
+
+## The directory to put unique backup files in.
+# set backupdir ""
+
+## Use bold text instead of reverse video text.
+# set boldtext
+
+## The characters treated as closing brackets when justifying paragraphs.
+## This may not include any blank characters.  Only closing punctuation,
+## optionally followed by these closing brackets, can end sentences.
+# set brackets ""')>]}"
+
+## Automatically hard-wrap the current line when it becomes overlong.
+# set breaklonglines
+
+## Do case-sensitive searches by default.
+# set casesensitive
+
+## Constantly display the cursor position in the status bar.  Note that
+## this overrides "quickblank".
+# set constantshow
+
+## Use cut-from-cursor-to-end-of-line by default.
+# set cutfromcursor
+
+## Do not use the line below the title bar, leaving it entirely blank.
+# set emptyline
+
+## Set the target width for automatic hard-wrapping and for justifying
+## paragraphs.  If the specified value is 0 or less, the wrapping point
+## will be the terminal's width minus this number.
+# set fill -8
+
+## Remember the used search/replace strings for the next session.
+set historylog
+
+## Scroll the buffer contents per half-screen instead of per line.
+# set jumpyscrolling
+
+## Display line numbers to the left of the text.
+# set linenumbers
+
+## Enable vim-style lock-files.  This is just to let a vim user know you
+## are editing a file [s]he is trying to edit and vice versa.  There are
+## no plans to implement vim-style undo state in these files.
+set locking
+
+## The opening and closing brackets that can be found by bracket
+## searches.  They cannot contain blank characters.  The former set must
+## come before the latter set, and both must be in the same order.
+# set matchbrackets "(<[{)>]}"
+
+## Enable mouse support, if available for your system.  When enabled,
+## mouse clicks can be used to place the cursor, set the mark (with a
+## double click), and execute shortcuts.  The mouse will work in the X
+## Window System, and on the console when gpm is running.
+# set mouse
+
+## Switch on multiple file buffers (inserting a file will put it into
+## a separate buffer).
+# set multibuffer
+
+## Don't convert files from DOS/Mac format.
+# set noconvert
+
+## Don't display the helpful shortcut lists at the bottom of the screen.
+# set nohelp
+
+## Don't automatically add a newline when a file does not end with one.
+# set nonewlines
+
+## Set operating directory.  nano will not read or write files outside
+## this directory and its subdirectories.  Also, the current directory
+## is changed to here, so any files are inserted from this dir.  A blank
+## string means the operating-directory feature is turned off.
+# set operatingdir ""
+
+## Remember the cursor position in each file for the next editing session.
+# set positionlog
+
+## Preserve the XON and XOFF keys (^Q and ^S).
+# set preserve
+
+## The characters treated as closing punctuation when justifying
+## paragraphs.  They cannot contain blank characters.  Only closing
+## punctuation, optionally followed by closing brackets, can end
+## sentences.
+# set punct "!.?"
+
+## Do quick status-bar blanking.  Status-bar messages will disappear after
+## 1 keystroke instead of 26.  Note that "constantshow" overrides this.
+# set quickblank
+
+## The regular expression that matches quoting characters in email
+## or line-comment introducers in source code.  The default is:
+# set quotestr "^([    ]*([!#%:;>|}]|//))+"
+
+## Try to work around a mismatching terminfo terminal description.
+# set rawsequences
+
+## Fix Backspace/Delete confusion problem.
+# set rebinddelete
+
+## Do regular-expression searches by default.
+## Regular expressions are of the extended type (ERE).
+# set regexp
+
+## Put the cursor on the highlighted item in the file browser, and show
+## the cursor in the help viewer; useful for people who use a braille
+## display and people with poor vision.
+# set showcursor
+
+## Make the Home key smarter.  When Home is pressed anywhere but at the
+## very beginning of non-whitespace characters on a line, the cursor
+## will jump to that beginning (either forwards or backwards).  If the
+## cursor is already at that position, it will jump to the true
+## beginning of the line.
+# set smarthome
+
+## Enable soft line wrapping (AKA full-line display).
+# set softwrap
+
+## Use this spelling checker instead of the internal one.  This option
+## does not have a default value.
+# set speller "aspell -x -c"
+
+## Allow nano to be suspended.
+set suspend
+
+## Use this tab size instead of the default; it must be greater than 0.
+# set tabsize 8
+
+## Convert typed tabs to spaces.
+# set tabstospaces
+
+## Save automatically on exit; don't prompt.
+# set tempfile
+
+## Snip whitespace at the end of lines when justifying or hard-wrapping.
+# set trimblanks
+
+## Disallow file modification.  Why would you want this in an rcfile? ;)
+# set view
+
+## The two single-column characters used to display the first characters
+## of tabs and spaces.  187 in ISO 8859-1 (0000BB in Unicode) and 183 in
+## ISO-8859-1 (0000B7 in Unicode) seem to be good values for these.
+## The default when in a UTF-8 locale:
+# set whitespace "»·"
+## The default otherwise:
+# set whitespace ">."
+
+## Detect word boundaries differently by treating punctuation
+## characters as parts of words.
+# set wordbounds
+
+## The characters (besides alphanumeric ones) that should be considered
+## as parts of words.  This option does not have a default value.  When
+## set, it overrides option 'set wordbounds'.
+# set wordchars "<_>."
+
+## Let an unmodified Backspace or Delete erase the marked region (instead
+## of a single character, and without affecting the cutbuffer).
+# set zap
+
+## Paint the interface elements of nano.  These are examples;
+## by default there are no colors, except for errorcolor.
+# set titlecolor brightwhite,blue
+# set statuscolor brightwhite,green
+# set errorcolor brightwhite,red
+# set selectedcolor brightwhite,magenta
+# set stripecolor ,yellow
+# set numbercolor cyan
+# set keycolor cyan
+# set functioncolor green
+## In root's .nanorc you might want to use:
+# set titlecolor brightwhite,magenta
+# set statuscolor brightwhite,magenta
+# set errorcolor brightwhite,red
+# set selectedcolor brightwhite,cyan
+# set stripecolor ,yellow
+# set numbercolor magenta
+# set keycolor brightmagenta
+# set functioncolor magenta
+
+
+## Setup of syntax coloring.
+##
+##   syntax "name" ["filename regex" ...]
+##
+##   color|icolor foreground,background "regex" ["regex"...]
+##   [...]
+##
+## 'color' will do case-sensitive matches, while 'icolor' will do
+## case-insensitive matches.
+##
+## All color commands are applied in the order in which they are specified,
+## meaning that later commands can recolor stuff that was colored earlier.
+##
+## Valid color names for foreground and background are: white, black, normal,
+## red, blue, green, yellow, magenta, cyan.  For foreground colors, you may
+## use the prefix "bright" to get a stronger highlight.
+##
+## All regexes (regular expressions) are of the extended type (ERE).
+##
+## If the coloring rule should span multiple lines, use the following format:
+##
+##   color fg,bg  start="regex" end="regex"
+##
+## If you wish, you may put your syntax definitions in separate files.
+## You can make use of such files as follows:
+##
+##   include "/path/to/syntax_file.nanorc"
+
+## To include all existing syntax definitions, you can do:
+include "/usr/share/nano/*.nanorc"
+
+
+## If <Tab> should always produce four spaces when editing a Python file,
+## independent of the settings of 'tabsize' and 'tabstospaces':
+# extendsyntax python tabgives "    "
+
+## If <Tab> should always produce an actual TAB when editing a Makefile:
+# extendsyntax makefile tabgives "     "
+
+
+## Key bindings.
+## See nanorc(5) (section REBINDING KEYS) for more details on this.
+
+## The <Ctrl+Delete> keystroke deletes the word to the right of the cursor.
+## On some terminals the <Ctrl+Backspace> keystroke produces ^H, which is
+## the ASCII character for backspace, so it is bound by default to the
+## backspace function.  The <Backspace> key itself produces a different
+## keycode, which is hard-bound to the backspace function.  So, if you
+## normally use <Backspace> for backspacing and not ^H, you can make
+## <Ctrl+Backspace> delete the word to the left of the cursor with:
+# bind ^H chopwordleft main
+
+## If you would like nano to have keybindings that are more "usual",
+## such as ^O for Open, ^F for Find, ^H for Help, and ^Q for Quit,
+## then uncomment these:
+#bind ^Q exit all
+#bind ^S savefile main
+#bind ^W writeout main
+#bind ^O insert main
+#bind ^H help all
+#bind ^H exit help
+#bind ^F whereis all
+#bind ^G findnext all
+#bind ^B wherewas all
+#bind ^D findprevious all
+#bind ^R replace main
+#bind M-X flipnewbuffer all
+#bind ^X cut all
+#bind ^C copy main
+#bind ^V paste all
+#bind ^P curpos main
+#bind ^A mark main
+#unbind ^K main
+#unbind ^U all
+#unbind ^N main
+#unbind ^Y all
+#unbind M-J main
+#unbind M-T main
+#bind ^T gotoline main
+#bind ^T gotodir browser
+#bind ^Y speller main
+#bind M-U undo main
+#bind M-R redo main
+#bind ^U undo main
+#bind ^E redo main
+#set multibuffer
diff --git a/etc/netplan/00-installer-config.yaml b/etc/netplan/00-installer-config.yaml
new file mode 100644 (file)
index 0000000..33ac74a
--- /dev/null
@@ -0,0 +1,14 @@
+# This is the network config written by 'subiquity'
+network:
+  ethernets:
+    ens160:
+      addresses:
+      - 216.218.216.163/24
+      - 2001:470:1:1ee::76/64
+      gateway4: 216.218.216.161
+      gateway6: 2001:470:1:1ee::1
+      nameservers:
+        addresses:
+        - 2001:4860:4860::8888
+        - 2001:4860:4860::8844
+  version: 2
diff --git a/etc/network/if-pre-up.d/ethtool b/etc/network/if-pre-up.d/ethtool
new file mode 100755 (executable)
index 0000000..398adae
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+ETHTOOL=/sbin/ethtool
+
+test -x $ETHTOOL || exit 0
+
+[ "$IFACE" != "lo" ] || exit 0
+
+# Gather together the mixed bag of settings applied with -s/--change
+SETTINGS="\
+${IF_ETHERNET_PORT:+ port $IF_ETHERNET_PORT}\
+${IF_DRIVER_MESSAGE_LEVEL:+ msglvl $IF_DRIVER_MESSAGE_LEVEL}\
+"
+[ -z "$SETTINGS" ] || $ETHTOOL --change "$IFACE" $SETTINGS
diff --git a/etc/network/if-up.d/ethtool b/etc/network/if-up.d/ethtool
new file mode 100755 (executable)
index 0000000..1e9da0a
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+ETHTOOL=/sbin/ethtool
+
+test -x $ETHTOOL || exit 0
+
+[ "$IFACE" != "lo" ] || exit 0
+
+# Find settings with a given prefix and print them as they appeared in
+# /etc/network/interfaces, only with the prefix removed.
+# This actually prints each name and value on a separate line, but that
+# doesn't matter to the shell.
+gather_settings () {
+    set | sed -n "
+/^IF_$1[A-Za-z0-9_]*=/ {
+    h;                             # hold line
+    s/^IF_$1//; s/=.*//; s/_/-/g;  # get name without prefix
+    y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;  # lower-case
+    p;
+    g;                             # restore line
+    s/^[^=]*=//; s/^'\(.*\)'/\1/;  # get value
+    p;
+}"
+}
+
+# Gather together the mixed bag of settings applied with -s/--change
+SETTINGS="\
+${IF_LINK_SPEED:+ speed $IF_LINK_SPEED}\
+${IF_LINK_DUPLEX:+ duplex $IF_LINK_DUPLEX}\
+"
+
+# WOL has an optional pass-key
+set -- $IF_ETHERNET_WOL
+SETTINGS="$SETTINGS${1:+ wol $1}${2:+ sopass $2}"
+
+# Autonegotiation can be on|off or an advertising mask
+case "$IF_ETHERNET_AUTONEG" in
+'')    ;;
+on|off)        SETTINGS="$SETTINGS autoneg $IF_ETHERNET_AUTONEG" ;;
+*)     SETTINGS="$SETTINGS autoneg on advertise $IF_ETHERNET_AUTONEG" ;;
+esac
+
+[ -z "$SETTINGS" ] || $ETHTOOL --change "$IFACE" $SETTINGS
+
+SETTINGS="$(gather_settings ETHERNET_PAUSE_)"
+[ -z "$SETTINGS" ] || $ETHTOOL --pause "$IFACE" $SETTINGS
+
+SETTINGS="$(gather_settings HARDWARE_IRQ_COALESCE_)"
+[ -z "$SETTINGS" ] || $ETHTOOL --coalesce "$IFACE" $SETTINGS
+
+SETTINGS="$(gather_settings HARDWARE_DMA_RING_)"
+[ -z "$SETTINGS" ] || $ETHTOOL --set-ring "$IFACE" $SETTINGS
+
+SETTINGS="$(gather_settings OFFLOAD_)"
+[ -z "$SETTINGS" ] || $ETHTOOL --offload "$IFACE" $SETTINGS
diff --git a/etc/network/interfaces b/etc/network/interfaces
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/networks b/etc/networks
new file mode 100644 (file)
index 0000000..0890307
--- /dev/null
@@ -0,0 +1,2 @@
+# symbolic names for networks, see networks(5) for more information
+link-local 169.254.0.0
diff --git a/etc/newt/palette b/etc/newt/palette
new file mode 120000 (symlink)
index 0000000..007c0d1
--- /dev/null
@@ -0,0 +1 @@
+/etc/alternatives/newt-palette
\ No newline at end of file
diff --git a/etc/newt/palette.original b/etc/newt/palette.original
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/newt/palette.ubuntu b/etc/newt/palette.ubuntu
new file mode 100644 (file)
index 0000000..aa81c45
--- /dev/null
@@ -0,0 +1,9 @@
+root=,magenta
+checkbox=,magenta
+entry=,magenta
+label=magenta,
+actlistbox=,magenta
+helpline=,magenta
+roottext=,magenta
+emptyscale=magenta
+disabledentry=magenta,
diff --git a/etc/nginx/fastcgi.conf b/etc/nginx/fastcgi.conf
new file mode 100644 (file)
index 0000000..091738c
--- /dev/null
@@ -0,0 +1,26 @@
+
+fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
+fastcgi_param  QUERY_STRING       $query_string;
+fastcgi_param  REQUEST_METHOD     $request_method;
+fastcgi_param  CONTENT_TYPE       $content_type;
+fastcgi_param  CONTENT_LENGTH     $content_length;
+
+fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
+fastcgi_param  REQUEST_URI        $request_uri;
+fastcgi_param  DOCUMENT_URI       $document_uri;
+fastcgi_param  DOCUMENT_ROOT      $document_root;
+fastcgi_param  SERVER_PROTOCOL    $server_protocol;
+fastcgi_param  REQUEST_SCHEME     $scheme;
+fastcgi_param  HTTPS              $https if_not_empty;
+
+fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
+fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
+
+fastcgi_param  REMOTE_ADDR        $remote_addr;
+fastcgi_param  REMOTE_PORT        $remote_port;
+fastcgi_param  SERVER_ADDR        $server_addr;
+fastcgi_param  SERVER_PORT        $server_port;
+fastcgi_param  SERVER_NAME        $server_name;
+
+# PHP only, required if PHP was built with --enable-force-cgi-redirect
+fastcgi_param  REDIRECT_STATUS    200;
diff --git a/etc/nginx/fastcgi_params b/etc/nginx/fastcgi_params
new file mode 100644 (file)
index 0000000..28decb9
--- /dev/null
@@ -0,0 +1,25 @@
+
+fastcgi_param  QUERY_STRING       $query_string;
+fastcgi_param  REQUEST_METHOD     $request_method;
+fastcgi_param  CONTENT_TYPE       $content_type;
+fastcgi_param  CONTENT_LENGTH     $content_length;
+
+fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
+fastcgi_param  REQUEST_URI        $request_uri;
+fastcgi_param  DOCUMENT_URI       $document_uri;
+fastcgi_param  DOCUMENT_ROOT      $document_root;
+fastcgi_param  SERVER_PROTOCOL    $server_protocol;
+fastcgi_param  REQUEST_SCHEME     $scheme;
+fastcgi_param  HTTPS              $https if_not_empty;
+
+fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
+fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
+
+fastcgi_param  REMOTE_ADDR        $remote_addr;
+fastcgi_param  REMOTE_PORT        $remote_port;
+fastcgi_param  SERVER_ADDR        $server_addr;
+fastcgi_param  SERVER_PORT        $server_port;
+fastcgi_param  SERVER_NAME        $server_name;
+
+# PHP only, required if PHP was built with --enable-force-cgi-redirect
+fastcgi_param  REDIRECT_STATUS    200;
diff --git a/etc/nginx/koi-utf b/etc/nginx/koi-utf
new file mode 100644 (file)
index 0000000..e7974ff
--- /dev/null
@@ -0,0 +1,109 @@
+
+# This map is not a full koi8-r <> utf8 map: it does not contain
+# box-drawing and some other characters.  Besides this map contains
+# several koi8-u and Byelorussian letters which are not in koi8-r.
+# If you need a full and standard map, use contrib/unicode2nginx/koi-utf
+# map instead.
+
+charset_map  koi8-r  utf-8 {
+
+    80  E282AC ; # euro
+
+    95  E280A2 ; # bullet
+
+    9A  C2A0 ;   # &nbsp;
+
+    9E  C2B7 ;   # &middot;
+
+    A3  D191 ;   # small yo
+    A4  D194 ;   # small Ukrainian ye
+
+    A6  D196 ;   # small Ukrainian i
+    A7  D197 ;   # small Ukrainian yi
+
+    AD  D291 ;   # small Ukrainian soft g
+    AE  D19E ;   # small Byelorussian short u
+
+    B0  C2B0 ;   # &deg;
+
+    B3  D081 ;   # capital YO
+    B4  D084 ;   # capital Ukrainian YE
+
+    B6  D086 ;   # capital Ukrainian I
+    B7  D087 ;   # capital Ukrainian YI
+
+    B9  E28496 ; # numero sign
+
+    BD  D290 ;   # capital Ukrainian soft G
+    BE  D18E ;   # capital Byelorussian short U
+
+    BF  C2A9 ;   # (C)
+
+    C0  D18E ;   # small yu
+    C1  D0B0 ;   # small a
+    C2  D0B1 ;   # small b
+    C3  D186 ;   # small ts
+    C4  D0B4 ;   # small d
+    C5  D0B5 ;   # small ye
+    C6  D184 ;   # small f
+    C7  D0B3 ;   # small g
+    C8  D185 ;   # small kh
+    C9  D0B8 ;   # small i
+    CA  D0B9 ;   # small j
+    CB  D0BA ;   # small k
+    CC  D0BB ;   # small l
+    CD  D0BC ;   # small m
+    CE  D0BD ;   # small n
+    CF  D0BE ;   # small o
+
+    D0  D0BF ;   # small p
+    D1  D18F ;   # small ya
+    D2  D180 ;   # small r
+    D3  D181 ;   # small s
+    D4  D182 ;   # small t
+    D5  D183 ;   # small u
+    D6  D0B6 ;   # small zh
+    D7  D0B2 ;   # small v
+    D8  D18C ;   # small soft sign
+    D9  D18B ;   # small y
+    DA  D0B7 ;   # small z
+    DB  D188 ;   # small sh
+    DC  D18D ;   # small e
+    DD  D189 ;   # small shch
+    DE  D187 ;   # small ch
+    DF  D18A ;   # small hard sign
+
+    E0  D0AE ;   # capital YU
+    E1  D090 ;   # capital A
+    E2  D091 ;   # capital B
+    E3  D0A6 ;   # capital TS
+    E4  D094 ;   # capital D
+    E5  D095 ;   # capital YE
+    E6  D0A4 ;   # capital F
+    E7  D093 ;   # capital G
+    E8  D0A5 ;   # capital KH
+    E9  D098 ;   # capital I
+    EA  D099 ;   # capital J
+    EB  D09A ;   # capital K
+    EC  D09B ;   # capital L
+    ED  D09C ;   # capital M
+    EE  D09D ;   # capital N
+    EF  D09E ;   # capital O
+
+    F0  D09F ;   # capital P
+    F1  D0AF ;   # capital YA
+    F2  D0A0 ;   # capital R
+    F3  D0A1 ;   # capital S
+    F4  D0A2 ;   # capital T
+    F5  D0A3 ;   # capital U
+    F6  D096 ;   # capital ZH
+    F7  D092 ;   # capital V
+    F8  D0AC ;   # capital soft sign
+    F9  D0AB ;   # capital Y
+    FA  D097 ;   # capital Z
+    FB  D0A8 ;   # capital SH
+    FC  D0AD ;   # capital E
+    FD  D0A9 ;   # capital SHCH
+    FE  D0A7 ;   # capital CH
+    FF  D0AA ;   # capital hard sign
+}
diff --git a/etc/nginx/koi-win b/etc/nginx/koi-win
new file mode 100644 (file)
index 0000000..72afabe
--- /dev/null
@@ -0,0 +1,103 @@
+
+charset_map  koi8-r  windows-1251 {
+
+    80  88 ; # euro
+
+    95  95 ; # bullet
+
+    9A  A0 ; # &nbsp;
+
+    9E  B7 ; # &middot;
+
+    A3  B8 ; # small yo
+    A4  BA ; # small Ukrainian ye
+
+    A6  B3 ; # small Ukrainian i
+    A7  BF ; # small Ukrainian yi
+
+    AD  B4 ; # small Ukrainian soft g
+    AE  A2 ; # small Byelorussian short u
+
+    B0  B0 ; # &deg;
+
+    B3  A8 ; # capital YO
+    B4  AA ; # capital Ukrainian YE
+
+    B6  B2 ; # capital Ukrainian I
+    B7  AF ; # capital Ukrainian YI
+
+    B9  B9 ; # numero sign
+
+    BD  A5 ; # capital Ukrainian soft G
+    BE  A1 ; # capital Byelorussian short U
+
+    BF  A9 ; # (C)
+
+    C0  FE ; # small yu
+    C1  E0 ; # small a
+    C2  E1 ; # small b
+    C3  F6 ; # small ts
+    C4  E4 ; # small d
+    C5  E5 ; # small ye
+    C6  F4 ; # small f
+    C7  E3 ; # small g
+    C8  F5 ; # small kh
+    C9  E8 ; # small i
+    CA  E9 ; # small j
+    CB  EA ; # small k
+    CC  EB ; # small l
+    CD  EC ; # small m
+    CE  ED ; # small n
+    CF  EE ; # small o
+
+    D0  EF ; # small p
+    D1  FF ; # small ya
+    D2  F0 ; # small r
+    D3  F1 ; # small s
+    D4  F2 ; # small t
+    D5  F3 ; # small u
+    D6  E6 ; # small zh
+    D7  E2 ; # small v
+    D8  FC ; # small soft sign
+    D9  FB ; # small y
+    DA  E7 ; # small z
+    DB  F8 ; # small sh
+    DC  FD ; # small e
+    DD  F9 ; # small shch
+    DE  F7 ; # small ch
+    DF  FA ; # small hard sign
+
+    E0  DE ; # capital YU
+    E1  C0 ; # capital A
+    E2  C1 ; # capital B
+    E3  D6 ; # capital TS
+    E4  C4 ; # capital D
+    E5  C5 ; # capital YE
+    E6  D4 ; # capital F
+    E7  C3 ; # capital G
+    E8  D5 ; # capital KH
+    E9  C8 ; # capital I
+    EA  C9 ; # capital J
+    EB  CA ; # capital K
+    EC  CB ; # capital L
+    ED  CC ; # capital M
+    EE  CD ; # capital N
+    EF  CE ; # capital O
+
+    F0  CF ; # capital P
+    F1  DF ; # capital YA
+    F2  D0 ; # capital R
+    F3  D1 ; # capital S
+    F4  D2 ; # capital T
+    F5  D3 ; # capital U
+    F6  C6 ; # capital ZH
+    F7  C2 ; # capital V
+    F8  DC ; # capital soft sign
+    F9  DB ; # capital Y
+    FA  C7 ; # capital Z
+    FB  D8 ; # capital SH
+    FC  DD ; # capital E
+    FD  D9 ; # capital SHCH
+    FE  D7 ; # capital CH
+    FF  DA ; # capital hard sign
+}
diff --git a/etc/nginx/mime.types b/etc/nginx/mime.types
new file mode 100644 (file)
index 0000000..89be9a4
--- /dev/null
@@ -0,0 +1,89 @@
+
+types {
+    text/html                             html htm shtml;
+    text/css                              css;
+    text/xml                              xml;
+    image/gif                             gif;
+    image/jpeg                            jpeg jpg;
+    application/javascript                js;
+    application/atom+xml                  atom;
+    application/rss+xml                   rss;
+
+    text/mathml                           mml;
+    text/plain                            txt;
+    text/vnd.sun.j2me.app-descriptor      jad;
+    text/vnd.wap.wml                      wml;
+    text/x-component                      htc;
+
+    image/png                             png;
+    image/tiff                            tif tiff;
+    image/vnd.wap.wbmp                    wbmp;
+    image/x-icon                          ico;
+    image/x-jng                           jng;
+    image/x-ms-bmp                        bmp;
+    image/svg+xml                         svg svgz;
+    image/webp                            webp;
+
+    application/font-woff                 woff;
+    application/java-archive              jar war ear;
+    application/json                      json;
+    application/mac-binhex40              hqx;
+    application/msword                    doc;
+    application/pdf                       pdf;
+    application/postscript                ps eps ai;
+    application/rtf                       rtf;
+    application/vnd.apple.mpegurl         m3u8;
+    application/vnd.ms-excel              xls;
+    application/vnd.ms-fontobject         eot;
+    application/vnd.ms-powerpoint         ppt;
+    application/vnd.wap.wmlc              wmlc;
+    application/vnd.google-earth.kml+xml  kml;
+    application/vnd.google-earth.kmz      kmz;
+    application/x-7z-compressed           7z;
+    application/x-cocoa                   cco;
+    application/x-java-archive-diff       jardiff;
+    application/x-java-jnlp-file          jnlp;
+    application/x-makeself                run;
+    application/x-perl                    pl pm;
+    application/x-pilot                   prc pdb;
+    application/x-rar-compressed          rar;
+    application/x-redhat-package-manager  rpm;
+    application/x-sea                     sea;
+    application/x-shockwave-flash         swf;
+    application/x-stuffit                 sit;
+    application/x-tcl                     tcl tk;
+    application/x-x509-ca-cert            der pem crt;
+    application/x-xpinstall               xpi;
+    application/xhtml+xml                 xhtml;
+    application/xspf+xml                  xspf;
+    application/zip                       zip;
+
+    application/octet-stream              bin exe dll;
+    application/octet-stream              deb;
+    application/octet-stream              dmg;
+    application/octet-stream              iso img;
+    application/octet-stream              msi msp msm;
+
+    application/vnd.openxmlformats-officedocument.wordprocessingml.document    docx;
+    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet          xlsx;
+    application/vnd.openxmlformats-officedocument.presentationml.presentation  pptx;
+
+    audio/midi                            mid midi kar;
+    audio/mpeg                            mp3;
+    audio/ogg                             ogg;
+    audio/x-m4a                           m4a;
+    audio/x-realaudio                     ra;
+
+    video/3gpp                            3gpp 3gp;
+    video/mp2t                            ts;
+    video/mp4                             mp4;
+    video/mpeg                            mpeg mpg;
+    video/quicktime                       mov;
+    video/webm                            webm;
+    video/x-flv                           flv;
+    video/x-m4v                           m4v;
+    video/x-mng                           mng;
+    video/x-ms-asf                        asx asf;
+    video/x-ms-wmv                        wmv;
+    video/x-msvideo                       avi;
+}
diff --git a/etc/nginx/modules-enabled/50-mod-http-image-filter.conf b/etc/nginx/modules-enabled/50-mod-http-image-filter.conf
new file mode 120000 (symlink)
index 0000000..fa27cd3
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/nginx/modules-available/mod-http-image-filter.conf
\ No newline at end of file
diff --git a/etc/nginx/modules-enabled/50-mod-http-xslt-filter.conf b/etc/nginx/modules-enabled/50-mod-http-xslt-filter.conf
new file mode 120000 (symlink)
index 0000000..51d7ca7
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/nginx/modules-available/mod-http-xslt-filter.conf
\ No newline at end of file
diff --git a/etc/nginx/modules-enabled/50-mod-mail.conf b/etc/nginx/modules-enabled/50-mod-mail.conf
new file mode 120000 (symlink)
index 0000000..baa6ea9
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/nginx/modules-available/mod-mail.conf
\ No newline at end of file
diff --git a/etc/nginx/modules-enabled/50-mod-stream.conf b/etc/nginx/modules-enabled/50-mod-stream.conf
new file mode 120000 (symlink)
index 0000000..7f65cc5
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/nginx/modules-available/mod-stream.conf
\ No newline at end of file
diff --git a/etc/nginx/proxy_params b/etc/nginx/proxy_params
new file mode 100644 (file)
index 0000000..df75bc5
--- /dev/null
@@ -0,0 +1,4 @@
+proxy_set_header Host $http_host;
+proxy_set_header X-Real-IP $remote_addr;
+proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+proxy_set_header X-Forwarded-Proto $scheme;
diff --git a/etc/nginx/scgi_params b/etc/nginx/scgi_params
new file mode 100644 (file)
index 0000000..6d4ce4f
--- /dev/null
@@ -0,0 +1,17 @@
+
+scgi_param  REQUEST_METHOD     $request_method;
+scgi_param  REQUEST_URI        $request_uri;
+scgi_param  QUERY_STRING       $query_string;
+scgi_param  CONTENT_TYPE       $content_type;
+
+scgi_param  DOCUMENT_URI       $document_uri;
+scgi_param  DOCUMENT_ROOT      $document_root;
+scgi_param  SCGI               1;
+scgi_param  SERVER_PROTOCOL    $server_protocol;
+scgi_param  REQUEST_SCHEME     $scheme;
+scgi_param  HTTPS              $https if_not_empty;
+
+scgi_param  REMOTE_ADDR        $remote_addr;
+scgi_param  REMOTE_PORT        $remote_port;
+scgi_param  SERVER_PORT        $server_port;
+scgi_param  SERVER_NAME        $server_name;
diff --git a/etc/nginx/snippets/fastcgi-php.conf b/etc/nginx/snippets/fastcgi-php.conf
new file mode 100644 (file)
index 0000000..467a9e7
--- /dev/null
@@ -0,0 +1,13 @@
+# regex to split $uri to $fastcgi_script_name and $fastcgi_path
+fastcgi_split_path_info ^(.+?\.php)(/.*)$;
+
+# Check that the PHP script exists before passing it
+try_files $fastcgi_script_name =404;
+
+# Bypass the fact that try_files resets $fastcgi_path_info
+# see: http://trac.nginx.org/nginx/ticket/321
+set $path_info $fastcgi_path_info;
+fastcgi_param PATH_INFO $path_info;
+
+fastcgi_index index.php;
+include fastcgi.conf;
diff --git a/etc/nginx/snippets/snakeoil.conf b/etc/nginx/snippets/snakeoil.conf
new file mode 100644 (file)
index 0000000..ad26c3e
--- /dev/null
@@ -0,0 +1,5 @@
+# Self signed certificates generated by the ssl-cert package
+# Don't use them in a production server!
+
+ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
+ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
diff --git a/etc/nginx/uwsgi_params b/etc/nginx/uwsgi_params
new file mode 100644 (file)
index 0000000..09c732c
--- /dev/null
@@ -0,0 +1,17 @@
+
+uwsgi_param  QUERY_STRING       $query_string;
+uwsgi_param  REQUEST_METHOD     $request_method;
+uwsgi_param  CONTENT_TYPE       $content_type;
+uwsgi_param  CONTENT_LENGTH     $content_length;
+
+uwsgi_param  REQUEST_URI        $request_uri;
+uwsgi_param  PATH_INFO          $document_uri;
+uwsgi_param  DOCUMENT_ROOT      $document_root;
+uwsgi_param  SERVER_PROTOCOL    $server_protocol;
+uwsgi_param  REQUEST_SCHEME     $scheme;
+uwsgi_param  HTTPS              $https if_not_empty;
+
+uwsgi_param  REMOTE_ADDR        $remote_addr;
+uwsgi_param  REMOTE_PORT        $remote_port;
+uwsgi_param  SERVER_PORT        $server_port;
+uwsgi_param  SERVER_NAME        $server_name;
diff --git a/etc/nginx/win-utf b/etc/nginx/win-utf
new file mode 100644 (file)
index 0000000..774fd9f
--- /dev/null
@@ -0,0 +1,125 @@
+# This map is not a full windows-1251 <> utf8 map: it does not
+# contain Serbian and Macedonian letters.      If you need a full map,
+# use contrib/unicode2nginx/win-utf map instead.
+
+charset_map    windows-1251    utf-8 {
+
+       82      E2809A; # single low-9 quotation mark
+
+       84      E2809E; # double low-9 quotation mark
+       85      E280A6; # ellipsis
+       86      E280A0; # dagger
+       87      E280A1; # double dagger
+       88      E282AC; # euro
+       89      E280B0; # per mille
+
+       91      E28098; # left single quotation mark
+       92      E28099; # right single quotation mark
+       93      E2809C; # left double quotation mark
+       94      E2809D; # right double quotation mark
+       95      E280A2; # bullet
+       96      E28093; # en dash
+       97      E28094; # em dash
+
+       99      E284A2; # trade mark sign
+
+       A0      C2A0;   # &nbsp;
+       A1      D18E;   # capital Byelorussian short U
+       A2      D19E;   # small Byelorussian short u
+
+       A4      C2A4;   # currency sign
+       A5      D290;   # capital Ukrainian soft G
+       A6      C2A6;   # borken bar
+       A7      C2A7;   # section sign
+       A8      D081;   # capital YO
+       A9      C2A9;   # (C)
+       AA      D084;   # capital Ukrainian YE
+       AB      C2AB;   # left-pointing double angle quotation mark
+       AC      C2AC;   # not sign
+       AD      C2AD;   # soft hypen
+       AE      C2AE;   # (R)
+       AF      D087;   # capital Ukrainian YI
+
+       B0      C2B0;   # &deg;
+       B1      C2B1;   # plus-minus sign
+       B2      D086;   # capital Ukrainian I
+       B3      D196;   # small Ukrainian i
+       B4      D291;   # small Ukrainian soft g
+       B5      C2B5;   # micro sign
+       B6      C2B6;   # pilcrow sign
+       B7      C2B7;   # &middot;
+       B8      D191;   # small yo
+       B9      E28496; # numero sign
+       BA      D194;   # small Ukrainian ye
+       BB      C2BB;   # right-pointing double angle quotation mark
+
+       BF      D197;   # small Ukrainian yi
+
+       C0      D090;   # capital A
+       C1      D091;   # capital B
+       C2      D092;   # capital V
+       C3      D093;   # capital G
+       C4      D094;   # capital D
+       C5      D095;   # capital YE
+       C6      D096;   # capital ZH
+       C7      D097;   # capital Z
+       C8      D098;   # capital I
+       C9      D099;   # capital J
+       CA      D09A;   # capital K
+       CB      D09B;   # capital L
+       CC      D09C;   # capital M
+       CD      D09D;   # capital N
+       CE      D09E;   # capital O
+       CF      D09F;   # capital P
+
+       D0      D0A0;   # capital R
+       D1      D0A1;   # capital S
+       D2      D0A2;   # capital T
+       D3      D0A3;   # capital U
+       D4      D0A4;   # capital F
+       D5      D0A5;   # capital KH
+       D6      D0A6;   # capital TS
+       D7      D0A7;   # capital CH
+       D8      D0A8;   # capital SH
+       D9      D0A9;   # capital SHCH
+       DA      D0AA;   # capital hard sign
+       DB      D0AB;   # capital Y
+       DC      D0AC;   # capital soft sign
+       DD      D0AD;   # capital E
+       DE      D0AE;   # capital YU
+       DF      D0AF;   # capital YA
+
+       E0      D0B0;   # small a
+       E1      D0B1;   # small b
+       E2      D0B2;   # small v
+       E3      D0B3;   # small g
+       E4      D0B4;   # small d
+       E5      D0B5;   # small ye
+       E6      D0B6;   # small zh
+       E7      D0B7;   # small z
+       E8      D0B8;   # small i
+       E9      D0B9;   # small j
+       EA      D0BA;   # small k
+       EB      D0BB;   # small l
+       EC      D0BC;   # small m
+       ED      D0BD;   # small n
+       EE      D0BE;   # small o
+       EF      D0BF;   # small p
+
+       F0      D180;   # small r
+       F1      D181;   # small s
+       F2      D182;   # small t
+       F3      D183;   # small u
+       F4      D184;   # small f
+       F5      D185;   # small kh
+       F6      D186;   # small ts
+       F7      D187;   # small ch
+       F8      D188;   # small sh
+       F9      D189;   # small shch
+       FA      D18A;   # small hard sign
+       FB      D18B;   # small y
+       FC      D18C;   # small soft sign
+       FD      D18D;   # small e
+       FE      D18E;   # small yu
+       FF      D18F;   # small ya
+}
diff --git a/etc/nsswitch.conf b/etc/nsswitch.conf
new file mode 100644 (file)
index 0000000..8f6ac49
--- /dev/null
@@ -0,0 +1,20 @@
+# /etc/nsswitch.conf
+#
+# Example configuration of GNU Name Service Switch functionality.
+# If you have the `glibc-doc-reference' and `info' packages installed, try:
+# `info libc "Name Service Switch"' for information about this file.
+
+passwd:         files systemd
+group:          files systemd
+shadow:         files
+gshadow:        files
+
+hosts:          files dns
+networks:       files
+
+protocols:      db files
+services:       db files
+ethers:         db files
+rpc:            db files
+
+netgroup:       nis
diff --git a/etc/os-release b/etc/os-release
new file mode 120000 (symlink)
index 0000000..c4c75b4
--- /dev/null
@@ -0,0 +1 @@
+../usr/lib/os-release
\ No newline at end of file
diff --git a/etc/overlayroot.conf b/etc/overlayroot.conf
new file mode 100644 (file)
index 0000000..3d4e167
--- /dev/null
@@ -0,0 +1,170 @@
+# This is the overlayroot config file
+# By default, overlayroot is not enabled.
+# To enable overlayroot:
+#   1) edit the 'overlayroot' definition below
+#   2) reboot
+#
+# Supported values:
+#  * overlayroot=tmpfs or overlayroot=tmpfs:PARAMETERS
+#    write all changes to a temporary (ram only) backing device
+#    A tmpfs mount will be created, and usable filesystem can
+#    grow to 1/2 available memory.
+#
+#    available parameters:
+#     * see COMMON PARAMETERS
+#
+#    examples:
+#     overlayroot=tmpfs
+#     overlayroot=tmpfs:swap=1
+#
+#  * overlayroot=DEVICE or overlayroot=device:PARAMETERS
+#    mount DEVICE as overlayfs and write changes there
+#    device must already have kernel mountalbe filesystem on it.
+#
+#    available parameters are:
+#     * dev: default: "" [REQUIRED]
+#       use given device for backing filesystem.
+#       Note, 'overlayroot=/dev/vdb' is translated to
+#             'overlayrooot=device:dev=/dev/vdb'
+#     * timeout: default: 0
+#       if 'dev' provided does not exist, wait up to many seconds for
+#       it to appear.
+#     * see COMMON PARAMETERS
+#
+#    examples:
+#      overlayroot=/dev/xvdb
+#      overlayroot=/dev/vdb
+#      overlayroot=device:dev=/dev/sdb,timeout=180
+#      overlayroot=device:dev=LABEL=my-flashdrive,timeout=180
+#
+#  * overlayroot=crypt:PARAMETERS
+#    use an encrypted [dmcrypt] device as the backing device. Parameters
+#    are comma delimited key=value pairs.
+#
+#    available parameters are:
+#     * dev: default: "" [REQUIRED]
+#       use given device for backing filesystem.
+#     * mapname: default: "secure"
+#       the name of the map device to be created in /dev/mapper
+#     * pass: default: ""
+#       if not provided or empty, password is randomly generated
+#       the generated password will be stored for recovery in
+#       /run/initramfs/overlayroot.passwd
+#     * fstype: default: "ext4"
+#       mapname=mapper,pass=foo,fstype=ext4,mkfs=1
+#     * mkfs: default: 1
+#         0: never create filesystem
+#         1: if pass is given and mount fails, create a new one
+#            if no pass given, create new
+#         2: if pass is given and mount fails, fail
+#            if no pass given, create new
+#     * timeout: default: 0
+#       if 'dev' provided does not exist, wait up to many seconds for
+#       it to appear.
+#     * see COMMON PARAMETERS
+#
+#    examples:
+#      crypt:mapname=mapper,pass=foo,fstype=ext4,mkfs=1,dev=vdb
+#      crypt:mapname=mapper,pass=foo,fstype=ext3,mkfs=1,dev=/dev/disk/by-label/my-jumpdrive,timeout=120
+#      crypt:dev=xvdb
+#
+#  * overlayroot=disabled
+#    if set explicitly to 'disabled', or an empty string, then
+#    overlayroot will do nothing.
+#
+#
+# COMMON PARAMETERS:
+#   The following parameters are supported for each of overlayroot=
+#   values above.
+#   * swap: default: 0
+#     allowed values: 0, 1
+#     indicate if swap partitions should be allowed.  By default swap entries
+#     are removed from /etc/fstab to disable swap.
+#     Swap *files* are always disabled, independent of this setting.
+#
+#   * recurse: default: 1
+#     allowed values: 0, 1
+#     indicate if all mounts should be made read-only, or just /.
+#     if set to 1, then all filesystems will be mounted read-only.
+#     if set to 0, only root will be set to read-only, and changes
+#     to other filesystems will be permenant.  For example, if
+#     /home is on a separate partition from / and recurse set to 0
+#     then changes to /home will go through to the original device.
+#
+#  * debug: default: 0
+#     allowed values: 0, 1
+#     enable debug output if set to 1
+#
+#  * dir: default: "/overlay"
+#    the directory under the filesystem to use for writes
+#    default is to use top level directory.  For example, use
+#    'dir=my-tests/run1' and later 'dir=my-tests/run2'
+#
+#  * driver: default: "auto"
+#    This can be 'overlay' or 'overlayfs'.  It will affect which filesystem
+#    is used to provide the overlay and the entries in fstab.
+#    The default value is almost certainly correct.
+#
+# overlayroot_cfgdisk:
+#  * default: 'disabled'
+#    If this variable is set, it references a disk/filesystem that
+#    may exist, and include a 'overlayroot.conf' file in it's root directory
+#    If a such a device exists, then it's overlayroot.conf file can
+#    set overlayroot as above.
+#
+#    examples:
+#    * overlayroot_cfgdisk="LABEL=OROOTCFG"
+#    * overlayroot_cfgdisk="/dev/vdb"
+#
+#    Note: if you enable this setting, then you must be careful to be sure
+#          that no filesystems are created that match this without your
+#          knowledge.  This is because code on that filesystem is executed
+#          as root in the initramfs environment.
+#
+# Notes:
+#  * This file is managed by dpkg as a conffile, so changes to it
+#    will force dpkg config file prompts on package updates that contain a
+#    change.  Instead of putting changes here, put them in
+#    /etc/overlayroot.local.conf
+#  * you can pass the same 'overlayroot=' parameters on the kernel
+#    command line, and they will override any values set here.
+#    This includes 'overlayroot=' or 'overlayroot=disabled' to disable
+#    a value set in this file.
+#  * if you specify crypt:dev=/dev/vdb, then DATA WILL BE LOST
+#    on /dev/vdb.  A safer value would be to use
+#     crypt:dev=/dev/vdb,pass=somepassword,mkfs=0
+#    However, you would then have to have previously set up the luks device.
+#    Do that like the following:
+#      $ MAPNAME="secure"; DEV="/dev/vdg"; PASSWORD="foobar"
+#      $ sudo wipefs -a $DEV
+#      $ printf "%s" "$PASSWORD" |
+#         sudo cryptsetup luksFormat "${$DEV}" --key-file -
+#      $ printf "%s" "$PASSWORD" |
+#         sudo cryptsetup luksOpen "${DEV}" "${MAPNAME}" --key-file -
+#      $ sudo mke2fs -t "ext4" "/dev/mapper/${MAPNAME}"
+#
+# Security Note:
+#    IT IS INSECURE TO SET THIS PASSWORD HERE IN THIS CLEARTEXT CONFIGURATION
+#    FILE OR ON THE KERNEL COMMAND LINE.
+#    Randomly generated passwords are more secure, but you won't be able to
+#    read your encrypted disk on reboot.
+#    Randomly generated passwords are generated by calculating the sha512sum
+#    of a concatenation of:
+#      - stat -L /dev/* /proc/* /sys/*
+#        + some unpredictability of access/modify times of a number of kernel
+#          files, directories, and block devices
+#      - /proc/sys/kernel/random/boot_id
+#        + 16-bytes uuid, consider this a 'salt'
+#      - /proc/sys/kernel/random/uuid
+#        + 16-bytes uuid, consider this psuedo randomness
+#      - /dev/urandom
+#        + 4096-bytes of psuedo randomness
+#      - $DEV
+#        + 4096-bytes from the head of the disk
+#        + security-paranoid users can write 4096-bytes of randomness to
+#          this device and specify mkfs=1 before rebooting into an
+#          crypt+overlayroot setup
+#    The result is stored in r-------- /dev/.initramfs/overlayroot.XXXXXXX,
+#    which is a tmpfs in memory.
+overlayroot_cfgdisk="disabled"
+overlayroot=""
diff --git a/etc/pam.conf b/etc/pam.conf
new file mode 100644 (file)
index 0000000..3eeb72d
--- /dev/null
@@ -0,0 +1,15 @@
+# ---------------------------------------------------------------------------#
+# /etc/pam.conf                                                                     #
+# ---------------------------------------------------------------------------#
+#
+# NOTE
+# ----
+#
+# NOTE: Most program use a file under the /etc/pam.d/ directory to setup their
+# PAM service modules. This file is used only if that directory does not exist.
+# ---------------------------------------------------------------------------#
+
+# Format:
+# serv.        module     ctrl       module [path]     ...[args..]                  #
+# name type       flag                                                      #
+
diff --git a/etc/pam.d/atd b/etc/pam.d/atd
new file mode 100644 (file)
index 0000000..3674c0a
--- /dev/null
@@ -0,0 +1,10 @@
+#
+# The PAM configuration file for the at daemon
+#
+
+@include common-auth
+@include common-account
+session    required   pam_loginuid.so
+@include common-session-noninteractive
+session    required   pam_limits.so
+auth   required        pam_env.so user_readenv=1
diff --git a/etc/pam.d/chfn b/etc/pam.d/chfn
new file mode 100644 (file)
index 0000000..10fcf07
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# The PAM configuration file for the Shadow `chfn' service
+#
+
+# This allows root to change user infomation without being
+# prompted for a password
+auth           sufficient      pam_rootok.so
+
+# The standard Unix authentication modules, used with
+# NIS (man nsswitch) as well as normal /etc/passwd and
+# /etc/shadow entries.
+@include common-auth
+@include common-account
+@include common-session
+
+
diff --git a/etc/pam.d/chpasswd b/etc/pam.d/chpasswd
new file mode 100644 (file)
index 0000000..da2adcc
--- /dev/null
@@ -0,0 +1,5 @@
+# The PAM configuration file for the Shadow 'chpasswd' service
+#
+
+@include common-password
+
diff --git a/etc/pam.d/chsh b/etc/pam.d/chsh
new file mode 100644 (file)
index 0000000..7eb604d
--- /dev/null
@@ -0,0 +1,20 @@
+#
+# The PAM configuration file for the Shadow `chsh' service
+#
+
+# This will not allow a user to change their shell unless
+# their current one is listed in /etc/shells. This keeps
+# accounts with special shells from changing them.
+auth       required   pam_shells.so
+
+# This allows root to change user shell without being
+# prompted for a password
+auth           sufficient      pam_rootok.so
+
+# The standard Unix authentication modules, used with
+# NIS (man nsswitch) as well as normal /etc/passwd and
+# /etc/shadow entries.
+@include common-auth
+@include common-account
+@include common-session
+
diff --git a/etc/pam.d/common-account b/etc/pam.d/common-account
new file mode 100644 (file)
index 0000000..316b173
--- /dev/null
@@ -0,0 +1,25 @@
+#
+# /etc/pam.d/common-account - authorization settings common to all services
+#
+# This file is included from other service-specific PAM config files,
+# and should contain a list of the authorization modules that define
+# the central access policy for use on the system.  The default is to
+# only deny service to users whose accounts are expired in /etc/shadow.
+#
+# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
+# To take advantage of this, it is recommended that you configure any
+# local modules either before or after the default block, and use
+# pam-auth-update to manage selection of other modules.  See
+# pam-auth-update(8) for details.
+#
+
+# here are the per-package modules (the "Primary" block)
+account        [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so 
+# here's the fallback if no module succeeds
+account        requisite                       pam_deny.so
+# prime the stack with a positive return value if there isn't one already;
+# this avoids us returning an error just because nothing sets a success code
+# since the modules above will each just jump around
+account        required                        pam_permit.so
+# and here are more per-package modules (the "Additional" block)
+# end of pam-auth-update config
diff --git a/etc/pam.d/common-auth b/etc/pam.d/common-auth
new file mode 100644 (file)
index 0000000..f3fd972
--- /dev/null
@@ -0,0 +1,26 @@
+#
+# /etc/pam.d/common-auth - authentication settings common to all services
+#
+# This file is included from other service-specific PAM config files,
+# and should contain a list of the authentication modules that define
+# the central authentication scheme for use on the system
+# (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
+# traditional Unix authentication mechanisms.
+#
+# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
+# To take advantage of this, it is recommended that you configure any
+# local modules either before or after the default block, and use
+# pam-auth-update to manage selection of other modules.  See
+# pam-auth-update(8) for details.
+
+# here are the per-package modules (the "Primary" block)
+auth   [success=1 default=ignore]      pam_unix.so nullok
+# here's the fallback if no module succeeds
+auth   requisite                       pam_deny.so
+# prime the stack with a positive return value if there isn't one already;
+# this avoids us returning an error just because nothing sets a success code
+# since the modules above will each just jump around
+auth   required                        pam_permit.so
+# and here are more per-package modules (the "Additional" block)
+auth   optional                        pam_cap.so 
+# end of pam-auth-update config
diff --git a/etc/pam.d/common-password b/etc/pam.d/common-password
new file mode 100644 (file)
index 0000000..cb8c7b7
--- /dev/null
@@ -0,0 +1,33 @@
+#
+# /etc/pam.d/common-password - password-related modules common to all services
+#
+# This file is included from other service-specific PAM config files,
+# and should contain a list of modules that define the services to be
+# used to change user passwords.  The default is pam_unix.
+
+# Explanation of pam_unix options:
+#
+# The "sha512" option enables salted SHA512 passwords.  Without this option,
+# the default is Unix crypt.  Prior releases used the option "md5".
+#
+# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
+# login.defs.
+#
+# See the pam_unix manpage for other options.
+
+# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
+# To take advantage of this, it is recommended that you configure any
+# local modules either before or after the default block, and use
+# pam-auth-update to manage selection of other modules.  See
+# pam-auth-update(8) for details.
+
+# here are the per-package modules (the "Primary" block)
+password       [success=1 default=ignore]      pam_unix.so obscure sha512
+# here's the fallback if no module succeeds
+password       requisite                       pam_deny.so
+# prime the stack with a positive return value if there isn't one already;
+# this avoids us returning an error just because nothing sets a success code
+# since the modules above will each just jump around
+password       required                        pam_permit.so
+# and here are more per-package modules (the "Additional" block)
+# end of pam-auth-update config
diff --git a/etc/pam.d/common-session b/etc/pam.d/common-session
new file mode 100644 (file)
index 0000000..eb99df2
--- /dev/null
@@ -0,0 +1,31 @@
+#
+# /etc/pam.d/common-session - session-related modules common to all services
+#
+# This file is included from other service-specific PAM config files,
+# and should contain a list of modules that define tasks to be performed
+# at the start and end of sessions of *any* kind (both interactive and
+# non-interactive).
+#
+# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
+# To take advantage of this, it is recommended that you configure any
+# local modules either before or after the default block, and use
+# pam-auth-update to manage selection of other modules.  See
+# pam-auth-update(8) for details.
+
+# here are the per-package modules (the "Primary" block)
+session        [default=1]                     pam_permit.so
+# here's the fallback if no module succeeds
+session        requisite                       pam_deny.so
+# prime the stack with a positive return value if there isn't one already;
+# this avoids us returning an error just because nothing sets a success code
+# since the modules above will each just jump around
+session        required                        pam_permit.so
+# The pam_umask module will set the umask according to the system default in
+# /etc/login.defs and user settings, solving the problem of different
+# umask settings with different shells, display managers, remote sessions etc.
+# See "man pam_umask".
+session optional                       pam_umask.so
+# and here are more per-package modules (the "Additional" block)
+session        required        pam_unix.so 
+session        optional        pam_systemd.so 
+# end of pam-auth-update config
diff --git a/etc/pam.d/common-session-noninteractive b/etc/pam.d/common-session-noninteractive
new file mode 100644 (file)
index 0000000..1fee2c4
--- /dev/null
@@ -0,0 +1,30 @@
+#
+# /etc/pam.d/common-session-noninteractive - session-related modules
+# common to all non-interactive services
+#
+# This file is included from other service-specific PAM config files,
+# and should contain a list of modules that define tasks to be performed
+# at the start and end of all non-interactive sessions.
+#
+# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
+# To take advantage of this, it is recommended that you configure any
+# local modules either before or after the default block, and use
+# pam-auth-update to manage selection of other modules.  See
+# pam-auth-update(8) for details.
+
+# here are the per-package modules (the "Primary" block)
+session        [default=1]                     pam_permit.so
+# here's the fallback if no module succeeds
+session        requisite                       pam_deny.so
+# prime the stack with a positive return value if there isn't one already;
+# this avoids us returning an error just because nothing sets a success code
+# since the modules above will each just jump around
+session        required                        pam_permit.so
+# The pam_umask module will set the umask according to the system default in
+# /etc/login.defs and user settings, solving the problem of different
+# umask settings with different shells, display managers, remote sessions etc.
+# See "man pam_umask".
+session optional                       pam_umask.so
+# and here are more per-package modules (the "Additional" block)
+session        required        pam_unix.so 
+# end of pam-auth-update config
diff --git a/etc/pam.d/cron b/etc/pam.d/cron
new file mode 100644 (file)
index 0000000..d6b06a5
--- /dev/null
@@ -0,0 +1,21 @@
+# The PAM configuration file for the cron daemon
+
+@include common-auth
+
+# Sets the loginuid process attribute
+session    required     pam_loginuid.so
+
+# Read environment variables from pam_env's default files, /etc/environment
+# and /etc/security/pam_env.conf.
+session       required   pam_env.so
+
+# In addition, read system locale information
+session       required   pam_env.so envfile=/etc/default/locale
+
+@include common-account
+@include common-session-noninteractive 
+
+# Sets up user limits, please define limits for cron tasks
+# through /etc/security/limits.conf
+session    required   pam_limits.so
+
diff --git a/etc/pam.d/login b/etc/pam.d/login
new file mode 100644 (file)
index 0000000..553145f
--- /dev/null
@@ -0,0 +1,100 @@
+#
+# The PAM configuration file for the Shadow `login' service
+#
+
+# Enforce a minimal delay in case of failure (in microseconds).
+# (Replaces the `FAIL_DELAY' setting from login.defs)
+# Note that other modules may require another minimal delay. (for example,
+# to disable any delay, you should add the nodelay option to pam_unix)
+auth       optional   pam_faildelay.so  delay=3000000
+
+# Outputs an issue file prior to each login prompt (Replaces the
+# ISSUE_FILE option from login.defs). Uncomment for use
+# auth       required   pam_issue.so issue=/etc/issue
+
+# Disallows other than root logins when /etc/nologin exists
+# (Replaces the `NOLOGINS_FILE' option from login.defs)
+auth       requisite  pam_nologin.so
+
+# SELinux needs to be the first session rule. This ensures that any
+# lingering context has been cleared. Without this it is possible
+# that a module could execute code in the wrong domain.
+# When the module is present, "required" would be sufficient (When SELinux
+# is disabled, this returns success.)
+session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
+
+# Sets the loginuid process attribute
+session    required     pam_loginuid.so
+
+# Prints the message of the day upon successful login.
+# (Replaces the `MOTD_FILE' option in login.defs)
+# This includes a dynamically generated part from /run/motd.dynamic
+# and a static (admin-editable) part from /etc/motd.
+session    optional   pam_motd.so motd=/run/motd.dynamic
+session    optional   pam_motd.so noupdate
+
+# SELinux needs to intervene at login time to ensure that the process
+# starts in the proper default security context. Only sessions which are
+# intended to run in the user's context should be run after this.
+# pam_selinux.so changes the SELinux context of the used TTY and configures
+# SELinux in order to transition to the user context with the next execve()
+# call.
+session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
+# When the module is present, "required" would be sufficient (When SELinux
+# is disabled, this returns success.)
+
+# This module parses environment configuration file(s)
+# and also allows you to use an extended config
+# file /etc/security/pam_env.conf.
+# 
+# parsing /etc/environment needs "readenv=1"
+session       required   pam_env.so readenv=1
+# locale variables are also kept into /etc/default/locale in etch
+# reading this file *in addition to /etc/environment* does not hurt
+session       required   pam_env.so readenv=1 envfile=/etc/default/locale
+
+# Standard Un*x authentication.
+@include common-auth
+
+# This allows certain extra groups to be granted to a user
+# based on things like time of day, tty, service, and user.
+# Please edit /etc/security/group.conf to fit your needs
+# (Replaces the `CONSOLE_GROUPS' option in login.defs)
+auth       optional   pam_group.so
+
+# Uncomment and edit /etc/security/time.conf if you need to set
+# time restraint on logins.
+# (Replaces the `PORTTIME_CHECKS_ENAB' option from login.defs
+# as well as /etc/porttime)
+# account    requisite  pam_time.so
+
+# Uncomment and edit /etc/security/access.conf if you need to
+# set access limits.
+# (Replaces /etc/login.access file)
+# account  required       pam_access.so
+
+# Sets up user limits according to /etc/security/limits.conf
+# (Replaces the use of /etc/limits in old login)
+session    required   pam_limits.so
+
+# Prints the last login info upon successful login
+# (Replaces the `LASTLOG_ENAB' option from login.defs)
+session    optional   pam_lastlog.so
+
+# Prints the status of the user's mailbox upon successful login
+# (Replaces the `MAIL_CHECK_ENAB' option from login.defs). 
+#
+# This also defines the MAIL environment variable
+# However, userdel also needs MAIL_DIR and MAIL_FILE variables
+# in /etc/login.defs to make sure that removing a user 
+# also removes the user's mail spool file.
+# See comments in /etc/login.defs
+session    optional   pam_mail.so standard
+
+# Create a new session keyring.
+session    optional   pam_keyinit.so force revoke
+
+# Standard Un*x account and session
+@include common-account
+@include common-session
+@include common-password
diff --git a/etc/pam.d/newusers b/etc/pam.d/newusers
new file mode 100644 (file)
index 0000000..552ca90
--- /dev/null
@@ -0,0 +1,5 @@
+# The PAM configuration file for the Shadow 'newusers' service
+#
+
+@include common-password
+
diff --git a/etc/pam.d/other b/etc/pam.d/other
new file mode 100644 (file)
index 0000000..59d776c
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# /etc/pam.d/other - specify the PAM fallback behaviour
+#
+# Note that this file is used for any unspecified service; for example
+#if /etc/pam.d/cron  specifies no session modules but cron calls
+#pam_open_session, the session module out of /etc/pam.d/other is
+#used.  If you really want nothing to happen then use pam_permit.so or
+#pam_deny.so as appropriate.
+
+# We fall back to the system default in /etc/pam.d/common-*
+# 
+
+@include common-auth
+@include common-account
+@include common-password
+@include common-session
diff --git a/etc/pam.d/passwd b/etc/pam.d/passwd
new file mode 100644 (file)
index 0000000..5872e7b
--- /dev/null
@@ -0,0 +1,6 @@
+#
+# The PAM configuration file for the Shadow `passwd' service
+#
+
+@include common-password
+
diff --git a/etc/pam.d/polkit-1 b/etc/pam.d/polkit-1
new file mode 100644 (file)
index 0000000..6f8af2a
--- /dev/null
@@ -0,0 +1,8 @@
+#%PAM-1.0
+
+@include common-auth
+@include common-account
+@include common-password
+session       required   pam_env.so readenv=1 user_readenv=0
+session       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
+@include common-session-noninteractive
diff --git a/etc/pam.d/runuser b/etc/pam.d/runuser
new file mode 100644 (file)
index 0000000..37f0e84
--- /dev/null
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth           sufficient      pam_rootok.so
+session                optional        pam_keyinit.so revoke
+session                required        pam_limits.so
+session                required        pam_unix.so
diff --git a/etc/pam.d/runuser-l b/etc/pam.d/runuser-l
new file mode 100644 (file)
index 0000000..7a9a48c
--- /dev/null
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth           include         runuser
+session                optional        pam_keyinit.so force revoke
+-session       optional        pam_systemd.so
+session                include         runuser
diff --git a/etc/pam.d/sshd b/etc/pam.d/sshd
new file mode 100644 (file)
index 0000000..d70b384
--- /dev/null
@@ -0,0 +1,55 @@
+# PAM configuration for the Secure Shell service
+
+# Standard Un*x authentication.
+@include common-auth
+
+# Disallow non-root logins when /etc/nologin exists.
+account    required     pam_nologin.so
+
+# Uncomment and edit /etc/security/access.conf if you need to set complex
+# access limits that are hard to express in sshd_config.
+# account  required     pam_access.so
+
+# Standard Un*x authorization.
+@include common-account
+
+# SELinux needs to be the first session rule.  This ensures that any
+# lingering context has been cleared.  Without this it is possible that a
+# module could execute code in the wrong domain.
+session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close
+
+# Set the loginuid process attribute.
+session    required     pam_loginuid.so
+
+# Create a new session keyring.
+session    optional     pam_keyinit.so force revoke
+
+# Standard Un*x session setup and teardown.
+@include common-session
+
+# Print the message of the day upon successful login.
+# This includes a dynamically generated part from /run/motd.dynamic
+# and a static (admin-editable) part from /etc/motd.
+session    optional     pam_motd.so  motd=/run/motd.dynamic
+session    optional     pam_motd.so noupdate
+
+# Print the status of the user's mailbox upon successful login.
+session    optional     pam_mail.so standard noenv # [1]
+
+# Set up user limits from /etc/security/limits.conf.
+session    required     pam_limits.so
+
+# Read environment variables from /etc/environment and
+# /etc/security/pam_env.conf.
+session    required     pam_env.so # [1]
+# In Debian 4.0 (etch), locale-related environment variables were moved to
+# /etc/default/locale, so read that as well.
+session    required     pam_env.so user_readenv=1 envfile=/etc/default/locale
+
+# SELinux needs to intervene at login time to ensure that the process starts
+# in the proper default security context.  Only sessions which are intended
+# to run in the user's context should be run after this.
+session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so open
+
+# Standard Un*x password updating.
+@include common-password
diff --git a/etc/pam.d/su b/etc/pam.d/su
new file mode 100644 (file)
index 0000000..d5c6903
--- /dev/null
@@ -0,0 +1,61 @@
+#
+# The PAM configuration file for the Shadow `su' service
+#
+
+# This allows root to su without passwords (normal operation)
+auth       sufficient pam_rootok.so
+
+# Uncomment this to force users to be a member of group root
+# before they can use `su'. You can also add "group=foo"
+# to the end of this line if you want to use a group other
+# than the default "root" (but this may have side effect of
+# denying "root" user, unless she's a member of "foo" or explicitly
+# permitted earlier by e.g. "sufficient pam_rootok.so").
+# (Replaces the `SU_WHEEL_ONLY' option from login.defs)
+# auth       required   pam_wheel.so
+
+# Uncomment this if you want wheel members to be able to
+# su without a password.
+# auth       sufficient pam_wheel.so trust
+
+# Uncomment this if you want members of a specific group to not
+# be allowed to use su at all.
+# auth       required   pam_wheel.so deny group=nosu
+
+# Uncomment and edit /etc/security/time.conf if you need to set
+# time restrainst on su usage.
+# (Replaces the `PORTTIME_CHECKS_ENAB' option from login.defs
+# as well as /etc/porttime)
+# account    requisite  pam_time.so
+
+# This module parses environment configuration file(s)
+# and also allows you to use an extended config
+# file /etc/security/pam_env.conf.
+# 
+# parsing /etc/environment needs "readenv=1"
+session       required   pam_env.so readenv=1
+# locale variables are also kept into /etc/default/locale in etch
+# reading this file *in addition to /etc/environment* does not hurt
+session       required   pam_env.so readenv=1 envfile=/etc/default/locale
+
+# Defines the MAIL environment variable
+# However, userdel also needs MAIL_DIR and MAIL_FILE variables
+# in /etc/login.defs to make sure that removing a user 
+# also removes the user's mail spool file.
+# See comments in /etc/login.defs
+#
+# "nopen" stands to avoid reporting new mail when su'ing to another user
+session    optional   pam_mail.so nopen
+
+# Sets up user limits according to /etc/security/limits.conf
+# (Replaces the use of /etc/limits in old login)
+session    required   pam_limits.so
+
+# The standard Unix authentication modules, used with
+# NIS (man nsswitch) as well as normal /etc/passwd and
+# /etc/shadow entries.
+@include common-auth
+@include common-account
+@include common-session
+
+
diff --git a/etc/pam.d/su-l b/etc/pam.d/su-l
new file mode 100644 (file)
index 0000000..656a139
--- /dev/null
@@ -0,0 +1,6 @@
+#%PAM-1.0
+auth           include         su
+account                include         su
+password       include         su
+session                optional        pam_keyinit.so force revoke
+session                include         su
diff --git a/etc/pam.d/sudo b/etc/pam.d/sudo
new file mode 100644 (file)
index 0000000..e2bdbf6
--- /dev/null
@@ -0,0 +1,7 @@
+#%PAM-1.0
+
+session    required   pam_env.so readenv=1 user_readenv=0
+session    required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
+@include common-auth
+@include common-account
+@include common-session-noninteractive
diff --git a/etc/pam.d/systemd-user b/etc/pam.d/systemd-user
new file mode 100644 (file)
index 0000000..45b2e5e
--- /dev/null
@@ -0,0 +1,12 @@
+# This file is part of systemd.
+#
+# Used by systemd --user instances.
+
+@include common-account
+
+session  required pam_selinux.so close
+session  required pam_selinux.so nottys open
+session  required pam_loginuid.so
+session  required pam_limits.so
+@include common-session-noninteractive
+session optional pam_systemd.so
diff --git a/etc/pam.d/vmtoolsd b/etc/pam.d/vmtoolsd
new file mode 100644 (file)
index 0000000..f7937c6
--- /dev/null
@@ -0,0 +1,7 @@
+# PAM configuration for vmtoolsd
+
+@include common-auth
+
+account     required    pam_shells.so
+@include common-account
+
diff --git a/etc/passwd b/etc/passwd
new file mode 100644 (file)
index 0000000..a3c889e
--- /dev/null
@@ -0,0 +1,37 @@
+root:x:0:0:root:/root:/bin/bash
+daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
+bin:x:2:2:bin:/bin:/usr/sbin/nologin
+sys:x:3:3:sys:/dev:/usr/sbin/nologin
+sync:x:4:65534:sync:/bin:/bin/sync
+games:x:5:60:games:/usr/games:/usr/sbin/nologin
+man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
+lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
+mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
+news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
+uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
+proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
+www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
+backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
+list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
+irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
+gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
+nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
+systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
+systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
+systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
+messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
+syslog:x:104:110::/home/syslog:/usr/sbin/nologin
+_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
+tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
+uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin
+tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin
+landscape:x:109:115::/var/lib/landscape:/usr/sbin/nologin
+pollinate:x:110:1::/var/cache/pollinate:/bin/false
+usbmux:x:111:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
+sshd:x:112:65534::/run/sshd:/usr/sbin/nologin
+systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
+lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
+postgres:x:113:118:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
+shane:x:1001:1001::/home/shane:/bin/bash
+jon:x:1002:1002::/home/jon:/bin/bash
+gg:x:1003:1003::/home/gg:/bin/bash
diff --git a/etc/passwd- b/etc/passwd-
new file mode 100644 (file)
index 0000000..4b7ca8b
--- /dev/null
@@ -0,0 +1,38 @@
+root:x:0:0:root:/root:/bin/bash
+daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
+bin:x:2:2:bin:/bin:/usr/sbin/nologin
+sys:x:3:3:sys:/dev:/usr/sbin/nologin
+sync:x:4:65534:sync:/bin:/bin/sync
+games:x:5:60:games:/usr/games:/usr/sbin/nologin
+man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
+lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
+mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
+news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
+uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
+proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
+www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
+backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
+list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
+irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
+gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
+nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
+systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
+systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
+systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
+messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
+syslog:x:104:110::/home/syslog:/usr/sbin/nologin
+_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
+tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
+uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin
+tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin
+landscape:x:109:115::/var/lib/landscape:/usr/sbin/nologin
+pollinate:x:110:1::/var/cache/pollinate:/bin/false
+usbmux:x:111:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
+sshd:x:112:65534::/run/sshd:/usr/sbin/nologin
+systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
+gamesguru:x:1000:1000:gamesguru:/home/gamesguru:/bin/bash
+lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
+postgres:x:113:118:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
+shane:x:1001:1001::/home/shane:/bin/bash
+jon:x:1002:1002::/home/jon:/bin/bash
+gg:x:1003:1003::/home/gg:/bin/bash
diff --git a/etc/perl/Net/libnet.cfg b/etc/perl/Net/libnet.cfg
new file mode 100644 (file)
index 0000000..2936582
--- /dev/null
@@ -0,0 +1,21 @@
+# Prior to perl 5.8.8-7, libnet was a seperate package with a debconf
+# configuration managed config in /etc/libnet.cfg which is used if
+# present.  Remove the following line, or the old file before making
+# changes below.
+return do '/etc/libnet.cfg' if -f '/etc/libnet.cfg';
+
+{
+       nntp_hosts => [ qw {} ],
+       snpp_hosts => [ qw {} ],
+       pop3_hosts => [ qw {} ],
+       smtp_hosts => [ qw {} ],
+       ph_hosts => [ qw {} ],
+       daytime_hosts => [ qw {} ],
+       time_hosts => [ qw {} ],
+       inet_domain => undef,
+       ftp_firewall => qq {},
+       ftp_firewall_type => qq {},
+       ftp_ext_passive => 0,
+       ftp_int_passive => 0,
+       local_netmask => qq {},
+}
diff --git a/etc/pki/fwupd-metadata/GPG-KEY-Linux-Foundation-Metadata b/etc/pki/fwupd-metadata/GPG-KEY-Linux-Foundation-Metadata
new file mode 100644 (file)
index 0000000..9ecdb0d
--- /dev/null
@@ -0,0 +1,37 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+mQENBFsDA8IBCACgSd0NAJFEUjqcyv38If9f/FCQi2C2MQbzNt05DblHAg6eBk/V
+eYM/GI+Cr9sPwxs8ZWtN0IRoQp/d7MRxe43zFT4IH2N4RVaBTgWCoRerPn09k4K/
+2fk6GWIY8lgxlKV/LinM5XkFDXv6Zf/o8Nv/i9bVO9Dv1bVh1ThgA3xy8WIzUQge
+cVviEjEYG10TX+NENGgdA+aD/fMk4Wzwz6L48D+ryTiXGFnwoizifr9DIn4yIp6i
+b4vTQY96VoXHSgU6JRvYjzPPME+NmmcLgW0hGJlVvi8RL+7wJPVeS0ioqPzMtonS
+evrwVv5E5k87i+LS/vdVu3SIUzR9JLIXtvNNABEBAAG0WkxWRlMgYSBTZXJpZXMg
+b2YgTEYgUHJvamVjdHMsIExMQyAoTFZGUyBhIFNlcmllcyBvZiBMRiBQcm9qZWN0
+cywgTExDKSA8bWV0YWRhdGFAZnd1cGQub3JnPokBOAQTAQIAIgUCWwMDwgIbAwYL
+CQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQCm3O9rRvPb/wsQf7BGEkgT08Bx1v
+657l//B/yniB7VGH+4plrX2OkWVzDxn+z6APcgqDMnzwatddxM7J6mm4yxA0nFKs
+D5BueTItYv5zQCzX8e4TM1oaUWBr8nACK7/WSxNIC+GRUKl68v+dIbp1bhdmAYzj
+wTn/uDW47Z7gtQYDJJit2MsKfu5Lwar7w+divH+6KWdaMctm2injYYIlpKCjffl8
+RZ4PgX7lN5C0s9kWDkH9iI2i5aqJaI8gZHK6EKwitmsHMJBczekymlXh4MheYCKm
+IWJLh8tvK6LaVoddwfle4orhq4b7doA57H8BgJDDz+MxyjZn+GAireCMaJjtCSWv
+q5bnsdnMH7kBDQRbAwPCAQgAq6hTejZZcIXnfA4Z/1c03USKnK8SeG/yqlggvpyZ
+9C3hAvJITtQ7iZmz0VKOjwQtds52qnZYbOn/Fr+4Ef+cbFZRNxamZ4kf0XSAVXSv
+EODMFj+BpdoDwAWhJcvyijoMV6N+gbCG+UedMNnpe25tlCRjouBSEF5KWJabejdh
+iZ8ikN+HNJa5uQ68F76aDP1BOE0XiLrOZC0MZ7mvbyOi9LPXFyV2EuVj+gt7r+2x
+OlSMmor7RTEAJcBK9tiew5LhNHeaqbe3xnOcpWrAaoVdIed7h5YbbetTFMWHCPGJ
+raGGRSv3OrZDfQXZvOi+k6I6wWEQrsUCIiVKPefU+5xSpwARAQABiQI+BBgBAgAJ
+BQJbAwPCAhsuASkJEAptzva0bz2/wF0gBBkBAgAGBQJbAwPCAAoJEL4e3StH4Ita
+hvAIAIlZlrAJrbj7aQ3VkFcTJJC+68BaGNqte2S3Zv7ONLjT1kc0xSflf4c4MHef
+q7WmLLsjUHocD0a8SUsR1V/Fp36qG1Yr7mfhf7dY3TwwUw9VXQoEdpEWZES/IJ4d
+oPXSowk8eSbb72g4dvt9p+wlDKlsT7YHjmfn9Zct5FqcQ2kV9+900DtWlvPK8hRR
+N0FibLR9GMorSFfHotFQ8AjdiXQUo+6GTb2HDJ1+aI4fpYo8NnqUs0wvCVtxrqn9
+JBzSgKkFAjHOiz/C6a0JOBtmH6tL41U7ZtUI2idQWsHiufyCTVOHRbyHoOxxFEpX
+Xu3l2vckZaENNyNOGCqrIo8npFQczAf/REhK0Z8UumttRm2CQkJnkqRgLnIoJq3i
+l7ljKjFi06XLJxOjLLpIFBH/yAJ5YbsYZt+XuT3WgORfHPDU3xepWGfQj4QFcsny
+GWStnu6Ej/PogJyyvZ1hFpKu8g2cIp04vEebWeYHAMorvwty/p+MJnH6NeSQq5Pe
+n22AuKKENtgYwulgJH0VQ0lJ5k1CcFuEuZqnXk5CUIC4tStdUS6hgn+vEkaJ5dX8
+nj/X9etEj2nnQGIL+7Dh2Z+UGaZqxSa1tjF5+7uC85K0NTq6Cpc+Bnd7Gqb+afnn
+/iFHG21+hpjQmdSvpbGTabrM9gxd0iuDFXSFSttMtSC+gR5VcNQpUA==
+=7Jrd
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/etc/pki/fwupd-metadata/GPG-KEY-Linux-Vendor-Firmware-Service b/etc/pki/fwupd-metadata/GPG-KEY-Linux-Vendor-Firmware-Service
new file mode 100644 (file)
index 0000000..dda1c3f
--- /dev/null
@@ -0,0 +1,19 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2
+
+mQENBFWt/98BCADZ4+lUHSp4OMlzVf4HlJNLJ7Ks5QxGwL/hy2wChoNLuA/j4GNM
+9mBZutKynYmphD0Mi4XjXn7JNXyuJa8Qutz98/Iyhsjq4LeiL9ayaKMXT+3pKlTm
+Gd/Fzo3QEOqTJ5s2RamrfwFIVuvwoj+rNmzj5fUCgoDOZeqVl6gxb7ZPzL8sWTOU
+iLeGMSzZBGE0ioJ82PZzsHelrrObDP1mMre1jQ6zxLlnYUlLvtJpydAfeBxU+6yL
+fgPeoFeuCE6JIszyWuyAgpBpYSGgj1bpt9Sxc2+MoZ0BjDzoijZqt4O48gYuEaLf
+iqYzQybe1JF0McO4C0dmjdKQz2qm0XrQyNhVABEBAAG0LkxpbnV4IFZlbmRvciBG
+aXJtd2FyZSBTZXJ2aWNlIDxzaWduQGZ3dXBkLm9yZz6JATcEEwEIACEFAlWt/98C
+GwMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQSKbYDkU4usJjjQgAzmTcA8qH
+s+1kieEZvsUzH4wun2Hlz7R5FRc/7BijgIQAA9TTrJnwbJmEBzEvHv7FKQLiBN3a
+0lQIZgahmcUt1qm6VW94VAio+SDCdqTx73wUsgM3t9sAwKxkEdJQQoO8PqYHV3uK
+rq0t2YjXglIBHRDiJlOTAR3if37OCDKCcHOOODqYrsN7wNleez+ulkDyP7C7ZTbm
+/A7Xec73t2OQUnejU0uvRvc7VSnQDRFBHA9TPiBhbruMw+ZX+z/wfPd7x2RCqoOE
+vHh+QofE41Ya2QOkT96fAKfcJ+gvIbmwp3w7h+Hus1h3xDrykCG9cCxuH0HxooVI
+XL3IlFx/6OUpBA==
+=6Dz2
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/etc/pki/fwupd-metadata/LVFS-CA.pem b/etc/pki/fwupd-metadata/LVFS-CA.pem
new file mode 100644 (file)
index 0000000..560c037
--- /dev/null
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIIEqjCCAxKgAwIBAgIBATANBgkqhkiG9w0BAQsFADA6MRAwDgYDVQQDEwdMVkZT
+IENBMSYwJAYDVQQKEx1MaW51eCBWZW5kb3IgRmlybXdhcmUgUHJvamVjdDAeFw0x
+NzA4MDEwMDAwMDBaFw00NzA4MDEwMDAwMDBaMDoxEDAOBgNVBAMTB0xWRlMgQ0Ex
+JjAkBgNVBAoTHUxpbnV4IFZlbmRvciBGaXJtd2FyZSBQcm9qZWN0MIIBojANBgkq
+hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtfUXH3NwDJzWyhkPyPcFI899+tPZ/SMp
+OkDtRr9dJjgQkSO9jKCue4DVq8Bd9RcL76F7XnEKG0LiuKnr+D7+x86TtDAPCbkP
+WAS7fAaetLtiNFU96cokhjeALB3hyamkMQnCw+5Ov+sHJfGI9Bor9UaIIbIB4r8v
+oU1WpE7N6Ix2qsS5b88+Z6EIV6CX8RbciOC/TfyYVnpF1cd4l7LH7TtL+ERpsPwv
+rk0JgVoRzG3BT5yYfuxHIe4H4Axh95tW9i6urzyQkXRz14twwwcEDvl5ALrBLNJJ
+8EDz9oR8HBPbxbd4i2dBfziY7TW4o/VgZKTGWA39JfwWNc5RxaYzBhBmg5nRcVFs
+E7PlovhyFH/0RNm/3E6vZQCeM+FNps0ovVq8Yqg8whL/yZ0iNlavCGTWhaxisVHG
+7mQopV4jZlafxvrcBFzK8RPe8Gi04FFn4ugZtJnOuMel+AiADhgtWZCENiyWV+V7
+WF1SFF4HaHuS8qqna/p9lrpVq6TBr0WRAgMBAAGjgbowgbcwEgYDVR0TAQH/BAgw
+BgEB/wIBATAwBgNVHREEKTAnhhVodHRwOi8vd3d3LmZ3dXBkLm9yZy+BDnNpZ25A
+Znd1cGQub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMDMA8GA1UdDwEB/wQFAwMHBgAw
+HQYDVR0OBBYEFLGN6uQjp34JjrXuMeBq3Z40N2WsMCoGA1UdHwQjMCEwH6AdoBuG
+GWh0dHA6Ly93d3cuZnd1cGQub3JnL3BraS8wDQYJKoZIhvcNAQELBQADggGBABNK
+mC4AcqsBCVRGpwJeUymh5G6uUpzkoEDw+y9TEoWzfldV0epU7ruqI2p8B8YshDK6
++D4CFmCnW8cc+Jb6jrJ2ZcjUqWE/c+uwZhwsUHNdk6ummPPKfMhRSbduk1ngdQe5
+meIgWGkoCfJ48GUAVVD6MlrMTNFsot1GN9x3ALMqhSU49+X43yikcc9WY2F8JOY8
+xYpGpgUQV1hBSPOGK4XhgztpFLqw0GxJiLrOfKjtJwSTkxGCpPi2dLS0huk/mreT
+NAQ5FnMLkoqfR1RGga3tiP5w13gqDBV7a6MYMdmMfAAZhfRtlDu6SiAmjEmlSkOK
+PNhdoCNVDQLQpGaKZUI5hjMfR90U8Cm/6e0ondwjV4J6f4CS4wkQ5zzITGWptagE
+01tpgTXf7TLaFGtzR8cl8XgV+UO3T4DQjEQkXUaS7n72ZCGv/s4LraLunhBrVHSq
+glEXpU/V/JNptgArIiRFZOrto52cUnnlNEfgqIzAHv/LMFRIkMo8ZMGTgScFrA==
+-----END CERTIFICATE-----
diff --git a/etc/pki/fwupd/GPG-KEY-Hughski-Limited b/etc/pki/fwupd/GPG-KEY-Hughski-Limited
new file mode 100644 (file)
index 0000000..10fb387
--- /dev/null
@@ -0,0 +1,30 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+mQENBFUr0UoBCACsdOLuTJ81dICrSvUhyznBsL4WgEa2RUbEjJuaXwrEyPMikHE1
+Clda2YI7VbpCgIVq8Zy63CGJ4Xqs2T6pyetaXnbX8J0C+7wg2IfPv7pUyCsP7/JR
+HRB2GNelCWrsGArN1cOPI0ESH4yHWKF9KCGlpsLfSHmvF7D8vcKlKQUlO4T6lxOP
+SNjMSXkMsxfDDhl1mzqrwxfU4V6nnPcuMwU7tvg+39PioP4Ny1tKP4SSpBfh7qwz
+XXRd505dqNLOubxmOPZ5rznVkKmW2cwahO6fr5zVA8/2TDZQ79mdbfvSJVlW06qs
+C5PYmLnBjyzE5uQ4oxSIuUEiMfqrn3Qs6PhhABEBAAG0Ikh1Z2hza2kgTGltaXRl
+ZCA8aW5mb0BodWdoc2tpLmNvbT6JATgEEwECACIFAlUr0UoCGwMGCwkIBwMCBhUI
+AgkKCwQWAgMBAh4BAheAAAoJEK2KUo/sRIge/fUH/Rblgzh5GeB0Zp2U9W+r26iJ
+t1AD5a/fKxQahz/pwMkevQCCMzI1vpX12P3HtACZOD3Zjh9RXY6Z3033YZjrRApe
+FkOVfcyUF1nP/z2Ox3jE3+B8v1u0UzH/MqtF/1095mqvR7gllE288KDqu7bvd5l3
+z4IETk5qqoeCe9LYc8aob973dbocyS/gou/FLCKxoXVEe8DPRwv8qmXlXOujxdxd
+FcslpYqtjj4fgUswQ/cY/a1UcAX5zCnVqFbU7oJH2uTNewKuaZ2wgPbnzvwx8JYl
+VfFdPN7GZ0NMrZDLeJ0SLXer/9+qAKNH4UpQS9axXQL+VKOzsZCXuv31VDCj5Jy5
+AQ0EVSvRSgEIAMgVrZP3LmA9bx7B8l+agVh5DNXrMixX9jhZ0Yfn8+UIMMNTZziD
+ZV3nXxswKPrcsqQ+KP9iUwq3V2oio46bvHiMMoZSGCaTv4yiKOliFOMYr9NAOSTZ
+8mOI24dNXI9XqQ7ZA8m4uKmgHZQUIUUlx693uRI2Wmk/Y5XEBoL2+XdA5KalO+36
+27YXpdyU3GiMCOtSBLWNfBxXw6oKdNUp+8o/fYrmQnBxuGgmVlcZEmjhrIGXaCH1
+iDeWIFqaM/S+DXMF3bgqvqRZq1U2RwT2oxapAuaG/0I5JaKKpb3HqMCXfOUxpFPk
+zgUYpHatUcePG/94K8N8CRjnJ+l83H5PewcAEQEAAYkBHwQYAQIACQUCVSvRSgIb
+DAAKCRCtilKP7ESIHrrcCACc6UTZzVGbVq9pXSz2Bw2xQpAEAhnnedPgfXwEJMM0
+24bMUNsyJcQZAW1d5KfJYNAihOfse3oDQ/hJAycTK3GAHsPfljEQjWGn27eC8Fxu
+mHpfNpxbTirChfepCNctZG818Hp2v+K4X/PjyQMQ6J5H9oinnlasVQ6wzdZifnWm
+7E5OL0NV/ni9xqq4fC5y5qxNBeYVmHUF4H0E3VOuCbESAOnUDpCo998Dc68eZEmV
+f3IMukvvnxM9VOZQSnp7J/kkhPB5fim2z2qrlJK9N+tBjAMugxtnAV2fIaZYTiba
+SnN2hheFd9Y0nMmWbwRqFtwMG1m/tS3JlD52Rpwzk59B
+=WFoi
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/etc/pki/fwupd/GPG-KEY-Linux-Foundation-Firmware b/etc/pki/fwupd/GPG-KEY-Linux-Foundation-Firmware
new file mode 100644 (file)
index 0000000..e03bf68
--- /dev/null
@@ -0,0 +1,37 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+mQENBFsDBO0BCACjkrMuRgaWxP88Ubc1Xar5mxLMNXAJUzeYQVh/LnkEwytO3Ekh
+GDH8Ch78269MiezkJmUGUUGyjKhqZECtZaKGp4LSl6gTPFDFHS/xKaq8L+8G/v4K
+LEtZE03PKSnY2XYnf+3Kc6tmIZBB67yRg/79p3OpFd95wqyu+2c1cVkjCA1Q8XpO
+bgCDfNacU3Yag6GXYlKpLmlVkYaAptjV0FrbLLBjaHvFeGAXgRUlv0PRyDjKD2XT
+PEBtbg2+qTxPJIOlFgGNsJjkFL7R3mWwn00yF4jt9JMYGkpNAuFg1c/TZ1v64wlP
+N6i2DsDwIMQ9S/ahJWdX/zP4JMTdpYNP91o9ABEBAAG0WkxWRlMgYSBTZXJpZXMg
+b2YgTEYgUHJvamVjdHMsIExMQyAoTFZGUyBhIFNlcmllcyBvZiBMRiBQcm9qZWN0
+cywgTExDKSA8ZmlybXdhcmVAZnd1cGQub3JnPokBOAQTAQIAIgUCWwME7QIbAwYL
+CQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQxjYXh6CoSeE3pQf+MlPyQzkVhdRU
+fqjzu3Ba9dZ+hmsol2ooFmytd058AIO1eKie2LxnkQw4P5prFOnVWbbFi79vUEzQ
+KK5xpW46nEglU14xYgv+4cMlVNWBYIVsXIIKKs2z4gM8oCA20JpVunnVbaViWTna
+YwiUbTniIvLQH4RLo66Qzd0b3Z8ycK0bVbCl4RazSbWAGHMAnqm0xSQqsWRQwaHk
+vxXEbjb0hfO4P/PZui5vFGr82tZUdGVKift1JlOzDMjVcmFIuYITHQyGaZ5Xsh2h
+Pu9gI9Vp7OQoA7dJ+Qc5LBk3rVxN5Zx3jUSWOd7Dtvrm+ArBy/y0MCVyv9fcSvAH
+vEv9T4zhE7kBDQRbAwTtAQgAwjiRDT3qinYz7b1s9SM2Y7aZG9JhWi/Zp2qGzGVX
+QpVV2EK3PnAfZpyt99I63N7d/QDPqLFmTyjlv5cMb3QxVyXGBCGGz3OiWYY0NaDd
+s1sp3J+TT6bHNG/Lo+vgcTRvzHvq7HbbeNssIMLr6MDAj0fZSh5UlAfQdC3qz90A
+qIPGcx5AwgCwXLDqzCusz17Erc3IK/TG4r0AbRFtGx0hl2w5EOn7funw8BhnJ59w
+OMsq7sXDmFff4hQjgQoDezMkA1EgzFokRY7pToLG3X1KdDXKR0edQ3+1mlJTf9XN
+Zaz+ortKsugmTmzsF4DlRhq0Ok0VWuq0rzWndpFyFvIewwARAQABiQI+BBgBAgAJ
+BQJbAwTtAhsuASkJEMY2F4egqEnhwF0gBBkBAgAGBQJbAwTtAAoJENTAcNuxNA6+
+1T4H/jsWVrANLKElBwZJpPOVy4Haw7UG+zk7lfwck0H8J9ShDtwhNTg03BiOONP/
+JuR8XvOxjqdUexEmAJdQCtxJgLTlI40xSlcmSEIneCamOhA/I/T+nkXFAfV65FKF
++OR3Ee122sUMXvLCcNvcbM23GIWiN/YmYFlK1PGNe3oOn4MWJ/28dbCLuEOPP4Tu
+VJM/RpZ65qCnojc1meMcPJxI5iNWZtG9SmmGWDI3f7mDK+dtD06VLmPd3uc8P23t
+YN0o/Jkgz2oV5GKD9t2+Ne2C5H5xZ0aE7dDVM8ErEPd3wTS+bC8GhPxHjj4A6HyA
+MNZAEZSAJ4TVpzbfyOMcpSRK4yVLTAgAmTVV79EH/14s60Ya0LCtpifpvpZimbbo
+xBGFaymvX7doxZyITC66JNTzT4Eixp8FNRloKWkEo6gPwA6qshlhc0HpmiqNmC+k
+QNYIVeanrflV2bVzYSdsIzrZLUTd6P835YYxD1nsQGwnCqeeD0gJlV+alo0LYTRt
+lFwNYxHU7BM09wu7sUEvYW5wt4TXPUrZ9jV+BM9UQLatW+S5vO41wqfTmPKGEqct
+doW2ZYUgCc4aFGTOj3fA5hoK6EjAQpVdkcA7fiRYLn5AIvM4FGxIqI5khjsZUEPa
+9Gpui69Y4a+x4QEIDj/WAHOOMSIg/n96e+uRdGXN4c8nr7JSASxlow==
+=RFA4
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/etc/pki/fwupd/GPG-KEY-Linux-Vendor-Firmware-Service b/etc/pki/fwupd/GPG-KEY-Linux-Vendor-Firmware-Service
new file mode 100644 (file)
index 0000000..dda1c3f
--- /dev/null
@@ -0,0 +1,19 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2
+
+mQENBFWt/98BCADZ4+lUHSp4OMlzVf4HlJNLJ7Ks5QxGwL/hy2wChoNLuA/j4GNM
+9mBZutKynYmphD0Mi4XjXn7JNXyuJa8Qutz98/Iyhsjq4LeiL9ayaKMXT+3pKlTm
+Gd/Fzo3QEOqTJ5s2RamrfwFIVuvwoj+rNmzj5fUCgoDOZeqVl6gxb7ZPzL8sWTOU
+iLeGMSzZBGE0ioJ82PZzsHelrrObDP1mMre1jQ6zxLlnYUlLvtJpydAfeBxU+6yL
+fgPeoFeuCE6JIszyWuyAgpBpYSGgj1bpt9Sxc2+MoZ0BjDzoijZqt4O48gYuEaLf
+iqYzQybe1JF0McO4C0dmjdKQz2qm0XrQyNhVABEBAAG0LkxpbnV4IFZlbmRvciBG
+aXJtd2FyZSBTZXJ2aWNlIDxzaWduQGZ3dXBkLm9yZz6JATcEEwEIACEFAlWt/98C
+GwMFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQSKbYDkU4usJjjQgAzmTcA8qH
+s+1kieEZvsUzH4wun2Hlz7R5FRc/7BijgIQAA9TTrJnwbJmEBzEvHv7FKQLiBN3a
+0lQIZgahmcUt1qm6VW94VAio+SDCdqTx73wUsgM3t9sAwKxkEdJQQoO8PqYHV3uK
+rq0t2YjXglIBHRDiJlOTAR3if37OCDKCcHOOODqYrsN7wNleez+ulkDyP7C7ZTbm
+/A7Xec73t2OQUnejU0uvRvc7VSnQDRFBHA9TPiBhbruMw+ZX+z/wfPd7x2RCqoOE
+vHh+QofE41Ya2QOkT96fAKfcJ+gvIbmwp3w7h+Hus1h3xDrykCG9cCxuH0HxooVI
+XL3IlFx/6OUpBA==
+=6Dz2
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/etc/pki/fwupd/LVFS-CA.pem b/etc/pki/fwupd/LVFS-CA.pem
new file mode 100644 (file)
index 0000000..560c037
--- /dev/null
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIIEqjCCAxKgAwIBAgIBATANBgkqhkiG9w0BAQsFADA6MRAwDgYDVQQDEwdMVkZT
+IENBMSYwJAYDVQQKEx1MaW51eCBWZW5kb3IgRmlybXdhcmUgUHJvamVjdDAeFw0x
+NzA4MDEwMDAwMDBaFw00NzA4MDEwMDAwMDBaMDoxEDAOBgNVBAMTB0xWRlMgQ0Ex
+JjAkBgNVBAoTHUxpbnV4IFZlbmRvciBGaXJtd2FyZSBQcm9qZWN0MIIBojANBgkq
+hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtfUXH3NwDJzWyhkPyPcFI899+tPZ/SMp
+OkDtRr9dJjgQkSO9jKCue4DVq8Bd9RcL76F7XnEKG0LiuKnr+D7+x86TtDAPCbkP
+WAS7fAaetLtiNFU96cokhjeALB3hyamkMQnCw+5Ov+sHJfGI9Bor9UaIIbIB4r8v
+oU1WpE7N6Ix2qsS5b88+Z6EIV6CX8RbciOC/TfyYVnpF1cd4l7LH7TtL+ERpsPwv
+rk0JgVoRzG3BT5yYfuxHIe4H4Axh95tW9i6urzyQkXRz14twwwcEDvl5ALrBLNJJ
+8EDz9oR8HBPbxbd4i2dBfziY7TW4o/VgZKTGWA39JfwWNc5RxaYzBhBmg5nRcVFs
+E7PlovhyFH/0RNm/3E6vZQCeM+FNps0ovVq8Yqg8whL/yZ0iNlavCGTWhaxisVHG
+7mQopV4jZlafxvrcBFzK8RPe8Gi04FFn4ugZtJnOuMel+AiADhgtWZCENiyWV+V7
+WF1SFF4HaHuS8qqna/p9lrpVq6TBr0WRAgMBAAGjgbowgbcwEgYDVR0TAQH/BAgw
+BgEB/wIBATAwBgNVHREEKTAnhhVodHRwOi8vd3d3LmZ3dXBkLm9yZy+BDnNpZ25A
+Znd1cGQub3JnMBMGA1UdJQQMMAoGCCsGAQUFBwMDMA8GA1UdDwEB/wQFAwMHBgAw
+HQYDVR0OBBYEFLGN6uQjp34JjrXuMeBq3Z40N2WsMCoGA1UdHwQjMCEwH6AdoBuG
+GWh0dHA6Ly93d3cuZnd1cGQub3JnL3BraS8wDQYJKoZIhvcNAQELBQADggGBABNK
+mC4AcqsBCVRGpwJeUymh5G6uUpzkoEDw+y9TEoWzfldV0epU7ruqI2p8B8YshDK6
++D4CFmCnW8cc+Jb6jrJ2ZcjUqWE/c+uwZhwsUHNdk6ummPPKfMhRSbduk1ngdQe5
+meIgWGkoCfJ48GUAVVD6MlrMTNFsot1GN9x3ALMqhSU49+X43yikcc9WY2F8JOY8
+xYpGpgUQV1hBSPOGK4XhgztpFLqw0GxJiLrOfKjtJwSTkxGCpPi2dLS0huk/mreT
+NAQ5FnMLkoqfR1RGga3tiP5w13gqDBV7a6MYMdmMfAAZhfRtlDu6SiAmjEmlSkOK
+PNhdoCNVDQLQpGaKZUI5hjMfR90U8Cm/6e0ondwjV4J6f4CS4wkQ5zzITGWptagE
+01tpgTXf7TLaFGtzR8cl8XgV+UO3T4DQjEQkXUaS7n72ZCGv/s4LraLunhBrVHSq
+glEXpU/V/JNptgArIiRFZOrto52cUnnlNEfgqIzAHv/LMFRIkMo8ZMGTgScFrA==
+-----END CERTIFICATE-----
diff --git a/etc/pm/sleep.d/10_grub-common b/etc/pm/sleep.d/10_grub-common
new file mode 100755 (executable)
index 0000000..eaedb04
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Tell grub that resume was successful
+
+case "$1" in
+       thaw)
+               [ -s /boot/grub/grubenv ] || rm -f /boot/grub/grubenv
+               mkdir -p /boot/grub
+               grub-editenv /boot/grub/grubenv unset recordfail
+               ;;
+esac
diff --git a/etc/pm/sleep.d/10_unattended-upgrades-hibernate b/etc/pm/sleep.d/10_unattended-upgrades-hibernate
new file mode 100755 (executable)
index 0000000..8771611
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+# Action script ensure that unattended-upgrades is finished 
+# before a hibernate 
+#
+# Copyright: Copyright (c) 2009 Michael Vogt
+# License:   GPL-2
+#
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+SHUTDOWN_HELPER=/usr/share/unattended-upgrades/unattended-upgrade-shutdown
+
+if [ -x /usr/bin/python3 ]; then
+    PYTHON=python3
+else
+    PYTHON=python
+fi
+
+if [ ! -x /usr/share/unattended-upgrades/unattended-upgrade-shutdown ]; then
+       exit 0
+fi
+
+case "${1}" in
+        hibernate)
+                if [ -e $SHUTDOWN_HELPER ]; then
+                   $PYTHON $SHUTDOWN_HELPER --stop-only
+                fi
+                ;;
+        resume|thaw)
+               # nothing
+                ;;
+esac
+
diff --git a/etc/polkit-1/localauthority.conf.d/50-localauthority.conf b/etc/polkit-1/localauthority.conf.d/50-localauthority.conf
new file mode 100644 (file)
index 0000000..20e0ba3
--- /dev/null
@@ -0,0 +1,10 @@
+# Configuration file for the PolicyKit Local Authority.
+#
+# DO NOT EDIT THIS FILE, it will be overwritten on update.
+#
+# See the pklocalauthority(8) man page for more information
+# about configuring the Local Authority.
+#
+
+[Configuration]
+AdminIdentities=unix-user:0
diff --git a/etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf b/etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf
new file mode 100644 (file)
index 0000000..c35af4e
--- /dev/null
@@ -0,0 +1,2 @@
+[Configuration]
+AdminIdentities=unix-group:sudo;unix-group:admin
diff --git a/etc/pollinate/add-user-agent b/etc/pollinate/add-user-agent
new file mode 100644 (file)
index 0000000..aab9369
--- /dev/null
@@ -0,0 +1,2 @@
+subiquity/20.07.1+git2.5de9df3e_1966 # written by curtin
+curtin/20.1-226-g34894cc70 # written by curtin
diff --git a/etc/pollinate/entropy.ubuntu.com.pem b/etc/pollinate/entropy.ubuntu.com.pem
new file mode 100644 (file)
index 0000000..b9ca309
--- /dev/null
@@ -0,0 +1,49 @@
+-----BEGIN CERTIFICATE-----\r
+MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\r
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\r
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\r
+QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\r
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\r
+b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\r
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\r
+CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\r
+nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\r
+43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\r
+T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\r
+gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\r
+BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\r
+TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\r
+DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\r
+hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\r
+06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\r
+PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\r
+YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\r
+CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\r
+-----END CERTIFICATE-----\r
+-----BEGIN CERTIFICATE-----\r
+MIIElDCCA3ygAwIBAgIQAf2j627KdciIQ4tyS8+8kTANBgkqhkiG9w0BAQsFADBh\r
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\r
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\r
+QTAeFw0xMzAzMDgxMjAwMDBaFw0yMzAzMDgxMjAwMDBaME0xCzAJBgNVBAYTAlVT\r
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxJzAlBgNVBAMTHkRpZ2lDZXJ0IFNIQTIg\r
+U2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\r
+ANyuWJBNwcQwFZA1W248ghX1LFy949v/cUP6ZCWA1O4Yok3wZtAKc24RmDYXZK83\r
+nf36QYSvx6+M/hpzTc8zl5CilodTgyu5pnVILR1WN3vaMTIa16yrBvSqXUu3R0bd\r
+KpPDkC55gIDvEwRqFDu1m5K+wgdlTvza/P96rtxcflUxDOg5B6TXvi/TC2rSsd9f\r
+/ld0Uzs1gN2ujkSYs58O09rg1/RrKatEp0tYhG2SS4HD2nOLEpdIkARFdRrdNzGX\r
+kujNVA075ME/OV4uuPNcfhCOhkEAjUVmR7ChZc6gqikJTvOX6+guqw9ypzAO+sf0\r
+/RR3w6RbKFfCs/mC/bdFWJsCAwEAAaOCAVowggFWMBIGA1UdEwEB/wQIMAYBAf8C\r
+AQAwDgYDVR0PAQH/BAQDAgGGMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYY\r
+aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMHsGA1UdHwR0MHIwN6A1oDOGMWh0dHA6\r
+Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwN6A1\r
+oDOGMWh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RD\r
+QS5jcmwwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v\r
+d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwHQYDVR0OBBYEFA+AYRyCMWHVLyjnjUY4tCzh\r
+xtniMB8GA1UdIwQYMBaAFAPeUDVW0Uy7ZvCj4hsbw5eyPdFVMA0GCSqGSIb3DQEB\r
+CwUAA4IBAQAjPt9L0jFCpbZ+QlwaRMxp0Wi0XUvgBCFsS+JtzLHgl4+mUwnNqipl\r
+5TlPHoOlblyYoiQm5vuh7ZPHLgLGTUq/sELfeNqzqPlt/yGFUzZgTHbO7Djc1lGA\r
+8MXW5dRNJ2Srm8c+cftIl7gzbckTB+6WohsYFfZcTEDts8Ls/3HB40f/1LkAtDdC\r
+2iDJ6m6K7hQGrn2iWZiIqBtvLfTyyRRfJs8sjX7tN8Cp1Tm5gr8ZDOo0rwAhaPit\r
+c+LJMto4JQtV05od8GiG7S5BNO98pVAdvzr508EIDObtHopYJeS4d60tbvVS3bR0\r
+j6tJLp07kzQoH3jOlOrHvdPJbRzeXDLz\r
+-----END CERTIFICATE-----\r
diff --git a/etc/popularity-contest.conf b/etc/popularity-contest.conf
new file mode 100644 (file)
index 0000000..571932a
--- /dev/null
@@ -0,0 +1,14 @@
+# Config file for Debian's popularity-contest package.
+#
+# To change this file, use:
+#        dpkg-reconfigure popularity-contest
+#
+# You can also edit it by hand, if you so choose.
+#
+# See /usr/share/popularity-contest/default.conf for more info
+# on the options.
+
+MY_HOSTID="538cdd57c46d4cb3b7a86b599070900d"
+PARTICIPATE="no"
+USEHTTP="yes"
+DAY="3"
diff --git a/etc/postgresql-common/createcluster.conf b/etc/postgresql-common/createcluster.conf
new file mode 100644 (file)
index 0000000..d245a27
--- /dev/null
@@ -0,0 +1,41 @@
+# Default values for pg_createcluster(8)
+# Occurrences of '%v' are replaced by the major version number,
+# and '%c' by the cluster name. Use '%%' for a literal '%'.
+
+# Create a "main" cluster when a new postgresql-x.y server package is installed
+#create_main_cluster = true
+
+# Default start.conf value, must be one of "auto", "manual", and "disabled".
+# See pg_createcluster(8) for more documentation.
+#start_conf = 'auto'
+
+# Default data directory.
+#data_directory = '/var/lib/postgresql/%v/%c'
+
+# Default directory for transaction logs
+# Unset by default, i.e. transaction logs remain in the data directory.
+#waldir = '/var/lib/postgresql/wal/%v/%c/pg_wal'
+
+# Options to pass to initdb.
+#initdb_options = ''
+
+# The following options are copied into the new cluster's postgresql.conf:
+
+# Enable SSL by default (using the "snakeoil" certificates installed by the
+# ssl-cert package, unless configured otherwise here)
+ssl = on
+
+# Show cluster name in process title
+cluster_name = '%v/%c'
+
+# Put stats_temp_directory on tmpfs
+stats_temp_directory = '/var/run/postgresql/%v-%c.pg_stat_tmp'
+
+# Add prefix to log lines
+log_line_prefix = '%%m [%%p] %%q%%u@%%d '
+
+# Add "include_dir" in postgresql.conf
+add_include_dir = 'conf.d'
+
+# Directory for additional createcluster config
+include_dir '/etc/postgresql-common/createcluster.d'
diff --git a/etc/postgresql-common/root.crt b/etc/postgresql-common/root.crt
new file mode 100644 (file)
index 0000000..6a1f174
--- /dev/null
@@ -0,0 +1,11 @@
+This is a dummy root certificate file for PostgreSQL. To enable client side
+authentication, add some certificates to it. Client certificates must be signed
+with any certificate in this file to be accepted.
+
+A reasonable choice is to just symlink this file to
+/etc/ssl/certs/ssl-cert-snakeoil.pem; in this case, client certificates need to
+be signed by the postgresql server certificate, which might be desirable in
+many cases. See chapter "Server Setup and Operation" in the PostgreSQL
+documentation for details (in package postgresql-doc-9.2).
+
+  file:///usr/share/doc/postgresql-doc-9.2/html/ssl-tcp.html
diff --git a/etc/postgresql-common/supported_versions b/etc/postgresql-common/supported_versions
new file mode 100644 (file)
index 0000000..d816e0a
--- /dev/null
@@ -0,0 +1,2 @@
+# See /usr/share/postgresql-common/supported-versions for documentation of this file
+default
diff --git a/etc/postgresql-common/user_clusters b/etc/postgresql-common/user_clusters
new file mode 100644 (file)
index 0000000..82d2d70
--- /dev/null
@@ -0,0 +1,22 @@
+# This file maps users against the database clusters to which they
+# will connect by default.  Any user may create ~/.postgresqlrc which
+# will supersede the defaults stored here.  If a database is
+# specified, that will be the one connected to by client tools if none
+# is specified on the command line.  If the database specified here is
+# "*", this is interpreted as the database whose name is the same as
+# the user's login.  (Setting the database to "*" will provide the
+# current default upstream behaviour for command line tools.)
+#
+# When pg_wrapper scans this file, the first matching line is used.
+# It is a good idea to provide a default explicitly, with a final line
+# where both user and group are set to "*".  If there is no default,
+# the implicit default is to connect to the cluster listening on
+# port 5432 and to the database matching the user's login name.
+#
+# In the context of this file, user and group refer to the Unix login
+# or group, not to PostgreSQL users and groups.
+# 
+# Please see user_clusters(5) and postgresqlrc(5) for more information.
+#
+# USER GROUP   VERSION CLUSTER DATABASE
+
diff --git a/etc/postgresql/12/main/environment b/etc/postgresql/12/main/environment
new file mode 100644 (file)
index 0000000..411be67
--- /dev/null
@@ -0,0 +1,7 @@
+# environment variables for postgres processes
+# This file has the same syntax as postgresql.conf:
+#  VARIABLE = simple_value
+#  VARIABLE2 = 'any value!'
+# I. e. you need to enclose any value which does not only consist of letters,
+# numbers, and '-', '_', '.' in single quotes. Shell commands are not
+# evaluated.
diff --git a/etc/postgresql/12/main/pg_ctl.conf b/etc/postgresql/12/main/pg_ctl.conf
new file mode 100644 (file)
index 0000000..d33e363
--- /dev/null
@@ -0,0 +1,5 @@
+# Automatic pg_ctl configuration
+# This configuration file contains cluster specific options to be passed to
+# pg_ctl(1).
+
+pg_ctl_options = ''
diff --git a/etc/postgresql/12/main/pg_ident.conf b/etc/postgresql/12/main/pg_ident.conf
new file mode 100644 (file)
index 0000000..a5870e6
--- /dev/null
@@ -0,0 +1,42 @@
+# PostgreSQL User Name Maps
+# =========================
+#
+# Refer to the PostgreSQL documentation, chapter "Client
+# Authentication" for a complete description.  A short synopsis
+# follows.
+#
+# This file controls PostgreSQL user name mapping.  It maps external
+# user names to their corresponding PostgreSQL user names.  Records
+# are of the form:
+#
+# MAPNAME  SYSTEM-USERNAME  PG-USERNAME
+#
+# (The uppercase quantities must be replaced by actual values.)
+#
+# MAPNAME is the (otherwise freely chosen) map name that was used in
+# pg_hba.conf.  SYSTEM-USERNAME is the detected user name of the
+# client.  PG-USERNAME is the requested PostgreSQL user name.  The
+# existence of a record specifies that SYSTEM-USERNAME may connect as
+# PG-USERNAME.
+#
+# If SYSTEM-USERNAME starts with a slash (/), it will be treated as a
+# regular expression.  Optionally this can contain a capture (a
+# parenthesized subexpression).  The substring matching the capture
+# will be substituted for \1 (backslash-one) if present in
+# PG-USERNAME.
+#
+# Multiple maps may be specified in this file and used by pg_hba.conf.
+#
+# No map names are defined in the default configuration.  If all
+# system user names and PostgreSQL user names are the same, you don't
+# need anything in this file.
+#
+# This file is read on server startup and when the postmaster receives
+# a SIGHUP signal.  If you edit the file on a running system, you have
+# to SIGHUP the postmaster for the changes to take effect.  You can
+# use "pg_ctl reload" to do that.
+
+# Put your actual configuration here
+# ----------------------------------
+
+# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
diff --git a/etc/postgresql/12/main/start.conf b/etc/postgresql/12/main/start.conf
new file mode 100644 (file)
index 0000000..b0f3256
--- /dev/null
@@ -0,0 +1,8 @@
+# Automatic startup configuration
+#   auto: automatically start the cluster
+#   manual: manual startup with pg_ctlcluster/postgresql@.service only
+#   disabled: refuse to start cluster
+# See pg_createcluster(1) for details. When running from systemd,
+# invoke 'systemctl daemon-reload' after editing this file.
+
+auto
diff --git a/etc/profile b/etc/profile
new file mode 100644 (file)
index 0000000..259b3b4
--- /dev/null
@@ -0,0 +1,27 @@
+# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
+# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
+
+if [ "${PS1-}" ]; then
+  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
+    # The file bash.bashrc already sets the default PS1.
+    # PS1='\h:\w\$ '
+    if [ -f /etc/bash.bashrc ]; then
+      . /etc/bash.bashrc
+    fi
+  else
+    if [ "`id -u`" -eq 0 ]; then
+      PS1='# '
+    else
+      PS1='$ '
+    fi
+  fi
+fi
+
+if [ -d /etc/profile.d ]; then
+  for i in /etc/profile.d/*.sh; do
+    if [ -r $i ]; then
+      . $i
+    fi
+  done
+  unset i
+fi
diff --git a/etc/profile.d/01-locale-fix.sh b/etc/profile.d/01-locale-fix.sh
new file mode 100644 (file)
index 0000000..e3c8733
--- /dev/null
@@ -0,0 +1,2 @@
+# Make sure the locale variables are set to valid values.
+eval $(/usr/bin/locale-check C.UTF-8)
diff --git a/etc/profile.d/Z97-byobu.sh b/etc/profile.d/Z97-byobu.sh
new file mode 100644 (file)
index 0000000..51b2887
--- /dev/null
@@ -0,0 +1,41 @@
+#    Z97-byobu.sh - allow any user to opt into auto-launching byobu
+#    Copyright (C) 2011 Canonical Ltd.
+#
+#    Authors: Dustin Kirkland <kirkland@byobu.org>
+#
+#    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, version 3 of the License.
+#
+#    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/>.
+
+# Allow any user to opt into auto-launching byobu by setting LC_BYOBU=1
+# Apologies for borrowing the LC_BYOBU namespace, but:
+#  a) it's reasonable to assume that no one else is using LC_BYOBU
+#  b) LC_* is sent and receieved by most /etc/ssh/ssh*_config
+
+if [ -r "/usr/bin/byobu-launch" ]; then
+       if [ "$LC_BYOBU" = "0" ]; then
+               true
+       elif [ "$LC_BYOBU" = "1" ]; then
+               . /usr/bin/byobu-launch
+       elif [ -e "/etc/byobu/autolaunch" ]; then
+               . /usr/bin/byobu-launch
+       elif [ "$LC_TERMTYPE" = "byobu" ]; then
+               . /usr/bin/byobu-launch
+       elif [ "$LC_TERMTYPE" = "byobu-screen" ]; then
+               export BYOBU_BACKEND="screen"
+               . /usr/bin/byobu-launch
+       elif [ "$LC_TERMTYPE" = "byobu-tmux" ]; then
+               export BYOBU_BACKEND="tmux"
+               . /usr/bin/byobu-launch
+       fi
+fi
+
+# vi: syntax=sh ts=4 noexpandtab
diff --git a/etc/profile.d/Z99-cloud-locale-test.sh b/etc/profile.d/Z99-cloud-locale-test.sh
new file mode 100755 (executable)
index 0000000..9ee44bd
--- /dev/null
@@ -0,0 +1,103 @@
+#!/bin/sh
+# Copyright (C) 2012, Canonical Group, Ltd.
+#
+# Author: Ben Howard <ben.howard@canonical.com>
+# Author: Scott Moser <scott.moser@ubuntu.com>
+# (c) 2012, Canonical Group, Ltd.
+#
+# This file is part of cloud-init. See LICENSE file for license information.
+# Purpose: Detect invalid locale settings and inform the user
+#  of how to fix them.
+
+locale_warn() {
+    command -v local >/dev/null && local _local="local" ||
+        typeset _local="typeset"
+
+    $_local bad_names="" bad_lcs="" key="" val="" var="" vars="" bad_kv=""
+    $_local w1 w2 w3 w4 remain
+
+    # if shell is zsh, act like sh only for this function (-L).
+    # The behavior change will not permenently affect user's shell.
+    [ "${ZSH_NAME+zsh}" = "zsh" ] && emulate -L sh
+
+    # locale is expected to output either:
+    # VARIABLE=
+    # VARIABLE="value"
+    # locale: Cannot set LC_SOMETHING to default locale
+    while read -r w1 w2 w3 w4 remain; do
+        case "$w1" in
+            locale:) bad_names="${bad_names} ${w4}";;
+            *)
+                key=${w1%%=*}
+                val=${w1#*=}
+                val=${val#\"}
+                val=${val%\"}
+                vars="${vars} $key=$val";;
+        esac
+    done
+    for bad in $bad_names; do
+        for var in ${vars}; do
+            [ "${bad}" = "${var%=*}" ] || continue
+            val=${var#*=}
+            [ "${bad_lcs#* ${val}}" = "${bad_lcs}" ] &&
+                bad_lcs="${bad_lcs} ${val}"
+            bad_kv="${bad_kv} $bad=$val"
+            break
+        done
+    done
+    bad_lcs=${bad_lcs# }
+    bad_kv=${bad_kv# }
+    [ -n "$bad_lcs" ] || return 0
+
+    printf "_____________________________________________________________________\n"
+    printf "WARNING! Your environment specifies an invalid locale.\n"
+    printf " The unknown environment variables are:\n   %s\n" "$bad_kv"
+    printf " This can affect your user experience significantly, including the\n"
+    printf " ability to manage packages. You may install the locales by running:\n\n"
+
+    $_local bad invalid="" to_gen="" sfile="/usr/share/i18n/SUPPORTED"
+    $_local local pkgs=""
+    if [ -e "$sfile" ]; then
+        for bad in ${bad_lcs}; do
+            grep -q -i "${bad}" "$sfile" &&
+                to_gen="${to_gen} ${bad}" ||
+                invalid="${invalid} ${bad}"
+        done
+    else
+        printf "  sudo apt-get install locales\n"
+        to_gen=$bad_lcs
+    fi
+    to_gen=${to_gen# }
+
+    $_local pkgs=""
+    for bad in ${to_gen}; do
+        pkgs="${pkgs} language-pack-${bad%%_*}"
+    done
+    pkgs=${pkgs# }
+
+    if [ -n "${pkgs}" ]; then
+        printf "   sudo apt-get install ${pkgs# }\n"
+        printf "     or\n"
+        printf "   sudo locale-gen ${to_gen# }\n"
+        printf "\n"
+    fi
+    for bad in ${invalid}; do
+        printf "WARNING: '${bad}' is an invalid locale\n"
+    done
+
+    printf "To see all available language packs, run:\n"
+    printf "   apt-cache search \"^language-pack-[a-z][a-z]$\"\n"
+    printf "To disable this message for all users, run:\n"
+    printf "   sudo touch /var/lib/cloud/instance/locale-check.skip\n"
+    printf "_____________________________________________________________________\n\n"
+
+    # only show the message once
+    : > ~/.cloud-locale-test.skip 2>/dev/null || :
+}
+
+[ -f ~/.cloud-locale-test.skip -o -f /var/lib/cloud/instance/locale-check.skip ] ||
+    locale 2>&1 | locale_warn
+
+unset locale_warn
+# vi: ts=4 expandtab
diff --git a/etc/profile.d/Z99-cloudinit-warnings.sh b/etc/profile.d/Z99-cloudinit-warnings.sh
new file mode 100755 (executable)
index 0000000..cb8b463
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh
+# This file is part of cloud-init. See LICENSE file for license information.
+
+# Purpose: show user warnings on login.
+
+cloud_init_warnings() {
+    command -v local >/dev/null && local _local="local" ||
+        typeset _local="typeset"
+    $_local warning="" idir="/var/lib/cloud/instance" n=0
+    $_local warndir="$idir/warnings"
+    $_local ufile="$HOME/.cloud-warnings.skip" sfile="$warndir/.skip"
+    [ -d "$warndir" ] || return 0
+    [ ! -f "$ufile" ] || return 0
+    [ ! -f "$sfile" ] || return 0
+
+    for warning in "$warndir"/*; do
+        [ -f "$warning" ] || continue
+        cat "$warning"
+        n=$((n+1))
+    done
+    [ $n -eq 0 ] && return 0
+    echo ""
+    echo "Disable the warnings above by:"
+    echo "  touch $ufile"
+    echo "or"
+    echo "  touch $sfile"
+}
+
+cloud_init_warnings 1>&2
+unset cloud_init_warnings
+
+# vi: syntax=sh ts=4 expandtab
diff --git a/etc/profile.d/apps-bin-path.sh b/etc/profile.d/apps-bin-path.sh
new file mode 100644 (file)
index 0000000..2619554
--- /dev/null
@@ -0,0 +1,22 @@
+# shellcheck shell=sh
+
+# Expand $PATH to include the directory where snappy applications go.
+snap_bin_path="/snap/bin"
+if [ -n "${PATH##*${snap_bin_path}}" ] && [ -n "${PATH##*${snap_bin_path}:*}" ]; then
+    export PATH="$PATH:${snap_bin_path}"
+fi
+
+# Ensure base distro defaults xdg path are set if nothing filed up some
+# defaults yet.
+if [ -z "$XDG_DATA_DIRS" ]; then
+    export XDG_DATA_DIRS="/usr/local/share:/usr/share"
+fi
+
+# Desktop files (used by desktop environments within both X11 and Wayland) are
+# looked for in XDG_DATA_DIRS; make sure it includes the relevant directory for
+# snappy applications' desktop files.
+snap_xdg_path="/var/lib/snapd/desktop"
+if [ -n "${XDG_DATA_DIRS##*${snap_xdg_path}}" ] && [ -n "${XDG_DATA_DIRS##*${snap_xdg_path}:*}" ]; then
+    export XDG_DATA_DIRS="${XDG_DATA_DIRS}:${snap_xdg_path}"
+fi
+
diff --git a/etc/profile.d/bash_completion.sh b/etc/profile.d/bash_completion.sh
new file mode 100644 (file)
index 0000000..031ba94
--- /dev/null
@@ -0,0 +1,16 @@
+# shellcheck shell=sh disable=SC1091,SC2039,SC2166
+# Check for interactive bash and that we haven't already been sourced.
+if [ "x${BASH_VERSION-}" != x -a "x${PS1-}" != x -a "x${BASH_COMPLETION_VERSINFO-}" = x ]; then
+
+    # Check for recent enough version of bash.
+    if [ "${BASH_VERSINFO[0]}" -gt 4 ] || \
+       [ "${BASH_VERSINFO[0]}" -eq 4 -a "${BASH_VERSINFO[1]}" -ge 1 ]; then
+        [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] && \
+            . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
+        if shopt -q progcomp && [ -r /usr/share/bash-completion/bash_completion ]; then
+            # Source completion code.
+            . /usr/share/bash-completion/bash_completion
+        fi
+    fi
+
+fi
diff --git a/etc/profile.d/cedilla-portuguese.sh b/etc/profile.d/cedilla-portuguese.sh
new file mode 100644 (file)
index 0000000..d5794b2
--- /dev/null
@@ -0,0 +1,24 @@
+# cedilla-portuguese.sh (c) 2015 Canonical
+# Author: Gunnar Hjalmarsson <gunnarhj@ubuntu.com>
+#
+# Released under the GPL
+#
+# File: /etc/profile.d/cedilla-portuguese.sh
+# 
+# The desired behavior when typing in certain languages is that
+# '+c results in the ç character, and not ć. In Portuguese this
+# can be achieved by setting LC_CTYPE to either pt_BR.UTF-8 or
+# pt_PT.UTF-8. Related files:
+# /usr/share/X11/locale/pt_BR.UTF-8/Compose
+# /usr/share/X11/locale/pt_PT.UTF-8/Compose
+#
+# When the selected display language is Portuguese (either Brazilian
+# Portuguese or Portuguese as spoken in Portugal), LC_CTYPE inherits
+# the desired value from LANG. Due to this file, setting the Regional
+# Formats value to Portuguese (Brazil) or Portuguese (Portugal) is
+# sufficient to enable the just mentioned behavior, even if the
+# display language is something else but Portuguese.
+#
+if [ "${LC_IDENTIFICATION%_*}" = 'pt' -a "${LANG%_*}" != 'pt' ]; then
+    export LC_CTYPE="${LC_IDENTIFICATION%.*}.UTF-8"
+fi
diff --git a/etc/profile.d/gawk.csh b/etc/profile.d/gawk.csh
new file mode 100644 (file)
index 0000000..583d5bc
--- /dev/null
@@ -0,0 +1,11 @@
+alias gawkpath_default 'unsetenv AWKPATH; setenv AWKPATH `gawk -v x=AWKPATH "BEGIN {print ENVIRON[x]}"`'
+
+alias gawkpath_prepend 'if (! $?AWKPATH) setenv AWKPATH ""; if ($AWKPATH == "") then; unsetenv AWKPATH; setenv AWKPATH `gawk -v x=AWKPATH "BEGIN {print ENVIRON[x]}"`; endif; setenv AWKPATH "\!*"":$AWKPATH"'
+
+alias gawkpath_append 'if (! $?AWKPATH) setenv AWKPATH ""; if ($AWKPATH == "") then; unsetenv AWKPATH; setenv AWKPATH `gawk -v x=AWKPATH "BEGIN {print ENVIRON[x]}"`; endif; setenv AWKPATH "$AWKPATH"":\!*"'
+
+alias gawklibpath_default 'unsetenv AWKLIBPATH; setenv AWKLIBPATH `gawk -v x=AWKLIBPATH "BEGIN {print ENVIRON[x]}"`'
+
+alias gawklibpath_prepend 'if (! $?AWKLIBPATH) setenv AWKLIBPATH ""; if ($AWKLIBPATH == "") then; unsetenv AWKLIBPATH; setenv AWKLIBPATH `gawk -v x=AWKLIBPATH "BEGIN {print ENVIRON[x]}"`; endif; setenv AWKLIBPATH "\!*"":$AWKLIBPATH"'
+
+alias gawklibpath_append 'if (! $?AWKLIBPATH) setenv AWKLIBPATH ""; if ($AWKLIBPATH == "") then; unsetenv AWKLIBPATH; setenv AWKLIBPATH `gawk -v x=AWKLIBPATH "BEGIN {print ENVIRON[x]}"`; endif; setenv AWKLIBPATH "$AWKLIBPATH"":\!*"'
diff --git a/etc/profile.d/gawk.sh b/etc/profile.d/gawk.sh
new file mode 100644 (file)
index 0000000..c35471f
--- /dev/null
@@ -0,0 +1,31 @@
+gawkpath_default () {
+       unset AWKPATH
+       export AWKPATH=`gawk 'BEGIN {print ENVIRON["AWKPATH"]}'`
+}
+
+gawkpath_prepend () {
+       [ -z "$AWKPATH" ] && AWKPATH=`gawk 'BEGIN {print ENVIRON["AWKPATH"]}'`
+       export AWKPATH="$*:$AWKPATH"
+}
+
+gawkpath_append () {
+       [ -z "$AWKPATH" ] && AWKPATH=`gawk 'BEGIN {print ENVIRON["AWKPATH"]}'`
+       export AWKPATH="$AWKPATH:$*"
+}
+
+gawklibpath_default () {
+       unset AWKLIBPATH
+       export AWKLIBPATH=`gawk 'BEGIN {print ENVIRON["AWKLIBPATH"]}'`
+}
+
+gawklibpath_prepend () {
+       [ -z "$AWKLIBPATH" ] && \
+               AWKLIBPATH=`gawk 'BEGIN {print ENVIRON["AWKLIBPATH"]}'`
+       export AWKLIBPATH="$*:$AWKLIBPATH"
+}
+
+gawklibpath_append () {
+       [ -z "$AWKLIBPATH" ] && \
+               AWKLIBPATH=`gawk 'BEGIN {print ENVIRON["AWKLIBPATH"]}'`
+       export AWKLIBPATH="$AWKLIBPATH:$*"
+}
diff --git a/etc/protocols b/etc/protocols
new file mode 100644 (file)
index 0000000..1f112b1
--- /dev/null
@@ -0,0 +1,64 @@
+# Internet (IP) protocols
+#
+# Updated from http://www.iana.org/assignments/protocol-numbers and other
+# sources.
+# New protocols will be added on request if they have been officially
+# assigned by IANA and are not historical.
+# If you need a huge list of used numbers please install the nmap package.
+
+ip     0       IP              # internet protocol, pseudo protocol number
+hopopt 0       HOPOPT          # IPv6 Hop-by-Hop Option [RFC1883]
+icmp   1       ICMP            # internet control message protocol
+igmp   2       IGMP            # Internet Group Management
+ggp    3       GGP             # gateway-gateway protocol
+ipencap        4       IP-ENCAP        # IP encapsulated in IP (officially ``IP'')
+st     5       ST              # ST datagram mode
+tcp    6       TCP             # transmission control protocol
+egp    8       EGP             # exterior gateway protocol
+igp    9       IGP             # any private interior gateway (Cisco)
+pup    12      PUP             # PARC universal packet protocol
+udp    17      UDP             # user datagram protocol
+hmp    20      HMP             # host monitoring protocol
+xns-idp        22      XNS-IDP         # Xerox NS IDP
+rdp    27      RDP             # "reliable datagram" protocol
+iso-tp4        29      ISO-TP4         # ISO Transport Protocol class 4 [RFC905]
+dccp   33      DCCP            # Datagram Congestion Control Prot. [RFC4340]
+xtp    36      XTP             # Xpress Transfer Protocol
+ddp    37      DDP             # Datagram Delivery Protocol
+idpr-cmtp 38   IDPR-CMTP       # IDPR Control Message Transport
+ipv6   41      IPv6            # Internet Protocol, version 6
+ipv6-route 43  IPv6-Route      # Routing Header for IPv6
+ipv6-frag 44   IPv6-Frag       # Fragment Header for IPv6
+idrp   45      IDRP            # Inter-Domain Routing Protocol
+rsvp   46      RSVP            # Reservation Protocol
+gre    47      GRE             # General Routing Encapsulation
+esp    50      IPSEC-ESP       # Encap Security Payload [RFC2406]
+ah     51      IPSEC-AH        # Authentication Header [RFC2402]
+skip   57      SKIP            # SKIP
+ipv6-icmp 58   IPv6-ICMP       # ICMP for IPv6
+ipv6-nonxt 59  IPv6-NoNxt      # No Next Header for IPv6
+ipv6-opts 60   IPv6-Opts       # Destination Options for IPv6
+rspf   73      RSPF CPHB       # Radio Shortest Path First (officially CPHB)
+vmtp   81      VMTP            # Versatile Message Transport
+eigrp  88      EIGRP           # Enhanced Interior Routing Protocol (Cisco)
+ospf   89      OSPFIGP         # Open Shortest Path First IGP
+ax.25  93      AX.25           # AX.25 frames
+ipip   94      IPIP            # IP-within-IP Encapsulation Protocol
+etherip        97      ETHERIP         # Ethernet-within-IP Encapsulation [RFC3378]
+encap  98      ENCAP           # Yet Another IP encapsulation [RFC1241]
+#      99                      # any private encryption scheme
+pim    103     PIM             # Protocol Independent Multicast
+ipcomp 108     IPCOMP          # IP Payload Compression Protocol
+vrrp   112     VRRP            # Virtual Router Redundancy Protocol [RFC5798]
+l2tp   115     L2TP            # Layer Two Tunneling Protocol [RFC2661]
+isis   124     ISIS            # IS-IS over IPv4
+sctp   132     SCTP            # Stream Control Transmission Protocol
+fc     133     FC              # Fibre Channel
+mobility-header 135 Mobility-Header # Mobility Support for IPv6 [RFC3775]
+udplite        136     UDPLite         # UDP-Lite [RFC3828]
+mpls-in-ip 137 MPLS-in-IP      # MPLS-in-IP [RFC4023]
+manet  138                     # MANET Protocols [RFC5498]
+hip    139     HIP             # Host Identity Protocol
+shim6  140     Shim6           # Shim6 Protocol [RFC5533]
+wesp   141     WESP            # Wrapped Encapsulating Security Payload
+rohc   142     ROHC            # Robust Header Compression
diff --git a/etc/python3.8/sitecustomize.py b/etc/python3.8/sitecustomize.py
new file mode 100644 (file)
index 0000000..89c6712
--- /dev/null
@@ -0,0 +1,7 @@
+# install the apport exception handler if available
+try:
+    import apport_python_hook
+except ImportError:
+    pass
+else:
+    apport_python_hook.install()
diff --git a/etc/python3/debian_config b/etc/python3/debian_config
new file mode 100644 (file)
index 0000000..ced73d9
--- /dev/null
@@ -0,0 +1,3 @@
+[DEFAULT]
+# how to byte-compile (comma separated: standard, optimize)
+byte-compile = standard
diff --git a/etc/rc0.d/K01atd b/etc/rc0.d/K01atd
new file mode 120000 (symlink)
index 0000000..8cd7248
--- /dev/null
@@ -0,0 +1 @@
+../init.d/atd
\ No newline at end of file
diff --git a/etc/rc0.d/K01cryptdisks b/etc/rc0.d/K01cryptdisks
new file mode 120000 (symlink)
index 0000000..6202e26
--- /dev/null
@@ -0,0 +1 @@
+../init.d/cryptdisks
\ No newline at end of file
diff --git a/etc/rc0.d/K01cryptdisks-early b/etc/rc0.d/K01cryptdisks-early
new file mode 120000 (symlink)
index 0000000..caf5ed0
--- /dev/null
@@ -0,0 +1 @@
+../init.d/cryptdisks-early
\ No newline at end of file
diff --git a/etc/rc0.d/K01irqbalance b/etc/rc0.d/K01irqbalance
new file mode 120000 (symlink)
index 0000000..10c5342
--- /dev/null
@@ -0,0 +1 @@
+../init.d/irqbalance
\ No newline at end of file
diff --git a/etc/rc0.d/K01iscsid b/etc/rc0.d/K01iscsid
new file mode 120000 (symlink)
index 0000000..a0a6805
--- /dev/null
@@ -0,0 +1 @@
+../init.d/iscsid
\ No newline at end of file
diff --git a/etc/rc0.d/K01lvm2-lvmpolld b/etc/rc0.d/K01lvm2-lvmpolld
new file mode 120000 (symlink)
index 0000000..a84782f
--- /dev/null
@@ -0,0 +1 @@
+../init.d/lvm2-lvmpolld
\ No newline at end of file
diff --git a/etc/rc0.d/K01multipath-tools b/etc/rc0.d/K01multipath-tools
new file mode 120000 (symlink)
index 0000000..04a74c3
--- /dev/null
@@ -0,0 +1 @@
+../init.d/multipath-tools
\ No newline at end of file
diff --git a/etc/rc0.d/K01nginx b/etc/rc0.d/K01nginx
new file mode 120000 (symlink)
index 0000000..16a8734
--- /dev/null
@@ -0,0 +1 @@
+../init.d/nginx
\ No newline at end of file
diff --git a/etc/rc0.d/K01open-iscsi b/etc/rc0.d/K01open-iscsi
new file mode 120000 (symlink)
index 0000000..2d38d66
--- /dev/null
@@ -0,0 +1 @@
+../init.d/open-iscsi
\ No newline at end of file
diff --git a/etc/rc0.d/K01open-vm-tools b/etc/rc0.d/K01open-vm-tools
new file mode 120000 (symlink)
index 0000000..ca02c8d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/open-vm-tools
\ No newline at end of file
diff --git a/etc/rc0.d/K01plymouth b/etc/rc0.d/K01plymouth
new file mode 120000 (symlink)
index 0000000..1bede9b
--- /dev/null
@@ -0,0 +1 @@
+../init.d/plymouth
\ No newline at end of file
diff --git a/etc/rc0.d/K01postgresql b/etc/rc0.d/K01postgresql
new file mode 120000 (symlink)
index 0000000..313aae7
--- /dev/null
@@ -0,0 +1 @@
+../init.d/postgresql
\ No newline at end of file
diff --git a/etc/rc0.d/K01rsyslog b/etc/rc0.d/K01rsyslog
new file mode 120000 (symlink)
index 0000000..7000c51
--- /dev/null
@@ -0,0 +1 @@
+../init.d/rsyslog
\ No newline at end of file
diff --git a/etc/rc0.d/K01smartmontools b/etc/rc0.d/K01smartmontools
new file mode 120000 (symlink)
index 0000000..c4259b5
--- /dev/null
@@ -0,0 +1 @@
+../init.d/smartmontools
\ No newline at end of file
diff --git a/etc/rc0.d/K01udev b/etc/rc0.d/K01udev
new file mode 120000 (symlink)
index 0000000..f5866f9
--- /dev/null
@@ -0,0 +1 @@
+../init.d/udev
\ No newline at end of file
diff --git a/etc/rc0.d/K01unattended-upgrades b/etc/rc0.d/K01unattended-upgrades
new file mode 120000 (symlink)
index 0000000..9dd29fc
--- /dev/null
@@ -0,0 +1 @@
+../init.d/unattended-upgrades
\ No newline at end of file
diff --git a/etc/rc0.d/K01uuidd b/etc/rc0.d/K01uuidd
new file mode 120000 (symlink)
index 0000000..ee54bd4
--- /dev/null
@@ -0,0 +1 @@
+../init.d/uuidd
\ No newline at end of file
diff --git a/etc/rc1.d/K01atd b/etc/rc1.d/K01atd
new file mode 120000 (symlink)
index 0000000..8cd7248
--- /dev/null
@@ -0,0 +1 @@
+../init.d/atd
\ No newline at end of file
diff --git a/etc/rc1.d/K01irqbalance b/etc/rc1.d/K01irqbalance
new file mode 120000 (symlink)
index 0000000..10c5342
--- /dev/null
@@ -0,0 +1 @@
+../init.d/irqbalance
\ No newline at end of file
diff --git a/etc/rc1.d/K01iscsid b/etc/rc1.d/K01iscsid
new file mode 120000 (symlink)
index 0000000..a0a6805
--- /dev/null
@@ -0,0 +1 @@
+../init.d/iscsid
\ No newline at end of file
diff --git a/etc/rc1.d/K01lvm2-lvmpolld b/etc/rc1.d/K01lvm2-lvmpolld
new file mode 120000 (symlink)
index 0000000..a84782f
--- /dev/null
@@ -0,0 +1 @@
+../init.d/lvm2-lvmpolld
\ No newline at end of file
diff --git a/etc/rc1.d/K01multipath-tools b/etc/rc1.d/K01multipath-tools
new file mode 120000 (symlink)
index 0000000..04a74c3
--- /dev/null
@@ -0,0 +1 @@
+../init.d/multipath-tools
\ No newline at end of file
diff --git a/etc/rc1.d/K01nginx b/etc/rc1.d/K01nginx
new file mode 120000 (symlink)
index 0000000..16a8734
--- /dev/null
@@ -0,0 +1 @@
+../init.d/nginx
\ No newline at end of file
diff --git a/etc/rc1.d/K01open-iscsi b/etc/rc1.d/K01open-iscsi
new file mode 120000 (symlink)
index 0000000..2d38d66
--- /dev/null
@@ -0,0 +1 @@
+../init.d/open-iscsi
\ No newline at end of file
diff --git a/etc/rc1.d/K01open-vm-tools b/etc/rc1.d/K01open-vm-tools
new file mode 120000 (symlink)
index 0000000..ca02c8d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/open-vm-tools
\ No newline at end of file
diff --git a/etc/rc1.d/K01postgresql b/etc/rc1.d/K01postgresql
new file mode 120000 (symlink)
index 0000000..313aae7
--- /dev/null
@@ -0,0 +1 @@
+../init.d/postgresql
\ No newline at end of file
diff --git a/etc/rc1.d/K01rsyslog b/etc/rc1.d/K01rsyslog
new file mode 120000 (symlink)
index 0000000..7000c51
--- /dev/null
@@ -0,0 +1 @@
+../init.d/rsyslog
\ No newline at end of file
diff --git a/etc/rc1.d/K01smartmontools b/etc/rc1.d/K01smartmontools
new file mode 120000 (symlink)
index 0000000..c4259b5
--- /dev/null
@@ -0,0 +1 @@
+../init.d/smartmontools
\ No newline at end of file
diff --git a/etc/rc1.d/K01ufw b/etc/rc1.d/K01ufw
new file mode 120000 (symlink)
index 0000000..958d443
--- /dev/null
@@ -0,0 +1 @@
+../init.d/ufw
\ No newline at end of file
diff --git a/etc/rc1.d/K01uuidd b/etc/rc1.d/K01uuidd
new file mode 120000 (symlink)
index 0000000..ee54bd4
--- /dev/null
@@ -0,0 +1 @@
+../init.d/uuidd
\ No newline at end of file
diff --git a/etc/rc2.d/S01apport b/etc/rc2.d/S01apport
new file mode 120000 (symlink)
index 0000000..6706960
--- /dev/null
@@ -0,0 +1 @@
+../init.d/apport
\ No newline at end of file
diff --git a/etc/rc2.d/S01atd b/etc/rc2.d/S01atd
new file mode 120000 (symlink)
index 0000000..8cd7248
--- /dev/null
@@ -0,0 +1 @@
+../init.d/atd
\ No newline at end of file
diff --git a/etc/rc2.d/S01binfmt-support b/etc/rc2.d/S01binfmt-support
new file mode 120000 (symlink)
index 0000000..2894b1d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/binfmt-support
\ No newline at end of file
diff --git a/etc/rc2.d/S01console-setup.sh b/etc/rc2.d/S01console-setup.sh
new file mode 120000 (symlink)
index 0000000..0758e04
--- /dev/null
@@ -0,0 +1 @@
+../init.d/console-setup.sh
\ No newline at end of file
diff --git a/etc/rc2.d/S01cron b/etc/rc2.d/S01cron
new file mode 120000 (symlink)
index 0000000..b7a1f29
--- /dev/null
@@ -0,0 +1 @@
+../init.d/cron
\ No newline at end of file
diff --git a/etc/rc2.d/S01dbus b/etc/rc2.d/S01dbus
new file mode 120000 (symlink)
index 0000000..05fdfc6
--- /dev/null
@@ -0,0 +1 @@
+../init.d/dbus
\ No newline at end of file
diff --git a/etc/rc2.d/S01grub-common b/etc/rc2.d/S01grub-common
new file mode 120000 (symlink)
index 0000000..54e0dca
--- /dev/null
@@ -0,0 +1 @@
+../init.d/grub-common
\ No newline at end of file
diff --git a/etc/rc2.d/S01irqbalance b/etc/rc2.d/S01irqbalance
new file mode 120000 (symlink)
index 0000000..10c5342
--- /dev/null
@@ -0,0 +1 @@
+../init.d/irqbalance
\ No newline at end of file
diff --git a/etc/rc2.d/S01lvm2-lvmpolld b/etc/rc2.d/S01lvm2-lvmpolld
new file mode 120000 (symlink)
index 0000000..a84782f
--- /dev/null
@@ -0,0 +1 @@
+../init.d/lvm2-lvmpolld
\ No newline at end of file
diff --git a/etc/rc2.d/S01multipath-tools b/etc/rc2.d/S01multipath-tools
new file mode 120000 (symlink)
index 0000000..04a74c3
--- /dev/null
@@ -0,0 +1 @@
+../init.d/multipath-tools
\ No newline at end of file
diff --git a/etc/rc2.d/S01nginx b/etc/rc2.d/S01nginx
new file mode 120000 (symlink)
index 0000000..16a8734
--- /dev/null
@@ -0,0 +1 @@
+../init.d/nginx
\ No newline at end of file
diff --git a/etc/rc2.d/S01open-vm-tools b/etc/rc2.d/S01open-vm-tools
new file mode 120000 (symlink)
index 0000000..ca02c8d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/open-vm-tools
\ No newline at end of file
diff --git a/etc/rc2.d/S01plymouth b/etc/rc2.d/S01plymouth
new file mode 120000 (symlink)
index 0000000..1bede9b
--- /dev/null
@@ -0,0 +1 @@
+../init.d/plymouth
\ No newline at end of file
diff --git a/etc/rc2.d/S01postgresql b/etc/rc2.d/S01postgresql
new file mode 120000 (symlink)
index 0000000..313aae7
--- /dev/null
@@ -0,0 +1 @@
+../init.d/postgresql
\ No newline at end of file
diff --git a/etc/rc2.d/S01rsync b/etc/rc2.d/S01rsync
new file mode 120000 (symlink)
index 0000000..3f11f90
--- /dev/null
@@ -0,0 +1 @@
+../init.d/rsync
\ No newline at end of file
diff --git a/etc/rc2.d/S01rsyslog b/etc/rc2.d/S01rsyslog
new file mode 120000 (symlink)
index 0000000..7000c51
--- /dev/null
@@ -0,0 +1 @@
+../init.d/rsyslog
\ No newline at end of file
diff --git a/etc/rc2.d/S01smartmontools b/etc/rc2.d/S01smartmontools
new file mode 120000 (symlink)
index 0000000..c4259b5
--- /dev/null
@@ -0,0 +1 @@
+../init.d/smartmontools
\ No newline at end of file
diff --git a/etc/rc2.d/S01ssh b/etc/rc2.d/S01ssh
new file mode 120000 (symlink)
index 0000000..70e14ad
--- /dev/null
@@ -0,0 +1 @@
+../init.d/ssh
\ No newline at end of file
diff --git a/etc/rc2.d/S01sysstat b/etc/rc2.d/S01sysstat
new file mode 120000 (symlink)
index 0000000..df83d78
--- /dev/null
@@ -0,0 +1 @@
+../init.d/sysstat
\ No newline at end of file
diff --git a/etc/rc2.d/S01unattended-upgrades b/etc/rc2.d/S01unattended-upgrades
new file mode 120000 (symlink)
index 0000000..9dd29fc
--- /dev/null
@@ -0,0 +1 @@
+../init.d/unattended-upgrades
\ No newline at end of file
diff --git a/etc/rc2.d/S01uuidd b/etc/rc2.d/S01uuidd
new file mode 120000 (symlink)
index 0000000..ee54bd4
--- /dev/null
@@ -0,0 +1 @@
+../init.d/uuidd
\ No newline at end of file
diff --git a/etc/rc3.d/S01apport b/etc/rc3.d/S01apport
new file mode 120000 (symlink)
index 0000000..6706960
--- /dev/null
@@ -0,0 +1 @@
+../init.d/apport
\ No newline at end of file
diff --git a/etc/rc3.d/S01atd b/etc/rc3.d/S01atd
new file mode 120000 (symlink)
index 0000000..8cd7248
--- /dev/null
@@ -0,0 +1 @@
+../init.d/atd
\ No newline at end of file
diff --git a/etc/rc3.d/S01binfmt-support b/etc/rc3.d/S01binfmt-support
new file mode 120000 (symlink)
index 0000000..2894b1d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/binfmt-support
\ No newline at end of file
diff --git a/etc/rc3.d/S01console-setup.sh b/etc/rc3.d/S01console-setup.sh
new file mode 120000 (symlink)
index 0000000..0758e04
--- /dev/null
@@ -0,0 +1 @@
+../init.d/console-setup.sh
\ No newline at end of file
diff --git a/etc/rc3.d/S01cron b/etc/rc3.d/S01cron
new file mode 120000 (symlink)
index 0000000..b7a1f29
--- /dev/null
@@ -0,0 +1 @@
+../init.d/cron
\ No newline at end of file
diff --git a/etc/rc3.d/S01dbus b/etc/rc3.d/S01dbus
new file mode 120000 (symlink)
index 0000000..05fdfc6
--- /dev/null
@@ -0,0 +1 @@
+../init.d/dbus
\ No newline at end of file
diff --git a/etc/rc3.d/S01grub-common b/etc/rc3.d/S01grub-common
new file mode 120000 (symlink)
index 0000000..54e0dca
--- /dev/null
@@ -0,0 +1 @@
+../init.d/grub-common
\ No newline at end of file
diff --git a/etc/rc3.d/S01irqbalance b/etc/rc3.d/S01irqbalance
new file mode 120000 (symlink)
index 0000000..10c5342
--- /dev/null
@@ -0,0 +1 @@
+../init.d/irqbalance
\ No newline at end of file
diff --git a/etc/rc3.d/S01lvm2-lvmpolld b/etc/rc3.d/S01lvm2-lvmpolld
new file mode 120000 (symlink)
index 0000000..a84782f
--- /dev/null
@@ -0,0 +1 @@
+../init.d/lvm2-lvmpolld
\ No newline at end of file
diff --git a/etc/rc3.d/S01multipath-tools b/etc/rc3.d/S01multipath-tools
new file mode 120000 (symlink)
index 0000000..04a74c3
--- /dev/null
@@ -0,0 +1 @@
+../init.d/multipath-tools
\ No newline at end of file
diff --git a/etc/rc3.d/S01nginx b/etc/rc3.d/S01nginx
new file mode 120000 (symlink)
index 0000000..16a8734
--- /dev/null
@@ -0,0 +1 @@
+../init.d/nginx
\ No newline at end of file
diff --git a/etc/rc3.d/S01open-vm-tools b/etc/rc3.d/S01open-vm-tools
new file mode 120000 (symlink)
index 0000000..ca02c8d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/open-vm-tools
\ No newline at end of file
diff --git a/etc/rc3.d/S01plymouth b/etc/rc3.d/S01plymouth
new file mode 120000 (symlink)
index 0000000..1bede9b
--- /dev/null
@@ -0,0 +1 @@
+../init.d/plymouth
\ No newline at end of file
diff --git a/etc/rc3.d/S01postgresql b/etc/rc3.d/S01postgresql
new file mode 120000 (symlink)
index 0000000..313aae7
--- /dev/null
@@ -0,0 +1 @@
+../init.d/postgresql
\ No newline at end of file
diff --git a/etc/rc3.d/S01rsync b/etc/rc3.d/S01rsync
new file mode 120000 (symlink)
index 0000000..3f11f90
--- /dev/null
@@ -0,0 +1 @@
+../init.d/rsync
\ No newline at end of file
diff --git a/etc/rc3.d/S01rsyslog b/etc/rc3.d/S01rsyslog
new file mode 120000 (symlink)
index 0000000..7000c51
--- /dev/null
@@ -0,0 +1 @@
+../init.d/rsyslog
\ No newline at end of file
diff --git a/etc/rc3.d/S01smartmontools b/etc/rc3.d/S01smartmontools
new file mode 120000 (symlink)
index 0000000..c4259b5
--- /dev/null
@@ -0,0 +1 @@
+../init.d/smartmontools
\ No newline at end of file
diff --git a/etc/rc3.d/S01ssh b/etc/rc3.d/S01ssh
new file mode 120000 (symlink)
index 0000000..70e14ad
--- /dev/null
@@ -0,0 +1 @@
+../init.d/ssh
\ No newline at end of file
diff --git a/etc/rc3.d/S01sysstat b/etc/rc3.d/S01sysstat
new file mode 120000 (symlink)
index 0000000..df83d78
--- /dev/null
@@ -0,0 +1 @@
+../init.d/sysstat
\ No newline at end of file
diff --git a/etc/rc3.d/S01unattended-upgrades b/etc/rc3.d/S01unattended-upgrades
new file mode 120000 (symlink)
index 0000000..9dd29fc
--- /dev/null
@@ -0,0 +1 @@
+../init.d/unattended-upgrades
\ No newline at end of file
diff --git a/etc/rc3.d/S01uuidd b/etc/rc3.d/S01uuidd
new file mode 120000 (symlink)
index 0000000..ee54bd4
--- /dev/null
@@ -0,0 +1 @@
+../init.d/uuidd
\ No newline at end of file
diff --git a/etc/rc4.d/S01apport b/etc/rc4.d/S01apport
new file mode 120000 (symlink)
index 0000000..6706960
--- /dev/null
@@ -0,0 +1 @@
+../init.d/apport
\ No newline at end of file
diff --git a/etc/rc4.d/S01atd b/etc/rc4.d/S01atd
new file mode 120000 (symlink)
index 0000000..8cd7248
--- /dev/null
@@ -0,0 +1 @@
+../init.d/atd
\ No newline at end of file
diff --git a/etc/rc4.d/S01binfmt-support b/etc/rc4.d/S01binfmt-support
new file mode 120000 (symlink)
index 0000000..2894b1d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/binfmt-support
\ No newline at end of file
diff --git a/etc/rc4.d/S01console-setup.sh b/etc/rc4.d/S01console-setup.sh
new file mode 120000 (symlink)
index 0000000..0758e04
--- /dev/null
@@ -0,0 +1 @@
+../init.d/console-setup.sh
\ No newline at end of file
diff --git a/etc/rc4.d/S01cron b/etc/rc4.d/S01cron
new file mode 120000 (symlink)
index 0000000..b7a1f29
--- /dev/null
@@ -0,0 +1 @@
+../init.d/cron
\ No newline at end of file
diff --git a/etc/rc4.d/S01dbus b/etc/rc4.d/S01dbus
new file mode 120000 (symlink)
index 0000000..05fdfc6
--- /dev/null
@@ -0,0 +1 @@
+../init.d/dbus
\ No newline at end of file
diff --git a/etc/rc4.d/S01grub-common b/etc/rc4.d/S01grub-common
new file mode 120000 (symlink)
index 0000000..54e0dca
--- /dev/null
@@ -0,0 +1 @@
+../init.d/grub-common
\ No newline at end of file
diff --git a/etc/rc4.d/S01irqbalance b/etc/rc4.d/S01irqbalance
new file mode 120000 (symlink)
index 0000000..10c5342
--- /dev/null
@@ -0,0 +1 @@
+../init.d/irqbalance
\ No newline at end of file
diff --git a/etc/rc4.d/S01lvm2-lvmpolld b/etc/rc4.d/S01lvm2-lvmpolld
new file mode 120000 (symlink)
index 0000000..a84782f
--- /dev/null
@@ -0,0 +1 @@
+../init.d/lvm2-lvmpolld
\ No newline at end of file
diff --git a/etc/rc4.d/S01multipath-tools b/etc/rc4.d/S01multipath-tools
new file mode 120000 (symlink)
index 0000000..04a74c3
--- /dev/null
@@ -0,0 +1 @@
+../init.d/multipath-tools
\ No newline at end of file
diff --git a/etc/rc4.d/S01nginx b/etc/rc4.d/S01nginx
new file mode 120000 (symlink)
index 0000000..16a8734
--- /dev/null
@@ -0,0 +1 @@
+../init.d/nginx
\ No newline at end of file
diff --git a/etc/rc4.d/S01open-vm-tools b/etc/rc4.d/S01open-vm-tools
new file mode 120000 (symlink)
index 0000000..ca02c8d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/open-vm-tools
\ No newline at end of file
diff --git a/etc/rc4.d/S01plymouth b/etc/rc4.d/S01plymouth
new file mode 120000 (symlink)
index 0000000..1bede9b
--- /dev/null
@@ -0,0 +1 @@
+../init.d/plymouth
\ No newline at end of file
diff --git a/etc/rc4.d/S01postgresql b/etc/rc4.d/S01postgresql
new file mode 120000 (symlink)
index 0000000..313aae7
--- /dev/null
@@ -0,0 +1 @@
+../init.d/postgresql
\ No newline at end of file
diff --git a/etc/rc4.d/S01rsync b/etc/rc4.d/S01rsync
new file mode 120000 (symlink)
index 0000000..3f11f90
--- /dev/null
@@ -0,0 +1 @@
+../init.d/rsync
\ No newline at end of file
diff --git a/etc/rc4.d/S01rsyslog b/etc/rc4.d/S01rsyslog
new file mode 120000 (symlink)
index 0000000..7000c51
--- /dev/null
@@ -0,0 +1 @@
+../init.d/rsyslog
\ No newline at end of file
diff --git a/etc/rc4.d/S01smartmontools b/etc/rc4.d/S01smartmontools
new file mode 120000 (symlink)
index 0000000..c4259b5
--- /dev/null
@@ -0,0 +1 @@
+../init.d/smartmontools
\ No newline at end of file
diff --git a/etc/rc4.d/S01ssh b/etc/rc4.d/S01ssh
new file mode 120000 (symlink)
index 0000000..70e14ad
--- /dev/null
@@ -0,0 +1 @@
+../init.d/ssh
\ No newline at end of file
diff --git a/etc/rc4.d/S01sysstat b/etc/rc4.d/S01sysstat
new file mode 120000 (symlink)
index 0000000..df83d78
--- /dev/null
@@ -0,0 +1 @@
+../init.d/sysstat
\ No newline at end of file
diff --git a/etc/rc4.d/S01unattended-upgrades b/etc/rc4.d/S01unattended-upgrades
new file mode 120000 (symlink)
index 0000000..9dd29fc
--- /dev/null
@@ -0,0 +1 @@
+../init.d/unattended-upgrades
\ No newline at end of file
diff --git a/etc/rc4.d/S01uuidd b/etc/rc4.d/S01uuidd
new file mode 120000 (symlink)
index 0000000..ee54bd4
--- /dev/null
@@ -0,0 +1 @@
+../init.d/uuidd
\ No newline at end of file
diff --git a/etc/rc5.d/S01apport b/etc/rc5.d/S01apport
new file mode 120000 (symlink)
index 0000000..6706960
--- /dev/null
@@ -0,0 +1 @@
+../init.d/apport
\ No newline at end of file
diff --git a/etc/rc5.d/S01atd b/etc/rc5.d/S01atd
new file mode 120000 (symlink)
index 0000000..8cd7248
--- /dev/null
@@ -0,0 +1 @@
+../init.d/atd
\ No newline at end of file
diff --git a/etc/rc5.d/S01binfmt-support b/etc/rc5.d/S01binfmt-support
new file mode 120000 (symlink)
index 0000000..2894b1d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/binfmt-support
\ No newline at end of file
diff --git a/etc/rc5.d/S01console-setup.sh b/etc/rc5.d/S01console-setup.sh
new file mode 120000 (symlink)
index 0000000..0758e04
--- /dev/null
@@ -0,0 +1 @@
+../init.d/console-setup.sh
\ No newline at end of file
diff --git a/etc/rc5.d/S01cron b/etc/rc5.d/S01cron
new file mode 120000 (symlink)
index 0000000..b7a1f29
--- /dev/null
@@ -0,0 +1 @@
+../init.d/cron
\ No newline at end of file
diff --git a/etc/rc5.d/S01dbus b/etc/rc5.d/S01dbus
new file mode 120000 (symlink)
index 0000000..05fdfc6
--- /dev/null
@@ -0,0 +1 @@
+../init.d/dbus
\ No newline at end of file
diff --git a/etc/rc5.d/S01grub-common b/etc/rc5.d/S01grub-common
new file mode 120000 (symlink)
index 0000000..54e0dca
--- /dev/null
@@ -0,0 +1 @@
+../init.d/grub-common
\ No newline at end of file
diff --git a/etc/rc5.d/S01irqbalance b/etc/rc5.d/S01irqbalance
new file mode 120000 (symlink)
index 0000000..10c5342
--- /dev/null
@@ -0,0 +1 @@
+../init.d/irqbalance
\ No newline at end of file
diff --git a/etc/rc5.d/S01lvm2-lvmpolld b/etc/rc5.d/S01lvm2-lvmpolld
new file mode 120000 (symlink)
index 0000000..a84782f
--- /dev/null
@@ -0,0 +1 @@
+../init.d/lvm2-lvmpolld
\ No newline at end of file
diff --git a/etc/rc5.d/S01multipath-tools b/etc/rc5.d/S01multipath-tools
new file mode 120000 (symlink)
index 0000000..04a74c3
--- /dev/null
@@ -0,0 +1 @@
+../init.d/multipath-tools
\ No newline at end of file
diff --git a/etc/rc5.d/S01nginx b/etc/rc5.d/S01nginx
new file mode 120000 (symlink)
index 0000000..16a8734
--- /dev/null
@@ -0,0 +1 @@
+../init.d/nginx
\ No newline at end of file
diff --git a/etc/rc5.d/S01open-vm-tools b/etc/rc5.d/S01open-vm-tools
new file mode 120000 (symlink)
index 0000000..ca02c8d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/open-vm-tools
\ No newline at end of file
diff --git a/etc/rc5.d/S01plymouth b/etc/rc5.d/S01plymouth
new file mode 120000 (symlink)
index 0000000..1bede9b
--- /dev/null
@@ -0,0 +1 @@
+../init.d/plymouth
\ No newline at end of file
diff --git a/etc/rc5.d/S01postgresql b/etc/rc5.d/S01postgresql
new file mode 120000 (symlink)
index 0000000..313aae7
--- /dev/null
@@ -0,0 +1 @@
+../init.d/postgresql
\ No newline at end of file
diff --git a/etc/rc5.d/S01rsync b/etc/rc5.d/S01rsync
new file mode 120000 (symlink)
index 0000000..3f11f90
--- /dev/null
@@ -0,0 +1 @@
+../init.d/rsync
\ No newline at end of file
diff --git a/etc/rc5.d/S01rsyslog b/etc/rc5.d/S01rsyslog
new file mode 120000 (symlink)
index 0000000..7000c51
--- /dev/null
@@ -0,0 +1 @@
+../init.d/rsyslog
\ No newline at end of file
diff --git a/etc/rc5.d/S01smartmontools b/etc/rc5.d/S01smartmontools
new file mode 120000 (symlink)
index 0000000..c4259b5
--- /dev/null
@@ -0,0 +1 @@
+../init.d/smartmontools
\ No newline at end of file
diff --git a/etc/rc5.d/S01ssh b/etc/rc5.d/S01ssh
new file mode 120000 (symlink)
index 0000000..70e14ad
--- /dev/null
@@ -0,0 +1 @@
+../init.d/ssh
\ No newline at end of file
diff --git a/etc/rc5.d/S01sysstat b/etc/rc5.d/S01sysstat
new file mode 120000 (symlink)
index 0000000..df83d78
--- /dev/null
@@ -0,0 +1 @@
+../init.d/sysstat
\ No newline at end of file
diff --git a/etc/rc5.d/S01unattended-upgrades b/etc/rc5.d/S01unattended-upgrades
new file mode 120000 (symlink)
index 0000000..9dd29fc
--- /dev/null
@@ -0,0 +1 @@
+../init.d/unattended-upgrades
\ No newline at end of file
diff --git a/etc/rc5.d/S01uuidd b/etc/rc5.d/S01uuidd
new file mode 120000 (symlink)
index 0000000..ee54bd4
--- /dev/null
@@ -0,0 +1 @@
+../init.d/uuidd
\ No newline at end of file
diff --git a/etc/rc6.d/K01atd b/etc/rc6.d/K01atd
new file mode 120000 (symlink)
index 0000000..8cd7248
--- /dev/null
@@ -0,0 +1 @@
+../init.d/atd
\ No newline at end of file
diff --git a/etc/rc6.d/K01cryptdisks b/etc/rc6.d/K01cryptdisks
new file mode 120000 (symlink)
index 0000000..6202e26
--- /dev/null
@@ -0,0 +1 @@
+../init.d/cryptdisks
\ No newline at end of file
diff --git a/etc/rc6.d/K01cryptdisks-early b/etc/rc6.d/K01cryptdisks-early
new file mode 120000 (symlink)
index 0000000..caf5ed0
--- /dev/null
@@ -0,0 +1 @@
+../init.d/cryptdisks-early
\ No newline at end of file
diff --git a/etc/rc6.d/K01irqbalance b/etc/rc6.d/K01irqbalance
new file mode 120000 (symlink)
index 0000000..10c5342
--- /dev/null
@@ -0,0 +1 @@
+../init.d/irqbalance
\ No newline at end of file
diff --git a/etc/rc6.d/K01iscsid b/etc/rc6.d/K01iscsid
new file mode 120000 (symlink)
index 0000000..a0a6805
--- /dev/null
@@ -0,0 +1 @@
+../init.d/iscsid
\ No newline at end of file
diff --git a/etc/rc6.d/K01lvm2-lvmpolld b/etc/rc6.d/K01lvm2-lvmpolld
new file mode 120000 (symlink)
index 0000000..a84782f
--- /dev/null
@@ -0,0 +1 @@
+../init.d/lvm2-lvmpolld
\ No newline at end of file
diff --git a/etc/rc6.d/K01multipath-tools b/etc/rc6.d/K01multipath-tools
new file mode 120000 (symlink)
index 0000000..04a74c3
--- /dev/null
@@ -0,0 +1 @@
+../init.d/multipath-tools
\ No newline at end of file
diff --git a/etc/rc6.d/K01nginx b/etc/rc6.d/K01nginx
new file mode 120000 (symlink)
index 0000000..16a8734
--- /dev/null
@@ -0,0 +1 @@
+../init.d/nginx
\ No newline at end of file
diff --git a/etc/rc6.d/K01open-iscsi b/etc/rc6.d/K01open-iscsi
new file mode 120000 (symlink)
index 0000000..2d38d66
--- /dev/null
@@ -0,0 +1 @@
+../init.d/open-iscsi
\ No newline at end of file
diff --git a/etc/rc6.d/K01open-vm-tools b/etc/rc6.d/K01open-vm-tools
new file mode 120000 (symlink)
index 0000000..ca02c8d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/open-vm-tools
\ No newline at end of file
diff --git a/etc/rc6.d/K01plymouth b/etc/rc6.d/K01plymouth
new file mode 120000 (symlink)
index 0000000..1bede9b
--- /dev/null
@@ -0,0 +1 @@
+../init.d/plymouth
\ No newline at end of file
diff --git a/etc/rc6.d/K01postgresql b/etc/rc6.d/K01postgresql
new file mode 120000 (symlink)
index 0000000..313aae7
--- /dev/null
@@ -0,0 +1 @@
+../init.d/postgresql
\ No newline at end of file
diff --git a/etc/rc6.d/K01rsyslog b/etc/rc6.d/K01rsyslog
new file mode 120000 (symlink)
index 0000000..7000c51
--- /dev/null
@@ -0,0 +1 @@
+../init.d/rsyslog
\ No newline at end of file
diff --git a/etc/rc6.d/K01smartmontools b/etc/rc6.d/K01smartmontools
new file mode 120000 (symlink)
index 0000000..c4259b5
--- /dev/null
@@ -0,0 +1 @@
+../init.d/smartmontools
\ No newline at end of file
diff --git a/etc/rc6.d/K01udev b/etc/rc6.d/K01udev
new file mode 120000 (symlink)
index 0000000..f5866f9
--- /dev/null
@@ -0,0 +1 @@
+../init.d/udev
\ No newline at end of file
diff --git a/etc/rc6.d/K01unattended-upgrades b/etc/rc6.d/K01unattended-upgrades
new file mode 120000 (symlink)
index 0000000..9dd29fc
--- /dev/null
@@ -0,0 +1 @@
+../init.d/unattended-upgrades
\ No newline at end of file
diff --git a/etc/rc6.d/K01uuidd b/etc/rc6.d/K01uuidd
new file mode 120000 (symlink)
index 0000000..ee54bd4
--- /dev/null
@@ -0,0 +1 @@
+../init.d/uuidd
\ No newline at end of file
diff --git a/etc/rcS.d/S01apparmor b/etc/rcS.d/S01apparmor
new file mode 120000 (symlink)
index 0000000..3c32f10
--- /dev/null
@@ -0,0 +1 @@
+../init.d/apparmor
\ No newline at end of file
diff --git a/etc/rcS.d/S01cryptdisks b/etc/rcS.d/S01cryptdisks
new file mode 120000 (symlink)
index 0000000..6202e26
--- /dev/null
@@ -0,0 +1 @@
+../init.d/cryptdisks
\ No newline at end of file
diff --git a/etc/rcS.d/S01cryptdisks-early b/etc/rcS.d/S01cryptdisks-early
new file mode 120000 (symlink)
index 0000000..caf5ed0
--- /dev/null
@@ -0,0 +1 @@
+../init.d/cryptdisks-early
\ No newline at end of file
diff --git a/etc/rcS.d/S01iscsid b/etc/rcS.d/S01iscsid
new file mode 120000 (symlink)
index 0000000..a0a6805
--- /dev/null
@@ -0,0 +1 @@
+../init.d/iscsid
\ No newline at end of file
diff --git a/etc/rcS.d/S01keyboard-setup.sh b/etc/rcS.d/S01keyboard-setup.sh
new file mode 120000 (symlink)
index 0000000..ee50a88
--- /dev/null
@@ -0,0 +1 @@
+../init.d/keyboard-setup.sh
\ No newline at end of file
diff --git a/etc/rcS.d/S01kmod b/etc/rcS.d/S01kmod
new file mode 120000 (symlink)
index 0000000..6085cfe
--- /dev/null
@@ -0,0 +1 @@
+../init.d/kmod
\ No newline at end of file
diff --git a/etc/rcS.d/S01lvm2 b/etc/rcS.d/S01lvm2
new file mode 120000 (symlink)
index 0000000..155c707
--- /dev/null
@@ -0,0 +1 @@
+../init.d/lvm2
\ No newline at end of file
diff --git a/etc/rcS.d/S01open-iscsi b/etc/rcS.d/S01open-iscsi
new file mode 120000 (symlink)
index 0000000..2d38d66
--- /dev/null
@@ -0,0 +1 @@
+../init.d/open-iscsi
\ No newline at end of file
diff --git a/etc/rcS.d/S01plymouth-log b/etc/rcS.d/S01plymouth-log
new file mode 120000 (symlink)
index 0000000..afc914d
--- /dev/null
@@ -0,0 +1 @@
+../init.d/plymouth-log
\ No newline at end of file
diff --git a/etc/rcS.d/S01procps b/etc/rcS.d/S01procps
new file mode 120000 (symlink)
index 0000000..435622f
--- /dev/null
@@ -0,0 +1 @@
+../init.d/procps
\ No newline at end of file
diff --git a/etc/rcS.d/S01screen-cleanup b/etc/rcS.d/S01screen-cleanup
new file mode 120000 (symlink)
index 0000000..205268c
--- /dev/null
@@ -0,0 +1 @@
+../init.d/screen-cleanup
\ No newline at end of file
diff --git a/etc/rcS.d/S01udev b/etc/rcS.d/S01udev
new file mode 120000 (symlink)
index 0000000..f5866f9
--- /dev/null
@@ -0,0 +1 @@
+../init.d/udev
\ No newline at end of file
diff --git a/etc/rcS.d/S01ufw b/etc/rcS.d/S01ufw
new file mode 120000 (symlink)
index 0000000..958d443
--- /dev/null
@@ -0,0 +1 @@
+../init.d/ufw
\ No newline at end of file
diff --git a/etc/resolv.conf b/etc/resolv.conf
new file mode 120000 (symlink)
index 0000000..697ba64
--- /dev/null
@@ -0,0 +1 @@
+../run/systemd/resolve/stub-resolv.conf
\ No newline at end of file
diff --git a/etc/rmt b/etc/rmt
new file mode 120000 (symlink)
index 0000000..34d8994
--- /dev/null
+++ b/etc/rmt
@@ -0,0 +1 @@
+/usr/sbin/rmt
\ No newline at end of file
diff --git a/etc/rpc b/etc/rpc
new file mode 100644 (file)
index 0000000..1b30625
--- /dev/null
+++ b/etc/rpc
@@ -0,0 +1,40 @@
+# This file contains user readable names that can be used in place of rpc
+# program numbers.
+
+portmapper     100000  portmap sunrpc
+rstatd         100001  rstat rstat_svc rup perfmeter
+rusersd                100002  rusers
+nfs            100003  nfsprog
+ypserv         100004  ypprog
+mountd         100005  mount showmount
+ypbind         100007
+walld          100008  rwall shutdown
+yppasswdd      100009  yppasswd
+etherstatd     100010  etherstat
+rquotad                100011  rquotaprog quota rquota
+sprayd         100012  spray
+3270_mapper    100013
+rje_mapper     100014
+selection_svc  100015  selnsvc
+database_svc   100016
+rexd           100017  rex
+alis           100018
+sched          100019
+llockmgr       100020
+nlockmgr       100021
+x25.inr                100022
+statmon                100023
+status         100024
+bootparam      100026
+ypupdated      100028  ypupdate
+keyserv                100029  keyserver
+tfsd           100037 
+nsed           100038
+nsemntd                100039
+ypxfrd         100069
+pcnfsd         150001
+amd            300019  amq
+sgi_fam                391002
+ugidd          545580417
+fypxfrd                600100069       freebsd-ypxfrd
+bwnfsd          788585389
diff --git a/etc/rsyslog.conf b/etc/rsyslog.conf
new file mode 100644 (file)
index 0000000..e2cca72
--- /dev/null
@@ -0,0 +1,59 @@
+# /etc/rsyslog.conf configuration file for rsyslog
+#
+# For more information install rsyslog-doc and see
+# /usr/share/doc/rsyslog-doc/html/configuration/index.html
+#
+# Default logging rules can be found in /etc/rsyslog.d/50-default.conf
+
+
+#################
+#### MODULES ####
+#################
+
+module(load="imuxsock") # provides support for local system logging
+#module(load="immark")  # provides --MARK-- message capability
+
+# provides UDP syslog reception
+#module(load="imudp")
+#input(type="imudp" port="514")
+
+# provides TCP syslog reception
+#module(load="imtcp")
+#input(type="imtcp" port="514")
+
+# provides kernel logging support and enable non-kernel klog messages
+module(load="imklog" permitnonkernelfacility="on")
+
+###########################
+#### GLOBAL DIRECTIVES ####
+###########################
+
+#
+# Use traditional timestamp format.
+# To enable high precision timestamps, comment out the following line.
+#
+$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
+
+# Filter duplicated messages
+$RepeatedMsgReduction on
+
+#
+# Set the default permissions for all log files.
+#
+$FileOwner syslog
+$FileGroup adm
+$FileCreateMode 0640
+$DirCreateMode 0755
+$Umask 0022
+$PrivDropToUser syslog
+$PrivDropToGroup syslog
+
+#
+# Where to place spool and state files
+#
+$WorkDirectory /var/spool/rsyslog
+
+#
+# Include all config files in /etc/rsyslog.d/
+#
+$IncludeConfig /etc/rsyslog.d/*.conf
diff --git a/etc/rsyslog.d/20-ufw.conf b/etc/rsyslog.d/20-ufw.conf
new file mode 100644 (file)
index 0000000..4b8e8bf
--- /dev/null
@@ -0,0 +1,7 @@
+# Log kernel generated UFW log messages to file
+:msg,contains,"[UFW " /var/log/ufw.log
+
+# Uncomment the following to stop logging anything that matches the last rule.
+# Doing this will stop logging kernel generated UFW log messages to the file
+# normally containing kern.* messages (eg, /var/log/kern.log)
+#& stop
diff --git a/etc/rsyslog.d/21-cloudinit.conf b/etc/rsyslog.d/21-cloudinit.conf
new file mode 100644 (file)
index 0000000..150d800
--- /dev/null
@@ -0,0 +1,6 @@
+# Log cloudinit generated log messages to file
+:syslogtag, isequal, "[CLOUDINIT]" /var/log/cloud-init.log
+
+# comment out the following line to allow CLOUDINIT messages through.
+# Doing so means you'll also get CLOUDINIT messages in /var/log/syslog
+& stop
diff --git a/etc/rsyslog.d/50-default.conf b/etc/rsyslog.d/50-default.conf
new file mode 100644 (file)
index 0000000..56217be
--- /dev/null
@@ -0,0 +1,48 @@
+#  Default rules for rsyslog.
+#
+#                      For more information see rsyslog.conf(5) and /etc/rsyslog.conf
+
+#
+# First some standard log files.  Log by facility.
+#
+auth,authpriv.*                        /var/log/auth.log
+*.*;auth,authpriv.none         -/var/log/syslog
+#cron.*                                /var/log/cron.log
+#daemon.*                      -/var/log/daemon.log
+kern.*                         -/var/log/kern.log
+#lpr.*                         -/var/log/lpr.log
+mail.*                         -/var/log/mail.log
+#user.*                                -/var/log/user.log
+
+#
+# Logging for the mail system.  Split it up so that
+# it is easy to write scripts to parse these files.
+#
+#mail.info                     -/var/log/mail.info
+#mail.warn                     -/var/log/mail.warn
+mail.err                       /var/log/mail.err
+
+#
+# Some "catch-all" log files.
+#
+#*.=debug;\
+#      auth,authpriv.none;\
+#      news.none;mail.none     -/var/log/debug
+#*.=info;*.=notice;*.=warn;\
+#      auth,authpriv.none;\
+#      cron,daemon.none;\
+#      mail,news.none          -/var/log/messages
+
+#
+# Emergencies are sent to everybody logged in.
+#
+*.emerg                                :omusrmsg:*
+
+#
+# I like to have messages displayed on the console, but only on a virtual
+# console I usually leave idle.
+#
+#daemon,mail.*;\
+#      news.=crit;news.=err;news.=notice;\
+#      *.=debug;*.=info;\
+#      *.=notice;*.=warn       /dev/tty8
diff --git a/etc/screenrc b/etc/screenrc
new file mode 100644 (file)
index 0000000..032db64
--- /dev/null
@@ -0,0 +1,108 @@
+# $Id: screenrc,v 1.15 2003/10/08 11:39:03 zal Exp $
+#
+# /etc/screenrc
+#
+#   This is the system wide screenrc.
+#
+#   You can use this file to change the default behavior of screen system wide
+#   or copy it to ~/.screenrc and use it as a starting point for your own
+#   settings.
+#
+#   Commands in this file are used to set options, bind screen functions to
+#   keys, redefine terminal capabilities, and to automatically establish one or
+#   more windows at the beginning of your screen session.
+#
+#   This is not a comprehensive list of options, look at the screen manual for
+#   details on everything that you can put in this file.
+#
+
+# ------------------------------------------------------------------------------
+# SCREEN SETTINGS
+# ------------------------------------------------------------------------------
+
+#startup_message off
+#nethack on
+
+#defflow on # will force screen to process ^S/^Q
+deflogin on
+#autodetach off
+
+# turn visual bell on
+vbell on
+vbell_msg "   Wuff  ----  Wuff!!  "
+
+# define a bigger scrollback, default is 100 lines
+defscrollback 1024
+
+# ------------------------------------------------------------------------------
+# SCREEN KEYBINDINGS
+# ------------------------------------------------------------------------------
+
+# Remove some stupid / dangerous key bindings
+bind ^k
+#bind L
+bind ^\
+# Make them better
+bind \\ quit
+bind K kill
+bind I login on
+bind O login off
+bind } history
+
+# An example of a "screen scraper" which will launch urlview on the current
+# screen window
+#
+#bind ^B eval "hardcopy_append off" "hardcopy -h $HOME/.screen-urlview" "screen urlview $HOME/.screen-urlview"
+
+# ------------------------------------------------------------------------------
+# TERMINAL SETTINGS
+# ------------------------------------------------------------------------------
+
+# The vt100 description does not mention "dl". *sigh*
+termcapinfo vt100 dl=5\E[M
+
+# turn sending of screen messages to hardstatus off
+hardstatus off
+# Set the hardstatus prop on gui terms to set the titlebar/icon title
+termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007
+# use this for the hard status string
+hardstatus string "%h%? users: %u%?"
+
+# An alternative hardstatus to display a bar at the bottom listing the
+# windownames and highlighting the current windowname in blue. (This is only
+# enabled if there is no hardstatus setting for your terminal)
+#
+#hardstatus lastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
+
+# set these terminals up to be 'optimal' instead of vt100
+termcapinfo xterm*|linux*|rxvt*|Eterm* OP
+
+# Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E>
+# (This fixes the "Aborted because of window size change" konsole symptoms found
+#  in bug #134198)
+termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
+
+# To get screen to add lines to xterm's scrollback buffer, uncomment the
+# following termcapinfo line which tells xterm to use the normal screen buffer
+# (which has scrollback), not the alternate screen buffer.
+#
+#termcapinfo xterm|xterms|xs|rxvt ti@:te@
+
+# Enable non-blocking mode to better cope with flaky ssh connections.
+defnonblock 5
+
+# ------------------------------------------------------------------------------
+# STARTUP SCREENS
+# ------------------------------------------------------------------------------
+
+# Example of automatically running some programs in windows on screen startup.
+#
+#   The following will open top in the first window, an ssh session to monkey
+#   in the next window, and then open mutt and tail in windows 8 and 9
+#   respectively.
+#
+# screen top
+# screen -t monkey ssh monkey
+# screen -t mail 8 mutt
+# screen -t daemon 9 tail -f /var/log/daemon.log
+
diff --git a/etc/security/access.conf b/etc/security/access.conf
new file mode 100644 (file)
index 0000000..47b6b84
--- /dev/null
@@ -0,0 +1,122 @@
+# Login access control table.
+#
+# Comment line must start with "#", no space at front.
+# Order of lines is important.
+#
+# When someone logs in, the table is scanned for the first entry that
+# matches the (user, host) combination, or, in case of non-networked
+# logins, the first entry that matches the (user, tty) combination.  The
+# permissions field of that table entry determines whether the login will
+# be accepted or refused.
+#
+# Format of the login access control table is three fields separated by a
+# ":" character:
+#
+# [Note, if you supply a 'fieldsep=|' argument to the pam_access.so
+# module, you can change the field separation character to be
+# '|'. This is useful for configurations where you are trying to use
+# pam_access with X applications that provide PAM_TTY values that are
+# the display variable like "host:0".]
+#
+#      permission:users:origins
+#
+# The first field should be a "+" (access granted) or "-" (access denied)
+# character.
+#
+# The second field should be a list of one or more login names, group
+# names, or ALL (always matches). A pattern of the form user@host is
+# matched when the login name matches the "user" part, and when the
+# "host" part matches the local machine name.
+#
+# The third field should be a list of one or more tty names (for
+# non-networked logins), host names, domain names (begin with "."), host
+# addresses, internet network numbers (end with "."), ALL (always
+# matches), NONE (matches no tty on non-networked logins) or
+# LOCAL (matches any string that does not contain a "." character).
+#
+# You can use @netgroupname in host or user patterns; this even works
+# for @usergroup@@hostgroup patterns.
+#
+# The EXCEPT operator makes it possible to write very compact rules.
+#
+# The group file is searched only when a name does not match that of the
+# logged-in user. Both the user's primary group is matched, as well as
+# groups in which users are explicitly listed.
+# To avoid problems with accounts, which have the same name as a group,
+# you can use brackets around group names '(group)' to differentiate.
+# In this case, you should also set the "nodefgroup" option.
+#
+# TTY NAMES: Must be in the form returned by ttyname(3) less the initial
+# "/dev" (e.g. tty1 or vc/1)
+#
+##############################################################################
+#
+# Disallow non-root logins on tty1
+#
+#-:ALL EXCEPT root:tty1
+#
+# Disallow console logins to all but a few accounts.
+#
+#-:ALL EXCEPT wheel shutdown sync:LOCAL
+#
+# Same, but make sure that really the group wheel and not the user
+# wheel is used (use nodefgroup argument, too):
+#
+#-:ALL EXCEPT (wheel) shutdown sync:LOCAL
+#
+# Disallow non-local logins to privileged accounts (group wheel).
+#
+#-:wheel:ALL EXCEPT LOCAL .win.tue.nl
+#
+# Some accounts are not allowed to login from anywhere:
+#
+#-:wsbscaro wsbsecr wsbspac wsbsym wscosor wstaiwde:ALL
+#
+# All other accounts are allowed to login from anywhere.
+#
+##############################################################################
+# All lines from here up to the end are building a more complex example.
+##############################################################################
+#
+# User "root" should be allowed to get access via cron .. tty5 tty6.
+#+:root:cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6
+#
+# User "root" should be allowed to get access from hosts with ip addresses.
+#+:root:192.168.200.1 192.168.200.4 192.168.200.9
+#+:root:127.0.0.1
+#
+# User "root" should get access from network 192.168.201.
+# This term will be evaluated by string matching.
+# comment: It might be better to use network/netmask instead.
+#          The same is 192.168.201.0/24 or 192.168.201.0/255.255.255.0
+#+:root:192.168.201.
+#
+# User "root" should be able to have access from domain.
+# Uses string matching also.
+#+:root:.foo.bar.org
+#
+# User "root" should be denied to get access from all other sources.
+#-:root:ALL
+#
+# User "foo" and members of netgroup "nis_group" should be
+# allowed to get access from all sources.
+# This will only work if netgroup service is available.
+#+:@nis_group foo:ALL
+#
+# User "john" should get access from ipv4 net/mask
+#+:john:127.0.0.0/24
+#
+# User "john" should get access from ipv4 as ipv6 net/mask
+#+:john:::ffff:127.0.0.0/127
+#
+# User "john" should get access from ipv6 host address
+#+:john:2001:4ca0:0:101::1
+#
+# User "john" should get access from ipv6 host address (same as above)
+#+:john:2001:4ca0:0:101:0:0:0:1
+#
+# User "john" should get access from ipv6 net/mask
+#+:john:2001:4ca0:0:101::/64
+#
+# All other users should be denied to get access from all sources.
+#-:ALL:ALL
diff --git a/etc/security/capability.conf b/etc/security/capability.conf
new file mode 100644 (file)
index 0000000..09517f8
--- /dev/null
@@ -0,0 +1,45 @@
+#
+# /etc/security/capability.conf
+#
+# this is a sample capability file (to be used in conjunction with
+# the pam_cap.so module)
+#
+# In order to use this module, it must have been linked with libcap
+# and thus you'll know about Linux's capability support.
+# [If you don't know about libcap, the sources for it are here:
+#
+#   http://www.kernel.org/pub/linux/libs/security/linux-privs/
+#
+# .]
+#
+# Here are some sample lines (remove the preceding '#' if you want to
+# use them
+
+## user 'morgan' gets the CAP_SETFCAP inheritable capability (commented out!)
+#cap_setfcap           morgan
+
+## user 'luser' inherits the CAP_DAC_OVERRIDE capability (commented out!)
+#cap_dac_override      luser
+
+## 'everyone else' gets no inheritable capabilities (restrictive config)
+none  *
+
+## if there is no '*' entry, all users not explicitly mentioned will
+## get all available capabilities. This is a permissive default, and
+## possibly not what you want... On first reading, you might think this
+## is a security problem waiting to happen, but it defaults to not being
+## so in this sample file! Further, by 'get', we mean 'get in their inheritable
+## set'. That is, if you look at a random process, even one run by root,
+## you will see it has no inheritable capabilities (by default):
+##
+##   $ /sbin/capsh --decode=$(grep CapInh /proc/1/status|awk '{print $2}')
+##   0000000000000000=
+##
+## The pam_cap module simply alters the value of this capability
+## set. Including the 'none *' forces use of this module with an
+## unspecified user to have their inheritable set forced to zero.
+##
+## Omitting the line will cause the inheritable set to be unmodified
+## from what the parent process had (which is generally 0 unless the
+## invoking user was bestowed with some inheritable capabilities by a
+## previous invocation).
diff --git a/etc/security/faillock.conf b/etc/security/faillock.conf
new file mode 100644 (file)
index 0000000..16d93df
--- /dev/null
@@ -0,0 +1,62 @@
+# Configuration for locking the user after multiple failed
+# authentication attempts.
+#
+# The directory where the user files with the failure records are kept.
+# The default is /var/run/faillock.
+# dir = /var/run/faillock
+#
+# Will log the user name into the system log if the user is not found.
+# Enabled if option is present.
+# audit
+#
+# Don't print informative messages.
+# Enabled if option is present.
+# silent
+#
+# Don't log informative messages via syslog.
+# Enabled if option is present.
+# no_log_info
+#
+# Only track failed user authentications attempts for local users
+# in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users.
+# The `faillock` command will also no longer track user failed
+# authentication attempts. Enabling this option will prevent a
+# double-lockout scenario where a user is locked out locally and
+# in the centralized mechanism.
+# Enabled if option is present.
+# local_users_only
+#
+# Deny access if the number of consecutive authentication failures
+# for this user during the recent interval exceeds n tries.
+# The default is 3.
+# deny = 3
+#
+# The length of the interval during which the consecutive
+# authentication failures must happen for the user account
+# lock out is <replaceable>n</replaceable> seconds.
+# The default is 900 (15 minutes).
+# fail_interval = 900
+#
+# The access will be re-enabled after n seconds after the lock out.
+# The value 0 has the same meaning as value `never` - the access
+# will not be re-enabled without resetting the faillock
+# entries by the `faillock` command.
+# The default is 600 (10 minutes).
+# unlock_time = 600
+#
+# Root account can become locked as well as regular accounts.
+# Enabled if option is present.
+# even_deny_root
+#
+# This option implies the `even_deny_root` option.
+# Allow access after n seconds to root account after the
+# account is locked. In case the option is not specified
+# the value is the same as of the `unlock_time` option.
+# root_unlock_time = 900
+#
+# If a group name is specified with this option, members
+# of the group will be handled by this module the same as
+# the root account (the options `even_deny_root>` and
+# `root_unlock_time` will apply to them.
+# By default, the option is not set.
+# admin_group = <admin_group_name>
diff --git a/etc/security/group.conf b/etc/security/group.conf
new file mode 100644 (file)
index 0000000..7c07a26
--- /dev/null
@@ -0,0 +1,106 @@
+#
+# This is the configuration file for the pam_group module.
+#
+
+#
+# *** Please note that giving group membership on a session basis is
+# *** NOT inherently secure. If a user can create an executable that
+# *** is setgid a group that they are infrequently given membership
+# *** of, they can basically obtain group membership any time they
+# *** like. Example: games are allowed between the hours of 6pm and 6am
+# *** user joe logs in at 7pm writes a small C-program toplay.c that
+# *** invokes their favorite shell, compiles it and does
+# *** "chgrp play toplay; chmod g+s toplay". They are basically able
+# *** to play games any time... You have been warned. AGM
+#
+
+#
+# The syntax of the lines is as follows:
+#
+#       services;ttys;users;times;groups
+#
+# white space is ignored and lines maybe extended with '\\n' (escaped
+# newlines). From reading these comments, it is clear that
+# text following a '#' is ignored to the end of the line.
+#
+# the combination of individual users/terminals etc is a logic list
+# namely individual tokens that are optionally prefixed with '!' (logical
+# not) and separated with '&' (logical and) and '|' (logical or).
+#
+# services
+#       is a logic list of PAM service names that the rule applies to.
+#
+# ttys
+#       is a logic list of terminal names that this rule applies to.
+#
+# users
+#       is a logic list of users or a netgroup of users to whom this
+#       rule applies.
+#
+# NB. For these items the simple wildcard '*' may be used only once.
+#     With netgroups no wildcards or logic operators are allowed.
+#
+# times
+#       It is used to indicate "when" these groups are to be given to the
+#       user. The format here is a logic list of day/time-range
+#       entries the days are specified by a sequence of two character
+#       entries, MoTuSa for example is Monday Tuesday and Saturday. Note
+#       that repeated days are unset MoMo = no day, and MoWk = all weekdays
+#       bar Monday. The two character combinations accepted are
+#
+#               Mo Tu We Th Fr Sa Su Wk Wd Al
+#
+#       the last two being week-end days and all 7 days of the week
+#       respectively. As a final example, AlFr means all days except Friday.
+#
+#       Each day/time-range can be prefixed with a '!' to indicate "anything
+#       but"
+#
+#       The time-range part is two 24-hour times HHMM separated by a hyphen
+#       indicating the start and finish time (if the finish time is smaller
+#       than the start time it is deemed to apply on the following day).
+#
+# groups
+#      The (comma or space separated) list of groups that the user
+#      inherits membership of. These groups are added if the previous
+#      fields are satisfied by the user's request
+#
+# For a rule to be active, ALL of service+ttys+users must be satisfied
+# by the applying process.
+#
+
+#
+# Note, to get this to work as it is currently typed you need
+#
+# 1. to run an application as root
+# 2. add the following groups to the /etc/group file:
+#              floppy, play, sound
+#
+
+#
+# Here is a simple example: running 'xsh' on tty* (any ttyXXX device),
+# the user 'us' is given access to the floppy (through membership of
+# the floppy group)
+#
+
+#xsh;tty*&!ttyp*;us;Al0000-2400;floppy
+
+#
+# another example: running 'xsh' on tty* (any ttyXXX device),
+# the user 'sword' is given access to games (through membership of
+# the sound and play group) after work hours.
+#
+
+#xsh; tty* ;sword;!Wk0900-1800;sound, play
+#xsh; tty* ;*;Al0900-1800;floppy
+
+#
+# yet another example: any member of the group 'admin' running
+# 'xsh' on tty*, is granted access (at any time) to the group 'plugdev'
+#
+
+#xsh; tty* ;%admin;Al0000-2400;plugdev
+
+#
+# End of group.conf file
+#
diff --git a/etc/security/limits.conf b/etc/security/limits.conf
new file mode 100644 (file)
index 0000000..1aec652
--- /dev/null
@@ -0,0 +1,56 @@
+# /etc/security/limits.conf
+#
+#Each line describes a limit for a user in the form:
+#
+#<domain>        <type>  <item>  <value>
+#
+#Where:
+#<domain> can be:
+#        - a user name
+#        - a group name, with @group syntax
+#        - the wildcard *, for default entry
+#        - the wildcard %, can be also used with %group syntax,
+#                 for maxlogin limit
+#        - NOTE: group and wildcard limits are not applied to root.
+#          To apply a limit to the root user, <domain> must be
+#          the literal username root.
+#
+#<type> can have the two values:
+#        - "soft" for enforcing the soft limits
+#        - "hard" for enforcing hard limits
+#
+#<item> can be one of the following:
+#        - core - limits the core file size (KB)
+#        - data - max data size (KB)
+#        - fsize - maximum filesize (KB)
+#        - memlock - max locked-in-memory address space (KB)
+#        - nofile - max number of open file descriptors
+#        - rss - max resident set size (KB)
+#        - stack - max stack size (KB)
+#        - cpu - max CPU time (MIN)
+#        - nproc - max number of processes
+#        - as - address space limit (KB)
+#        - maxlogins - max number of logins for this user
+#        - maxsyslogins - max number of logins on the system
+#        - priority - the priority to run user process with
+#        - locks - max number of file locks the user can hold
+#        - sigpending - max number of pending signals
+#        - msgqueue - max memory used by POSIX message queues (bytes)
+#        - nice - max nice priority allowed to raise to values: [-20, 19]
+#        - rtprio - max realtime priority
+#        - chroot - change root to directory (Debian-specific)
+#
+#<domain>      <type>  <item>         <value>
+#
+
+#*               soft    core            0
+#root            hard    core            100000
+#*               hard    rss             10000
+#@student        hard    nproc           20
+#@faculty        soft    nproc           20
+#@faculty        hard    nproc           50
+#ftp             hard    nproc           0
+#ftp             -       chroot          /ftp
+#@student        -       maxlogins       4
+
+# End of file
diff --git a/etc/security/namespace.conf b/etc/security/namespace.conf
new file mode 100644 (file)
index 0000000..b611a0f
--- /dev/null
@@ -0,0 +1,28 @@
+# /etc/security/namespace.conf
+#
+# See /usr/share/doc/pam-*/txts/README.pam_namespace for more information.
+#
+# Uncommenting the following three lines will polyinstantiate
+# /tmp, /var/tmp and user's home directories. /tmp and /var/tmp will
+# be polyinstantiated based on the MLS level part of the security context as well as user
+# name, Polyinstantion will not be performed for user root and adm for directories
+# /tmp and /var/tmp, whereas home directories will be polyinstantiated for all users.
+# The user name and context is appended to the instance prefix.
+#
+# Note that instance directories do not have to reside inside the
+# polyinstantiated directory. In the examples below, instances of /tmp
+# will be created in /tmp-inst directory, where as instances of /var/tmp
+# and users home directories will reside within the directories that
+# are being polyinstantiated.
+#
+# Instance parent directories must exist for the polyinstantiation
+# mechanism to work. By default, they should be created with the mode
+# of 000. pam_namespace module will enforce this mode unless it
+# is explicitly called with an argument to ignore the mode of the
+# instance parent. System administrators should use this argument with
+# caution, as it will reduce security and isolation achieved by
+# polyinstantiation.
+#
+#/tmp     /tmp-inst/           level      root,adm
+#/var/tmp /var/tmp/tmp-inst/           level      root,adm
+#$HOME    $HOME/$USER.inst/     level
diff --git a/etc/security/namespace.init b/etc/security/namespace.init
new file mode 100755 (executable)
index 0000000..67d4aa2
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+# It receives polydir path as $1, the instance path as $2,
+# a flag whether the instance dir was newly created (0 - no, 1 - yes) in $3,
+# and user name in $4.
+#
+# The following section will copy the contents of /etc/skel if this is a
+# newly created home directory.
+if [ "$3" = 1 ]; then
+        # This line will fix the labeling on all newly created directories
+        [ -x /sbin/restorecon ] && /sbin/restorecon "$1"
+        user="$4"
+        passwd=$(getent passwd "$user")
+        homedir=$(echo "$passwd" | cut -f6 -d":")
+        if [ "$1" = "$homedir" ]; then
+                gid=$(echo "$passwd" | cut -f4 -d":")
+                cp -rT /etc/skel "$homedir"
+                chown -R "$user":"$gid" "$homedir"
+                mask=$(awk '/^UMASK/{gsub("#.*$", "", $2); print $2; exit}' /etc/login.defs)
+                mode=$(printf "%o" $((0777 & ~$mask)))
+                chmod ${mode:-700} "$homedir"
+                [ -x /sbin/restorecon ] && /sbin/restorecon -R "$homedir"
+        fi
+fi
+
+exit 0
diff --git a/etc/security/opasswd b/etc/security/opasswd
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/security/pam_env.conf b/etc/security/pam_env.conf
new file mode 100644 (file)
index 0000000..30e9d00
--- /dev/null
@@ -0,0 +1,73 @@
+#
+# This is the configuration file for pam_env, a PAM module to load in
+# a configurable list of environment variables for a
+#
+# The original idea for this came from Andrew G. Morgan ...
+#<quote>
+#   Mmm. Perhaps you might like to write a pam_env module that reads a
+#   default environment from a file? I can see that as REALLY
+#   useful... Note it would be an "auth" module that returns PAM_IGNORE
+#   for the auth part and sets the environment returning PAM_SUCCESS in
+#   the setcred function...
+#</quote>
+#
+# What I wanted was the REMOTEHOST variable set, purely for selfish
+# reasons, and AGM didn't want it added to the SimpleApps login
+# program (which is where I added the patch). So, my first concern is
+# that variable, from there there are numerous others that might/would
+# be useful to be set: NNTPSERVER, LESS, PATH, PAGER, MANPAGER .....
+#
+# Of course, these are a different kind of variable than REMOTEHOST in
+# that they are things that are likely to be configured by
+# administrators rather than set by logging in, how to treat them both
+# in the same config file?
+#
+# Here is my idea:
+#
+# Each line starts with the variable name, there are then two possible
+# options for each variable DEFAULT and OVERRIDE.
+# DEFAULT allows and administrator to set the value of the
+# variable  to some default value, if none is supplied then the empty
+# string is assumed. The OVERRIDE option tells pam_env that it should
+# enter in its value (overriding the default value) if there is one
+# to use. OVERRIDE is not used, "" is assumed and no override will be
+# done.
+#
+# VARIABLE   [DEFAULT=[value]]  [OVERRIDE=[value]]
+#
+# (Possibly non-existent) environment variables may be used in values
+# using the ${string} syntax and (possibly non-existent) PAM_ITEMs may
+# be used in values using the @{string} syntax. Both the $ and @
+# characters can be backslash escaped to be used as literal values
+# values can be delimited with "", escaped " not supported.
+# Note that many environment variables that you would like to use
+# may not be set by the time the module is called.
+# For example, HOME is used below several times, but
+# many PAM applications don't make it available by the time you need it.
+#
+#
+# First, some special variables
+#
+# Set the REMOTEHOST variable for any hosts that are remote, default
+# to "localhost" rather than not being set at all
+#REMOTEHOST    DEFAULT=localhost OVERRIDE=@{PAM_RHOST}
+#
+# Set the DISPLAY variable if it seems reasonable
+#DISPLAY               DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
+#
+#
+#  Now some simple variables
+#
+#PAGER         DEFAULT=less
+#MANPAGER      DEFAULT=less
+#LESS          DEFAULT="M q e h15 z23 b80"
+#NNTPSERVER    DEFAULT=localhost
+#PATH          DEFAULT=${HOME}/bin:/usr/local/bin:/bin\
+#:/usr/bin:/usr/local/bin/X11:/usr/bin/X11
+#
+# silly examples of escaped variables, just to show how they work.
+#
+#DOLLAR                DEFAULT=\$
+#DOLLARDOLLAR  DEFAULT=        OVERRIDE=\$${DOLLAR}
+#DOLLARPLUS    DEFAULT=\${REMOTEHOST}${REMOTEHOST}
+#ATSIGN                DEFAULT=""      OVERRIDE=\@
diff --git a/etc/security/sepermit.conf b/etc/security/sepermit.conf
new file mode 100644 (file)
index 0000000..951f3df
--- /dev/null
@@ -0,0 +1,11 @@
+# /etc/security/sepermit.conf
+#
+# Each line contains either:
+#        - an user name
+#        - a group name, with @group syntax
+#        - a SELinux user name, with %seuser syntax
+# Each line can contain optional arguments separated by :
+# The possible arguments are:
+#        - exclusive - only single login session will
+#          be allowed for the user and the user's processes
+#          will be killed on logout
diff --git a/etc/security/time.conf b/etc/security/time.conf
new file mode 100644 (file)
index 0000000..68d2dad
--- /dev/null
@@ -0,0 +1,65 @@
+# this is an example configuration file for the pam_time module. Its syntax
+# was initially based heavily on that of the shadow package (shadow-960129).
+#
+# the syntax of the lines is as follows:
+#
+#       services;ttys;users;times
+#
+# white space is ignored and lines maybe extended with '\\n' (escaped
+# newlines). As should be clear from reading these comments,
+# text following a '#' is ignored to the end of the line.
+#
+# the combination of individual users/terminals etc is a logic list
+# namely individual tokens that are optionally prefixed with '!' (logical
+# not) and separated with '&' (logical and) and '|' (logical or).
+#
+# services
+#      is a logic list of PAM service names that the rule applies to.
+#
+# ttys
+#      is a logic list of terminal names that this rule applies to.
+#
+# users
+#      is a logic list of users or a netgroup of users to whom this
+#      rule applies.
+#
+# NB. For these items the simple wildcard '*' may be used only once.
+#
+# times
+#      the format here is a logic list of day/time-range
+#      entries the days are specified by a sequence of two character
+#      entries, MoTuSa for example is Monday Tuesday and Saturday. Note
+#      that repeated days are unset MoMo = no day, and MoWk = all weekdays
+#      bar Monday. The two character combinations accepted are
+#
+#              Mo Tu We Th Fr Sa Su Wk Wd Al
+#
+#      the last two being week-end days and all 7 days of the week
+#      respectively. As a final example, AlFr means all days except Friday.
+#
+#      each day/time-range can be prefixed with a '!' to indicate "anything
+#      but"
+#
+#      The time-range part is two 24-hour times HHMM separated by a hyphen
+#      indicating the start and finish time (if the finish time is smaller
+#      than the start time it is deemed to apply on the following day).
+#
+# for a rule to be active, ALL of service+ttys+users must be satisfied
+# by the applying process.
+#
+
+#
+# Here is a simple example: running blank on tty* (any ttyXXX device),
+# the users 'you' and 'me' are denied service all of the time
+#
+
+#blank;tty* & !ttyp*;you|me;!Al0000-2400
+
+# Another silly example, user 'root' is denied xsh access
+# from pseudo terminals at the weekend and on mondays.
+
+#xsh;ttyp*;root;!WdMo0000-2400
+
+#
+# End of example file.
+#
diff --git a/etc/selinux/semanage.conf b/etc/selinux/semanage.conf
new file mode 100644 (file)
index 0000000..5133998
--- /dev/null
@@ -0,0 +1,45 @@
+# Authors: Jason Tang <jtang@tresys.com>
+#
+# Copyright (C) 2004-2005 Tresys Technology, LLC
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2.1 of the License, or (at your option) any later version.
+#
+#  This library 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
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library; if not, write to the Free Software
+#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
+# Specify how libsemanage will interact with a SELinux policy manager.
+# The four options are:
+#
+#  "source"     - libsemanage manipulates a source SELinux policy
+#  "direct"     - libsemanage will write directly to a module store.
+#  /foo/bar     - Write by way of a policy management server, whose
+#                 named socket is at /foo/bar.  The path must begin
+#                 with a '/'.
+#  foo.com:4242 - Establish a TCP connection to a remote policy
+#                 management server at foo.com.  If there is a colon
+#                 then the remainder is interpreted as a port number;
+#                 otherwise default to port 4242.
+module-store = direct
+
+# When generating the final linked and expanded policy, by default
+# semanage will set the policy version to POLICYDB_VERSION_MAX, as
+# given in <sepol/policydb.h>.  Change this setting if a different
+# version is necessary.
+#policy-version = 19
+
+# expand-check check neverallow rules when executing all semanage commands.
+# Large penalty in time if you turn this on.
+expand-check=0
+
+# By default, semanage will generate policies for the SELinux target.
+# To build policies for Xen, uncomment the following line.
+#target-platform = xen
diff --git a/etc/sensors.d/.placeholder b/etc/sensors.d/.placeholder
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/etc/sensors3.conf b/etc/sensors3.conf
new file mode 100644 (file)
index 0000000..693a66b
--- /dev/null
@@ -0,0 +1,536 @@
+# libsensors configuration file
+# -----------------------------
+#
+# This default configuration file only includes statements which do not
+# differ from one mainboard to the next. Only label, compute and set
+# statements for internal voltage and temperature sensors are included.
+#
+# In general, local changes should not be added to this file, but rather
+# placed in custom configuration files located in /etc/sensors.d. This
+# approach makes further updates much easier.
+#
+# Such custom configuration files for specific mainboards can be found in
+# "configs" directory of lm-sensors package.
+#
+# Please contribute back a configuration of your board so other users with
+# the same hardware won't need to recreate it again and again.
+
+chip "lm78-*" "lm79-*" "lm80-*" "lm96080-*"
+
+    label temp1 "M/B Temp"
+
+
+chip "w83792d-*"
+
+    label in0 "VcoreA"
+    label in1 "VcoreB"
+    label in6 "+5V"
+    label in7 "5VSB"
+    label in8 "Vbat"
+
+    set in6_min  5.0 * 0.90
+    set in6_max  5.0 * 1.10
+    set in7_min  5.0 * 0.90
+    set in7_max  5.0 * 1.10
+    set in8_min  3.0 * 0.90
+    set in8_max  3.0 * 1.10
+
+
+chip "w83793-*"
+
+    label in0 "VcoreA"
+    label in1 "VcoreB"
+    label in7 "+5V"
+    label in8 "5VSB"
+    label in9 "Vbat"
+
+    set in7_min  5.0 * 0.90
+    set in7_max  5.0 * 1.10
+    set in8_min  5.0 * 0.90
+    set in8_max  5.0 * 1.10
+    set in9_min  3.0 * 0.90
+    set in9_max  3.0 * 1.10
+
+
+chip "w83795g-*" "w83795adg-*"
+
+    label in12 "+3.3V"
+    label in13 "3VSB"
+    label in14 "Vbat"
+
+    set in12_min  3.3 * 0.90
+    set in12_max  3.3 * 1.10
+    set in13_min  3.3 * 0.90
+    set in13_max  3.3 * 1.10
+    set in14_min  3.0 * 0.90
+    set in14_max  3.3 * 1.10
+
+
+chip "via686a-*"
+
+    label in0 "Vcore"
+    label in2 "+3.3V"
+    label in3 "+5V"
+    label in4 "+12V"
+
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+    set in3_min  5.0 * 0.90
+    set in3_max  5.0 * 1.10
+    set in4_min 12.0 * 0.90
+    set in4_max 12.0 * 1.10
+
+
+chip "adm1025-*" "ne1619-*"
+
+    label in1 "Vcore"
+    label in2 "+3.3V"
+    label in3 "+5V"
+    label in4 "+12V"
+    label in5 "VCC"
+
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+    set in3_min  5.0 * 0.90
+    set in3_max  5.0 * 1.10
+    set in5_min  3.3 * 0.90
+    set in5_max  3.3 * 1.10
+# Depending on how your chip is hardwired, you may or may not have
+# +12V readings.
+#    set in4_min 12.0 * 0.90
+#    set in4_max 12.0 * 1.10
+
+    label temp1 "CPU Temp"
+    label temp2 "M/B Temp"
+
+
+chip "lm87-*" "adm1024-*"
+
+    label in1 "Vcore"
+    label in2 "+3.3V"
+    label in3 "+5V"
+    label in4 "+12V"
+
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+    set in3_min  5.0 * 0.90
+    set in3_max  5.0 * 1.10
+    set in4_min 12.0 * 0.90
+    set in4_max 12.0 * 1.10
+
+    label temp1 "M/B Temp"
+    label temp2 "CPU Temp"
+
+
+chip "it87-*" "it8712-*" "it8716-*" "it8718-*" "it8720-*"
+
+    label in8 "Vbat"
+
+
+chip "fscpos-*" "fscher-*"
+#FSC "Hermes"
+
+    label in0 "+12V"
+    label in1 "+5V"
+    label in2 "Vbat"
+
+    label temp1 "CPU Temp"
+    label temp2 "M/B Temp"
+    label temp3 "Aux Temp"
+
+
+chip "fscscy-*"
+#FSC "Scylla"
+
+    label in0 "+12V"
+    label in1 "+5V"
+    label in2 "+3.3V"
+
+    label temp1 "CPU0 Temp"
+    label temp2 "CPU1 Temp"
+    label temp3 "M/B Temp"
+    label temp4 "Aux Temp"
+
+
+chip "fschds-*"
+# Fujitsu Technology Solutions, "Hades"-Chip
+
+# Temperatures
+    label temp1 "CPU Temp"
+    label temp2 "Super I/O Temp"
+    label temp3 "System Temp"
+
+# Fans
+    label fan1 "PSU Fan"
+    label fan2 "CPU Fan"
+    label fan3 "System FAN2"
+    label fan4 "System FAN3"
+    label fan5 "System FAN4"
+
+# Voltages
+    label in0 "+12V"
+    label in1 "+5V"
+    label in2 "Vbat"
+
+chip "fscsyl-*"
+# Fujitsu Technology Solutions, "Syleus"-Chip
+
+# Temperatures
+    label temp1 "CPU Temp"
+    label temp4 "Super I/O Temp"
+    label temp5 "Northbridge Temp"
+
+# Fans
+    label fan1 "CPU Fan"
+    label fan2 "System FAN2"
+    label fan3 "System FAN3"
+    label fan4 "System FAN4"
+    label fan7 "PSU Fan"
+
+# Voltages
+    label in0 "+12V"
+    label in1 "+5V"
+    label in2 "Vbat"
+    label in3 "+3.3V"
+    label in5 "+3.3V-Aux"
+
+chip "vt1211-*"
+
+    label in5 "+3.3V"
+
+    label temp2 "SIO Temp"
+
+
+chip "vt8231-*"
+
+    label in5 "+3.3V"
+
+
+chip "smsc47m192-*"
+
+    label in1 "Vcore"
+    label in2 "+3.3V"
+    label in3 "+5V"
+    label in4 "+12V"
+    label in5 "VCC"
+
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+    set in3_min  5.0 * 0.90
+    set in3_max  5.0 * 1.10
+    set in4_min 12.0 * 0.90
+    set in4_max 12.0 * 1.10
+    set in5_min  3.3 * 0.90
+    set in5_max  3.3 * 1.10
+
+    label temp1 "SIO Temp"
+
+
+chip "lm85-*" "lm85b-*" "lm85c-*" "adm1027-*" "adt7463-*" "adt7468-*" \
+     "emc6d100-*" "emc6d102-*" "emc6d103-*" "emc6d103s-*" 
+
+    label in1 "Vcore"
+    label in2 "+3.3V"
+    label in3 "+5V"
+    label in4 "+12V"
+
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+    set in3_min  5.0 * 0.90
+    set in3_max  5.0 * 1.10
+# Depending on how your chip is hardwired, you may or may not have
+# +12V readings.
+#    set in4_min 12.0 * 0.90
+#    set in4_max 12.0 * 1.10
+
+    label temp2 "M/B Temp"
+
+
+chip "emc6w201-*"
+
+    label in2 "+3.3V"
+    label in3 "+5V"
+
+    label temp6 "M/B Temp"
+
+
+chip "pc87365-*" "pc87366-*"
+
+# Voltage inputs
+
+    label in7 "3VSB"
+    label in8 "VDD"
+    label in9 "Vbat"
+    label in10 "AVDD"
+
+    compute in7   @*2, @/2
+    compute in8   @*2, @/2
+    compute in10  @*2, @/2
+
+# These are the operating conditions as recommended by National
+# Semiconductor
+    set in7_min   3.0
+    set in7_max   3.6
+    set in8_min   3.0
+    set in8_max   3.6
+    set in10_min  3.0
+    set in10_max  3.6
+# Depending on the hardware setup, the battery voltage may or may not
+# be monitored.
+#    set in9_min   2.4
+#    set in9_max   3.6
+
+    label temp3 "SIO Temp"
+
+    set temp3_min    0
+    set temp3_max   70
+    set temp3_crit  85
+
+
+chip "adm1030-*" "adm1031-*"
+
+    label temp1 "M/B Temp"
+
+
+chip "w83627thf-*"
+
+    label in3 "+5V"
+    label in7 "5VSB"
+    label in8 "Vbat"
+
+    # Internal resistors
+    compute in3  @ * (1 + 34/51), @ / (1 + 34/51)
+    compute in7  @ * (1 + 34/51), @ / (1 + 34/51)
+
+    set in3_min  5.0 * 0.90
+    set in3_max  5.0 * 1.10
+    set in7_min  5.0 * 0.90
+    set in7_max  5.0 * 1.10
+# The battery voltage may or may not be monitored.
+#    set in8_min  3.0 * 0.90
+#    set in8_max  3.0 * 1.10
+
+
+chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" "nct6775-*" "nct6776-*" \
+     "nct6779-*" "nct6791-*" "nct6795-*" "nct6796-*"
+
+    label in0 "Vcore"
+    label in2 "AVCC"
+    label in3 "+3.3V"
+    label in7 "3VSB"
+    label in8 "Vbat"
+
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+    set in3_min  3.3 * 0.90
+    set in3_max  3.3 * 1.10
+    set in7_min  3.3 * 0.90
+    set in7_max  3.3 * 1.10
+    set in8_min  3.0 * 0.90
+    set in8_max  3.3 * 1.10
+
+
+chip "w83627uhg-*"
+
+    label in2 "AVCC"
+    label in3 "+5V"
+    label in7 "5VSB"
+    label in8 "Vbat"
+
+    set in2_min  5.0 * 0.90
+    set in2_max  5.0 * 1.10
+    set in3_min  5.0 * 0.90
+    set in3_max  5.0 * 1.10
+    set in7_min  5.0 * 0.90
+    set in7_max  5.0 * 1.10
+    set in8_min  3.0 * 0.90
+    set in8_max  3.3 * 1.10
+
+
+chip "f71805f-*"
+
+    label in0 "+3.3V"
+
+    set in0_min  3.3 * 0.90
+    set in0_max  3.3 * 1.10
+
+
+chip "f71872f-*"
+
+    label in0 "+3.3V"
+    label in9 "Vbat"
+    label in10 "3VSB"
+
+    set in0_min   3.3 * 0.90
+    set in0_max   3.3 * 1.10
+    set in9_min   3.0 * 0.90
+    set in9_max   3.0 * 1.10
+    set in10_min  3.3 * 0.90
+    set in10_max  3.3 * 1.10
+
+
+chip "k8temp-*"
+
+    label temp1 "Core0 Temp"
+    label temp2 "Core0 Temp"
+    label temp3 "Core1 Temp"
+    label temp4 "Core1 Temp"
+
+
+chip "dme1737-*"
+
+    label in0 "5VSB"
+    label in1 "Vcore"
+    label in2 "+3.3V"
+    label in3 "+5V"
+    label in4 "+12V"
+    label in5 "3VSB"
+    label in6 "Vbat"
+
+    label temp2 "SIO Temp"
+
+    set in0_min  5.0 * 0.90
+    set in0_max  5.0 * 1.10
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+    set in3_min  5.0 * 0.90
+    set in3_max  5.0 * 1.10
+    set in4_min 12.0 * 0.90
+    set in4_max 12.0 * 1.10
+    set in5_min  3.3 * 0.90
+    set in5_max  3.3 * 1.10
+    set in6_min  3.0 * 0.90
+    set in6_max  3.0 * 1.10
+
+
+chip "sch311x-*"
+
+    label in1 "Vcore"
+    label in2 "+3.3V"
+    label in3 "+5V"
+    label in4 "+12V"
+    label in5 "3VSB"
+    label in6 "Vbat"
+
+    label temp2 "SIO Temp"
+
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+    set in3_min  5.0 * 0.90
+    set in3_max  5.0 * 1.10
+    set in4_min 12.0 * 0.90
+    set in4_max 12.0 * 1.10
+    set in5_min  3.3 * 0.90
+    set in5_max  3.3 * 1.10
+    set in6_min  3.0 * 0.90
+    set in6_max  3.0 * 1.10
+
+
+chip "sch5027-*"
+
+    label in0 "5VSB"
+    label in1 "Vcore"
+    label in2 "+3.3V"
+    label in5 "3VSB"
+    label in6 "Vbat"
+
+    label temp2 "SIO Temp"
+
+    set in0_min  5.0 * 0.90
+    set in0_max  5.0 * 1.10
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+    set in5_min  3.3 * 0.90
+    set in5_max  3.3 * 1.10
+    set in6_min  3.0 * 0.90
+    set in6_max  3.0 * 1.10
+
+
+chip "sch5127-*"
+
+    label in2 "+3.3V"
+    label in5 "3VSB"
+    label in6 "Vbat"
+
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+    set in5_min  3.3 * 0.90
+    set in5_max  3.3 * 1.10
+    set in6_min  3.0 * 0.90
+    set in6_max  3.0 * 1.10
+
+
+chip "f71808e-*" "f71808a-*" "f71862fg-*" "f71869-*" "f71869a-*" "f71882fg-*" \
+     "f71889fg-*" "f71889ed-*" "f71889a-*"
+
+    label in0 "+3.3V"
+    label in7 "3VSB"
+    label in8 "Vbat"
+
+    compute in0  @*2, @/2
+    compute in7  @*2, @/2
+    compute in8  @*2, @/2
+
+
+chip "f71858fg-*" "f8000-*"
+
+    label in0 "+3.3V"
+    label in1 "3VSB"
+    label in2 "Vbat"
+
+    compute in0  @*2, @/2
+    compute in1  @*2, @/2
+    compute in2  @*2, @/2
+
+
+chip "f71868a-*"
+
+    label in0 "+3.3V"
+    label in7 "3VSB"
+    label in8 "Vbat"
+    label in9 "5VSB"
+
+    compute in0  @*2, @/2
+    compute in7  @*2, @/2
+    compute in8  @*2, @/2
+    compute in9  @*3, @/3
+
+
+chip "f81865f-*"
+
+    label in0 "+3.3V"
+    label in5 "3VSB"
+    label in6 "Vbat"
+
+    compute in0  @*2, @/2
+    compute in5  @*2, @/2
+    compute in6  @*2, @/2
+
+
+chip "adt7473-*" "adt7475-*"
+
+    label in2 "+3.3V"
+
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+
+    label temp2 "Board Temp"
+
+
+chip "adt7476-*" "adt7490-*"
+
+    label in1 "Vcore"
+    label in2 "+3.3V"
+    label in3 "+5V"
+    label in4 "+12V"
+
+    set in2_min  3.3 * 0.90
+    set in2_max  3.3 * 1.10
+    set in3_min  5.0 * 0.90
+    set in3_max  5.0 * 1.10
+# Depending on how your ADT7476 is hardwired, you may or may not have
+# +12V readings.
+#    set in4_min 12.0 * 0.90
+#    set in4_max 12.0 * 1.10
+
+    label temp2 "M/B Temp"
diff --git a/etc/services b/etc/services
new file mode 100644 (file)
index 0000000..1c06436
--- /dev/null
@@ -0,0 +1,417 @@
+# Network services, Internet style
+#
+# Note that it is presently the policy of IANA to assign a single well-known
+# port number for both TCP and UDP; hence, officially ports have two entries
+# even if the protocol doesn't support UDP operations.
+#
+# Updated from https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml .
+#
+# New ports will be added on request if they have been officially assigned
+# by IANA and used in the real-world or are needed by a debian package.
+# If you need a huge list of used numbers please install the nmap package.
+
+tcpmux         1/tcp                           # TCP port service multiplexer
+echo           7/tcp
+echo           7/udp
+discard                9/tcp           sink null
+discard                9/udp           sink null
+systat         11/tcp          users
+daytime                13/tcp
+daytime                13/udp
+netstat                15/tcp
+qotd           17/tcp          quote
+chargen                19/tcp          ttytst source
+chargen                19/udp          ttytst source
+ftp-data       20/tcp
+ftp            21/tcp
+fsp            21/udp          fspd
+ssh            22/tcp                          # SSH Remote Login Protocol
+telnet         23/tcp
+smtp           25/tcp          mail
+time           37/tcp          timserver
+time           37/udp          timserver
+whois          43/tcp          nicname
+tacacs         49/tcp                          # Login Host Protocol (TACACS)
+tacacs         49/udp
+domain         53/tcp                          # Domain Name Server
+domain         53/udp
+bootps         67/udp
+bootpc         68/udp
+tftp           69/udp
+gopher         70/tcp                          # Internet Gopher
+finger         79/tcp
+http           80/tcp          www             # WorldWideWeb HTTP
+kerberos       88/tcp          kerberos5 krb5 kerberos-sec     # Kerberos v5
+kerberos       88/udp          kerberos5 krb5 kerberos-sec     # Kerberos v5
+iso-tsap       102/tcp         tsap            # part of ISODE
+acr-nema       104/tcp         dicom           # Digital Imag. & Comm. 300
+pop3           110/tcp         pop-3           # POP version 3
+sunrpc         111/tcp         portmapper      # RPC 4.0 portmapper
+sunrpc         111/udp         portmapper
+auth           113/tcp         authentication tap ident
+nntp           119/tcp         readnews untp   # USENET News Transfer Protocol
+ntp            123/udp                         # Network Time Protocol
+epmap          135/tcp         loc-srv         # DCE endpoint resolution
+netbios-ns     137/tcp                         # NETBIOS Name Service
+netbios-ns     137/udp
+netbios-dgm    138/tcp                         # NETBIOS Datagram Service
+netbios-dgm    138/udp
+netbios-ssn    139/tcp                         # NETBIOS session service
+netbios-ssn    139/udp
+imap2          143/tcp         imap            # Interim Mail Access P 2 and 4
+snmp           161/tcp                         # Simple Net Mgmt Protocol
+snmp           161/udp
+snmp-trap      162/tcp         snmptrap        # Traps for SNMP
+snmp-trap      162/udp         snmptrap
+cmip-man       163/tcp                         # ISO mgmt over IP (CMOT)
+cmip-man       163/udp
+cmip-agent     164/tcp
+cmip-agent     164/udp
+mailq          174/tcp                 # Mailer transport queue for Zmailer
+xdmcp          177/udp                 # X Display Manager Control Protocol
+bgp            179/tcp                         # Border Gateway Protocol
+smux           199/tcp                         # SNMP Unix Multiplexer
+qmtp           209/tcp                         # Quick Mail Transfer Protocol
+z3950          210/tcp         wais            # NISO Z39.50 database
+ipx            213/udp                         # IPX [RFC1234]
+ptp-event      319/udp
+ptp-general    320/udp
+pawserv                345/tcp                         # Perf Analysis Workbench
+zserv          346/tcp                         # Zebra server
+rpc2portmap    369/tcp
+rpc2portmap    369/udp                         # Coda portmapper
+codaauth2      370/tcp
+codaauth2      370/udp                         # Coda authentication server
+clearcase      371/udp         Clearcase
+ldap           389/tcp                 # Lightweight Directory Access Protocol
+ldap           389/udp
+svrloc         427/tcp                         # Server Location
+svrloc         427/udp
+https          443/tcp                         # http protocol over TLS/SSL
+snpp           444/tcp                         # Simple Network Paging Protocol
+microsoft-ds   445/tcp                         # Microsoft Naked CIFS
+microsoft-ds   445/udp
+kpasswd                464/tcp
+kpasswd                464/udp
+submissions    465/tcp         ssmtp smtps urd # Submission over TLS [RFC8314]
+saft           487/tcp                 # Simple Asynchronous File Transfer
+isakmp         500/udp                         # IPSEC key management
+rtsp           554/tcp                 # Real Time Stream Control Protocol
+rtsp           554/udp
+nqs            607/tcp                         # Network Queuing system
+asf-rmcp       623/udp         # ASF Remote Management and Control Protocol
+qmqp           628/tcp
+ipp            631/tcp                         # Internet Printing Protocol
+#
+# UNIX specific services
+#
+exec           512/tcp
+biff           512/udp         comsat
+login          513/tcp
+who            513/udp         whod
+shell          514/tcp         cmd syslog      # no passwords used
+syslog         514/udp
+printer                515/tcp         spooler         # line printer spooler
+talk           517/udp
+ntalk          518/udp
+route          520/udp         router routed   # RIP
+gdomap         538/tcp                         # GNUstep distributed objects
+gdomap         538/udp
+uucp           540/tcp         uucpd           # uucp daemon
+klogin         543/tcp                         # Kerberized `rlogin' (v5)
+kshell         544/tcp         krcmd           # Kerberized `rsh' (v5)
+dhcpv6-client  546/udp
+dhcpv6-server  547/udp
+afpovertcp     548/tcp                         # AFP over TCP
+nntps          563/tcp         snntp           # NNTP over SSL
+submission     587/tcp                         # Submission [RFC4409]
+ldaps          636/tcp                         # LDAP over SSL
+ldaps          636/udp
+tinc           655/tcp                         # tinc control port
+tinc           655/udp
+silc           706/tcp
+kerberos-adm   749/tcp                         # Kerberos `kadmin' (v5)
+#
+domain-s       853/tcp                         # DNS over TLS [RFC7858]
+domain-s       853/udp                         # DNS over DTLS [RFC8094]
+rsync          873/tcp
+ftps-data      989/tcp                         # FTP over SSL (data)
+ftps           990/tcp
+telnets                992/tcp                         # Telnet over SSL
+imaps          993/tcp                         # IMAP over SSL
+pop3s          995/tcp                         # POP-3 over SSL
+#
+# From ``Assigned Numbers'':
+#
+#> The Registered Ports are not controlled by the IANA and on most systems
+#> can be used by ordinary user processes or programs executed by ordinary
+#> users.
+#
+#> Ports are used in the TCP [45,106] to name the ends of logical
+#> connections which carry long term conversations.  For the purpose of
+#> providing services to unknown callers, a service contact port is
+#> defined.  This list specifies the port used by the server process as its
+#> contact port.  While the IANA can not control uses of these ports it
+#> does register or list uses of these ports as a convienence to the
+#> community.
+#
+socks          1080/tcp                        # socks proxy server
+proofd         1093/tcp
+rootd          1094/tcp
+openvpn                1194/tcp
+openvpn                1194/udp
+rmiregistry    1099/tcp                        # Java RMI Registry
+lotusnote      1352/tcp        lotusnotes      # Lotus Note
+ms-sql-s       1433/tcp                        # Microsoft SQL Server
+ms-sql-s       1433/udp
+ms-sql-m       1434/tcp                        # Microsoft SQL Monitor
+ms-sql-m       1434/udp
+ingreslock     1524/tcp
+datametrics    1645/tcp        old-radius
+datametrics    1645/udp        old-radius
+sa-msg-port    1646/tcp        old-radacct
+sa-msg-port    1646/udp        old-radacct
+kermit         1649/tcp
+groupwise      1677/tcp
+l2f            1701/udp        l2tp
+radius         1812/tcp
+radius         1812/udp
+radius-acct    1813/tcp        radacct         # Radius Accounting
+radius-acct    1813/udp        radacct
+cisco-sccp     2000/tcp                        # Cisco SCCP
+nfs            2049/tcp                        # Network File System
+nfs            2049/udp                        # Network File System
+gnunet         2086/tcp
+gnunet         2086/udp
+rtcm-sc104     2101/tcp                        # RTCM SC-104 IANA 1/29/99
+rtcm-sc104     2101/udp
+gsigatekeeper  2119/tcp
+gris           2135/tcp                # Grid Resource Information Server
+cvspserver     2401/tcp                        # CVS client/server operations
+venus          2430/tcp                        # codacon port
+venus          2430/udp                        # Venus callback/wbc interface
+venus-se       2431/tcp                        # tcp side effects
+venus-se       2431/udp                        # udp sftp side effect
+codasrv                2432/tcp                        # not used
+codasrv                2432/udp                        # server port
+codasrv-se     2433/tcp                        # tcp side effects
+codasrv-se     2433/udp                        # udp sftp side effect
+mon            2583/tcp                        # MON traps
+mon            2583/udp
+dict           2628/tcp                        # Dictionary server
+f5-globalsite  2792/tcp
+gsiftp         2811/tcp
+gpsd           2947/tcp
+gds-db         3050/tcp        gds_db          # InterBase server
+icpv2          3130/tcp        icp             # Internet Cache Protocol
+icpv2          3130/udp        icp
+isns           3205/tcp                        # iSNS Server Port
+isns           3205/udp                        # iSNS Server Port
+iscsi-target   3260/tcp
+mysql          3306/tcp
+ms-wbt-server  3389/tcp
+nut            3493/tcp                        # Network UPS Tools
+nut            3493/udp
+distcc         3632/tcp                        # distributed compiler
+distcc         3632/udp
+daap           3689/tcp                        # Digital Audio Access Protocol
+daap           3689/udp
+svn            3690/tcp        subversion      # Subversion protocol
+svn            3690/udp        subversion
+suucp          4031/tcp                        # UUCP over SSL
+suucp          4031/udp
+sysrqd         4094/tcp                        # sysrq daemon
+sysrqd         4094/udp
+sieve          4190/tcp                        # ManageSieve Protocol
+epmd           4369/tcp                        # Erlang Port Mapper Daemon
+epmd           4369/udp
+remctl         4373/tcp                # Remote Authenticated Command Service
+remctl         4373/udp
+f5-iquery      4353/tcp                        # F5 iQuery
+f5-iquery      4353/udp
+ipsec-nat-t    4500/udp                        # IPsec NAT-Traversal [RFC3947]
+iax            4569/tcp                        # Inter-Asterisk eXchange
+iax            4569/udp
+mtn            4691/tcp                        # monotone Netsync Protocol
+mtn            4691/udp
+radmin-port    4899/tcp                        # RAdmin Port
+radmin-port    4899/udp
+sip            5060/tcp                        # Session Initiation Protocol
+sip            5060/udp
+sip-tls                5061/tcp
+sip-tls                5061/udp
+xmpp-client    5222/tcp        jabber-client   # Jabber Client Connection
+xmpp-server    5269/tcp        jabber-server   # Jabber Server Connection
+cfengine       5308/tcp
+mdns           5353/udp                        # Multicast DNS
+postgresql     5432/tcp        postgres        # PostgreSQL Database
+freeciv                5556/tcp        rptp            # Freeciv gameplay
+amqps          5671/tcp                        # AMQP protocol over TLS/SSL
+amqp           5672/tcp
+amqp           5672/udp
+amqp           5672/sctp
+x11            6000/tcp        x11-0           # X Window System
+x11-1          6001/tcp
+x11-2          6002/tcp
+x11-3          6003/tcp
+x11-4          6004/tcp
+x11-5          6005/tcp
+x11-6          6006/tcp
+x11-7          6007/tcp
+gnutella-svc   6346/tcp                        # gnutella
+gnutella-svc   6346/udp
+gnutella-rtr   6347/tcp                        # gnutella
+gnutella-rtr   6347/udp
+sge-qmaster    6444/tcp        sge_qmaster     # Grid Engine Qmaster Service
+sge-execd      6445/tcp        sge_execd       # Grid Engine Execution Service
+mysql-proxy    6446/tcp                        # MySQL Proxy
+babel          6696/udp                        # Babel Routing Protocol
+ircs-u         6697/tcp                # Internet Relay Chat via TLS/SSL
+afs3-fileserver 7000/tcp       bbs             # file server itself
+afs3-fileserver 7000/udp       bbs
+afs3-callback  7001/tcp                        # callbacks to cache managers
+afs3-callback  7001/udp
+afs3-prserver  7002/tcp                        # users & groups database
+afs3-prserver  7002/udp
+afs3-vlserver  7003/tcp                        # volume location database
+afs3-vlserver  7003/udp
+afs3-kaserver  7004/tcp                        # AFS/Kerberos authentication
+afs3-kaserver  7004/udp
+afs3-volser    7005/tcp                        # volume managment server
+afs3-volser    7005/udp
+afs3-errors    7006/tcp                        # error interpretation service
+afs3-errors    7006/udp
+afs3-bos       7007/tcp                        # basic overseer process
+afs3-bos       7007/udp
+afs3-update    7008/tcp                        # server-to-server updater
+afs3-update    7008/udp
+afs3-rmtsys    7009/tcp                        # remote cache manager service
+afs3-rmtsys    7009/udp
+font-service   7100/tcp        xfs             # X Font Service
+http-alt       8080/tcp        webcache        # WWW caching service
+puppet         8140/tcp                        # The Puppet master service
+bacula-dir     9101/tcp                        # Bacula Director
+bacula-fd      9102/tcp                        # Bacula File Daemon
+bacula-sd      9103/tcp                        # Bacula Storage Daemon
+xmms2          9667/tcp        # Cross-platform Music Multiplexing System
+nbd            10809/tcp                       # Linux Network Block Device
+zabbix-agent   10050/tcp                       # Zabbix Agent
+zabbix-trapper 10051/tcp                       # Zabbix Trapper
+amanda         10080/tcp                       # amanda backup services
+dicom          11112/tcp
+hkp            11371/tcp                       # OpenPGP HTTP Keyserver
+db-lsp         17500/tcp                       # Dropbox LanSync Protocol
+dcap           22125/tcp                       # dCache Access Protocol
+gsidcap                22128/tcp                       # GSI dCache Access Protocol
+wnn6           22273/tcp                       # wnn6
+
+#
+# Datagram Delivery Protocol services
+#
+rtmp           1/ddp                   # Routing Table Maintenance Protocol
+nbp            2/ddp                   # Name Binding Protocol
+echo           4/ddp                   # AppleTalk Echo Protocol
+zip            6/ddp                   # Zone Information Protocol
+
+#=========================================================================
+# The remaining port numbers are not as allocated by IANA.
+#=========================================================================
+
+# Kerberos (Project Athena/MIT) services
+kerberos4      750/udp         kerberos-iv kdc # Kerberos (server)
+kerberos4      750/tcp         kerberos-iv kdc
+kerberos-master        751/udp         kerberos_master # Kerberos authentication
+kerberos-master        751/tcp
+passwd-server  752/udp         passwd_server   # Kerberos passwd server
+krb-prop       754/tcp         krb_prop krb5_prop hprop # Kerberos slave propagation
+zephyr-srv     2102/udp                        # Zephyr server
+zephyr-clt     2103/udp                        # Zephyr serv-hm connection
+zephyr-hm      2104/udp                        # Zephyr hostmanager
+iprop          2121/tcp                        # incremental propagation
+supfilesrv     871/tcp                 # Software Upgrade Protocol server
+supfiledbg     1127/tcp                # Software Upgrade Protocol debugging
+
+#
+# Services added for the Debian GNU/Linux distribution
+#
+poppassd       106/tcp                         # Eudora
+poppassd       106/udp
+moira-db       775/tcp         moira_db        # Moira database
+moira-update   777/tcp         moira_update    # Moira update protocol
+moira-ureg     779/udp         moira_ureg      # Moira user registration
+spamd          783/tcp                         # spamassassin daemon
+skkserv                1178/tcp                        # skk jisho server port
+predict                1210/udp                        # predict -- satellite tracking
+rmtcfg         1236/tcp                        # Gracilis Packeten remote config server
+xtel           1313/tcp                        # french minitel
+xtelw          1314/tcp                        # french minitel
+support                1529/tcp                        # GNATS
+cfinger                2003/tcp                        # GNU Finger
+frox           2121/tcp                        # frox: caching ftp proxy
+zebrasrv       2600/tcp                        # zebra service
+zebra          2601/tcp                        # zebra vty
+ripd           2602/tcp                        # ripd vty (zebra)
+ripngd         2603/tcp                        # ripngd vty (zebra)
+ospfd          2604/tcp                        # ospfd vty (zebra)
+bgpd           2605/tcp                        # bgpd vty (zebra)
+ospf6d         2606/tcp                        # ospf6d vty (zebra)
+ospfapi                2607/tcp                        # OSPF-API
+isisd          2608/tcp                        # ISISd vty (zebra)
+afbackup       2988/tcp                        # Afbackup system
+afbackup       2988/udp
+afmbackup      2989/tcp                        # Afmbackup system
+afmbackup      2989/udp
+fax            4557/tcp                        # FAX transmission service (old)
+hylafax                4559/tcp                        # HylaFAX client-server protocol (new)
+distmp3                4600/tcp                        # distmp3host daemon
+munin          4949/tcp        lrrd            # Munin
+enbd-cstatd    5051/tcp                        # ENBD client statd
+enbd-sstatd    5052/tcp                        # ENBD server statd
+pcrd           5151/tcp                        # PCR-1000 Daemon
+noclog         5354/tcp                        # noclogd with TCP (nocol)
+noclog         5354/udp                        # noclogd with UDP (nocol)
+hostmon                5355/tcp                        # hostmon uses TCP (nocol)
+hostmon                5355/udp                        # hostmon uses UDP (nocol)
+rplay          5555/udp                        # RPlay audio service
+nrpe           5666/tcp                        # Nagios Remote Plugin Executor
+nsca           5667/tcp                        # Nagios Agent - NSCA
+mrtd           5674/tcp                        # MRT Routing Daemon
+bgpsim         5675/tcp                        # MRT Routing Simulator
+canna          5680/tcp                        # cannaserver
+syslog-tls     6514/tcp                        # Syslog over TLS [RFC5425]
+sane-port      6566/tcp        sane saned      # SANE network scanner daemon
+ircd           6667/tcp                        # Internet Relay Chat
+zope-ftp       8021/tcp                        # zope management by ftp
+tproxy         8081/tcp                        # Transparent Proxy
+omniorb                8088/tcp                        # OmniORB
+omniorb                8088/udp
+clc-build-daemon 8990/tcp                      # Common lisp build daemon
+xinetd         9098/tcp
+mandelspawn    9359/udp        mandelbrot      # network mandelbrot
+git            9418/tcp                        # Git Version Control System
+zope           9673/tcp                        # zope server
+webmin         10000/tcp
+kamanda                10081/tcp                       # amanda backup services (Kerberos)
+amandaidx      10082/tcp                       # amanda backup services
+amidxtape      10083/tcp                       # amanda backup services
+smsqp          11201/tcp                       # Alamin SMS gateway
+smsqp          11201/udp
+xpilot         15345/tcp                       # XPilot Contact Port
+xpilot         15345/udp
+sgi-cmsd       17001/udp               # Cluster membership services daemon
+sgi-crsd       17002/udp
+sgi-gcd                17003/udp                       # SGI Group membership daemon
+sgi-cad                17004/tcp                       # Cluster Admin daemon
+isdnlog                20011/tcp                       # isdn logging system
+isdnlog                20011/udp
+vboxd          20012/tcp                       # voice box system
+vboxd          20012/udp
+binkp          24554/tcp                       # binkp fidonet protocol
+asp            27374/tcp                       # Address Search Protocol
+asp            27374/udp
+csync2         30865/tcp                       # cluster synchronization tool
+dircproxy      57000/tcp                       # Detachable IRC Proxy
+tfido          60177/tcp                       # fidonet EMSI over telnet
+fido           60179/tcp                       # fidonet EMSI over TCP
+
+# Local services
diff --git a/etc/shells b/etc/shells
new file mode 100644 (file)
index 0000000..fa2538f
--- /dev/null
@@ -0,0 +1,10 @@
+# /etc/shells: valid login shells
+/bin/sh
+/bin/bash
+/usr/bin/bash
+/bin/rbash
+/usr/bin/rbash
+/bin/dash
+/usr/bin/dash
+/usr/bin/tmux
+/usr/bin/screen
diff --git a/etc/skel/.bash_logout b/etc/skel/.bash_logout
new file mode 100644 (file)
index 0000000..de4f5f7
--- /dev/null
@@ -0,0 +1,7 @@
+# ~/.bash_logout: executed by bash(1) when login shell exits.
+
+# when leaving the console clear the screen to increase privacy
+
+if [ "$SHLVL" = 1 ]; then
+    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
+fi
diff --git a/etc/skel/.bashrc b/etc/skel/.bashrc
new file mode 100644 (file)
index 0000000..b488fcc
--- /dev/null
@@ -0,0 +1,117 @@
+# ~/.bashrc: executed by bash(1) for non-login shells.
+# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
+# for examples
+
+# If not running interactively, don't do anything
+case $- in
+    *i*) ;;
+      *) return;;
+esac
+
+# don't put duplicate lines or lines starting with space in the history.
+# See bash(1) for more options
+HISTCONTROL=ignoreboth
+
+# append to the history file, don't overwrite it
+shopt -s histappend
+
+# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
+HISTSIZE=1000
+HISTFILESIZE=2000
+
+# check the window size after each command and, if necessary,
+# update the values of LINES and COLUMNS.
+shopt -s checkwinsize
+
+# If set, the pattern "**" used in a pathname expansion context will
+# match all files and zero or more directories and subdirectories.
+#shopt -s globstar
+
+# make less more friendly for non-text input files, see lesspipe(1)
+[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
+
+# set variable identifying the chroot you work in (used in the prompt below)
+if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
+    debian_chroot=$(cat /etc/debian_chroot)
+fi
+
+# set a fancy prompt (non-color, unless we know we "want" color)
+case "$TERM" in
+    xterm-color|*-256color) color_prompt=yes;;
+esac
+
+# uncomment for a colored prompt, if the terminal has the capability; turned
+# off by default to not distract the user: the focus in a terminal window
+# should be on the output of commands, not on the prompt
+#force_color_prompt=yes
+
+if [ -n "$force_color_prompt" ]; then
+    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
+       # We have color support; assume it's compliant with Ecma-48
+       # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
+       # a case would tend to support setf rather than setaf.)
+       color_prompt=yes
+    else
+       color_prompt=
+    fi
+fi
+
+if [ "$color_prompt" = yes ]; then
+    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
+else
+    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
+fi
+unset color_prompt force_color_prompt
+
+# If this is an xterm set the title to user@host:dir
+case "$TERM" in
+xterm*|rxvt*)
+    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
+    ;;
+*)
+    ;;
+esac
+
+# enable color support of ls and also add handy aliases
+if [ -x /usr/bin/dircolors ]; then
+    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
+    alias ls='ls --color=auto'
+    #alias dir='dir --color=auto'
+    #alias vdir='vdir --color=auto'
+
+    alias grep='grep --color=auto'
+    alias fgrep='fgrep --color=auto'
+    alias egrep='egrep --color=auto'
+fi
+
+# colored GCC warnings and errors
+#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
+
+# some more ls aliases
+alias ll='ls -alF'
+alias la='ls -A'
+alias l='ls -CF'
+
+# Add an "alert" alias for long running commands.  Use like so:
+#   sleep 10; alert
+alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
+
+# Alias definitions.
+# You may want to put all your additions into a separate file like
+# ~/.bash_aliases, instead of adding them here directly.
+# See /usr/share/doc/bash-doc/examples in the bash-doc package.
+
+if [ -f ~/.bash_aliases ]; then
+    . ~/.bash_aliases
+fi
+
+# enable programmable completion features (you don't need to enable
+# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
+# sources /etc/bash.bashrc).
+if ! shopt -oq posix; then
+  if [ -f /usr/share/bash-completion/bash_completion ]; then
+    . /usr/share/bash-completion/bash_completion
+  elif [ -f /etc/bash_completion ]; then
+    . /etc/bash_completion
+  fi
+fi
diff --git a/etc/skel/.profile b/etc/skel/.profile
new file mode 100644 (file)
index 0000000..d89ea5a
--- /dev/null
@@ -0,0 +1,27 @@
+# ~/.profile: executed by the command interpreter for login shells.
+# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
+# exists.
+# see /usr/share/doc/bash/examples/startup-files for examples.
+# the files are located in the bash-doc package.
+
+# the default umask is set in /etc/profile; for setting the umask
+# for ssh logins, install and configure the libpam-umask package.
+#umask 022
+
+# if running bash
+if [ -n "$BASH_VERSION" ]; then
+    # include .bashrc if it exists
+    if [ -f "$HOME/.bashrc" ]; then
+       . "$HOME/.bashrc"
+    fi
+fi
+
+# set PATH so it includes user's private bin if it exists
+if [ -d "$HOME/bin" ] ; then
+    PATH="$HOME/bin:$PATH"
+fi
+
+# set PATH so it includes user's private bin if it exists
+if [ -d "$HOME/.local/bin" ] ; then
+    PATH="$HOME/.local/bin:$PATH"
+fi
diff --git a/etc/smartd.conf b/etc/smartd.conf
new file mode 100644 (file)
index 0000000..7c80e21
--- /dev/null
@@ -0,0 +1,149 @@
+# Sample configuration file for smartd.  See man smartd.conf.
+
+# Home page is: http://www.smartmontools.org
+
+# smartd will re-read the configuration file if it receives a HUP
+# signal
+
+# The file gives a list of devices to monitor using smartd, with one
+# device per line. Text after a hash (#) is ignored, and you may use
+# spaces and tabs for white space. You may use '\' to continue lines.
+
+# You can usually identify which hard disks are on your system by
+# looking in /proc/ide and in /proc/scsi.
+
+# The word DEVICESCAN will cause any remaining lines in this
+# configuration file to be ignored: it tells smartd to scan for all
+# ATA and SCSI devices.  DEVICESCAN may be followed by any of the
+# Directives listed below, which will be applied to all devices that
+# are found.  Most users should comment out DEVICESCAN and explicitly
+# list the devices that they wish to monitor.
+DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner
+
+# Alternative setting to ignore temperature and power-on hours reports
+# in syslog.
+#DEVICESCAN -I 194 -I 231 -I 9
+
+# Alternative setting to report more useful raw temperature in syslog.
+#DEVICESCAN -R 194 -R 231 -I 9
+
+# Alternative setting to report raw temperature changes >= 5 Celsius
+# and min/max temperatures.
+#DEVICESCAN -I 194 -I 231 -I 9 -W 5
+
+# First ATA/SATA or SCSI/SAS disk.  Monitor all attributes, enable
+# automatic online data collection, automatic Attribute autosave, and
+# start a short self-test every day between 2-3am, and a long self test
+# Saturdays between 3-4am.
+#/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03)
+
+# Monitor SMART status, ATA Error Log, Self-test log, and track
+# changes in all attributes except for attribute 194
+#/dev/sdb -H -l error -l selftest -t -I 194
+
+# Monitor all attributes except normalized Temperature (usually 194),
+# but track Temperature changes >= 4 Celsius, report Temperatures
+# >= 45 Celsius and changes in Raw value of Reallocated_Sector_Ct (5).
+# Send mail on SMART failures or when Temperature is >= 55 Celsius.
+#/dev/sdc -a -I 194 -W 4,45,55 -R 5 -m admin@example.com
+
+# An ATA disk may appear as a SCSI device to the OS. If a SCSI to
+# ATA Translation (SAT) layer is between the OS and the device then
+# this can be flagged with the '-d sat' option. This situation may
+# become common with SATA disks in SAS and FC environments.
+# /dev/sda -a -d sat
+
+# A very silent check.  Only report SMART health status if it fails
+# But send an email in this case
+#/dev/sdc -H -C 0 -U 0 -m admin@example.com
+
+# First two SCSI disks.  This will monitor everything that smartd can
+# monitor.  Start extended self-tests Wednesdays between 6-7pm and
+# Sundays between 1-2 am
+#/dev/sda -d scsi -s L/../../3/18
+#/dev/sdb -d scsi -s L/../../7/01
+
+# Monitor 4 ATA disks connected to a 3ware 6/7/8000 controller which uses
+# the 3w-xxxx driver. Start long self-tests Sundays between 1-2, 2-3, 3-4, 
+# and 4-5 am.
+# NOTE: starting with the Linux 2.6 kernel series, the /dev/sdX interface
+# is DEPRECATED.  Use the /dev/tweN character device interface instead.
+# For example /dev/twe0, /dev/twe1, and so on.
+#/dev/sdc -d 3ware,0 -a -s L/../../7/01
+#/dev/sdc -d 3ware,1 -a -s L/../../7/02
+#/dev/sdc -d 3ware,2 -a -s L/../../7/03
+#/dev/sdc -d 3ware,3 -a -s L/../../7/04
+
+# Monitor 2 ATA disks connected to a 3ware 9000 controller which
+# uses the 3w-9xxx driver (Linux, FreeBSD). Start long self-tests Tuesdays
+# between 1-2 and 3-4 am.
+#/dev/twa0 -d 3ware,0 -a -s L/../../2/01
+#/dev/twa0 -d 3ware,1 -a -s L/../../2/03
+
+# Monitor 2 SATA (not SAS) disks connected to a 3ware 9000 controller which
+# uses the 3w-sas driver (Linux). Start long self-tests Tuesdays
+# between 1-2 and 3-4 am.
+# On FreeBSD /dev/tws0 should be used instead
+#/dev/twl0 -d 3ware,0 -a -s L/../../2/01
+#/dev/twl0 -d 3ware,1 -a -s L/../../2/03
+
+# Same as above for Windows. Option '-d 3ware,N' is not necessary,
+# disk (port) number is specified in device name.
+# NOTE: On Windows, DEVICESCAN works also for 3ware controllers.
+#/dev/hdc,0 -a -s L/../../2/01
+#/dev/hdc,1 -a -s L/../../2/03
+#
+# Monitor 2 disks connected to the first HP SmartArray controller which
+# uses the cciss driver. Start long tests on Sunday nights and short
+# self-tests every night and send errors to root
+#/dev/sda -d cciss,0 -a -s (L/../../7/02|S/../.././02) -m root
+#/dev/sda -d cciss,1 -a -s (L/../../7/03|S/../.././03) -m root
+
+# Monitor 3 ATA disks directly connected to a HighPoint RocketRAID. Start long
+# self-tests Sundays between 1-2, 2-3, and 3-4 am. 
+#/dev/sdd -d hpt,1/1 -a -s L/../../7/01
+#/dev/sdd -d hpt,1/2 -a -s L/../../7/02
+#/dev/sdd -d hpt,1/3 -a -s L/../../7/03
+
+# Monitor 2 ATA disks connected to the same PMPort which connected to the
+# HighPoint RocketRAID. Start long self-tests Tuesdays between 1-2 and 3-4 am
+#/dev/sdd -d hpt,1/4/1 -a -s L/../../2/01
+#/dev/sdd -d hpt,1/4/2 -a -s L/../../2/03
+
+# HERE IS A LIST OF DIRECTIVES FOR THIS CONFIGURATION FILE.
+# PLEASE SEE THE smartd.conf MAN PAGE FOR DETAILS
+#
+#   -d TYPE Set the device type: ata, scsi, marvell, removable, 3ware,N, hpt,L/M/N
+#   -T TYPE set the tolerance to one of: normal, permissive
+#   -o VAL  Enable/disable automatic offline tests (on/off)
+#   -S VAL  Enable/disable attribute autosave (on/off)
+#   -n MODE No check. MODE is one of: never, sleep, standby, idle
+#   -H      Monitor SMART Health Status, report if failed
+#   -l TYPE Monitor SMART log.  Type is one of: error, selftest
+#   -f      Monitor for failure of any 'Usage' Attributes
+#   -m ADD  Send warning email to ADD for -H, -l error, -l selftest, and -f
+#   -M TYPE Modify email warning behavior (see man page)
+#   -s REGE Start self-test when type/date matches regular expression (see man page)
+#   -p      Report changes in 'Prefailure' Normalized Attributes
+#   -u      Report changes in 'Usage' Normalized Attributes
+#   -t      Equivalent to -p and -u Directives
+#   -r ID   Also report Raw values of Attribute ID with -p, -u or -t
+#   -R ID   Track changes in Attribute ID Raw value with -p, -u or -t
+#   -i ID   Ignore Attribute ID for -f Directive
+#   -I ID   Ignore Attribute ID for -p, -u or -t Directive
+#   -C ID   Report if Current Pending Sector count non-zero
+#   -U ID   Report if Offline Uncorrectable count non-zero
+#   -W D,I,C Monitor Temperature D)ifference, I)nformal limit, C)ritical limit
+#   -v N,ST Modifies labeling of Attribute N (see man page)
+#   -a      Default: equivalent to -H -f -t -l error -l selftest -C 197 -U 198
+#   -F TYPE Use firmware bug workaround. Type is one of: none, samsung
+#   -P TYPE Drive-specific presets: use, ignore, show, showall
+#    #      Comment: text after a hash sign is ignored
+#    \      Line continuation character
+# Attribute ID is a decimal integer 1 <= ID <= 255
+# except for -C and -U, where ID = 0 turns them off.
+# All but -d, -m and -M Directives are only implemented for ATA devices
+#
+# If the test string DEVICESCAN is the first uncommented text
+# then smartd will scan for devices.
+# DEVICESCAN may be followed by any desired Directives.
diff --git a/etc/smartmontools/run.d/10mail b/etc/smartmontools/run.d/10mail
new file mode 100755 (executable)
index 0000000..f921a33
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/bash -e
+
+# Send mail if /usr/bin/mail exists
+if ! [ -x /usr/bin/mail ]; then
+       echo "Your system does not have /usr/bin/mail.  Install the mailx or mailutils package" 
+       exit 1
+fi
+
+input=$1
+shift
+
+/usr/bin/mail "$@" < $input
+
diff --git a/etc/sos.conf b/etc/sos.conf
new file mode 100644 (file)
index 0000000..ad15af8
--- /dev/null
@@ -0,0 +1,11 @@
+[general]
+#verbose = 3
+#verify = yes
+#batch = yes
+#log-size = 15
+
+[plugins]
+#disable = rpm, selinux, dovecot
+
+[tunables]
+#rpm.rpmva = off
diff --git a/etc/sos/sos.conf b/etc/sos/sos.conf
new file mode 100644 (file)
index 0000000..26778d2
--- /dev/null
@@ -0,0 +1,37 @@
+[global]
+# Set global options here that are not component specific
+# If you would like one global default value to be specifically overridden for
+# just one component, but not others, you may override that value in the
+# component specific section below
+#verbose = 3
+#verify = yes
+#batch = yes
+#log-size = 15
+tmp-dir = /tmp
+
+[report]
+# Options that will apply to any `sos report` run should be listed here.
+# Note that the option names *must* be the long-form name as seen in --help
+# output. Use a comma for list delimitations.
+#skip-plugins = rpm, selinux, dovecot
+#enable-plugins = host,logs
+
+[collect]
+# Options that will apply to any `sos collect` run should be listed here.
+# Note that the option names *must* be the long-form name as seen in --help
+# output. Use a comma for list delimitations
+#primary = myhost.example.com
+#ssh-key = /home/user/.ssh/mykey
+#password = true
+
+[clean]
+# Options that will apply to any `sos clean|mask` run should be listed here.
+# Note that the option names *must* be the long-form name as seen in --help
+# output. Use a comma for list delimitations
+#domains = mydomain.com
+#no-update = true
+
+[plugin_options]
+# Specify any plugin options and their values here. These options take the form
+# plugin_name.option_name = value
+#rpm.rpmva = off
diff --git a/etc/ssl/certs/002c0b4f.0 b/etc/ssl/certs/002c0b4f.0
new file mode 120000 (symlink)
index 0000000..82ecbd2
--- /dev/null
@@ -0,0 +1 @@
+GlobalSign_Root_R46.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/02265526.0 b/etc/ssl/certs/02265526.0
new file mode 120000 (symlink)
index 0000000..8f7ad29
--- /dev/null
@@ -0,0 +1 @@
+Entrust_Root_Certification_Authority_-_G2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/03179a64.0 b/etc/ssl/certs/03179a64.0
new file mode 120000 (symlink)
index 0000000..5167cdf
--- /dev/null
@@ -0,0 +1 @@
+Staat_der_Nederlanden_EV_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/062cdee6.0 b/etc/ssl/certs/062cdee6.0
new file mode 120000 (symlink)
index 0000000..2612328
--- /dev/null
@@ -0,0 +1 @@
+GlobalSign_Root_CA_-_R3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/064e0aa9.0 b/etc/ssl/certs/064e0aa9.0
new file mode 120000 (symlink)
index 0000000..de6f546
--- /dev/null
@@ -0,0 +1 @@
+QuoVadis_Root_CA_2_G3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/06dc52d5.0 b/etc/ssl/certs/06dc52d5.0
new file mode 120000 (symlink)
index 0000000..68ea29d
--- /dev/null
@@ -0,0 +1 @@
+SSL.com_EV_Root_Certification_Authority_RSA_R2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/09789157.0 b/etc/ssl/certs/09789157.0
new file mode 120000 (symlink)
index 0000000..1ac9c0e
--- /dev/null
@@ -0,0 +1 @@
+Starfield_Services_Root_Certificate_Authority_-_G2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/0a775a30.0 b/etc/ssl/certs/0a775a30.0
new file mode 120000 (symlink)
index 0000000..1f13783
--- /dev/null
@@ -0,0 +1 @@
+GTS_Root_R3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/0b1b94ef.0 b/etc/ssl/certs/0b1b94ef.0
new file mode 120000 (symlink)
index 0000000..69ff81e
--- /dev/null
@@ -0,0 +1 @@
+CFCA_EV_ROOT.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/0bf05006.0 b/etc/ssl/certs/0bf05006.0
new file mode 120000 (symlink)
index 0000000..781007b
--- /dev/null
@@ -0,0 +1 @@
+SSL.com_Root_Certification_Authority_ECC.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/0f5dc4f3.0 b/etc/ssl/certs/0f5dc4f3.0
new file mode 120000 (symlink)
index 0000000..6184212
--- /dev/null
@@ -0,0 +1 @@
+UCA_Extended_Validation_Root.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/0f6fa695.0 b/etc/ssl/certs/0f6fa695.0
new file mode 120000 (symlink)
index 0000000..48a515c
--- /dev/null
@@ -0,0 +1 @@
+GDCA_TrustAUTH_R5_ROOT.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/1001acf7.0 b/etc/ssl/certs/1001acf7.0
new file mode 120000 (symlink)
index 0000000..2478d44
--- /dev/null
@@ -0,0 +1 @@
+GTS_Root_R1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/106f3e4d.0 b/etc/ssl/certs/106f3e4d.0
new file mode 120000 (symlink)
index 0000000..433d7b1
--- /dev/null
@@ -0,0 +1 @@
+Entrust_Root_Certification_Authority_-_EC1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/14bc7599.0 b/etc/ssl/certs/14bc7599.0
new file mode 120000 (symlink)
index 0000000..82d621f
--- /dev/null
@@ -0,0 +1 @@
+emSign_ECC_Root_CA_-_G3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/1636090b.0 b/etc/ssl/certs/1636090b.0
new file mode 120000 (symlink)
index 0000000..7844616
--- /dev/null
@@ -0,0 +1 @@
+Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/18856ac4.0 b/etc/ssl/certs/18856ac4.0
new file mode 120000 (symlink)
index 0000000..04dacae
--- /dev/null
@@ -0,0 +1 @@
+SecureSign_RootCA11.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/1d3472b9.0 b/etc/ssl/certs/1d3472b9.0
new file mode 120000 (symlink)
index 0000000..b76c9bc
--- /dev/null
@@ -0,0 +1 @@
+GlobalSign_ECC_Root_CA_-_R5.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/1e08bfd1.0 b/etc/ssl/certs/1e08bfd1.0
new file mode 120000 (symlink)
index 0000000..8445bf8
--- /dev/null
@@ -0,0 +1 @@
+IdenTrust_Public_Sector_Root_CA_1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/1e09d511.0 b/etc/ssl/certs/1e09d511.0
new file mode 120000 (symlink)
index 0000000..a35af48
--- /dev/null
@@ -0,0 +1 @@
+T-TeleSec_GlobalRoot_Class_2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/244b5494.0 b/etc/ssl/certs/244b5494.0
new file mode 120000 (symlink)
index 0000000..0a20d14
--- /dev/null
@@ -0,0 +1 @@
+DigiCert_High_Assurance_EV_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/279e4bfd b/etc/ssl/certs/279e4bfd
new file mode 120000 (symlink)
index 0000000..e78b135
--- /dev/null
@@ -0,0 +1 @@
+ssl-cert-snakeoil.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/279e4bfd.0 b/etc/ssl/certs/279e4bfd.0
new file mode 120000 (symlink)
index 0000000..e78b135
--- /dev/null
@@ -0,0 +1 @@
+ssl-cert-snakeoil.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/2923b3f9.0 b/etc/ssl/certs/2923b3f9.0
new file mode 120000 (symlink)
index 0000000..9186210
--- /dev/null
@@ -0,0 +1 @@
+emSign_Root_CA_-_G1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/2ae6433e.0 b/etc/ssl/certs/2ae6433e.0
new file mode 120000 (symlink)
index 0000000..b70b358
--- /dev/null
@@ -0,0 +1 @@
+CA_Disig_Root_R2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/2b349938.0 b/etc/ssl/certs/2b349938.0
new file mode 120000 (symlink)
index 0000000..8bd8025
--- /dev/null
@@ -0,0 +1 @@
+AffirmTrust_Commercial.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/32888f65.0 b/etc/ssl/certs/32888f65.0
new file mode 120000 (symlink)
index 0000000..39dde35
--- /dev/null
@@ -0,0 +1 @@
+Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/349f2832.0 b/etc/ssl/certs/349f2832.0
new file mode 120000 (symlink)
index 0000000..e5c5ace
--- /dev/null
@@ -0,0 +1 @@
+EC-ACC.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/3513523f.0 b/etc/ssl/certs/3513523f.0
new file mode 120000 (symlink)
index 0000000..41d74a4
--- /dev/null
@@ -0,0 +1 @@
+DigiCert_Global_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/3bde41ac.0 b/etc/ssl/certs/3bde41ac.0
new file mode 120000 (symlink)
index 0000000..634e72b
--- /dev/null
@@ -0,0 +1 @@
+Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/3e44d2f7.0 b/etc/ssl/certs/3e44d2f7.0
new file mode 120000 (symlink)
index 0000000..a2d890d
--- /dev/null
@@ -0,0 +1 @@
+TrustCor_RootCert_CA-2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/3e45d192.0 b/etc/ssl/certs/3e45d192.0
new file mode 120000 (symlink)
index 0000000..33456ca
--- /dev/null
@@ -0,0 +1 @@
+Hongkong_Post_Root_CA_1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/3fb36b73.0 b/etc/ssl/certs/3fb36b73.0
new file mode 120000 (symlink)
index 0000000..0ec2e82
--- /dev/null
@@ -0,0 +1 @@
+NAVER_Global_Root_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/40193066.0 b/etc/ssl/certs/40193066.0
new file mode 120000 (symlink)
index 0000000..f41c198
--- /dev/null
@@ -0,0 +1 @@
+Certum_Trusted_Network_CA_2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/4042bcee.0 b/etc/ssl/certs/4042bcee.0
new file mode 120000 (symlink)
index 0000000..6dafe28
--- /dev/null
@@ -0,0 +1 @@
+ISRG_Root_X1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/40547a79.0 b/etc/ssl/certs/40547a79.0
new file mode 120000 (symlink)
index 0000000..8c89a29
--- /dev/null
@@ -0,0 +1 @@
+COMODO_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/406c9bb1.0 b/etc/ssl/certs/406c9bb1.0
new file mode 120000 (symlink)
index 0000000..8f34a5a
--- /dev/null
@@ -0,0 +1 @@
+emSign_Root_CA_-_C1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/4304c5e5.0 b/etc/ssl/certs/4304c5e5.0
new file mode 120000 (symlink)
index 0000000..f252a76
--- /dev/null
@@ -0,0 +1 @@
+Network_Solutions_Certificate_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/48bec511.0 b/etc/ssl/certs/48bec511.0
new file mode 120000 (symlink)
index 0000000..a1b189b
--- /dev/null
@@ -0,0 +1 @@
+Certum_Trusted_Network_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/4a6481c9.0 b/etc/ssl/certs/4a6481c9.0
new file mode 120000 (symlink)
index 0000000..e887f3c
--- /dev/null
@@ -0,0 +1 @@
+GlobalSign_Root_CA_-_R2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/4b718d9b.0 b/etc/ssl/certs/4b718d9b.0
new file mode 120000 (symlink)
index 0000000..64c0c33
--- /dev/null
@@ -0,0 +1 @@
+emSign_ECC_Root_CA_-_C3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/4bfab552.0 b/etc/ssl/certs/4bfab552.0
new file mode 120000 (symlink)
index 0000000..c5b483e
--- /dev/null
@@ -0,0 +1 @@
+Starfield_Root_Certificate_Authority_-_G2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/4f316efb.0 b/etc/ssl/certs/4f316efb.0
new file mode 120000 (symlink)
index 0000000..855a9c7
--- /dev/null
@@ -0,0 +1 @@
+SwissSign_Gold_CA_-_G2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/5273a94c.0 b/etc/ssl/certs/5273a94c.0
new file mode 120000 (symlink)
index 0000000..c775a2b
--- /dev/null
@@ -0,0 +1 @@
+E-Tugra_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/5443e9e3.0 b/etc/ssl/certs/5443e9e3.0
new file mode 120000 (symlink)
index 0000000..391dfda
--- /dev/null
@@ -0,0 +1 @@
+T-TeleSec_GlobalRoot_Class_3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/54657681.0 b/etc/ssl/certs/54657681.0
new file mode 120000 (symlink)
index 0000000..05e0f1d
--- /dev/null
@@ -0,0 +1 @@
+Buypass_Class_2_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/57bcb2da.0 b/etc/ssl/certs/57bcb2da.0
new file mode 120000 (symlink)
index 0000000..676f46e
--- /dev/null
@@ -0,0 +1 @@
+SwissSign_Silver_CA_-_G2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/5ad8a5d6.0 b/etc/ssl/certs/5ad8a5d6.0
new file mode 120000 (symlink)
index 0000000..72b60a6
--- /dev/null
@@ -0,0 +1 @@
+GlobalSign_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/5cd81ad7.0 b/etc/ssl/certs/5cd81ad7.0
new file mode 120000 (symlink)
index 0000000..aabfe30
--- /dev/null
@@ -0,0 +1 @@
+TeliaSonera_Root_CA_v1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/5d3033c5.0 b/etc/ssl/certs/5d3033c5.0
new file mode 120000 (symlink)
index 0000000..53dceb0
--- /dev/null
@@ -0,0 +1 @@
+TrustCor_RootCert_CA-1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/5e98733a.0 b/etc/ssl/certs/5e98733a.0
new file mode 120000 (symlink)
index 0000000..b15c128
--- /dev/null
@@ -0,0 +1 @@
+Entrust_Root_Certification_Authority_-_G4.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/5f15c80c.0 b/etc/ssl/certs/5f15c80c.0
new file mode 120000 (symlink)
index 0000000..1372ca3
--- /dev/null
@@ -0,0 +1 @@
+TWCA_Global_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/5f618aec.0 b/etc/ssl/certs/5f618aec.0
new file mode 120000 (symlink)
index 0000000..65e8e80
--- /dev/null
@@ -0,0 +1 @@
+certSIGN_Root_CA_G2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/607986c7.0 b/etc/ssl/certs/607986c7.0
new file mode 120000 (symlink)
index 0000000..fc7786a
--- /dev/null
@@ -0,0 +1 @@
+DigiCert_Global_Root_G2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/626dceaf.0 b/etc/ssl/certs/626dceaf.0
new file mode 120000 (symlink)
index 0000000..c0c65bb
--- /dev/null
@@ -0,0 +1 @@
+GTS_Root_R2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/653b494a.0 b/etc/ssl/certs/653b494a.0
new file mode 120000 (symlink)
index 0000000..6481493
--- /dev/null
@@ -0,0 +1 @@
+Baltimore_CyberTrust_Root.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/68dd7389.0 b/etc/ssl/certs/68dd7389.0
new file mode 120000 (symlink)
index 0000000..f75a6f3
--- /dev/null
@@ -0,0 +1 @@
+Hongkong_Post_Root_CA_3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/6b99d060.0 b/etc/ssl/certs/6b99d060.0
new file mode 120000 (symlink)
index 0000000..032a296
--- /dev/null
@@ -0,0 +1 @@
+Entrust_Root_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/6d41d539.0 b/etc/ssl/certs/6d41d539.0
new file mode 120000 (symlink)
index 0000000..07ac44f
--- /dev/null
@@ -0,0 +1 @@
+Amazon_Root_CA_2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/6fa5da56.0 b/etc/ssl/certs/6fa5da56.0
new file mode 120000 (symlink)
index 0000000..0dde01c
--- /dev/null
@@ -0,0 +1 @@
+SSL.com_Root_Certification_Authority_RSA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/706f604c.0 b/etc/ssl/certs/706f604c.0
new file mode 120000 (symlink)
index 0000000..04ca90b
--- /dev/null
@@ -0,0 +1 @@
+XRamp_Global_CA_Root.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/749e9e03.0 b/etc/ssl/certs/749e9e03.0
new file mode 120000 (symlink)
index 0000000..d675744
--- /dev/null
@@ -0,0 +1 @@
+QuoVadis_Root_CA_1_G3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/75d1b2ed.0 b/etc/ssl/certs/75d1b2ed.0
new file mode 120000 (symlink)
index 0000000..275c6c1
--- /dev/null
@@ -0,0 +1 @@
+DigiCert_Trusted_Root_G4.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/76cb8f92.0 b/etc/ssl/certs/76cb8f92.0
new file mode 120000 (symlink)
index 0000000..f560787
--- /dev/null
@@ -0,0 +1 @@
+Cybertrust_Global_Root.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/76faf6c0.0 b/etc/ssl/certs/76faf6c0.0
new file mode 120000 (symlink)
index 0000000..6b6df23
--- /dev/null
@@ -0,0 +1 @@
+QuoVadis_Root_CA_3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/7719f463.0 b/etc/ssl/certs/7719f463.0
new file mode 120000 (symlink)
index 0000000..5130bf1
--- /dev/null
@@ -0,0 +1 @@
+Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/773e07ad.0 b/etc/ssl/certs/773e07ad.0
new file mode 120000 (symlink)
index 0000000..44b38dd
--- /dev/null
@@ -0,0 +1 @@
+OISTE_WISeKey_Global_Root_GC_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/7aaf71c0.0 b/etc/ssl/certs/7aaf71c0.0
new file mode 120000 (symlink)
index 0000000..86ed3f8
--- /dev/null
@@ -0,0 +1 @@
+TrustCor_ECA-1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/7f3d5d1d.0 b/etc/ssl/certs/7f3d5d1d.0
new file mode 120000 (symlink)
index 0000000..db79c20
--- /dev/null
@@ -0,0 +1 @@
+DigiCert_Assured_ID_Root_G3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/8160b96c.0 b/etc/ssl/certs/8160b96c.0
new file mode 120000 (symlink)
index 0000000..d45e12b
--- /dev/null
@@ -0,0 +1 @@
+Microsec_e-Szigno_Root_CA_2009.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/8cb5ee0f.0 b/etc/ssl/certs/8cb5ee0f.0
new file mode 120000 (symlink)
index 0000000..20b36be
--- /dev/null
@@ -0,0 +1 @@
+Amazon_Root_CA_3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/8d86cdd1.0 b/etc/ssl/certs/8d86cdd1.0
new file mode 120000 (symlink)
index 0000000..934c8ea
--- /dev/null
@@ -0,0 +1 @@
+certSIGN_ROOT_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/8d89cda1.0 b/etc/ssl/certs/8d89cda1.0
new file mode 120000 (symlink)
index 0000000..7e0403c
--- /dev/null
@@ -0,0 +1 @@
+Microsoft_ECC_Root_Certificate_Authority_2017.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/930ac5d2.0 b/etc/ssl/certs/930ac5d2.0
new file mode 120000 (symlink)
index 0000000..08b492b
--- /dev/null
@@ -0,0 +1 @@
+Actalis_Authentication_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/93bc0acc.0 b/etc/ssl/certs/93bc0acc.0
new file mode 120000 (symlink)
index 0000000..a7ae5c7
--- /dev/null
@@ -0,0 +1 @@
+AffirmTrust_Networking.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/9482e63a.0 b/etc/ssl/certs/9482e63a.0
new file mode 120000 (symlink)
index 0000000..74f3226
--- /dev/null
@@ -0,0 +1 @@
+Certum_EC-384_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/988a38cb.0 b/etc/ssl/certs/988a38cb.0
new file mode 120000 (symlink)
index 0000000..642765a
--- /dev/null
@@ -0,0 +1 @@
+NetLock_Arany_=Class_Gold=_Főtanúsítvány.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/9b5697b0.0 b/etc/ssl/certs/9b5697b0.0
new file mode 120000 (symlink)
index 0000000..293dad9
--- /dev/null
@@ -0,0 +1 @@
+Trustwave_Global_ECC_P256_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/9c8dfbd4.0 b/etc/ssl/certs/9c8dfbd4.0
new file mode 120000 (symlink)
index 0000000..55228f5
--- /dev/null
@@ -0,0 +1 @@
+AffirmTrust_Premium_ECC.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/9d04f354.0 b/etc/ssl/certs/9d04f354.0
new file mode 120000 (symlink)
index 0000000..a9af253
--- /dev/null
@@ -0,0 +1 @@
+DigiCert_Assured_ID_Root_G2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/ACCVRAIZ1.pem b/etc/ssl/certs/ACCVRAIZ1.pem
new file mode 120000 (symlink)
index 0000000..ae93a02
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/ACCVRAIZ1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/AC_RAIZ_FNMT-RCM.pem b/etc/ssl/certs/AC_RAIZ_FNMT-RCM.pem
new file mode 120000 (symlink)
index 0000000..b535550
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/AC_RAIZ_FNMT-RCM.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/AC_RAIZ_FNMT-RCM_SERVIDORES_SEGUROS.pem b/etc/ssl/certs/AC_RAIZ_FNMT-RCM_SERVIDORES_SEGUROS.pem
new file mode 120000 (symlink)
index 0000000..51b701c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/AC_RAIZ_FNMT-RCM_SERVIDORES_SEGUROS.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/ANF_Secure_Server_Root_CA.pem b/etc/ssl/certs/ANF_Secure_Server_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..97fca18
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/ANF_Secure_Server_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Actalis_Authentication_Root_CA.pem b/etc/ssl/certs/Actalis_Authentication_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..a6f77f0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Actalis_Authentication_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/AffirmTrust_Commercial.pem b/etc/ssl/certs/AffirmTrust_Commercial.pem
new file mode 120000 (symlink)
index 0000000..471d3dc
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/AffirmTrust_Commercial.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/AffirmTrust_Networking.pem b/etc/ssl/certs/AffirmTrust_Networking.pem
new file mode 120000 (symlink)
index 0000000..76cb81b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/AffirmTrust_Networking.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/AffirmTrust_Premium.pem b/etc/ssl/certs/AffirmTrust_Premium.pem
new file mode 120000 (symlink)
index 0000000..d854d62
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/AffirmTrust_Premium.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/AffirmTrust_Premium_ECC.pem b/etc/ssl/certs/AffirmTrust_Premium_ECC.pem
new file mode 120000 (symlink)
index 0000000..b502eff
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/AffirmTrust_Premium_ECC.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Amazon_Root_CA_1.pem b/etc/ssl/certs/Amazon_Root_CA_1.pem
new file mode 120000 (symlink)
index 0000000..25f9e61
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Amazon_Root_CA_1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Amazon_Root_CA_2.pem b/etc/ssl/certs/Amazon_Root_CA_2.pem
new file mode 120000 (symlink)
index 0000000..92f7603
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Amazon_Root_CA_2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Amazon_Root_CA_3.pem b/etc/ssl/certs/Amazon_Root_CA_3.pem
new file mode 120000 (symlink)
index 0000000..00fb4f1
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Amazon_Root_CA_3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Amazon_Root_CA_4.pem b/etc/ssl/certs/Amazon_Root_CA_4.pem
new file mode 120000 (symlink)
index 0000000..f4cf700
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Amazon_Root_CA_4.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Atos_TrustedRoot_2011.pem b/etc/ssl/certs/Atos_TrustedRoot_2011.pem
new file mode 120000 (symlink)
index 0000000..ae32ea5
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Atos_TrustedRoot_2011.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem b/etc/ssl/certs/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.pem
new file mode 120000 (symlink)
index 0000000..029ce71
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Autoridad_de_Certificacion_Firmaprofesional_CIF_A62634068.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Baltimore_CyberTrust_Root.pem b/etc/ssl/certs/Baltimore_CyberTrust_Root.pem
new file mode 120000 (symlink)
index 0000000..b99617d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Baltimore_CyberTrust_Root.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Buypass_Class_2_Root_CA.pem b/etc/ssl/certs/Buypass_Class_2_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..dcef189
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Buypass_Class_2_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Buypass_Class_3_Root_CA.pem b/etc/ssl/certs/Buypass_Class_3_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..8810e8a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Buypass_Class_3_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/CA_Disig_Root_R2.pem b/etc/ssl/certs/CA_Disig_Root_R2.pem
new file mode 120000 (symlink)
index 0000000..320fcab
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/CA_Disig_Root_R2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/CFCA_EV_ROOT.pem b/etc/ssl/certs/CFCA_EV_ROOT.pem
new file mode 120000 (symlink)
index 0000000..5c79296
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/CFCA_EV_ROOT.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/COMODO_Certification_Authority.pem b/etc/ssl/certs/COMODO_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..cb67766
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/COMODO_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/COMODO_ECC_Certification_Authority.pem b/etc/ssl/certs/COMODO_ECC_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..3c84f75
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/COMODO_ECC_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/COMODO_RSA_Certification_Authority.pem b/etc/ssl/certs/COMODO_RSA_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..ffb0fae
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/COMODO_RSA_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Certigna.pem b/etc/ssl/certs/Certigna.pem
new file mode 120000 (symlink)
index 0000000..1e90b14
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Certigna.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Certigna_Root_CA.pem b/etc/ssl/certs/Certigna_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..9f68261
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Certigna_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Certum_EC-384_CA.pem b/etc/ssl/certs/Certum_EC-384_CA.pem
new file mode 120000 (symlink)
index 0000000..f4f59ef
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Certum_EC-384_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Certum_Trusted_Network_CA.pem b/etc/ssl/certs/Certum_Trusted_Network_CA.pem
new file mode 120000 (symlink)
index 0000000..be5f72e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Certum_Trusted_Network_CA_2.pem b/etc/ssl/certs/Certum_Trusted_Network_CA_2.pem
new file mode 120000 (symlink)
index 0000000..e33d5f7
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Certum_Trusted_Network_CA_2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Certum_Trusted_Root_CA.pem b/etc/ssl/certs/Certum_Trusted_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..6ed83a3
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Certum_Trusted_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Comodo_AAA_Services_root.pem b/etc/ssl/certs/Comodo_AAA_Services_root.pem
new file mode 120000 (symlink)
index 0000000..d9e0860
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Comodo_AAA_Services_root.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Cybertrust_Global_Root.pem b/etc/ssl/certs/Cybertrust_Global_Root.pem
new file mode 120000 (symlink)
index 0000000..8fe5b57
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Cybertrust_Global_Root.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/D-TRUST_Root_Class_3_CA_2_2009.pem b/etc/ssl/certs/D-TRUST_Root_Class_3_CA_2_2009.pem
new file mode 120000 (symlink)
index 0000000..543d729
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_2009.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/D-TRUST_Root_Class_3_CA_2_EV_2009.pem b/etc/ssl/certs/D-TRUST_Root_Class_3_CA_2_EV_2009.pem
new file mode 120000 (symlink)
index 0000000..f6c52d8
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/D-TRUST_Root_Class_3_CA_2_EV_2009.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/DigiCert_Assured_ID_Root_CA.pem b/etc/ssl/certs/DigiCert_Assured_ID_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..e739c93
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/DigiCert_Assured_ID_Root_G2.pem b/etc/ssl/certs/DigiCert_Assured_ID_Root_G2.pem
new file mode 120000 (symlink)
index 0000000..02d6a4e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/DigiCert_Assured_ID_Root_G3.pem b/etc/ssl/certs/DigiCert_Assured_ID_Root_G3.pem
new file mode 120000 (symlink)
index 0000000..bb525d5
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/DigiCert_Assured_ID_Root_G3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/DigiCert_Global_Root_CA.pem b/etc/ssl/certs/DigiCert_Global_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..1761b75
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/DigiCert_Global_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/DigiCert_Global_Root_G2.pem b/etc/ssl/certs/DigiCert_Global_Root_G2.pem
new file mode 120000 (symlink)
index 0000000..c03bdf8
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/DigiCert_Global_Root_G3.pem b/etc/ssl/certs/DigiCert_Global_Root_G3.pem
new file mode 120000 (symlink)
index 0000000..cf3459e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/DigiCert_Global_Root_G3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/DigiCert_High_Assurance_EV_Root_CA.pem b/etc/ssl/certs/DigiCert_High_Assurance_EV_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..22f1d4e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/DigiCert_High_Assurance_EV_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/DigiCert_Trusted_Root_G4.pem b/etc/ssl/certs/DigiCert_Trusted_Root_G4.pem
new file mode 120000 (symlink)
index 0000000..d7acb0e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/DigiCert_Trusted_Root_G4.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/E-Tugra_Certification_Authority.pem b/etc/ssl/certs/E-Tugra_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..5f0b7a3
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/E-Tugra_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/EC-ACC.pem b/etc/ssl/certs/EC-ACC.pem
new file mode 120000 (symlink)
index 0000000..fd61f89
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/EC-ACC.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Entrust.net_Premium_2048_Secure_Server_CA.pem b/etc/ssl/certs/Entrust.net_Premium_2048_Secure_Server_CA.pem
new file mode 120000 (symlink)
index 0000000..270df9d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Entrust.net_Premium_2048_Secure_Server_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Entrust_Root_Certification_Authority.pem b/etc/ssl/certs/Entrust_Root_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..7cb8439
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Entrust_Root_Certification_Authority_-_EC1.pem b/etc/ssl/certs/Entrust_Root_Certification_Authority_-_EC1.pem
new file mode 120000 (symlink)
index 0000000..0981741
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority_-_EC1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Entrust_Root_Certification_Authority_-_G2.pem b/etc/ssl/certs/Entrust_Root_Certification_Authority_-_G2.pem
new file mode 120000 (symlink)
index 0000000..ad49a19
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority_-_G2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Entrust_Root_Certification_Authority_-_G4.pem b/etc/ssl/certs/Entrust_Root_Certification_Authority_-_G4.pem
new file mode 120000 (symlink)
index 0000000..5f73086
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Entrust_Root_Certification_Authority_-_G4.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GDCA_TrustAUTH_R5_ROOT.pem b/etc/ssl/certs/GDCA_TrustAUTH_R5_ROOT.pem
new file mode 120000 (symlink)
index 0000000..02c5d2c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GDCA_TrustAUTH_R5_ROOT.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GLOBALTRUST_2020.pem b/etc/ssl/certs/GLOBALTRUST_2020.pem
new file mode 120000 (symlink)
index 0000000..bace92e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GLOBALTRUST_2020.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GTS_Root_R1.pem b/etc/ssl/certs/GTS_Root_R1.pem
new file mode 120000 (symlink)
index 0000000..59c4f6a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GTS_Root_R1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GTS_Root_R2.pem b/etc/ssl/certs/GTS_Root_R2.pem
new file mode 120000 (symlink)
index 0000000..615e90b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GTS_Root_R2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GTS_Root_R3.pem b/etc/ssl/certs/GTS_Root_R3.pem
new file mode 120000 (symlink)
index 0000000..fc4117e
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GTS_Root_R3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GTS_Root_R4.pem b/etc/ssl/certs/GTS_Root_R4.pem
new file mode 120000 (symlink)
index 0000000..ca79230
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GTS_Root_R4.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GlobalSign_ECC_Root_CA_-_R4.pem b/etc/ssl/certs/GlobalSign_ECC_Root_CA_-_R4.pem
new file mode 120000 (symlink)
index 0000000..51ce324
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R4.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GlobalSign_ECC_Root_CA_-_R5.pem b/etc/ssl/certs/GlobalSign_ECC_Root_CA_-_R5.pem
new file mode 120000 (symlink)
index 0000000..4a26990
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GlobalSign_ECC_Root_CA_-_R5.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GlobalSign_Root_CA.pem b/etc/ssl/certs/GlobalSign_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..6dad871
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GlobalSign_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GlobalSign_Root_CA_-_R2.pem b/etc/ssl/certs/GlobalSign_Root_CA_-_R2.pem
new file mode 120000 (symlink)
index 0000000..f091759
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GlobalSign_Root_CA_-_R3.pem b/etc/ssl/certs/GlobalSign_Root_CA_-_R3.pem
new file mode 120000 (symlink)
index 0000000..b1db16b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GlobalSign_Root_CA_-_R6.pem b/etc/ssl/certs/GlobalSign_Root_CA_-_R6.pem
new file mode 120000 (symlink)
index 0000000..8540b63
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GlobalSign_Root_CA_-_R6.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GlobalSign_Root_E46.pem b/etc/ssl/certs/GlobalSign_Root_E46.pem
new file mode 120000 (symlink)
index 0000000..017346f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GlobalSign_Root_E46.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/GlobalSign_Root_R46.pem b/etc/ssl/certs/GlobalSign_Root_R46.pem
new file mode 120000 (symlink)
index 0000000..761318d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/GlobalSign_Root_R46.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Go_Daddy_Class_2_CA.pem b/etc/ssl/certs/Go_Daddy_Class_2_CA.pem
new file mode 120000 (symlink)
index 0000000..9a7502b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Go_Daddy_Class_2_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Go_Daddy_Root_Certificate_Authority_-_G2.pem b/etc/ssl/certs/Go_Daddy_Root_Certificate_Authority_-_G2.pem
new file mode 120000 (symlink)
index 0000000..9eec6e3
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Go_Daddy_Root_Certificate_Authority_-_G2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem b/etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.pem
new file mode 120000 (symlink)
index 0000000..577ae98
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_ECC_RootCA_2015.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem b/etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_RootCA_2011.pem
new file mode 120000 (symlink)
index 0000000..7420dab
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2011.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem b/etc/ssl/certs/Hellenic_Academic_and_Research_Institutions_RootCA_2015.pem
new file mode 120000 (symlink)
index 0000000..6e4d3af
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Hellenic_Academic_and_Research_Institutions_RootCA_2015.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Hongkong_Post_Root_CA_1.pem b/etc/ssl/certs/Hongkong_Post_Root_CA_1.pem
new file mode 120000 (symlink)
index 0000000..5439896
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Hongkong_Post_Root_CA_1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Hongkong_Post_Root_CA_3.pem b/etc/ssl/certs/Hongkong_Post_Root_CA_3.pem
new file mode 120000 (symlink)
index 0000000..d654292
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Hongkong_Post_Root_CA_3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/ISRG_Root_X1.pem b/etc/ssl/certs/ISRG_Root_X1.pem
new file mode 120000 (symlink)
index 0000000..d6053af
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/ISRG_Root_X1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/IdenTrust_Commercial_Root_CA_1.pem b/etc/ssl/certs/IdenTrust_Commercial_Root_CA_1.pem
new file mode 120000 (symlink)
index 0000000..02d40ff
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/IdenTrust_Commercial_Root_CA_1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/IdenTrust_Public_Sector_Root_CA_1.pem b/etc/ssl/certs/IdenTrust_Public_Sector_Root_CA_1.pem
new file mode 120000 (symlink)
index 0000000..25f7c77
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/IdenTrust_Public_Sector_Root_CA_1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Izenpe.com.pem b/etc/ssl/certs/Izenpe.com.pem
new file mode 120000 (symlink)
index 0000000..f751283
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Izenpe.com.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Microsec_e-Szigno_Root_CA_2009.pem b/etc/ssl/certs/Microsec_e-Szigno_Root_CA_2009.pem
new file mode 120000 (symlink)
index 0000000..3fefbf9
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Microsec_e-Szigno_Root_CA_2009.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Microsoft_ECC_Root_Certificate_Authority_2017.pem b/etc/ssl/certs/Microsoft_ECC_Root_Certificate_Authority_2017.pem
new file mode 120000 (symlink)
index 0000000..274bed0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Microsoft_ECC_Root_Certificate_Authority_2017.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Microsoft_RSA_Root_Certificate_Authority_2017.pem b/etc/ssl/certs/Microsoft_RSA_Root_Certificate_Authority_2017.pem
new file mode 120000 (symlink)
index 0000000..69c2092
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Microsoft_RSA_Root_Certificate_Authority_2017.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/NAVER_Global_Root_Certification_Authority.pem b/etc/ssl/certs/NAVER_Global_Root_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..e78a5db
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/NAVER_Global_Root_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/NetLock_Arany_=Class_Gold=_Főtanúsítvány.pem b/etc/ssl/certs/NetLock_Arany_=Class_Gold=_Főtanúsítvány.pem
new file mode 120000 (symlink)
index 0000000..8ac3081
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/NetLock_Arany_=Class_Gold=_Főtanúsítvány.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Network_Solutions_Certificate_Authority.pem b/etc/ssl/certs/Network_Solutions_Certificate_Authority.pem
new file mode 120000 (symlink)
index 0000000..1fb247a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Network_Solutions_Certificate_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/OISTE_WISeKey_Global_Root_GB_CA.pem b/etc/ssl/certs/OISTE_WISeKey_Global_Root_GB_CA.pem
new file mode 120000 (symlink)
index 0000000..3dbaca4
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GB_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/OISTE_WISeKey_Global_Root_GC_CA.pem b/etc/ssl/certs/OISTE_WISeKey_Global_Root_GC_CA.pem
new file mode 120000 (symlink)
index 0000000..2e1b517
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/OISTE_WISeKey_Global_Root_GC_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/QuoVadis_Root_CA_1_G3.pem b/etc/ssl/certs/QuoVadis_Root_CA_1_G3.pem
new file mode 120000 (symlink)
index 0000000..bab3e9f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_1_G3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/QuoVadis_Root_CA_2.pem b/etc/ssl/certs/QuoVadis_Root_CA_2.pem
new file mode 120000 (symlink)
index 0000000..4a64cb2
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/QuoVadis_Root_CA_2_G3.pem b/etc/ssl/certs/QuoVadis_Root_CA_2_G3.pem
new file mode 120000 (symlink)
index 0000000..b64a3b4
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_2_G3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/QuoVadis_Root_CA_3.pem b/etc/ssl/certs/QuoVadis_Root_CA_3.pem
new file mode 120000 (symlink)
index 0000000..8320ba3
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/QuoVadis_Root_CA_3_G3.pem b/etc/ssl/certs/QuoVadis_Root_CA_3_G3.pem
new file mode 120000 (symlink)
index 0000000..0327126
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/QuoVadis_Root_CA_3_G3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/SSL.com_EV_Root_Certification_Authority_ECC.pem b/etc/ssl/certs/SSL.com_EV_Root_Certification_Authority_ECC.pem
new file mode 120000 (symlink)
index 0000000..0ce9350
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_ECC.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/SSL.com_EV_Root_Certification_Authority_RSA_R2.pem b/etc/ssl/certs/SSL.com_EV_Root_Certification_Authority_RSA_R2.pem
new file mode 120000 (symlink)
index 0000000..166e2b4
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/SSL.com_EV_Root_Certification_Authority_RSA_R2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/SSL.com_Root_Certification_Authority_ECC.pem b/etc/ssl/certs/SSL.com_Root_Certification_Authority_ECC.pem
new file mode 120000 (symlink)
index 0000000..9165e8f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_ECC.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/SSL.com_Root_Certification_Authority_RSA.pem b/etc/ssl/certs/SSL.com_Root_Certification_Authority_RSA.pem
new file mode 120000 (symlink)
index 0000000..74e6904
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/SSL.com_Root_Certification_Authority_RSA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/SZAFIR_ROOT_CA2.pem b/etc/ssl/certs/SZAFIR_ROOT_CA2.pem
new file mode 120000 (symlink)
index 0000000..3fa381b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/SZAFIR_ROOT_CA2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/SecureSign_RootCA11.pem b/etc/ssl/certs/SecureSign_RootCA11.pem
new file mode 120000 (symlink)
index 0000000..85b43dd
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/SecureSign_RootCA11.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/SecureTrust_CA.pem b/etc/ssl/certs/SecureTrust_CA.pem
new file mode 120000 (symlink)
index 0000000..2cb1e99
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/SecureTrust_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Secure_Global_CA.pem b/etc/ssl/certs/Secure_Global_CA.pem
new file mode 120000 (symlink)
index 0000000..e743a00
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Secure_Global_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Security_Communication_RootCA2.pem b/etc/ssl/certs/Security_Communication_RootCA2.pem
new file mode 120000 (symlink)
index 0000000..e16ac15
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Security_Communication_RootCA2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Security_Communication_Root_CA.pem b/etc/ssl/certs/Security_Communication_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..02c510f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Security_Communication_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Staat_der_Nederlanden_EV_Root_CA.pem b/etc/ssl/certs/Staat_der_Nederlanden_EV_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..e1d64aa
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Staat_der_Nederlanden_EV_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Starfield_Class_2_CA.pem b/etc/ssl/certs/Starfield_Class_2_CA.pem
new file mode 120000 (symlink)
index 0000000..77a3bd1
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Starfield_Class_2_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Starfield_Root_Certificate_Authority_-_G2.pem b/etc/ssl/certs/Starfield_Root_Certificate_Authority_-_G2.pem
new file mode 120000 (symlink)
index 0000000..b982b3d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Starfield_Root_Certificate_Authority_-_G2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Starfield_Services_Root_Certificate_Authority_-_G2.pem b/etc/ssl/certs/Starfield_Services_Root_Certificate_Authority_-_G2.pem
new file mode 120000 (symlink)
index 0000000..6b4cc32
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Starfield_Services_Root_Certificate_Authority_-_G2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/SwissSign_Gold_CA_-_G2.pem b/etc/ssl/certs/SwissSign_Gold_CA_-_G2.pem
new file mode 120000 (symlink)
index 0000000..6c020e4
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/SwissSign_Gold_CA_-_G2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/SwissSign_Silver_CA_-_G2.pem b/etc/ssl/certs/SwissSign_Silver_CA_-_G2.pem
new file mode 120000 (symlink)
index 0000000..f2b4bcc
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/SwissSign_Silver_CA_-_G2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2.pem b/etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2.pem
new file mode 120000 (symlink)
index 0000000..b2f15e9
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/T-TeleSec_GlobalRoot_Class_3.pem b/etc/ssl/certs/T-TeleSec_GlobalRoot_Class_3.pem
new file mode 120000 (symlink)
index 0000000..76f0b9b
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/T-TeleSec_GlobalRoot_Class_3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.pem b/etc/ssl/certs/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.pem
new file mode 120000 (symlink)
index 0000000..1c9dfe0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/TWCA_Global_Root_CA.pem b/etc/ssl/certs/TWCA_Global_Root_CA.pem
new file mode 120000 (symlink)
index 0000000..35d4e4f
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/TWCA_Global_Root_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/TWCA_Root_Certification_Authority.pem b/etc/ssl/certs/TWCA_Root_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..c6a8610
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/TWCA_Root_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/TeliaSonera_Root_CA_v1.pem b/etc/ssl/certs/TeliaSonera_Root_CA_v1.pem
new file mode 120000 (symlink)
index 0000000..5d2d106
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/TeliaSonera_Root_CA_v1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/TrustCor_ECA-1.pem b/etc/ssl/certs/TrustCor_ECA-1.pem
new file mode 120000 (symlink)
index 0000000..eb7d639
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/TrustCor_ECA-1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/TrustCor_RootCert_CA-1.pem b/etc/ssl/certs/TrustCor_RootCert_CA-1.pem
new file mode 120000 (symlink)
index 0000000..5334459
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/TrustCor_RootCert_CA-1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/TrustCor_RootCert_CA-2.pem b/etc/ssl/certs/TrustCor_RootCert_CA-2.pem
new file mode 120000 (symlink)
index 0000000..68de1ae
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/TrustCor_RootCert_CA-2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Trustwave_Global_Certification_Authority.pem b/etc/ssl/certs/Trustwave_Global_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..d58727d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Trustwave_Global_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Trustwave_Global_ECC_P256_Certification_Authority.pem b/etc/ssl/certs/Trustwave_Global_ECC_P256_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..1c7bde1
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Trustwave_Global_ECC_P256_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/Trustwave_Global_ECC_P384_Certification_Authority.pem b/etc/ssl/certs/Trustwave_Global_ECC_P384_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..02ef126
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/Trustwave_Global_ECC_P384_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/UCA_Extended_Validation_Root.pem b/etc/ssl/certs/UCA_Extended_Validation_Root.pem
new file mode 120000 (symlink)
index 0000000..f67795a
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/UCA_Extended_Validation_Root.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/UCA_Global_G2_Root.pem b/etc/ssl/certs/UCA_Global_G2_Root.pem
new file mode 120000 (symlink)
index 0000000..f8006b8
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/UCA_Global_G2_Root.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/USERTrust_ECC_Certification_Authority.pem b/etc/ssl/certs/USERTrust_ECC_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..2d72c32
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/USERTrust_ECC_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/USERTrust_RSA_Certification_Authority.pem b/etc/ssl/certs/USERTrust_RSA_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..dbdd940
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/USERTrust_RSA_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/XRamp_Global_CA_Root.pem b/etc/ssl/certs/XRamp_Global_CA_Root.pem
new file mode 120000 (symlink)
index 0000000..a2ec5b0
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/XRamp_Global_CA_Root.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/a3418fda.0 b/etc/ssl/certs/a3418fda.0
new file mode 120000 (symlink)
index 0000000..12f3c9b
--- /dev/null
@@ -0,0 +1 @@
+GTS_Root_R4.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/a94d09e5.0 b/etc/ssl/certs/a94d09e5.0
new file mode 120000 (symlink)
index 0000000..ed152b5
--- /dev/null
@@ -0,0 +1 @@
+ACCVRAIZ1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/aee5f10d.0 b/etc/ssl/certs/aee5f10d.0
new file mode 120000 (symlink)
index 0000000..f2fddd3
--- /dev/null
@@ -0,0 +1 @@
+Entrust.net_Premium_2048_Secure_Server_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/b0e59380.0 b/etc/ssl/certs/b0e59380.0
new file mode 120000 (symlink)
index 0000000..6ab0a22
--- /dev/null
@@ -0,0 +1 @@
+GlobalSign_ECC_Root_CA_-_R4.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/b1159c4c.0 b/etc/ssl/certs/b1159c4c.0
new file mode 120000 (symlink)
index 0000000..8130eaf
--- /dev/null
@@ -0,0 +1 @@
+DigiCert_Assured_ID_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/b433981b.0 b/etc/ssl/certs/b433981b.0
new file mode 120000 (symlink)
index 0000000..0c8056e
--- /dev/null
@@ -0,0 +1 @@
+ANF_Secure_Server_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/b66938e9.0 b/etc/ssl/certs/b66938e9.0
new file mode 120000 (symlink)
index 0000000..e937c2a
--- /dev/null
@@ -0,0 +1 @@
+Secure_Global_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/b727005e.0 b/etc/ssl/certs/b727005e.0
new file mode 120000 (symlink)
index 0000000..8c96498
--- /dev/null
@@ -0,0 +1 @@
+AffirmTrust_Premium.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/b7a5b843.0 b/etc/ssl/certs/b7a5b843.0
new file mode 120000 (symlink)
index 0000000..b5d335a
--- /dev/null
@@ -0,0 +1 @@
+TWCA_Root_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/b81b93f0.0 b/etc/ssl/certs/b81b93f0.0
new file mode 120000 (symlink)
index 0000000..20bb85b
--- /dev/null
@@ -0,0 +1 @@
+AC_RAIZ_FNMT-RCM_SERVIDORES_SEGUROS.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/bf53fb88.0 b/etc/ssl/certs/bf53fb88.0
new file mode 120000 (symlink)
index 0000000..35301bc
--- /dev/null
@@ -0,0 +1 @@
+Microsoft_RSA_Root_Certificate_Authority_2017.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/c01eb047.0 b/etc/ssl/certs/c01eb047.0
new file mode 120000 (symlink)
index 0000000..c40d67a
--- /dev/null
@@ -0,0 +1 @@
+UCA_Global_G2_Root.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/c28a8a30.0 b/etc/ssl/certs/c28a8a30.0
new file mode 120000 (symlink)
index 0000000..908d179
--- /dev/null
@@ -0,0 +1 @@
+D-TRUST_Root_Class_3_CA_2_2009.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/ca-certificates.crt b/etc/ssl/certs/ca-certificates.crt
new file mode 100644 (file)
index 0000000..11d7641
--- /dev/null
@@ -0,0 +1,3213 @@
+-----BEGIN CERTIFICATE-----
+MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE
+AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw
+CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ
+BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND
+VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb
+qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY
+HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo
+G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA
+lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr
+IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/
+0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH
+k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47
+4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO
+m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa
+cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl
+uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI
+KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls
+ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG
+AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
+VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT
+VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG
+CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA
+cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA
+QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA
+7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA
+cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA
+QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA
+czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu
+aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt
+aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud
+DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF
+BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp
+D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU
+JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m
+AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD
+vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms
+tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH
+7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
+I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA
+h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF
+d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H
+pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx
+CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ
+WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ
+BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG
+Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/
+yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf
+BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz
+WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF
+tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z
+374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC
+IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL
+mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7
+wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS
+MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2
+ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet
+UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw
+AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H
+YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3
+LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD
+nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1
+RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM
+LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf
+77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N
+JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm
+fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp
+6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp
+1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B
+9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok
+RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv
+uu8wd+RU4riEmViAqhOLUTpPSPaLtrM=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE
+BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w
+MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
+IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC
+SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1
+ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv
+UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX
+4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9
+KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/
+gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb
+rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ
+51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F
+be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe
+KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F
+v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn
+fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7
+jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz
+ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
+ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL
+e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70
+jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz
+WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V
+SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j
+pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX
+X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok
+fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R
+K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU
+ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU
+LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT
+LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE
+BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
+dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL
+MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
+cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP
+Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr
+ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL
+MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1
+yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr
+VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/
+nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
+KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG
+XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj
+vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt
+Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g
+N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC
+nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE
+BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz
+dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL
+MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp
+cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y
+YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua
+kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL
+QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp
+6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG
+yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i
+QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ
+KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO
+tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu
+QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ
+Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u
+olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48
+x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE
+BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz
+dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG
+A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U
+cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf
+qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ
+JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ
++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS
+s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5
+HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7
+70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG
+V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S
+qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S
+5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia
+C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX
+OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE
+FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
+BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2
+KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
+Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B
+8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ
+MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc
+0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ
+u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF
+u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH
+YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8
+GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO
+RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e
+KeC2uAloGRwYQw==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC
+VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ
+cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ
+BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt
+VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D
+0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9
+ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G
+A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G
+A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs
+aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I
+flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF
+ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
+b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL
+MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
+b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj
+ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM
+9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw
+IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6
+VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L
+93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm
+jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA
+A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI
+U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs
+N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv
+o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU
+5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy
+rqXRfboQnoZsG4q5WTP468SQvvG5
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF
+ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6
+b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL
+MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv
+b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK
+gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ
+W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg
+1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K
+8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r
+2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me
+z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR
+8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj
+mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz
+7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6
++XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI
+0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB
+Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm
+UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2
+LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY
++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS
+k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl
+7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm
+btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl
+urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+
+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63
+n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE
+76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H
+9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT
+4PsJYGw=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5
+MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g
+Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG
+A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg
+Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl
+ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j
+QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr
+ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr
+BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM
+YyRIHN8wfdVoOw==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5
+MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g
+Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG
+A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg
+Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi
+9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk
+M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB
+/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB
+MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw
+CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW
+1KyLa2tJElMzrdfkviT8tQp21KW8EA==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE
+AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG
+EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM
+FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC
+REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp
+Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM
+VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+
+SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ
+4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L
+cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi
+eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV
+HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG
+A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3
+DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j
+vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP
+DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc
+maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D
+lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv
+KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE
+BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h
+cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy
+MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg
+Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi
+MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9
+thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM
+cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG
+L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i
+NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h
+X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b
+m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy
+Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja
+EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T
+KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF
+6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh
+OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD
+VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD
+VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
+cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv
+ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl
+AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF
+661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9
+am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1
+ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481
+PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS
+3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k
+SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF
+3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM
+ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g
+StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz
+Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB
+jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
+RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
+VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
+DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
+ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
+VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
+mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
+IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
+mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
+XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
+dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
+jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
+BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
+DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
+9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
+jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
+Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
+ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
+R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd
+MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg
+Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow
+TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw
+HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB
+BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr
+6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV
+L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91
+1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx
+MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ
+QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB
+arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr
+Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi
+FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS
+P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN
+9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP
+AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz
+uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h
+9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s
+A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t
+OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo
++fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7
+KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2
+DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us
+H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ
+I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7
+5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h
+3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz
+Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd
+MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg
+Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow
+TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw
+HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB
+BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y
+ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E
+N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9
+tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX
+0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c
+/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X
+KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY
+zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS
+O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D
+34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP
+K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3
+AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv
+Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj
+QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV
+cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS
+IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2
+HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa
+O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv
+033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u
+dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE
+kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41
+3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD
+u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq
+4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV
+BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu
+MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy
+MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx
+EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw
+ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe
+NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH
+PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I
+x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe
+QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR
+yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO
+QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912
+H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ
+QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD
+i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs
+nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1
+rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
+DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI
+hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM
+tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf
+GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb
+lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka
++elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal
+TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i
+nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3
+gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr
+G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os
+zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x
+L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD
+TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y
+aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx
+MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j
+aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP
+T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03
+sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL
+TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5
+/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp
+7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz
+EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt
+hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP
+a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot
+aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg
+TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV
+PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv
+cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL
+tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd
+BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB
+ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT
+ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL
+jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS
+ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy
+P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19
+xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d
+Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN
+5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe
+/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z
+AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ
+5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB
+gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
+A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV
+BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw
+MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
+YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P
+RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0
+aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3
+UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI
+2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8
+Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp
++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+
+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O
+nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW
+/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g
+PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u
+QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY
+SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv
+IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
+RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4
+zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd
+BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB
+ZQ==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL
+MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
+BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT
+IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw
+MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy
+ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N
+T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR
+FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J
+cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW
+BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
+BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm
+fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv
+GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB
+hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
+A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV
+BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5
+MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT
+EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
+Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR
+6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X
+pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC
+9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV
+/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf
+Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z
++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w
+qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah
+SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC
+u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf
+Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq
+crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
+FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB
+/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl
+wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM
+4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV
+2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna
+FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ
+CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK
+boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke
+jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL
+S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb
+QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl
+0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB
+NVOFBkpdn627G190
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV
+BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X
+DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ
+BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4
+QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny
+gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw
+zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q
+130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2
+JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw
+DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw
+ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT
+AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj
+AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG
+9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h
+bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc
+fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu
+HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w
+t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
+WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM
+MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D
+ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU
+cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3
+WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg
+Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw
+IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH
+UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM
+TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU
+BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM
+kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x
+AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV
+HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y
+sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL
+I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8
+J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY
+VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
+03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB
+gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu
+QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG
+A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz
+OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ
+VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp
+ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3
+b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA
+DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn
+0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB
+OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE
+fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E
+Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m
+o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i
+sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW
+OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez
+Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS
+adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n
+3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
+AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC
+AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ
+F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf
+CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29
+XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm
+djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/
+WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb
+AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq
+P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko
+b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj
+XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P
+5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi
+DrW5viSP
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb
+MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
+GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj
+YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL
+MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
+BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM
+GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua
+BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe
+3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4
+YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR
+rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm
+ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU
+oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
+MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
+QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t
+b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF
+AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q
+GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
+Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2
+G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi
+l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3
+smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG
+A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh
+bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE
+ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS
+b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5
+7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS
+J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y
+HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP
+t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz
+FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY
+XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/
+MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw
+hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js
+MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA
+A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj
+Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx
+XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o
+omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc
+A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
+WL1WMRJOEcgh4LMRkWXbtKaIOM5V
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF
+MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD
+bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha
+ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM
+HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03
+UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42
+tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R
+ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM
+lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp
+/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G
+A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G
+A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj
+dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy
+MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl
+cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js
+L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL
+BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni
+acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
+o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K
+zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8
+PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y
+Johw1+qRzT65ysCQblrGXnRl11z+o+I=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF
+MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD
+bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw
+NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV
+BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn
+ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0
+3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z
+qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR
+p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8
+HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw
+ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea
+HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw
+Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh
+c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E
+RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt
+dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku
+Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp
+3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
+nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF
+CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na
+xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX
+KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
+b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
+EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
+cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
+MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
+JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
+mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
+VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
+AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
+AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
+BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
+pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
+dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
+fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
+NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
+H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
+b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG
+EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
+cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi
+MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA
+n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc
+biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp
+EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA
+bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu
+YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB
+AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW
+BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI
+QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I
+0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni
+lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9
+B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv
+ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
+IhNzbM8m9Yop5w==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw
+CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
+ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg
+RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV
+UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu
+Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq
+hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf
+Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q
+RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
+BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD
+AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY
+JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv
+6pZjamVFkpUBtA==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
+QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
+CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
+nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
+43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
+T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
+gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
+BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
+TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
+DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
+hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
+06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
+PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
+YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
+CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
+MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI
+2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx
+1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ
+q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz
+tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ
+vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP
+BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV
+5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY
+1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4
+NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG
+Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91
+8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe
+pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
+MrY=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw
+CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
+ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe
+Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw
+EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x
+IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF
+K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG
+fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO
+Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd
+BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx
+AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/
+oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8
+sycX
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j
+ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL
+MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3
+LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug
+RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm
++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW
+PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM
+xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB
+Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3
+hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg
+EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF
+MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA
+FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec
+nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z
+eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF
+hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2
+Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
+vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep
++OkuE6N36B9K
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg
+RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV
+UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu
+Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y
+ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If
+xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV
+ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO
+DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ
+jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/
+CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi
+EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM
+fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY
+uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK
+chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t
+9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
+hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD
+ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2
+SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd
++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc
+fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa
+sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N
+cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N
+0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie
+4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI
+r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1
+/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm
+gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV
+BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC
+aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV
+BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1
+Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz
+MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+
+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp
+em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
+ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY
+B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH
+D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF
+Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo
+q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D
+k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH
+fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut
+dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM
+ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8
+zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
+rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX
+U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6
+Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5
+XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF
+Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR
+HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY
+GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c
+77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3
++GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK
+vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6
+FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl
+yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P
+AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD
+y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d
+NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB
+8zELMAkGA1UEBhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2Vy
+dGlmaWNhY2lvIChOSUYgUS0wODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1
+YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYDVQQLEyxWZWdldSBodHRwczovL3d3
+dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UECxMsSmVyYXJxdWlh
+IEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMTBkVD
+LUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQG
+EwJFUzE7MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8g
+KE5JRiBRLTA4MDExNzYtSSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBD
+ZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZlZ2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQu
+bmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJhcnF1aWEgRW50aXRhdHMg
+ZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUNDMIIBIjAN
+BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R
+85iKw5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm
+4CgPukLjbo73FCeTae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaV
+HMf5NLWUhdWZXqBIoH7nF2W4onW4HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNd
+QlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0aE9jD2z3Il3rucO2n5nzbcc8t
+lGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw0JDnJwIDAQAB
+o4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
+BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4
+opvpXY0wfwYDVR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBo
+dHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidW
+ZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAwDQYJKoZIhvcN
+AQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJlF7W2u++AVtd0x7Y
+/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNaAl6k
+SBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhy
+Rp/7SNVel+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOS
+Agu+TGbrIP65y7WZf+a2E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xl
+nJ2lYJU6Un/10asIbvPuW/mIPX64b24D5EI=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML
+RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp
+bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5
+IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp
+ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3
+MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
+LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
+YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
+A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
+K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe
+sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX
+MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT
+XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/
+HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH
+4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
+HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub
+j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo
+U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
+zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b
+u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+
+bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er
+fF6adulZkMV8gzURZVE=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC
+VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0
+Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW
+KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl
+cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw
+NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw
+NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy
+ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV
+BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ
+KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo
+Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4
+4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9
+KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI
+rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi
+94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB
+sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi
+gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo
+kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE
+vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
+A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t
+O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua
+AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP
+9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/
+eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m
+0vdXcDazv/wor3ElhVsT/h5/WrQ8
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG
+A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3
+d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu
+dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq
+RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy
+MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD
+VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0
+L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g
+Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD
+ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi
+A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt
+ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH
+Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
+BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC
+R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX
+hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC
+VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50
+cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs
+IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz
+dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy
+NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu
+dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt
+dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0
+aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj
+YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
+AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T
+RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN
+cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW
+wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1
+U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0
+jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP
+BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN
+BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/
+jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
+Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v
+1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R
+nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH
+VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE
+BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ
+IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0
+MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV
+BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w
+HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj
+Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj
+TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u
+KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj
+qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm
+MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12
+ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP
+zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk
+L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC
+jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA
+HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC
+AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB
+/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg
+p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm
+DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5
+COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry
+L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf
+JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg
+IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io
+2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV
+09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ
+XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq
+T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe
+MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk
+MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH
+bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX
+DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD
+QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu
+MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ
+FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw
+DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F
+uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX
+kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs
+ewv4n4Q=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk
+MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH
+bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX
+DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD
+QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu
+MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc
+8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke
+hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
+VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI
+KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg
+515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO
+xwy8p2Fp8fc74SrL+SvzZpA3
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
+A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
+b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
+MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
+YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
+aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
+jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
+xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
+1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
+snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
+U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
+9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
+BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
+AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
+yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
+38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
+AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
+DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
+HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G
+A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp
+Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1
+MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG
+A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL
+v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8
+eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq
+tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd
+C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa
+zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB
+mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH
+V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n
+bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG
+3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs
+J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO
+291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS
+ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd
+AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
+TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
+A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
+Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
+MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
+A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
+RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
+gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
+KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
+QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
+XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
+DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
+LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
+RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
+jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
+6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
+mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
+Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
+WD9f
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg
+MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh
+bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx
+MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET
+MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ
+KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI
+xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k
+ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD
+aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw
+LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw
+1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX
+k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2
+SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h
+bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n
+WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY
+rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce
+MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD
+AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu
+bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN
+nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt
+Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61
+55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj
+vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf
+cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz
+oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp
+nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs
+pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v
+JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R
+8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4
+5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh
+MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE
+YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3
+MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo
+ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg
+MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN
+ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA
+PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w
+wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi
+EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY
+avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+
+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE
+sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h
+/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5
+IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj
+YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD
+ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy
+OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P
+TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
+HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER
+dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf
+ReYNnyicsbkqWletNw+vHX/bvZ8=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
+EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
+EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp
+ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz
+NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH
+EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE
+AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw
+DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD
+E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH
+/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy
+DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh
+GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR
+tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA
+AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
+FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX
+WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu
+9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr
+gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo
+2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
+LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI
+4uJEvlz36hz1
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN
+BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl
+c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl
+bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv
+b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ
+BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj
+YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5
+MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0
+dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg
+QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa
+jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC
+MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi
+C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep
+lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof
+TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix
+RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1
+dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p
+YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw
+NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK
+EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl
+cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl
+c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz
+dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ
+fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns
+bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD
+75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP
+FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV
+HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp
+5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu
+b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA
+A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p
+6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
+TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7
+dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys
+Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI
+l7WdmplNsDz4SgCbZN2fOUvRJ9e4
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix
+DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k
+IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT
+N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v
+dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG
+A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh
+ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx
+QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1
+dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
+AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA
+4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0
+AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10
+4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C
+ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV
+9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD
+gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6
+Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq
+NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko
+LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
+Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV
+HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd
+ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I
+XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI
+M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot
+9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V
+Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea
+j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh
+X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ
+l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf
+bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4
+pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK
+e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0
+vm9qp/UsQu0yrbYhnr68
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx
+FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg
+Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG
+A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr
+b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
+AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ
+jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn
+PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh
+ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9
+nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h
+q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED
+MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC
+mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3
+7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB
+oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs
+EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO
+fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi
+AmvZWg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
+TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
+cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
+WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
+ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
+MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
+h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
+0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
+A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
+T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
+B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
+B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
+KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
+OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
+jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
+qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
+rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
+hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
+ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
+3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
+NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
+ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
+TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
+jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
+oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
+4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
+mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
+emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK
+MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu
+VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw
+MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw
+JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT
+3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU
++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp
+S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1
+bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi
+T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL
+vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK
+Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK
+dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT
+c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv
+l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N
+iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
+/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD
+ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH
+6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt
+LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93
+nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3
++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK
+W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT
+AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq
+l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG
+4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ
+mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A
+7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN
+MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu
+VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN
+MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0
+MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi
+MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7
+ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy
+RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS
+bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF
+/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R
+3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw
+EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy
+9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V
+GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ
+2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV
+WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD
+W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
+BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN
+AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj
+t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV
+DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9
+TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G
+lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW
+mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df
+WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5
++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ
+tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA
+GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv
+8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4
+MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6
+ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD
+VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j
+b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq
+scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO
+xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H
+LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX
+uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD
+yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+
+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q
+rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN
+BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L
+hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB
+QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+
+HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu
+Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg
+QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB
+BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
+MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA
+A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb
+laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56
+awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo
+JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw
+LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT
+VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk
+LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb
+UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/
+QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+
+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls
+QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD
+VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0
+ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G
+CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y
+OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx
+FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp
+Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
+dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP
+kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc
+cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U
+fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7
+N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC
+xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1
++rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
+A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM
+Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG
+SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h
+mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk
+ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
+tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c
+2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t
+HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG
+EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3
+MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl
+cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR
+dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB
+pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM
+b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm
+aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz
+IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
+MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT
+lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz
+AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5
+VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG
+ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2
+BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG
+AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M
+U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh
+bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C
++C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
+bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F
+uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2
+XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi
+MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
+MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp
+dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV
+UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO
+ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz
+c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP
+OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl
+mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF
+BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4
+qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw
+gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB
+BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu
+bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp
+dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8
+6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/
+h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH
+/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
+wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN
+pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt
+MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg
+Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i
+YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x
+CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG
+b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh
+bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3
+HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx
+WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX
+1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk
+u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P
+99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r
+M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
+AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB
+BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh
+cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5
+gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO
+ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf
+aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic
+Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQsw
+CQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91
+bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwg
+Um9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRaFw00MjA1MDkwOTU4MzNaMG0xCzAJ
+BgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBGb3Vu
+ZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2JhbCBS
+b290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4ni
+eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W
+p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E
+BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T
+rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV
+57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg
+Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL
+BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc
+BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00
+MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
+aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV
+wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe
+rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341
+68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh
+4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp
+UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o
+abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc
+3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G
+KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt
+hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO
+Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt
+zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
+BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD
+ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC
+MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2
+cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN
+qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5
+YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv
+b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2
+8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k
+NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj
+ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp
+q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt
+nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x
+GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv
+b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV
+BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W
+YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa
+GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg
+Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J
+WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB
+rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp
++ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1
+ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i
+Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz
+PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og
+/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH
+oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI
+yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud
+EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2
+A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL
+MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
+ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f
+BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn
+g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl
+fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K
+WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha
+B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc
+hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR
+TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD
+mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z
+ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y
+4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza
+8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL
+BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc
+BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00
+MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
+aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf
+qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW
+n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym
+c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+
+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1
+o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j
+IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq
+IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz
+8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh
+vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l
+7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG
+cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
+BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD
+ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66
+AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC
+roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga
+W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n
+lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE
++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV
+csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd
+dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg
+KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM
+HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4
+WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x
+GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv
+b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV
+BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W
+YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM
+V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB
+4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr
+H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd
+8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv
+vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT
+mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe
+btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc
+T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt
+WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ
+c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A
+4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD
+VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG
+CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0
+aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
+aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu
+dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw
+czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G
+A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC
+TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg
+Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0
+7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem
+d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd
++LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B
+4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN
+t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x
+DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57
+k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s
+zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j
+Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT
+mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK
+4SVhM7JZG+Ju1zdXtg2pEto=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL
+BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc
+BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00
+MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
+aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR
+/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu
+FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR
+U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c
+ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR
+FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k
+A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw
+eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl
+sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp
+VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q
+A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+
+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
+BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD
+ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px
+KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI
+FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv
+oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg
+u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP
+0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf
+3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl
+8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+
+DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN
+PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/
+ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC
+VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T
+U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx
+NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv
+dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv
+bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49
+AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA
+VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku
+WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP
+MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX
+5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ
+ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg
+h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV
+BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE
+CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy
+dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy
+MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G
+A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD
+DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq
+M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf
+OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa
+4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9
+HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR
+aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA
+b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ
+Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV
+PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO
+pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu
+UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY
+MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV
+HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4
+9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW
+s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5
+Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg
+cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM
+79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz
+/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt
+ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm
+Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK
+QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ
+w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi
+S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07
+mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC
+VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T
+U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0
+aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz
+WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0
+b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS
+b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB
+BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI
+7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg
+CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud
+EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD
+VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T
+kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+
+gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE
+BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK
+DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz
+OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv
+dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv
+bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN
+AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R
+xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX
+qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC
+C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3
+6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh
+/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF
+YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E
+JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc
+US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8
+ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm
++Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi
+M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV
+HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G
+A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV
+cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc
+Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs
+PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/
+q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0
+cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr
+a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I
+H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y
+K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu
+nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf
+oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY
+Ic2wBlX7Jz9TkHCpBB5XJ7k=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL
+BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6
+ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw
+NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L
+cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg
+Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN
+QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT
+3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw
+3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6
+3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5
+BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN
+XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD
+AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF
+AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw
+8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG
+nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP
+oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy
+d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg
+LvWpCz/UXeHPhJ/iGcJfitYgHuNztw==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr
+MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG
+A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0
+MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp
+Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD
+QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz
+i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8
+h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV
+MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9
+UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni
+8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC
+h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD
+VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB
+AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm
+KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ
+X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr
+QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5
+pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN
+QSdJQO7e5iNEOdyhIta6A/I=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI
+MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x
+FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz
+MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv
+cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz
+Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO
+0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao
+wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj
+7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS
+8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT
+BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
+/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg
+JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC
+NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3
+6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/
+3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm
+D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS
+CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
+3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK
+MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x
+GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx
+MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg
+Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG
+SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ
+iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa
+/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ
+jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI
+HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7
+sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w
+gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF
+MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw
+KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG
+AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L
+URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO
+H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm
+I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY
+iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
+f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl
+MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe
+U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX
+DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy
+dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj
+YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV
+OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr
+zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM
+VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ
+hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO
+ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw
+awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs
+OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
+DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF
+coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc
+okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8
+t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy
+1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/
+SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY
+MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t
+dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5
+WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD
+VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8
+9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ
+DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9
+Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N
+QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ
+xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G
+A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T
+AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG
+kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr
+Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5
+Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU
+JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot
+RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJO
+TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFh
+dCBkZXIgTmVkZXJsYW5kZW4gRVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0y
+MjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIg
+TmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRlcmxhbmRlbiBFViBS
+b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkkSzrS
+M4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nC
+UiY4iKTWO0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3d
+Z//BYY1jTw+bbRcwJu+r0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46p
+rfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13l
+pJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gVXJrm0w912fxBmJc+qiXb
+j5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr08C+eKxC
+KFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS
+/ZbV0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0X
+cgOPvZuM5l5Tnrmd74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH
+1vI4gnPah1vlPNOePqc7nvQDs/nxfRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrP
+px9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
+/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwaivsnuL8wbqg7
+MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI
+eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u
+2dfOWBfoqSmuc0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHS
+v4ilf0X8rLiltTMMgsT7B/Zq5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTC
+wPTxGfARKbalGAKb12NMcIxHowNDXLldRqANb/9Zjr7dn3LDWyvfjFvO5QxGbJKy
+CqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tNf1zuacpzEPuKqf2e
+vTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi5Dp6
+Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIa
+Gl6I6lD4WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeL
+eG9QgkRQP2YGiqtDhFZKDyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8
+FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGyeUN51q1veieQA6TqJIc/2b3Z6fJfUEkc
+7uzXLg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl
+MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp
+U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw
+NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE
+ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp
+ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3
+DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf
+8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN
++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0
+X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa
+K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA
+1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G
+A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR
+zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0
+YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD
+bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w
+DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3
+L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D
+eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
+xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp
+VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY
+WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx
+EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT
+HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs
+ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw
+MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
+b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj
+aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp
+Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg
+nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1
+HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N
+Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN
+dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0
+HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO
+BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G
+CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU
+sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3
+4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg
+8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
+pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1
+mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx
+EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT
+HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs
+ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
+MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD
+VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy
+ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy
+dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
+hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p
+OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2
+8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K
+Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe
+hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk
+6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw
+DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q
+AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI
+bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB
+ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z
+qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
+iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn
+0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN
+sSi6
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
+BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln
+biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF
+MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT
+d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
+CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8
+76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+
+bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c
+6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE
+emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd
+MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt
+MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y
+MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y
+FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi
+aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM
+gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB
+qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7
+lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn
+8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
+L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6
+45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO
+UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5
+O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC
+bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv
+GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a
+77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC
+hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3
+92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp
+Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w
+ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt
+Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UE
+BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWdu
+IFNpbHZlciBDQSAtIEcyMB4XDTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0Nlow
+RzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMY
+U3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
+MIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644N0Mv
+Fz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7br
+YT7QbNHm+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieF
+nbAVlDLaYQ1HTWBCrpJH6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH
+6ATK72oxh9TAtvmUcXtnZLi2kUpCe2UuMGoM9ZDulebyzYLs2aFK7PayS+VFheZt
+eJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5hqAaEuSh6XzjZG6k4sIN/
+c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5FZGkECwJ
+MoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRH
+HTBsROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTf
+jNFusB3hB48IHpmccelM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb6
+5i/4z3GcRm25xBWNOHkDRUjvxF3XCO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOB
+rDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU
+F6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRBtjpbO8tFnb0c
+wpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
+cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIB
+AHPGgeAn0i0P4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShp
+WJHckRE1qTodvBqlYJ7YH39FkWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9
+xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L3XWgwF15kIwb4FDm3jH+mHtwX6WQ
+2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx/uNncqCxv1yL5PqZ
+IseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFaDGi8
+aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2X
+em1ZqSqPe97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQR
+dAtq/gsD/KNVV4n+SsuuWxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/
+OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJDIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+
+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ubDgEj8Z+7fNzcbBGXJbLy
+tGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx
+KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd
+BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl
+YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1
+OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy
+aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50
+ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd
+AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC
+FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi
+1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq
+jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ
+wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj
+QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/
+WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy
+NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC
+uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw
+IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6
+g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
+9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP
+BSeOE6Fuwg==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx
+KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd
+BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl
+YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1
+OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy
+aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50
+ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G
+CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN
+8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/
+RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4
+hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5
+ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM
+EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj
+QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1
+A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy
+WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ
+1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30
+6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT
+91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
+e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p
+TpPDpFQUWw==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx
+GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp
+bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w
+KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0
+BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy
+dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG
+EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll
+IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU
+QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT
+TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg
+LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7
+a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr
+LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr
+N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X
+YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/
+iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f
+AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH
+V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
+BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh
+AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf
+IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4
+lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c
+8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf
+lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx
+EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT
+VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5
+NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT
+B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF
+10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz
+0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh
+MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH
+zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc
+46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2
+yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi
+laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP
+oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA
+BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE
+qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm
+4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
+/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL
+1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn
+LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF
+H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo
+RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+
+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh
+15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW
+6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW
+nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j
+wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz
+aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy
+KwbQBM0=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES
+MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU
+V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz
+WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO
+LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm
+aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
+AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE
+AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH
+K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX
+RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z
+rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx
+3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
+HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq
+hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC
+MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls
+XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D
+lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn
+aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ
+YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw
+NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv
+b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD
+VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2
+MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F
+VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1
+7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X
+Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+
+/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs
+81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm
+dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe
+Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu
+sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4
+pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs
+slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ
+arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD
+VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG
+9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl
+dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx
+0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj
+TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed
+Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7
+Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI
+OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7
+vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW
+t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn
+HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx
+SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYD
+VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk
+MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U
+cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxFzAVBgNVBAMMDlRydXN0Q29y
+IEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3MjgwN1owgZwxCzAJBgNV
+BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw
+IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy
+dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3Ig
+RUNBLTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb
+3w9U73NjKYKtR8aja+3+XzP4Q1HpGjORMRegdMTUpwHmspI+ap3tDvl0mEDTPwOA
+BoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23xFUfJ3zSCNV2HykVh0A5
+3ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmcp0yJF4Ou
+owReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/
+wZ0+fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZF
+ZtS6mFjBAgMBAAGjYzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAf
+BgNVHSMEGDAWgBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/
+MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAQEABT41XBVwm8nHc2Fv
+civUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u/ukZMjgDfxT2
+AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F
+hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50
+soIipX1TH0XsJ5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BI
+WJZpTdwHjFGTot+fDz2LYLSCjaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1Wi
+tJ/X5g==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYD
+VQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEk
+MCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U
+cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29y
+IFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkxMjMxMTcyMzE2WjCB
+pDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFuYW1h
+IENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUG
+A1UECwweVHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZU
+cnVzdENvciBSb290Q2VydCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAv463leLCJhJrMxnHQFgKq1mqjQCj/IDHUHuO1CAmujIS2CNUSSUQIpid
+RtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4pQa81QBeCQryJ3pS/C3V
+seq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0JEsq1pme
+9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CV
+EY4hgLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorW
+hnAbJN7+KIor0Gqw/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/
+DeOxCbeKyKsZn3MzUOcwHwYDVR0jBBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcw
+DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQAD
+ggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5mDo4Nvu7Zp5I
+/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf
+ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZ
+yonnMlo2HD6CqFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djts
+L1Ac59v2Z3kf9YKVmgenFK+P3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdN
+zl/HHk484IkzlQsPpTLWPFp5LBk=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNV
+BAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQw
+IgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRy
+dXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0eTEfMB0GA1UEAwwWVHJ1c3RDb3Ig
+Um9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEyMzExNzI2MzlaMIGk
+MQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEg
+Q2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYD
+VQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRy
+dXN0Q29yIFJvb3RDZXJ0IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
+AoICAQCnIG7CKqJiJJWQdsg4foDSq8GbZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+
+QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9NkRvRUqdw6VC0xK5mC8tkq
+1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1oYxOdqHp
+2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nK
+DOObXUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hape
+az6LMvYHL1cEksr1/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF
+3wP+TfSvPd9cW436cOGlfifHhi5qjxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88
+oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQPeSghYA2FFn3XVDjxklb9tTNM
+g9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+CtgrKAmrhQhJ8Z3
+mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh
+8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAd
+BgNVHQ4EFgQU2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6U
+nrybPZx9mCAZ5YwwYrIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYw
+DQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/hOsh80QA9z+LqBrWyOrsGS2h60COX
+dKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnpkpfbsEZC89NiqpX+
+MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv2wnL
+/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RX
+CI/hOWB3S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYa
+ZH9bDTMJBzN7Bj8RpFxwPIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW
+2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dvDDqPys/cA8GiCcjl/YBeyGBCARsaU1q7
+N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYURpFHmygk71dSTlxCnKr3
+Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANExdqtvArB
+As8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp
+5KeXRKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu
+1uwJ
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL
+MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl
+eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT
+JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx
+MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg
+VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm
+aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo
+I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng
+o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G
+A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD
+VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB
+zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW
+RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB
+iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
+cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
+BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw
+MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV
+BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
+aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy
+dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
+AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B
+3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY
+tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/
+Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2
+VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT
+79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6
+c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT
+Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l
+c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee
+UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE
+Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
+BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G
+A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF
+Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO
+VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3
+ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs
+8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR
+iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze
+Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ
+XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/
+qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB
+VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB
+L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG
+jjxDah2nGN59PRbxYvnKkKj9
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB
+gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk
+MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY
+UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx
+NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3
+dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy
+dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
+dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6
+38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP
+KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q
+DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4
+qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa
+JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi
+PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P
+BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs
+jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0
+eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD
+ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR
+vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
+qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa
+IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy
+i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ
+O+7ETPTsJ3xCwnR8gooJybQDJbw=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT
+AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD
+QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP
+MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC
+ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do
+0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ
+UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d
+RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ
+OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv
+JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C
+AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O
+BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ
+LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY
+MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ
+44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I
+Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw
+i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN
+9u6wWk5JRFRYX0KD
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe
+MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0
+ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
+Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw
+IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL
+SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH
+SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh
+ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X
+DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1
+TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ
+fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA
+sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU
+WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS
+nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH
+dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip
+NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC
+AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF
+MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
+ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB
+uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl
+PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP
+JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/
+gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2
+j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6
+5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB
+o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS
+/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z
+Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE
+W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D
+hNQ+IIX3Sj0rnP0qCglN6oH4EZw=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw
+WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw
+MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x
+MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD
+VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX
+BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
+ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO
+ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M
+CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu
+I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm
+TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh
+C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf
+ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz
+IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT
+Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k
+JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5
+hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB
+GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
+FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of
+1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov
+L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo
+dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr
+aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq
+hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L
+6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG
+HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6
+0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB
+lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi
+o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1
+gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v
+faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63
+Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh
+jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw
+3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAw
+gb4xCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL
+Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg
+MjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAw
+BgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0
+MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYTAlVT
+MRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1
+c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJ
+bmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3Qg
+Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc0MIICIjANBgkqhkiG9w0B
+AQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3DumSXbcr3DbVZwbPLqGgZ
+2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV3imz/f3E
+T+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j
+5pds8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAM
+C1rlLAHGVK/XqsEQe9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73T
+DtTUXm6Hnmo9RR3RXRv06QqsYJn7ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNX
+wbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5XxNMhIWNlUpEbsZmOeX7m640A
+2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV7rtNOzK+mndm
+nqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8
+dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwl
+N4y6mACXi0mWHv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNj
+c0kCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
+VR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9nMA0GCSqGSIb3DQEBCwUAA4ICAQAS
+5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4QjbRaZIxowLByQzTS
+Gwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht7LGr
+hFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/
+B7NTeLUKYvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uI
+AeV8KEsD+UmDfLJ/fOPtjqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbw
+H5Lk6rWS02FREAutp9lfx1/cH6NcjKF+m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+
+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKWRGhXxNUzzxkvFMSUHHuk
+2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjAJOgc47Ol
+IQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk
+5F6G+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuY
+n/PIjhs4ViFqUZPTkcpG2om3PVODLAgfi49T3f+sHw==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBH
+MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM
+QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy
+MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl
+cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEB
+AQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM
+f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vX
+mX7wCl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7
+zUjwTcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0P
+fyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtc
+vfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4
+Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUsp
+zBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOO
+Rc92wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYW
+k70paDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+
+DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgF
+lQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
+HQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBADiW
+Cu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1
+d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6Z
+XPYfcX3v73svfuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZR
+gyFmxhE+885H7pwoHyXa/6xmld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3
+d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9bgsiG1eGZbYwE8na6SfZu6W0eX6Dv
+J4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq4BjFbkerQUIpm/Zg
+DdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWErtXvM
++SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyy
+F62ARPBopY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9
+SQ98POyDGCBDTtWTurQ0sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdws
+E3PYJ/HQcu51OyLemGhmW/HGY0dVHLqlCFF1pkgl
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBH
+MQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExM
+QzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIy
+MDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNl
+cnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEB
+AQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv
+CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3Kg
+GjSY6Dlo7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9Bu
+XvAuMC6C/Pq8tBcKSOWIm8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOd
+re7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS+LFjKBC4swm4VndAoiaYecb+3yXu
+PuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7MkogwTZq9TwtImoS1
+mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJGr61K
+8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqj
+x5RWIr9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsR
+nTKaG73VululycslaVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0
+kzCqgc7dGtxRcw1PcOnlthYhGXmy5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9Ok
+twIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
+HQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQADggIBALZp
+8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT
+vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiT
+z9D2PGcDFWEJ+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiA
+pJiS4wGWAqoC7o87xdFtCjMwc3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvb
+pxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3DaWsYDQvTtN6LwG1BUSw7YhN4ZKJmB
+R64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5rn/WkhLx3+WuXrD5R
+RaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56GtmwfuNmsk
+0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC
+5AwiWVIQ7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiF
+izoHCBy69Y9Vmhh1fuXsgWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLn
+yOd/xCxgXS/Dr55FBcOEArf9LAhST4Ldo/DUhgkC
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQsw
+CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
+MBIGA1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
+MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
+Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQA
+IgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout
+736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2A
+DDL24CejQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
+DgQWBBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFuk
+fCPAlaUs3L6JbyO5o91lAFJekazInXJ0glMLfalAvWhgxeG4VDvBNhcl2MG9AjEA
+njWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOaKaqW04MjyaR7YbPMAuhd
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQsw
+CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU
+MBIGA1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw
+MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp
+Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQA
+IgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu
+hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/l
+xKvRHYqjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
+DgQWBBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0
+CMRw3J5QdCHojXohw0+WbhXRIjVhLfoIN+4Zba3bssx9BzT1YBkstTTZbyACMANx
+sbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11xzPKwTdb+mciUqXWi4w==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQEL
+BQAwbzELMAkGA1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJ
+SG9uZyBLb25nMRYwFAYDVQQKEw1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25n
+a29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2MDMwMjI5NDZaFw00MjA2MDMwMjI5
+NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcT
+CUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMXSG9u
+Z2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
+AoICAQCziNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFO
+dem1p+/l6TWZ5Mwc50tfjTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mI
+VoBc+L0sPOFMV4i707mV78vH9toxdCim5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV
+9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOesL4jpNrcyCse2m5FHomY
+2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj0mRiikKY
+vLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+Tt
+bNe/JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZb
+x39ri1UbSsUgYT2uy1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+
+l2oBlKN8W4UdKjk60FSh0Tlxnf0h+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YK
+TE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsGxVd7GYYKecsAyVKvQv83j+Gj
+Hno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwIDAQABo2MwYTAP
+BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e
+i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEw
+DQYJKoZIhvcNAQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG
+7BJ8dNVI0lkUmcDrudHr9EgwW62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCk
+MpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWldy8joRTnU+kLBEUx3XZL7av9YROXr
+gZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov+BS5gLNdTaqX4fnk
+GMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDceqFS
+3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJm
+Ozj/2ZQw9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+
+l6mc1X5VTMbeRRAc6uk7nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6c
+JfTzPV4e0hz5sy229zdcxsshTrD3mUcYhcErulWuBurQB7Lcq9CClnXO0lD+mefP
+L5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB60PZ2Pierc+xYw5F9KBa
+LJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fqdBb9HxEG
+mpv0
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw
+CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD
+VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw
+MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV
+UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy
+b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq
+hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR
+ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb
+hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E
+BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3
+FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV
+L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB
+iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl
+MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw
+NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
+IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG
+EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N
+aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi
+MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ
+Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0
+ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1
+HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm
+gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ
+jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc
+aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG
+YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6
+W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K
+UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH
++FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q
+W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/
+BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC
+NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC
+LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC
+gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6
+tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh
+SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2
+TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3
+pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR
+xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp
+GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9
+dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN
+AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB
+RA+GsCyRxj3qrg+E
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEM
+BQAwaTELMAkGA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRG
+T1JNIENvcnAuMTIwMAYDVQQDDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0
+aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4NDJaFw0zNzA4MTgyMzU5NTlaMGkx
+CzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVTUyBQTEFURk9STSBD
+b3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlvbiBB
+dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVA
+iQqrDZBbUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH
+38dq6SZeWYp34+hInDEW+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lE
+HoSTGEq0n+USZGnQJoViAbbJAh2+g1G7XNr4rRVqmfeSVPc0W+m/6imBEtRTkZaz
+kVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2aacp+yPOiNgSnABIqKYP
+szuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4Yb8Obtoq
+vC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHf
+nZ3zVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaG
+YQ5fG8Ir4ozVu53BA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo
+0es+nPxdGoMuK8u180SdOqcXYZaicdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3a
+CJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejyYhbLgGvtPe31HzClrkvJE+2K
+AQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNVHQ4EFgQU0p+I
+36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB
+Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoN
+qo0hV4/GPnrK21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatj
+cu3cvuzHV+YwIHHW1xDBE1UBjCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm
++LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bxhYTeodoS76TiEJd6eN4MUZeoIUCL
+hr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTgE34h5prCy8VCZLQe
+lHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTHD8z7
+p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8
+piKCk5XQA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLR
+LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX
+5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oGI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KO
+dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul
+9XXeifdy
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQsw
+CQYDVQQGEwJVUzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28x
+ITAfBgNVBAoMGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1
+c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMx
+OTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJVUzERMA8GA1UECAwI
+SWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2ZSBI
+b2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZp
+Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
+ALldUShLPDeS0YLOvR29zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0Xzn
+swuvCAAJWX/NKSqIk4cXGIDtiLK0thAfLdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu
+7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4BqstTnoApTAbqOl5F2brz8
+1Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9oWN0EACyW
+80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotP
+JqX+OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1l
+RtzuzWniTY+HKE40Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfw
+hI0Vcnyh78zyiGG69Gm7DIwLdVcEuE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10
+coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm+9jaJXLE9gCxInm943xZYkqc
+BW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqjifLJS3tBEW1n
+twiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud
+EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1Ud
+DwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W
+0OhUKDtkLSGm+J1WE2pIPU/HPinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfe
+uyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0HZJDmHvUqoai7PF35owgLEQzxPy0Q
+lG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla4gt5kNdXElE1GYhB
+aCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5RvbbE
+sLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPT
+MaCm/zjdzyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qe
+qu5AvzSxnI9O4fKSTx+O856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxh
+VicGaeVyQYHTtgGJoC86cnn+OjC/QezHYj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8
+h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu3R3y4G5OBVixwJAWKqQ9
+EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP29FpHOTK
+yeC2nOnOcXHebD8WpHk=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYD
+VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf
+BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3
+YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x
+NzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYDVQQGEwJVUzERMA8G
+A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0
+d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF
+Q0MgUDI1NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqG
+SM49AwEHA0IABH77bOYj43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoN
+FWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqmP62jQzBBMA8GA1UdEwEB/wQFMAMBAf8w
+DwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt0UrrdaVKEJmzsaGLSvcw
+CgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjzRM4q3wgh
+DDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYD
+VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAf
+BgNVBAoTGFRydXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3
+YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0x
+NzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYDVQQGEwJVUzERMA8G
+A1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0
+d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBF
+Q0MgUDM4NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuB
+BAAiA2IABGvaDXU1CDFHBa5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJ
+j9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr/TklZvFe/oyujUF5nQlgziip04pt89ZF
+1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0G
+A1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNnADBkAjA3
+AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsC
+MGclCrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVu
+Sw==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH
+MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF
+eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx
+MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV
+BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB
+AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog
+D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS
+sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop
+O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk
+sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi
+c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj
+VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz
+KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/
+TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G
+sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs
+1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD
+fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T
+AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN
+l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR
+ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ
+VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5
+c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp
+4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s
+t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj
+2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO
+vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C
+xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx
+cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM
+fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9
+MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH
+bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x
+CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds
+b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr
+b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9
+kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm
+VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R
+VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc
+C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj
+tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY
+D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv
+j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl
+NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6
+iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP
+O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/
+BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV
+ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj
+L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5
+1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl
+1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU
+b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV
+PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj
+y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb
+EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg
+DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI
++Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy
+YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX
+UB+K+wb1whnw0A==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV
+BAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04g
+Uk9PVCBDQSBHMjAeFw0xNzAyMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJ
+BgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJ
+R04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDF
+dRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05N0Iw
+vlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZ
+uIt4ImfkabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhp
+n+Sc8CnTXPnGFiWeI8MgwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKs
+cpc/I1mbySKEwQdPzH/iV8oScLumZfNpdWO9lfsbl83kqK/20U6o2YpxJM02PbyW
+xPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91QqhngLjYl/rNUssuHLoPj1P
+rCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732jcZZroiF
+DsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fx
+DTvf95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgy
+LcsUDFDYg2WD7rlcz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6C
+eWRgKRM+o/1Pcmqr4tTluCRVLERLiohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB
+/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSCIS1mxteg4BXrzkwJ
+d8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOBywaK8SJJ6ejq
+kX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC
+b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQl
+qiCA2ClV9+BB/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0
+OJD7uNGzcgbJceaBxXntC6Z58hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+c
+NywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5BiKDUyUM/FHE5r7iOZULJK2v0ZXk
+ltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklWatKcsWMy5WHgUyIO
+pwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tUSxfj
+03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZk
+PuXaTH4MNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE
+1LlSVHJ7liXMvGnjSG4N0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MX
+QRBdJ3NghVdJIgc=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNV
+BAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRk
+LjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJv
+b3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZaFw00MjA4MjIxMjA3MDZaMHExCzAJ
+BgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMg
+THRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25v
+IFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtv
+xie+RJCxs1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+H
+Wyx7xf58etqjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
+A1UdDgQWBBSHERUI0arBeAyxr87GyZDvvzAEwDAfBgNVHSMEGDAWgBSHERUI0arB
+eAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEAtVfd14pVCzbhhkT61Nlo
+jbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxOsvxyqltZ
++efcMQ==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQG
+EwJVUzETMBEGA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMx
+IDAeBgNVBAMTF2VtU2lnbiBFQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAw
+MFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln
+biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQDExdlbVNpZ24gRUND
+IFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd6bci
+MK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4Ojavti
+sIGJAnB9SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0O
+BBYEFPtaSNCAIEDyqOkAB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB
+Af8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c
+3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwUZOR8loMRnLDRWmFLpg9J
+0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ==
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQG
+EwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNo
+bm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g
+RzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4MTgzMDAwWjBrMQswCQYDVQQGEwJJ
+TjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9s
+b2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMw
+djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0
+WXTsuwYc58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xyS
+fvalY8L1X44uT6EYGQIrMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuB
+zhccLikenEhjQjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggq
+hkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+DCBeQyh+KTOgNG3qxrdWB
+CUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7jHvrZQnD
++JbNR6iC8hZVdyR+EhCVBCyj
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkG
+A1UEBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEg
+SW5jMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAw
+MFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln
+biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNpZ24gUm9v
+dCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+upufGZ
+BczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZ
+HdPIWoU/Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH
+3DspVpNqs8FqOp099cGXOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvH
+GPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4VI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+c
+xSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleoomslMuoaJuvimUnzYnu3Yy1
+aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+XJGFehiq
+TbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
+BQADggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87
+/kOXSTKZEhVb3xEp/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4
+kqNPEjE2NuLe/gDEo2APJ62gsIq1NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrG
+YQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9wC68AivTxEDkigcxHpvOJpkT
++xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQBmIMMMAVSKeo
+WXzhriKi4gp6D/piq1JM4fHfyr6DDUI=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYD
+VQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBU
+ZWNobm9sb2dpZXMgTGltaXRlZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBH
+MTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgxODMwMDBaMGcxCzAJBgNVBAYTAklO
+MRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVkaHJhIFRlY2hub2xv
+Z2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIBIjAN
+BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQz
+f2N4aLTNLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO
+8oG0x5ZOrRkVUkr+PHB1cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aq
+d7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHWDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhM
+tTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ6DqS0hdW5TUaQBw+jSzt
+Od9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrHhQIDAQAB
+o0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQD
+AgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31x
+PaOfG1vR2vjTnGs2vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjM
+wiI/aTvFthUvozXGaCocV685743QNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6d
+GNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q+Mri/Tm3R7nrft8EI6/6nAYH
+6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeihU80Bv2noWgby
+RQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx
+iN66zB+Afko=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw
+CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw
+FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S
+Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5
+MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL
+DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS
+QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB
+BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH
+sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK
+Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
+VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu
+SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC
+MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy
+v+c=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNV
+BAUTCUc2MzI4NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlk
+YWQgZGUgQ2VydGlmaWNhY2lvbjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNV
+BAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3QgQ0EwHhcNMTkwOTA0MTAwMDM4WhcN
+MzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEwMQswCQYDVQQGEwJF
+UzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQwEgYD
+VQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9v
+dCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCj
+cqQZAZ2cC4Ffc0m6p6zzBE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9q
+yGFOtibBTI3/TO80sh9l2Ll49a2pcbnvT1gdpd50IJeh7WhM3pIXS7yr/2WanvtH
+2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcvB2VSAKduyK9o7PQUlrZX
+H1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXsezx76W0OL
+zc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyR
+p1RMVwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQz
+W7i1o0TJrH93PB0j7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/
+SiOL9V8BY9KHcyi1Swr1+KuCLH5zJTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJn
+LNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe8TZBAQIvfXOn3kLMTOmJDVb3
+n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVOHj1tyRRM4y5B
+u8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj
+o1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAO
+BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC
+AgEATh65isagmD9uw2nAalxJUqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L
+9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzxj6ptBZNscsdW699QIyjlRRA96Gej
+rw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDtdD+4E5UGUcjohybK
+pFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM5gf0
+vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjq
+OknkJjCb5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ
+/zo1PqVUSlJZS2Db7v54EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ9
+2zg/LFis6ELhDtjTO0wugumDLmsx2d1Hhk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI
++PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGyg77FGr8H6lnco4g175x2
+MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3r5+qPeoo
+tt7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw
+CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw
+JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT
+EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0
+WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT
+LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX
+BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE
+KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm
+Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj
+QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8
+EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J
+UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn
+nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6
+MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEu
+MScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNV
+BAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwHhcNMTgwMzE2MTIxMDEzWhcNNDMw
+MzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEg
+U3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRo
+b3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqG
+SIb3DQEBAQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZ
+n0EGze2jusDbCSzBfN8pfktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/q
+p1x4EaTByIVcJdPTsuclzxFUl6s1wB52HO8AU5853BSlLCIls3Jy/I2z5T4IHhQq
+NwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2fJmItdUDmj0VDT06qKhF
+8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGtg/BKEiJ3
+HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGa
+mqi4NboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi
+7VdNIuJGmj8PkTQkfVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSF
+ytKAQd8FqKPVhJBPC/PgP5sZ0jeJP/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0P
+qafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSYnjYJdmZm/Bo/6khUHL4wvYBQ
+v3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHKHRzQ+8S1h9E6
+Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1
+vALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQAD
+ggIBAEii1QALLtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4
+WxmB82M+w85bj/UvXgF2Ez8sALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvo
+zMrnadyHncI013nR03e4qllY/p0m+jiGPp2Kh2RX5Rc64vmNueMzeMGQ2Ljdt4NR
+5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8CYyqOhNf6DR5UMEQ
+GfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA4kZf
+5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq
+0Uc9NneoWWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7D
+P78v3DSk+yshzWePS/Tj6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTM
+qJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmTOPQD8rv7gmsHINFSH5pkAnuYZttcTVoP
+0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZckbxJF0WddCajJFdr60qZf
+E2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx
+CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD
+ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw
+MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex
+HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA
+IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq
+R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd
+yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
+DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ
+7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8
++RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA
+MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD
+VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy
+MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt
+c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB
+AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ
+OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG
+vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud
+316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo
+0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE
+y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF
+zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE
++cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN
+I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs
+x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa
+ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC
+4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
+HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4
+7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg
+JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti
+2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk
+pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF
+FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt
+rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk
+ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5
+u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP
+4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6
+N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3
+vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkG
+A1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkw
+FwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYx
+MDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAhBgNVBAoTGmUtY29tbWVyY2UgbW9u
+aXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAyMDIwMIICIjANBgkq
+hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWiD59b
+RatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9Z
+YybNpyrOVPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3
+QWPKzv9pj2gOlTblzLmMCcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPw
+yJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCmfecqQjuCgGOlYx8ZzHyyZqjC0203b+J+
+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKAA1GqtH6qRNdDYfOiaxaJ
+SaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9ORJitHHmkH
+r96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj0
+4KlGDfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9Me
+dKZssCz3AwyIDMvUclOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIw
+q7ejMZdnrY8XD2zHc+0klGvIg5rQmjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2
+nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
+AQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1UdIwQYMBaAFNwu
+H9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA
+VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJC
+XtzoRlgHNQIw4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd
+6IwPS3BD0IL/qMy/pJTAvoe9iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf
++I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS8cE54+X1+NZK3TTN+2/BT+MAi1bi
+kvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2HcqtbepBEX4tdJP7
+wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxSvTOB
+TI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6C
+MUO+1918oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn
+4rnvyOL2NSl6dPrFf4IFYqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+I
+aFvowdlxfv1k7/9nR4hYJS8+hge9+6jlgqispdNpQ80xiEmEU5LAsTkbOYMBMMTy
+qfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg==
+-----END CERTIFICATE-----
diff --git a/etc/ssl/certs/ca6e4ad9.0 b/etc/ssl/certs/ca6e4ad9.0
new file mode 120000 (symlink)
index 0000000..592abb2
--- /dev/null
@@ -0,0 +1 @@
+ePKI_Root_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/cbf06781.0 b/etc/ssl/certs/cbf06781.0
new file mode 120000 (symlink)
index 0000000..4ddf0c0
--- /dev/null
@@ -0,0 +1 @@
+Go_Daddy_Root_Certificate_Authority_-_G2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/cc450945.0 b/etc/ssl/certs/cc450945.0
new file mode 120000 (symlink)
index 0000000..0762452
--- /dev/null
@@ -0,0 +1 @@
+Izenpe.com.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/cd58d51e.0 b/etc/ssl/certs/cd58d51e.0
new file mode 120000 (symlink)
index 0000000..4e8c627
--- /dev/null
@@ -0,0 +1 @@
+Security_Communication_RootCA2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/cd8c0d63.0 b/etc/ssl/certs/cd8c0d63.0
new file mode 120000 (symlink)
index 0000000..c556690
--- /dev/null
@@ -0,0 +1 @@
+AC_RAIZ_FNMT-RCM.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/ce5e74ef.0 b/etc/ssl/certs/ce5e74ef.0
new file mode 120000 (symlink)
index 0000000..cb66f0b
--- /dev/null
@@ -0,0 +1 @@
+Amazon_Root_CA_1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/certSIGN_ROOT_CA.pem b/etc/ssl/certs/certSIGN_ROOT_CA.pem
new file mode 120000 (symlink)
index 0000000..b91d221
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/certSIGN_ROOT_CA.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/certSIGN_Root_CA_G2.pem b/etc/ssl/certs/certSIGN_Root_CA_G2.pem
new file mode 120000 (symlink)
index 0000000..cef509c
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/certSIGN_Root_CA_G2.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/d4dae3dd.0 b/etc/ssl/certs/d4dae3dd.0
new file mode 120000 (symlink)
index 0000000..029eda8
--- /dev/null
@@ -0,0 +1 @@
+D-TRUST_Root_Class_3_CA_2_EV_2009.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/d6325660.0 b/etc/ssl/certs/d6325660.0
new file mode 120000 (symlink)
index 0000000..e5b24aa
--- /dev/null
@@ -0,0 +1 @@
+COMODO_RSA_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/d7e8dc79.0 b/etc/ssl/certs/d7e8dc79.0
new file mode 120000 (symlink)
index 0000000..ded02df
--- /dev/null
@@ -0,0 +1 @@
+QuoVadis_Root_CA_2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/d887a5bb.0 b/etc/ssl/certs/d887a5bb.0
new file mode 120000 (symlink)
index 0000000..99d24aa
--- /dev/null
@@ -0,0 +1 @@
+Trustwave_Global_ECC_P384_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/dc4d6a89.0 b/etc/ssl/certs/dc4d6a89.0
new file mode 120000 (symlink)
index 0000000..747ad9f
--- /dev/null
@@ -0,0 +1 @@
+GlobalSign_Root_CA_-_R6.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/dd8e9d41.0 b/etc/ssl/certs/dd8e9d41.0
new file mode 120000 (symlink)
index 0000000..2b90a45
--- /dev/null
@@ -0,0 +1 @@
+DigiCert_Global_Root_G3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/de6d66f3.0 b/etc/ssl/certs/de6d66f3.0
new file mode 120000 (symlink)
index 0000000..f96d5e0
--- /dev/null
@@ -0,0 +1 @@
+Amazon_Root_CA_4.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/e-Szigno_Root_CA_2017.pem b/etc/ssl/certs/e-Szigno_Root_CA_2017.pem
new file mode 120000 (symlink)
index 0000000..36479f3
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/e-Szigno_Root_CA_2017.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/e113c810.0 b/etc/ssl/certs/e113c810.0
new file mode 120000 (symlink)
index 0000000..b274bd8
--- /dev/null
@@ -0,0 +1 @@
+Certigna.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/e18bfb83.0 b/etc/ssl/certs/e18bfb83.0
new file mode 120000 (symlink)
index 0000000..492c36d
--- /dev/null
@@ -0,0 +1 @@
+QuoVadis_Root_CA_3_G3.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/e35234b1.0 b/etc/ssl/certs/e35234b1.0
new file mode 120000 (symlink)
index 0000000..ff2aade
--- /dev/null
@@ -0,0 +1 @@
+Certum_Trusted_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/e36a6752.0 b/etc/ssl/certs/e36a6752.0
new file mode 120000 (symlink)
index 0000000..8be8ce7
--- /dev/null
@@ -0,0 +1 @@
+Atos_TrustedRoot_2011.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/e73d606e.0 b/etc/ssl/certs/e73d606e.0
new file mode 120000 (symlink)
index 0000000..99ec072
--- /dev/null
@@ -0,0 +1 @@
+OISTE_WISeKey_Global_Root_GB_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/e868b802.0 b/etc/ssl/certs/e868b802.0
new file mode 120000 (symlink)
index 0000000..ca6feba
--- /dev/null
@@ -0,0 +1 @@
+e-Szigno_Root_CA_2017.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/e8de2f56.0 b/etc/ssl/certs/e8de2f56.0
new file mode 120000 (symlink)
index 0000000..d3c6de0
--- /dev/null
@@ -0,0 +1 @@
+Buypass_Class_3_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/ePKI_Root_Certification_Authority.pem b/etc/ssl/certs/ePKI_Root_Certification_Authority.pem
new file mode 120000 (symlink)
index 0000000..c47e359
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/ePKI_Root_Certification_Authority.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/ee64a828.0 b/etc/ssl/certs/ee64a828.0
new file mode 120000 (symlink)
index 0000000..d1385e4
--- /dev/null
@@ -0,0 +1 @@
+Comodo_AAA_Services_root.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/eed8c118.0 b/etc/ssl/certs/eed8c118.0
new file mode 120000 (symlink)
index 0000000..2c7c8c7
--- /dev/null
@@ -0,0 +1 @@
+COMODO_ECC_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/ef954a4e.0 b/etc/ssl/certs/ef954a4e.0
new file mode 120000 (symlink)
index 0000000..6d43d0a
--- /dev/null
@@ -0,0 +1 @@
+IdenTrust_Commercial_Root_CA_1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/emSign_ECC_Root_CA_-_C3.pem b/etc/ssl/certs/emSign_ECC_Root_CA_-_C3.pem
new file mode 120000 (symlink)
index 0000000..02e873d
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/emSign_ECC_Root_CA_-_C3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/emSign_ECC_Root_CA_-_G3.pem b/etc/ssl/certs/emSign_ECC_Root_CA_-_G3.pem
new file mode 120000 (symlink)
index 0000000..b5da078
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/emSign_ECC_Root_CA_-_G3.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/emSign_Root_CA_-_C1.pem b/etc/ssl/certs/emSign_Root_CA_-_C1.pem
new file mode 120000 (symlink)
index 0000000..962ee94
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/emSign_Root_CA_-_C1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/emSign_Root_CA_-_G1.pem b/etc/ssl/certs/emSign_Root_CA_-_G1.pem
new file mode 120000 (symlink)
index 0000000..8858dd8
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/ca-certificates/mozilla/emSign_Root_CA_-_G1.crt
\ No newline at end of file
diff --git a/etc/ssl/certs/f081611a.0 b/etc/ssl/certs/f081611a.0
new file mode 120000 (symlink)
index 0000000..12859a1
--- /dev/null
@@ -0,0 +1 @@
+Go_Daddy_Class_2_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/f0c70a8d.0 b/etc/ssl/certs/f0c70a8d.0
new file mode 120000 (symlink)
index 0000000..43798c3
--- /dev/null
@@ -0,0 +1 @@
+SSL.com_EV_Root_Certification_Authority_ECC.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/f249de83.0 b/etc/ssl/certs/f249de83.0
new file mode 120000 (symlink)
index 0000000..fc79f36
--- /dev/null
@@ -0,0 +1 @@
+Trustwave_Global_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/f30dd6ad.0 b/etc/ssl/certs/f30dd6ad.0
new file mode 120000 (symlink)
index 0000000..e08a770
--- /dev/null
@@ -0,0 +1 @@
+USERTrust_ECC_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/f3377b1b.0 b/etc/ssl/certs/f3377b1b.0
new file mode 120000 (symlink)
index 0000000..7a8d183
--- /dev/null
@@ -0,0 +1 @@
+Security_Communication_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/f387163d.0 b/etc/ssl/certs/f387163d.0
new file mode 120000 (symlink)
index 0000000..8a8a6c1
--- /dev/null
@@ -0,0 +1 @@
+Starfield_Class_2_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/f39fc864.0 b/etc/ssl/certs/f39fc864.0
new file mode 120000 (symlink)
index 0000000..8949834
--- /dev/null
@@ -0,0 +1 @@
+SecureTrust_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/f51bb24c.0 b/etc/ssl/certs/f51bb24c.0
new file mode 120000 (symlink)
index 0000000..7b1be65
--- /dev/null
@@ -0,0 +1 @@
+Certigna_Root_CA.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/fa5da96b.0 b/etc/ssl/certs/fa5da96b.0
new file mode 120000 (symlink)
index 0000000..03f6e58
--- /dev/null
@@ -0,0 +1 @@
+GLOBALTRUST_2020.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/fc5a8f99.0 b/etc/ssl/certs/fc5a8f99.0
new file mode 120000 (symlink)
index 0000000..e29daca
--- /dev/null
@@ -0,0 +1 @@
+USERTrust_RSA_Certification_Authority.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/fe8a2cd8.0 b/etc/ssl/certs/fe8a2cd8.0
new file mode 120000 (symlink)
index 0000000..4c87925
--- /dev/null
@@ -0,0 +1 @@
+SZAFIR_ROOT_CA2.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/feffd413.0 b/etc/ssl/certs/feffd413.0
new file mode 120000 (symlink)
index 0000000..bb3ce89
--- /dev/null
@@ -0,0 +1 @@
+GlobalSign_Root_E46.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/ff34af3f.0 b/etc/ssl/certs/ff34af3f.0
new file mode 120000 (symlink)
index 0000000..6cdb0a2
--- /dev/null
@@ -0,0 +1 @@
+TUBITAK_Kamu_SM_SSL_Kok_Sertifikasi_-_Surum_1.pem
\ No newline at end of file
diff --git a/etc/ssl/certs/ssl-cert-snakeoil.pem b/etc/ssl/certs/ssl-cert-snakeoil.pem
new file mode 100644 (file)
index 0000000..48e8079
--- /dev/null
@@ -0,0 +1,18 @@
+-----BEGIN CERTIFICATE-----
+MIICzTCCAbWgAwIBAgIUPP4p7J1yEkvAFkIZPQoSrXHLNOcwDQYJKoZIhvcNAQEL
+BQAwEDEOMAwGA1UEAwwFdnBzNzYwHhcNMjIwNjA3MTE1NzQ4WhcNMzIwNjA0MTE1
+NzQ4WjAQMQ4wDAYDVQQDDAV2cHM3NjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAKvzxy/Uh0+ScbUids6/TznvVPVCUZlCzhJFdJZ48kfzQ6VB7npHdTZh
+ZHwRYCESEWCeeTygFuDr598o/REHWFO7Ph51AhJru8Kq4DZFPKJK1+y1VNVpBJEm
+pZrgR3t/S7rIKef4WrTH+oM/t1TC+M/U/JtQeIIOoCFOH1exsiGQJ3RtjXly2Pjj
+v7G12XeyUqBkmCkPQASb6nVHNV9vvTNSASypIIm3iDIxvMPrzNAVTLtXJC6tfVKn
+XxoE4l3mOiedd3M6c1PLZWoUnTPcQZ+xvMjZPgMvYAXFdeJWKyfvd1y1x1lTIKmn
+oxElPHJ736FLzI64UaoMkVWLVHCmTnsCAwEAAaMfMB0wCQYDVR0TBAIwADAQBgNV
+HREECTAHggV2cHM3NjANBgkqhkiG9w0BAQsFAAOCAQEAYXUdyCB4zv8yElEiclC9
+zGqdECdUDB1BknhO4kaH/dWOF/T2Mbq0UxXD3uAtbYLVfhc/3K0c6X6mZYrIasTr
+DaI9LSPGRumOp2M4tIBvQWQUYxnXLWu9FhLxKHUJSdnoq/gb6IM+sZ8HUSKNhFfE
+BIcGsKgm+IqBiORXykW1ebvoOyEsinjRNqNJOPKBB+nwoxVD/6pE5N/CSkupNLux
+bTM1odNJkDtSIf+o7gOnRDMTz6mcnioLi4Wbjc5pDyufPFV6REl9cYSgIStQTUtR
+5SOIriflYlmLgFVDJDM3grbKTY3cDmUQ4ml7YaWxvGXrE3cE6aMqrxS6wKWUcG60
+tw==
+-----END CERTIFICATE-----
diff --git a/etc/ssl/openssl.cnf b/etc/ssl/openssl.cnf
new file mode 100644 (file)
index 0000000..4acca4b
--- /dev/null
@@ -0,0 +1,350 @@
+#
+# OpenSSL example configuration file.
+# This is mostly being used for generation of certificate requests.
+#
+
+# Note that you can include other files from the main configuration
+# file using the .include directive.
+#.include filename
+
+# This definition stops the following lines choking if HOME isn't
+# defined.
+HOME                   = .
+
+# Extra OBJECT IDENTIFIER info:
+#oid_file              = $ENV::HOME/.oid
+oid_section            = new_oids
+
+# To use this configuration file with the "-extfile" option of the
+# "openssl x509" utility, name here the section containing the
+# X.509v3 extensions to use:
+# extensions           =
+# (Alternatively, use a configuration file that has only
+# X.509v3 extensions in its main [= default] section.)
+
+[ new_oids ]
+
+# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
+# Add a simple OID like this:
+# testoid1=1.2.3.4
+# Or use config file substitution like this:
+# testoid2=${testoid1}.5.6
+
+# Policies used by the TSA examples.
+tsa_policy1 = 1.2.3.4.1
+tsa_policy2 = 1.2.3.4.5.6
+tsa_policy3 = 1.2.3.4.5.7
+
+####################################################################
+[ ca ]
+default_ca     = CA_default            # The default ca section
+
+####################################################################
+[ CA_default ]
+
+dir            = ./demoCA              # Where everything is kept
+certs          = $dir/certs            # Where the issued certs are kept
+crl_dir                = $dir/crl              # Where the issued crl are kept
+database       = $dir/index.txt        # database index file.
+#unique_subject        = no                    # Set to 'no' to allow creation of
+                                       # several certs with same subject.
+new_certs_dir  = $dir/newcerts         # default place for new certs.
+
+certificate    = $dir/cacert.pem       # The CA certificate
+serial         = $dir/serial           # The current serial number
+crlnumber      = $dir/crlnumber        # the current crl number
+                                       # must be commented out to leave a V1 CRL
+crl            = $dir/crl.pem          # The current CRL
+private_key    = $dir/private/cakey.pem# The private key
+
+x509_extensions        = usr_cert              # The extensions to add to the cert
+
+# Comment out the following two lines for the "traditional"
+# (and highly broken) format.
+name_opt       = ca_default            # Subject Name options
+cert_opt       = ca_default            # Certificate field options
+
+# Extension copying option: use with caution.
+# copy_extensions = copy
+
+# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
+# so this is commented out by default to leave a V1 CRL.
+# crlnumber must also be commented out to leave a V1 CRL.
+# crl_extensions       = crl_ext
+
+default_days   = 365                   # how long to certify for
+default_crl_days= 30                   # how long before next CRL
+default_md     = default               # use public key default MD
+preserve       = no                    # keep passed DN ordering
+
+# A few difference way of specifying how similar the request should look
+# For type CA, the listed attributes must be the same, and the optional
+# and supplied fields are just that :-)
+policy         = policy_match
+
+# For the CA policy
+[ policy_match ]
+countryName            = match
+stateOrProvinceName    = match
+organizationName       = match
+organizationalUnitName = optional
+commonName             = supplied
+emailAddress           = optional
+
+# For the 'anything' policy
+# At this point in time, you must list all acceptable 'object'
+# types.
+[ policy_anything ]
+countryName            = optional
+stateOrProvinceName    = optional
+localityName           = optional
+organizationName       = optional
+organizationalUnitName = optional
+commonName             = supplied
+emailAddress           = optional
+
+####################################################################
+[ req ]
+default_bits           = 2048
+default_keyfile        = privkey.pem
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+x509_extensions        = v3_ca # The extensions to add to the self signed cert
+
+# Passwords for private keys if not present they will be prompted for
+# input_password = secret
+# output_password = secret
+
+# This sets a mask for permitted string types. There are several options.
+# default: PrintableString, T61String, BMPString.
+# pkix  : PrintableString, BMPString (PKIX recommendation before 2004)
+# utf8only: only UTF8Strings (PKIX recommendation after 2004).
+# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
+# MASK:XXXX a literal mask value.
+# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
+string_mask = utf8only
+
+# req_extensions = v3_req # The extensions to add to a certificate request
+
+[ req_distinguished_name ]
+countryName                    = Country Name (2 letter code)
+countryName_default            = AU
+countryName_min                        = 2
+countryName_max                        = 2
+
+stateOrProvinceName            = State or Province Name (full name)
+stateOrProvinceName_default    = Some-State
+
+localityName                   = Locality Name (eg, city)
+
+0.organizationName             = Organization Name (eg, company)
+0.organizationName_default     = Internet Widgits Pty Ltd
+
+# we can do this but it is not needed normally :-)
+#1.organizationName            = Second Organization Name (eg, company)
+#1.organizationName_default    = World Wide Web Pty Ltd
+
+organizationalUnitName         = Organizational Unit Name (eg, section)
+#organizationalUnitName_default        =
+
+commonName                     = Common Name (e.g. server FQDN or YOUR name)
+commonName_max                 = 64
+
+emailAddress                   = Email Address
+emailAddress_max               = 64
+
+# SET-ex3                      = SET extension number 3
+
+[ req_attributes ]
+challengePassword              = A challenge password
+challengePassword_min          = 4
+challengePassword_max          = 20
+
+unstructuredName               = An optional company name
+
+[ usr_cert ]
+
+# These extensions are added when 'ca' signs a request.
+
+# This goes against PKIX guidelines but some CAs do it and some software
+# requires this to avoid interpreting an end user certificate as a CA.
+
+basicConstraints=CA:FALSE
+
+# Here are some examples of the usage of nsCertType. If it is omitted
+# the certificate can be used for anything *except* object signing.
+
+# This is OK for an SSL server.
+# nsCertType                   = server
+
+# For an object signing certificate this would be used.
+# nsCertType = objsign
+
+# For normal client use this is typical
+# nsCertType = client, email
+
+# and for everything including object signing:
+# nsCertType = client, email, objsign
+
+# This is typical in keyUsage for a client certificate.
+# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+# This will be displayed in Netscape's comment listbox.
+nsComment                      = "OpenSSL Generated Certificate"
+
+# PKIX recommendations harmless if included in all certificates.
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid,issuer
+
+# This stuff is for subjectAltName and issuerAltname.
+# Import the email address.
+# subjectAltName=email:copy
+# An alternative to produce certificates that aren't
+# deprecated according to PKIX.
+# subjectAltName=email:move
+
+# Copy subject details
+# issuerAltName=issuer:copy
+
+#nsCaRevocationUrl             = http://www.domain.dom/ca-crl.pem
+#nsBaseUrl
+#nsRevocationUrl
+#nsRenewalUrl
+#nsCaPolicyUrl
+#nsSslServerName
+
+# This is required for TSA certificates.
+# extendedKeyUsage = critical,timeStamping
+
+[ v3_req ]
+
+# Extensions to add to a certificate request
+
+basicConstraints = CA:FALSE
+keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+[ v3_ca ]
+
+
+# Extensions for a typical CA
+
+
+# PKIX recommendation.
+
+subjectKeyIdentifier=hash
+
+authorityKeyIdentifier=keyid:always,issuer
+
+basicConstraints = critical,CA:true
+
+# Key usage: this is typical for a CA certificate. However since it will
+# prevent it being used as an test self-signed certificate it is best
+# left out by default.
+# keyUsage = cRLSign, keyCertSign
+
+# Some might want this also
+# nsCertType = sslCA, emailCA
+
+# Include email address in subject alt name: another PKIX recommendation
+# subjectAltName=email:copy
+# Copy issuer details
+# issuerAltName=issuer:copy
+
+# DER hex encoding of an extension: beware experts only!
+# obj=DER:02:03
+# Where 'obj' is a standard or added object
+# You can even override a supported extension:
+# basicConstraints= critical, DER:30:03:01:01:FF
+
+[ crl_ext ]
+
+# CRL extensions.
+# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
+
+# issuerAltName=issuer:copy
+authorityKeyIdentifier=keyid:always
+
+[ proxy_cert_ext ]
+# These extensions should be added when creating a proxy certificate
+
+# This goes against PKIX guidelines but some CAs do it and some software
+# requires this to avoid interpreting an end user certificate as a CA.
+
+basicConstraints=CA:FALSE
+
+# Here are some examples of the usage of nsCertType. If it is omitted
+# the certificate can be used for anything *except* object signing.
+
+# This is OK for an SSL server.
+# nsCertType                   = server
+
+# For an object signing certificate this would be used.
+# nsCertType = objsign
+
+# For normal client use this is typical
+# nsCertType = client, email
+
+# and for everything including object signing:
+# nsCertType = client, email, objsign
+
+# This is typical in keyUsage for a client certificate.
+# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+# This will be displayed in Netscape's comment listbox.
+nsComment                      = "OpenSSL Generated Certificate"
+
+# PKIX recommendations harmless if included in all certificates.
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid,issuer
+
+# This stuff is for subjectAltName and issuerAltname.
+# Import the email address.
+# subjectAltName=email:copy
+# An alternative to produce certificates that aren't
+# deprecated according to PKIX.
+# subjectAltName=email:move
+
+# Copy subject details
+# issuerAltName=issuer:copy
+
+#nsCaRevocationUrl             = http://www.domain.dom/ca-crl.pem
+#nsBaseUrl
+#nsRevocationUrl
+#nsRenewalUrl
+#nsCaPolicyUrl
+#nsSslServerName
+
+# This really needs to be in place for it to be a proxy certificate.
+proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
+
+####################################################################
+[ tsa ]
+
+default_tsa = tsa_config1      # the default TSA section
+
+[ tsa_config1 ]
+
+# These are used by the TSA reply generation only.
+dir            = ./demoCA              # TSA root directory
+serial         = $dir/tsaserial        # The current serial number (mandatory)
+crypto_device  = builtin               # OpenSSL engine to use for signing
+signer_cert    = $dir/tsacert.pem      # The TSA signing certificate
+                                       # (optional)
+certs          = $dir/cacert.pem       # Certificate chain to include in reply
+                                       # (optional)
+signer_key     = $dir/private/tsakey.pem # The TSA private key (optional)
+signer_digest  = sha256                        # Signing digest to use. (Optional)
+default_policy = tsa_policy1           # Policy if request did not specify it
+                                       # (optional)
+other_policies = tsa_policy2, tsa_policy3      # acceptable policies (optional)
+digests     = sha1, sha256, sha384, sha512  # Acceptable message digests (mandatory)
+accuracy       = secs:1, millisecs:500, microsecs:100  # (optional)
+clock_precision_digits  = 0    # number of digits after dot. (optional)
+ordering               = yes   # Is ordering defined for timestamps?
+                               # (optional, default: no)
+tsa_name               = yes   # Must the TSA name be included in the reply?
+                               # (optional, default: no)
+ess_cert_id_chain      = no    # Must the ESS cert id chain be included?
+                               # (optional, default: no)
+ess_cert_id_alg                = sha1  # algorithm to compute certificate
+                               # identifier (optional, default: sha1)
diff --git a/etc/ssl/private/ssl-cert-snakeoil.key b/etc/ssl/private/ssl-cert-snakeoil.key
new file mode 100644 (file)
index 0000000..6e4fc50
--- /dev/null
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCr88cv1IdPknG1
+InbOv08571T1QlGZQs4SRXSWePJH80OlQe56R3U2YWR8EWAhEhFgnnk8oBbg6+ff
+KP0RB1hTuz4edQISa7vCquA2RTyiStfstVTVaQSRJqWa4Ed7f0u6yCnn+Fq0x/qD
+P7dUwvjP1PybUHiCDqAhTh9XsbIhkCd0bY15ctj447+xtdl3slKgZJgpD0AEm+p1
+RzVfb70zUgEsqSCJt4gyMbzD68zQFUy7VyQurX1Sp18aBOJd5jonnXdzOnNTy2Vq
+FJ0z3EGfsbzI2T4DL2AFxXXiVisn73dctcdZUyCpp6MRJTxye9+hS8yOuFGqDJFV
+i1Rwpk57AgMBAAECggEAYPB/I/zqB7ckuZxjZG1AKgY+XEJ2JDQgXvafItGurVd8
+lGcWHgO5Fd5UOwnEqwA3ocPVz5LlMwpr30iJWxdL+XB/NcZ7U40+/iE9Y/smkswk
+7QLRf7rD41zpUeYNBpeeRv/feDJwWKjBF0tNfNCqWujVPG5icdfy+LPFQbghF3/z
+XnJ2rGG9nGKzHDQMSdeG9HzncxJRYMBiqucI5QSDBCNvsridaSRhksf51eST+Ezk
+YLzwKBGP+eM/HJ7TKKFtambR99rkDhi/9vSrzwRhr06tO5IJ9C7uhrOORO909MiT
+fMed5rsvIQirDhN6tbNH5PoQG3sYm9KQrg1JUj+oKQKBgQDf1hi+hdV111WxCvHB
+HU3wHE1WrYugqUfJhg7uUrCEwqeyWPt2hHGYKJW+hWX3pi0AxfqYU0TjhTSOyrNh
+y8b1+wwnbMxzQ3bC2vNEdTFD1GYfVmLWWRGgeCCy+R9uZYL/8dGr1FHMSBBHUvhi
+e7XNDzTPJrsgOXuMSmmCsORhHwKBgQDEqRtW+QtMrkVJfemVbSnkl0/7kE1jJsu3
+tEAhG2mZuvzjE0hyWVlnGgbjF0u1IeteUMWE32wezjWI9uZbKm2MTfaIlKGe6iBV
+7ZnDwYrGOhlUI2N/2gCSqfKGJEGjHTj2ZmaCs5SN/jgbYCy/vK6u/pT5+QBb5nWl
+tIrmS9obJQKBgDc80Xxq8KOVEVuQdNqQTcR8Z4WFbFiojcOoppSfqVoJ43J6zQuR
+YasIEPQkXWaBBsgTE2V13yE6pR673Qq8TAw1+Ojdy5KCSpOJjtENDqxLhSwkmF2H
+O3dbTc589gm7WVmqJnD+A3WjLwk663r6RoIlR4X7a+Bm7xtO3bzXxHRHAoGAKqZW
+FI2cQrwEsMSK1OpAzJ94LCGGdvth8Ow5gDSWuU1RLNnwu0PfXLnLRpK1y4mYpvKz
+c3aU1zV3bMXG/Xx9F5GM5t/9ER7Ldnc6ArdFpmnRNmsaWA7qUuRigW75gSuEQAPD
+NZNGo2i/uEgqTEbaR39UxcWXq1aWqyI1gW5v1bUCgYEAjjv8/FpvFZAAOW+dUtQ3
+ZG+RmXO98q6zxJqo4MJNRdyfMSB3XlHfAenSalFTrP3Igau8FMkAS/XeMs6kwt4m
+wvSsFoQtjGGBBCMCa79Uy3QYEZkvQpKHzjxqWE3d+Q5UNCf/IZQTRsNcmPFQZ6Zb
+V0Fz9Yei6w9W3s6t4fROFUg=
+-----END PRIVATE KEY-----
diff --git a/etc/subgid b/etc/subgid
new file mode 100644 (file)
index 0000000..b11f6c5
--- /dev/null
@@ -0,0 +1,3 @@
+shane:165536:65536
+jon:231072:65536
+gg:296608:65536
diff --git a/etc/subgid- b/etc/subgid-
new file mode 100644 (file)
index 0000000..3857e50
--- /dev/null
@@ -0,0 +1,4 @@
+gamesguru:100000:65536
+shane:165536:65536
+jon:231072:65536
+gg:296608:65536
diff --git a/etc/subuid b/etc/subuid
new file mode 100644 (file)
index 0000000..b11f6c5
--- /dev/null
@@ -0,0 +1,3 @@
+shane:165536:65536
+jon:231072:65536
+gg:296608:65536
diff --git a/etc/subuid- b/etc/subuid-
new file mode 100644 (file)
index 0000000..3857e50
--- /dev/null
@@ -0,0 +1,4 @@
+gamesguru:100000:65536
+shane:165536:65536
+jon:231072:65536
+gg:296608:65536
diff --git a/etc/sudoers.d/README b/etc/sudoers.d/README
new file mode 100644 (file)
index 0000000..b5ed892
--- /dev/null
@@ -0,0 +1,21 @@
+#
+# As of Debian version 1.7.2p1-1, the default /etc/sudoers file created on
+# installation of the package now includes the directive:
+# 
+#      #includedir /etc/sudoers.d
+# 
+# This will cause sudo to read and parse any files in the /etc/sudoers.d 
+# directory that do not end in '~' or contain a '.' character.
+# 
+# Note that there must be at least one file in the sudoers.d directory (this
+# one will do), and all files in this directory should be mode 0440.
+# 
+# Note also, that because sudoers contents can vary widely, no attempt is 
+# made to add this directive to existing sudoers files on upgrade.  Feel free
+# to add the above directive to the end of your /etc/sudoers file to enable 
+# this functionality for existing installations if you wish!
+#
+# Finally, please note that using the visudo command is the recommended way
+# to update sudoers content, since it protects against many failure modes.
+# See the man page for visudo for more information.
+#
diff --git a/etc/sysctl.conf b/etc/sysctl.conf
new file mode 100644 (file)
index 0000000..bd112aa
--- /dev/null
@@ -0,0 +1,68 @@
+#
+# /etc/sysctl.conf - Configuration file for setting system variables
+# See /etc/sysctl.d/ for additional system variables.
+# See sysctl.conf (5) for information.
+#
+
+#kernel.domainname = example.com
+
+# Uncomment the following to stop low-level messages on console
+#kernel.printk = 3 4 1 3
+
+##############################################################3
+# Functions previously found in netbase
+#
+
+# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
+# Turn on Source Address Verification in all interfaces to
+# prevent some spoofing attacks
+#net.ipv4.conf.default.rp_filter=1
+#net.ipv4.conf.all.rp_filter=1
+
+# Uncomment the next line to enable TCP/IP SYN cookies
+# See http://lwn.net/Articles/277146/
+# Note: This may impact IPv6 TCP sessions too
+#net.ipv4.tcp_syncookies=1
+
+# Uncomment the next line to enable packet forwarding for IPv4
+#net.ipv4.ip_forward=1
+
+# Uncomment the next line to enable packet forwarding for IPv6
+#  Enabling this option disables Stateless Address Autoconfiguration
+#  based on Router Advertisements for this host
+#net.ipv6.conf.all.forwarding=1
+
+
+###################################################################
+# Additional settings - these settings can improve the network
+# security of the host and prevent against some network attacks
+# including spoofing attacks and man in the middle attacks through
+# redirection. Some network environments, however, require that these
+# settings are disabled so review and enable them as needed.
+#
+# Do not accept ICMP redirects (prevent MITM attacks)
+#net.ipv4.conf.all.accept_redirects = 0
+#net.ipv6.conf.all.accept_redirects = 0
+# _or_
+# Accept ICMP redirects only for gateways listed in our default
+# gateway list (enabled by default)
+# net.ipv4.conf.all.secure_redirects = 1
+#
+# Do not send ICMP redirects (we are not a router)
+#net.ipv4.conf.all.send_redirects = 0
+#
+# Do not accept IP source route packets (we are not a router)
+#net.ipv4.conf.all.accept_source_route = 0
+#net.ipv6.conf.all.accept_source_route = 0
+#
+# Log Martian Packets
+#net.ipv4.conf.all.log_martians = 1
+#
+
+###################################################################
+# Magic system request Key
+# 0=disable, 1=enable all, >1 bitmask of sysrq functions
+# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
+# for what other values do
+#kernel.sysrq=438
+
diff --git a/etc/sysctl.d/10-console-messages.conf b/etc/sysctl.d/10-console-messages.conf
new file mode 100644 (file)
index 0000000..8402cf4
--- /dev/null
@@ -0,0 +1,3 @@
+
+# the following stops low-level messages on console
+kernel.printk = 4 4 1 7
diff --git a/etc/sysctl.d/10-ipv6-privacy.conf b/etc/sysctl.d/10-ipv6-privacy.conf
new file mode 100644 (file)
index 0000000..e0eac25
--- /dev/null
@@ -0,0 +1,12 @@
+# IPv6 Privacy Extensions (RFC 4941)
+# ---
+# IPv6 typically uses a device's MAC address when choosing an IPv6 address
+# to use in autoconfiguration. Privacy extensions allow using a randomly
+# generated IPv6 address, which increases privacy.
+#
+# Acceptable values:
+#    0 - don’t use privacy extensions.
+#    1 - generate privacy addresses
+#    2 - prefer privacy addresses and use them over the normal addresses.
+net.ipv6.conf.all.use_tempaddr = 2
+net.ipv6.conf.default.use_tempaddr = 2
diff --git a/etc/sysctl.d/10-kernel-hardening.conf b/etc/sysctl.d/10-kernel-hardening.conf
new file mode 100644 (file)
index 0000000..deffa15
--- /dev/null
@@ -0,0 +1,15 @@
+# These settings are specific to hardening the kernel itself from attack
+# from userspace, rather than protecting userspace from other malicious
+# userspace things.
+#
+#
+# When an attacker is trying to exploit the local kernel, it is often
+# helpful to be able to examine where in memory the kernel, modules,
+# and data structures live. As such, kernel addresses should be treated
+# as sensitive information.
+#
+# Many files and interfaces contain these addresses (e.g. /proc/kallsyms,
+# /proc/modules, etc), and this setting can censor the addresses. A value
+# of "0" allows all users to see the kernel addresses. A value of "1"
+# limits visibility to the root user, and "2" blocks even the root user.
+kernel.kptr_restrict = 1
diff --git a/etc/sysctl.d/10-link-restrictions.conf b/etc/sysctl.d/10-link-restrictions.conf
new file mode 100644 (file)
index 0000000..8ad996c
--- /dev/null
@@ -0,0 +1,5 @@
+# These settings eliminate an entire class of security vulnerability:
+# time-of-check-time-of-use cross-privilege attacks using guessable
+# filenames (generally seen as "/tmp file race" vulnerabilities).
+fs.protected_hardlinks = 1
+fs.protected_symlinks = 1
diff --git a/etc/sysctl.d/10-magic-sysrq.conf b/etc/sysctl.d/10-magic-sysrq.conf
new file mode 100644 (file)
index 0000000..d98a64d
--- /dev/null
@@ -0,0 +1,26 @@
+# The magic SysRq key enables certain keyboard combinations to be
+# interpreted by the kernel to help with debugging. The kernel will respond
+# to these keys regardless of the current running applications.
+#
+# In general, the magic SysRq key is not needed for the average Ubuntu
+# system, and having it enabled by default can lead to security issues on
+# the console such as being able to dump memory or to kill arbitrary
+# processes including the running screen lock.
+#
+# Here is the list of possible values:
+#   0 - disable sysrq completely
+#   1 - enable all functions of sysrq
+#  >1 - enable certain functions by adding up the following values:
+#          2 - enable control of console logging level
+#          4 - enable control of keyboard (SAK, unraw)
+#          8 - enable debugging dumps of processes etc.
+#         16 - enable sync command
+#         32 - enable remount read-only
+#         64 - enable signalling of processes (term, kill, oom-kill)
+#        128 - allow reboot/poweroff
+#        256 - allow nicing of all RT tasks
+#
+#   For example, to enable both control of console logging level and
+#   debugging dumps of processes: kernel.sysrq = 10
+#
+kernel.sysrq = 176
diff --git a/etc/sysctl.d/10-network-security.conf b/etc/sysctl.d/10-network-security.conf
new file mode 100644 (file)
index 0000000..dc18125
--- /dev/null
@@ -0,0 +1,6 @@
+
+# Turn on Source Address Verification in all interfaces to
+# prevent some spoofing attacks.
+net.ipv4.conf.default.rp_filter=2
+net.ipv4.conf.all.rp_filter=2
+
diff --git a/etc/sysctl.d/10-ptrace.conf b/etc/sysctl.d/10-ptrace.conf
new file mode 100644 (file)
index 0000000..bb39c6b
--- /dev/null
@@ -0,0 +1,22 @@
+# The PTRACE system is used for debugging.  With it, a single user process
+# can attach to any other dumpable process owned by the same user.  In the
+# case of malicious software, it is possible to use PTRACE to access
+# credentials that exist in memory (re-using existing SSH connections,
+# extracting GPG agent information, etc).
+#
+# A PTRACE scope of "0" is the more permissive mode.  A scope of "1" limits
+# PTRACE only to direct child processes (e.g. "gdb name-of-program" and
+# "strace -f name-of-program" work, but gdb's "attach" and "strace -fp $PID"
+# do not).  The PTRACE scope is ignored when a user has CAP_SYS_PTRACE, so
+# "sudo strace -fp $PID" will work as before.  For more details see:
+# https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace
+#
+# For applications launching crash handlers that need PTRACE, exceptions can
+# be registered by the debugee by declaring in the segfault handler
+# specifically which process will be using PTRACE on the debugee:
+#   prctl(PR_SET_PTRACER, debugger_pid, 0, 0, 0);
+#
+# In general, PTRACE is not needed for the average running Ubuntu system.
+# To that end, the default is to set the PTRACE scope to "1".  This value
+# may not be appropriate for developers or servers with only admin accounts.
+kernel.yama.ptrace_scope = 1
diff --git a/etc/sysctl.d/10-zeropage.conf b/etc/sysctl.d/10-zeropage.conf
new file mode 100644 (file)
index 0000000..d2faee6
--- /dev/null
@@ -0,0 +1,9 @@
+# Protect the zero page of memory from userspace mmap to prevent kernel
+# NULL-dereference attacks against potential future kernel security
+# vulnerabilities.  (Added in kernel 2.6.23.)
+#
+# While this default is built into the Ubuntu kernel, there is no way to
+# restore the kernel default if the value is changed during runtime; for
+# example via package removal (e.g. wine, dosemu).  Therefore, this value
+# is reset to the secure default each time the sysctl values are loaded.
+vm.mmap_min_addr = 65536
diff --git a/etc/sysctl.d/30-postgresql-shm.conf b/etc/sysctl.d/30-postgresql-shm.conf
new file mode 100644 (file)
index 0000000..f5e31ec
--- /dev/null
@@ -0,0 +1,12 @@
+# Shared memory settings for PostgreSQL on Linux
+
+# The settings here are upper limits; performance is not affected if the
+# settings are larger than necessary. If other programs use shared memory as
+# well, you will have to coordinate the size settings between them.
+
+# Maximum size of a single shared memory segment in bytes
+#kernel.shmmax = 33554432
+
+# Maximum total size of all shared memory segments in pages (normally 4096 bytes)
+#kernel.shmall = 2097152
+
diff --git a/etc/sysctl.d/99-sysctl.conf b/etc/sysctl.d/99-sysctl.conf
new file mode 120000 (symlink)
index 0000000..2b0036b
--- /dev/null
@@ -0,0 +1 @@
+../sysctl.conf
\ No newline at end of file
diff --git a/etc/sysctl.d/README.sysctl b/etc/sysctl.d/README.sysctl
new file mode 100644 (file)
index 0000000..c0e3d6d
--- /dev/null
@@ -0,0 +1,16 @@
+Kernel system variables configuration files
+
+Files found under the /etc/sysctl.d directory that end with .conf are
+parsed within sysctl(8) at boot time.  If you want to set kernel variables
+you can either edit /etc/sysctl.conf or make a new file.
+
+The filename isn't important, but don't make it a package name as it may clash
+with something the package builder needs later. It must end with .conf though.
+
+My personal preference would be for local system settings to go into
+/etc/sysctl.d/local.conf but as long as you follow the rules for the names
+of the file, anything will work. See sysctl.conf(8) man page for details
+of the format.
+
+After making any changes, please run "service procps reload" (or, from
+a Debian package maintainer script "deb-systemd-invoke restart procps.service").
diff --git a/etc/sysstat/sysstat b/etc/sysstat/sysstat
new file mode 100644 (file)
index 0000000..ff858d0
--- /dev/null
@@ -0,0 +1,38 @@
+# sysstat configuration file. See sysstat(5) manual page.
+
+# How long to keep log files (in days).
+# Used by sa2(8) script
+# If value is greater than 28, then use sadc's option -D to prevent older
+# data files from being overwritten. See sadc(8) and sysstat(5) manual pages.
+HISTORY=7
+
+# Compress (using xz, gzip or bzip2) sa and sar files older than (in days):
+COMPRESSAFTER=10
+
+# Parameters for the system activity data collector (see sadc(8) manual page)
+# which are used for the generation of log files.
+# By default contains the `-S DISK' option responsible for generating disk
+# statisitcs. Use `-S XALL' to collect all available statistics.
+SADC_OPTIONS="-S DISK"
+
+# Directory where sa and sar files are saved. The directory must exist.
+SA_DIR=/var/log/sysstat
+
+# Compression program to use.
+ZIP="xz"
+
+# By default sa2 script generates yesterday's summary, since the cron job
+# usually runs right after midnight. If you want sa2 to generate the summary
+# of the same day (for example when cron job runs at 23:53) set this variable.
+#YESTERDAY=no
+
+# By default sa2 script generates reports files (the so called sarDD files).
+# Set this variable to false to disable reports generation.
+#REPORTS=false
+
+# The sa1 and sa2 scripts generate system activity data and report files in
+# the /var/log/sysstat directory. By default the files are created with umask 0022
+# and are therefore readable for all users. Change this variable to restrict
+# the permissions on the files (e.g. use 0027 to adhere to more strict
+# security standards).
+UMASK=0022
diff --git a/etc/sysstat/sysstat.ioconf b/etc/sysstat/sysstat.ioconf
new file mode 100644 (file)
index 0000000..6b806f8
--- /dev/null
@@ -0,0 +1,274 @@
+#
+# sysstat.ioconf
+#
+#  Copyright (C) 2004, Red Hat, Inc.
+#
+#  Maintained by Sebastien Godard (sysstat [at] orange.fr)
+#
+#  This file gives iostat and sadc a clue about how to find whole
+#   disk devices in /proc/partitions and /proc/diskstats
+#  Authoritative source is: linux/Documentation/devices.txt or
+#  linux/Documentation/admin-guide/devices.txt
+#
+# line format, general record:
+#   major:name:ctrlpre:ctrlno:devfmt:devcnt:partpre:partcnt:description
+#
+#  major:              major # for device
+#  name:               base of device name
+#  ctrlpre:            string to use in generating controller designators
+#                       eg: the c in c0d2p6, decimal formatting implied
+#                      '*' means none or irrelevant
+#                      'x': exception... record contains a specific name
+#                       for a specific minor #, stored in the ctrlno field
+#  ctrlno:             which controller of this type is this
+#  devfmt:             type of device naming convention
+#      a:              alpha: xxa, xxb, ... xxaa, xxab, ... xxzz
+#      %string:        string to use in generating drive designators,
+#                       eg: the 'd' in c0d2p6 , decimal formatting implied
+#      d:              no special translations (decimal formatting)
+#  devcnt:             how many whole devs per major number
+#  partpre:            appended to whole dev before part designator
+#                        eg. the p in c0d2p6, decimal formatting implied
+#                       '*' means none
+#  partcnt:            number of partitions per volume
+#                       or minor # for exception records
+#  description:                informative text
+#
+# line format, indirect record:
+#   major:base_major:ctrlno[:[desc]]
+#
+#  major:              major number of the device
+#  base_major:         major number of the template for this type,
+#                       0 for not supported
+#  ctrlno:             controller number of this type
+#  desc:               controller-specific description
+#                      if absent the desc from base_major will be
+#                       used in sprintf( buf, desc, ctrlno )
+
+
+1:ram:*:0:d:256:*:1:RAM disks (ram0..ram255)
+1:initrd:x:250:d:256:*:1:Initial RAM Disk (initrd)
+
+#2:0:0:Floppy Devices
+2:fd:*:0:d:4:*:1:Floppy Devices fd0,fd1,fd2,fd3
+
+3:hd:*:0:a:2:*:64:IDE - Controller %d
+22:3:1:
+33:3:2:
+34:3:3:
+56:3:4:
+57:3:5:
+88:3:6:
+89:3:7:
+90:3:8:
+91:3:9:
+
+#4:0:0:NODEV
+#5:0:0:NODEV
+#6:0:0:NODEV
+7:loop:*:0:d:256:*:1:Loop Devices 
+
+8:sd:*:0:a:16:*:16:SCSI - Controller %d
+65:8:1:
+66:8:2:
+67:8:3:
+68:8:4:
+69:8:5:
+70:8:6:
+71:8:7:
+128:8:8:
+129:8:9:
+130:8:10:
+131:8:11:
+132:8:12:
+133:8:13:
+134:8:14:
+135:8:15:
+
+9:md:*:0:d:256:*:1:Metadisk (Software RAID) devices  (md0..md255)
+
+#10:0:0:NODEV
+
+#11:sr:*:0:d:256:*:1:CDROM - CDROM (sr0..sr255) (deprecated)
+11:scd:*:0:d:256:*:1:CDROM - CDROM (scd0..scd255)
+
+#12:0:0:MSCDEX CD-ROM Callback
+
+13:xd:*:0:a:2:*:64:8-bit MFM/RLL/IDE controller (xda, xdb)
+
+#14:0:0:BIOS Hard Drive Callback
+#15:0:0:CDROM - Sony CDU-31A/CDU-33A
+#16:0:0:CDROM - Goldstar
+#17:0:0:CDROM - Optics Storage
+#18:0:0:CDROM - Sanyo
+
+19:double:*:0:d:256:*:1:Compressed Disk (double0..double255)
+
+#20:0:0:CDROM - Hitachi
+
+21:mfm:*:0:a:2:*:64:Acorn MFM Hard Drive (mfma, mfmb)
+
+# 22: see IDE, dev 3
+
+#23:0:0:CDROM - Mistumi Proprietary
+#24:0:0:CDROM - Sony CDU-535
+#25:0:0:CDROM - Matsushita (Panasonic/Soundblaster) #1
+#26:0:1:CDROM - Matsushita (Panasonic/Soundblaster) #2
+#27:0:2:CDROM - Matsushita (Panasonic/Soundblaster) #3
+#28:0:3:CDROM - Matsushita (Panasonic/Soundblaster) #4
+# 28:0:0:! ACSI (Atari) Disk Not Supported
+#29:0:0:CDROM - Aztech/Orchid/Okano/Wearnes
+#30:0:0:CDROM - Philips LMS CM-205
+#31:0:0:ROM/flash Memory Card
+#32:0:0:CDROM -  Phillips LMS CM-206
+
+# 33: See IDE, dev 3
+# 34: See IDE, dev 3
+
+#35:0:0:Slow Memory RAM Disk
+
+36:ed:*:0:a:2:*:64:MCA ESDI Hard Disk (eda, edb)
+
+#37:0:0:Zorro II Ram Disk
+#38:0:0:Reserved For Linux/AP+
+#39:0:0:Reserved For Linux/AP+
+#40:0:0:Syquest EZ135 Parallel Port Drive
+#41:0:0:CDROM -  MicroSolutions Parallel Port BackPack
+#42:0:0:For DEMO Use Only
+
+43:nb:*:0:d:256:*:1:Network Block devices (nb0..nb255)
+44:ftl:*:0:a:16:*:16:Flash Translation Layer (ftla..ftlp)
+45:pd:*:0:a:4:*:16:Parallel Port IDE (pda..pdd)
+
+#46:0:0:CDROM - Parallel Port ATAPI
+
+47:pf:*:0:d:256:*:1:Parallel Port ATAPI Disk Devices (pf0..pf255)
+
+48:rd:/c:0:%d:32:p:8:Mylex DAC960 RAID, Controller %d
+49:48:1:
+50:48:2:
+51:48:3:
+52:48:4:
+53:48:5:
+54:48:6:
+55:48:7:
+136:48:8:
+137:48:9:
+138:48:10:
+139:48:11:
+140:48:12:
+141:48:13:
+142:48:14:
+143:48:15:
+
+# 56, 57: see IDE, dev 3:
+
+58:lvm:*:0:d:256:*:1:Logical Volume Manager (lvm0..lvm255)
+
+#59:0:0:PDA Filesystem Device
+#60:0:0:Local/Experimental Use
+#61:0:0:Local/Experimental Use
+#62:0:0:Local/Experimental Use
+#63:0:0:Local/Experimental Use
+#64:0:0:NODEV
+
+# 65..71: See SCSI, dev 8:
+
+72:ida/:c:0:%d:16:p:16:Compaq Intelligent Drive Array - Controller %d
+73:72:1:
+74:72:2:
+75:72:3:
+76:72:4:
+77:72:5:
+78:72:6:
+79:72:7:
+
+80:i2o/hd:*:0:a:16:*:16:I2O Disk - Controller %d
+81:80:1:
+82:80:2:
+83:80:3:
+84:80:4:
+85:80:5:
+86:80:6:
+87:80:7:
+
+# 88..91: see IDE, dev 3:
+
+#92:0:0:PPDD Encrypted Disk
+#93:0:0:NAND Flash Translation Layer not supported
+
+94:dasd:*:0:a:64:*:4:IBM S/390 DASD Block Storage (dasda, dasdb, ...)
+
+#95:0:0:IBM S/390 VM/ESA Minidisk
+#96:0:0:NODEV
+#97:0:0:CD/DVD packed writing devices not supported
+
+98:ubd:*:0:d:256:*:1:User-mode Virtual Block Devices (ubd0..ubd256)
+
+#99:0:0:JavaStation Flash Disk
+#100:0:0:NODEV
+
+101:amiraid/ar:*:0:d:16:p:16:AMI HyperDisk RAID (amiraid/ar0 - amiraid/ar15)
+
+#102:0:0:Compressed Block Device
+#103:0:0:Audit Block Device
+
+104:cciss:/c:0:%d:16:p:16:HP SA 5xxx/6xxx (cciss) Controller %d
+105:104:1:
+106:104:2:
+107:104:3:
+108:104:4:
+109:104:5:
+110:104:6:
+111:104:7:
+
+112:iseries/vd:*:0:a:32:*:8:IBM iSeries Virtual Disk (.../vda - .../vdaf)
+
+#113:0:0:CDROM - IBM iSeries Virtual
+
+# 114..159 NODEV
+
+120:emcpower:*:0:a:16:*:16:EMC PowerPath Unit %d
+
+#160:sx8/:*:0:d:8:p:32:Promise SATA SX8 Unit %d
+#161:160:1:
+160:carmel/:*:0:d:8:p:32:Carmel 8-port SATA Disks (carmel/0 - carmel/7)
+161:160:1:
+
+# 162..198 UNUSED
+
+180:ub:*:0:a:32:p:8:USB block devices
+
+#199:0:0:Veritas Volume Manager (VxVM) Volumes
+#200:0:0:NODEV
+#201:0:0:Veritas VxVM Dynamic Multipathing Driver
+
+202:xvd:*:0:a:16:p:16:Xen Virtual Block Device
+
+# 203..230: UNUSED
+
+232:emcpower:*:0:a:16:*:16:EMC PowerPath Unit %d
+233:232:1:
+234:232:2:
+235:232:3:
+236:232:4:
+237:232:5:
+238:232:6:
+239:232:7:
+240:232:8:
+241:232:9:
+242:232:10:
+243:232:11:
+244:232:12:
+245:232:13:
+246:232:14:
+247:232:15:
+
+# 240..254: LOCAL/Experimental
+
+256:rfd:*:0:a:16:*:16:Resident Flash Disk Flash Translation Layer (rfda..rfdp)
+
+257:ssfdc:*:0:a:8:*:8:SSFDC Flash Translation Layer filesystem (ssfdca..ssfdch)
+
+258:blockrom:*:0:d:256:*:1:ROM/Flash Read-Only Translation Layer (blockrom0...)
+
diff --git a/etc/systemd/journald.conf b/etc/systemd/journald.conf
new file mode 100644 (file)
index 0000000..8951d9e
--- /dev/null
@@ -0,0 +1,43 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+#
+# Entries in this file show the compile time defaults.
+# You can change settings by editing this file.
+# Defaults can be restored by simply deleting this file.
+#
+# See journald.conf(5) for details.
+
+[Journal]
+#Storage=auto
+#Compress=yes
+#Seal=yes
+#SplitMode=uid
+#SyncIntervalSec=5m
+#RateLimitIntervalSec=30s
+#RateLimitBurst=10000
+#SystemMaxUse=
+#SystemKeepFree=
+#SystemMaxFileSize=
+#SystemMaxFiles=100
+#RuntimeMaxUse=
+#RuntimeKeepFree=
+#RuntimeMaxFileSize=
+#RuntimeMaxFiles=100
+#MaxRetentionSec=
+#MaxFileSec=1month
+#ForwardToSyslog=yes
+#ForwardToKMsg=no
+#ForwardToConsole=no
+#ForwardToWall=yes
+#TTYPath=/dev/console
+#MaxLevelStore=debug
+#MaxLevelSyslog=debug
+#MaxLevelKMsg=notice
+#MaxLevelConsole=info
+#MaxLevelWall=emerg
+#LineMax=48K
+#ReadKMsg=yes
diff --git a/etc/systemd/logind.conf b/etc/systemd/logind.conf
new file mode 100644 (file)
index 0000000..d380a61
--- /dev/null
@@ -0,0 +1,37 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+#
+# Entries in this file show the compile time defaults.
+# You can change settings by editing this file.
+# Defaults can be restored by simply deleting this file.
+#
+# See logind.conf(5) for details.
+
+[Login]
+#NAutoVTs=6
+#ReserveVT=6
+#KillUserProcesses=no
+#KillOnlyUsers=
+#KillExcludeUsers=root
+#InhibitDelayMaxSec=5
+#HandlePowerKey=poweroff
+#HandleSuspendKey=suspend
+#HandleHibernateKey=hibernate
+#HandleLidSwitch=suspend
+#HandleLidSwitchExternalPower=suspend
+#HandleLidSwitchDocked=ignore
+#PowerKeyIgnoreInhibited=no
+#SuspendKeyIgnoreInhibited=no
+#HibernateKeyIgnoreInhibited=no
+#LidSwitchIgnoreInhibited=yes
+#HoldoffTimeoutSec=30s
+#IdleAction=ignore
+#IdleActionSec=30min
+#RuntimeDirectorySize=10%
+#RemoveIPC=yes
+#InhibitorsMax=8192
+#SessionsMax=8192
diff --git a/etc/systemd/networkd.conf b/etc/systemd/networkd.conf
new file mode 100644 (file)
index 0000000..c5667da
--- /dev/null
@@ -0,0 +1,20 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+#
+# Entries in this file show the compile time defaults.
+# You can change settings by editing this file.
+# Defaults can be restored by simply deleting this file.
+#
+# See networkd.conf(5) for details
+
+[Network]
+#SpeedMeter=no
+#SpeedMeterIntervalSec=10sec
+
+[DHCP]
+#DUIDType=vendor
+#DUIDRawData=
diff --git a/etc/systemd/pstore.conf b/etc/systemd/pstore.conf
new file mode 100644 (file)
index 0000000..93a8b67
--- /dev/null
@@ -0,0 +1,16 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+#
+# Entries in this file show the compile time defaults.
+# You can change settings by editing this file.
+# Defaults can be restored by simply deleting this file.
+#
+# See pstore.conf(5) for details.
+
+[PStore]
+#Storage=external
+#Unlink=yes
diff --git a/etc/systemd/resolved.conf b/etc/systemd/resolved.conf
new file mode 100644 (file)
index 0000000..85b70d2
--- /dev/null
@@ -0,0 +1,24 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+#
+# Entries in this file show the compile time defaults.
+# You can change settings by editing this file.
+# Defaults can be restored by simply deleting this file.
+#
+# See resolved.conf(5) for details
+
+[Resolve]
+#DNS=
+#FallbackDNS=
+#Domains=
+#LLMNR=no
+#MulticastDNS=no
+#DNSSEC=no
+#DNSOverTLS=no
+#Cache=no-negative
+#DNSStubListener=yes
+#ReadEtcHosts=yes
diff --git a/etc/systemd/sleep.conf b/etc/systemd/sleep.conf
new file mode 100644 (file)
index 0000000..dc2ed37
--- /dev/null
@@ -0,0 +1,25 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+#
+# Entries in this file show the compile time defaults.
+# You can change settings by editing this file.
+# Defaults can be restored by simply deleting this file.
+#
+# See systemd-sleep.conf(5) for details
+
+[Sleep]
+#AllowSuspend=yes
+#AllowHibernation=yes
+#AllowSuspendThenHibernate=yes
+#AllowHybridSleep=yes
+#SuspendMode=
+#SuspendState=mem standby freeze
+#HibernateMode=platform shutdown
+#HibernateState=disk
+#HybridSleepMode=suspend platform shutdown
+#HybridSleepState=disk
+#HibernateDelaySec=180min
diff --git a/etc/systemd/system.conf b/etc/systemd/system.conf
new file mode 100644 (file)
index 0000000..4117778
--- /dev/null
@@ -0,0 +1,70 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+#
+# Entries in this file show the compile time defaults.
+# You can change settings by editing this file.
+# Defaults can be restored by simply deleting this file.
+#
+# See systemd-system.conf(5) for details.
+
+[Manager]
+#LogLevel=info
+#LogTarget=journal-or-kmsg
+#LogColor=yes
+#LogLocation=no
+#DumpCore=yes
+#ShowStatus=yes
+#CrashChangeVT=no
+#CrashShell=no
+#CrashReboot=no
+#CtrlAltDelBurstAction=reboot-force
+#CPUAffinity=1 2
+#NUMAPolicy=default
+#NUMAMask=
+#RuntimeWatchdogSec=0
+#RebootWatchdogSec=10min
+#ShutdownWatchdogSec=10min
+#KExecWatchdogSec=0
+#WatchdogDevice=
+#CapabilityBoundingSet=
+#NoNewPrivileges=no
+#SystemCallArchitectures=
+#TimerSlackNSec=
+#StatusUnitFormat=description
+#DefaultTimerAccuracySec=1min
+#DefaultStandardOutput=journal
+#DefaultStandardError=inherit
+#DefaultTimeoutStartSec=90s
+#DefaultTimeoutStopSec=90s
+#DefaultTimeoutAbortSec=
+#DefaultRestartSec=100ms
+#DefaultStartLimitIntervalSec=10s
+#DefaultStartLimitBurst=5
+#DefaultEnvironment=
+#DefaultCPUAccounting=no
+#DefaultIOAccounting=no
+#DefaultIPAccounting=no
+#DefaultBlockIOAccounting=no
+#DefaultMemoryAccounting=yes
+#DefaultTasksAccounting=yes
+#DefaultTasksMax=
+#DefaultLimitCPU=
+#DefaultLimitFSIZE=
+#DefaultLimitDATA=
+#DefaultLimitSTACK=
+#DefaultLimitCORE=
+#DefaultLimitRSS=
+#DefaultLimitNOFILE=1024:524288
+#DefaultLimitAS=
+#DefaultLimitNPROC=
+#DefaultLimitMEMLOCK=
+#DefaultLimitLOCKS=
+#DefaultLimitSIGPENDING=
+#DefaultLimitMSGQUEUE=
+#DefaultLimitNICE=
+#DefaultLimitRTPRIO=
+#DefaultLimitRTTIME=
diff --git a/etc/systemd/system/cloud-final.service.wants/snapd.seeded.service b/etc/systemd/system/cloud-final.service.wants/snapd.seeded.service
new file mode 120000 (symlink)
index 0000000..9b69301
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/snapd.seeded.service
\ No newline at end of file
diff --git a/etc/systemd/system/cloud-init.target.wants/cloud-config.service b/etc/systemd/system/cloud-init.target.wants/cloud-config.service
new file mode 120000 (symlink)
index 0000000..fd5686b
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/cloud-config.service
\ No newline at end of file
diff --git a/etc/systemd/system/cloud-init.target.wants/cloud-final.service b/etc/systemd/system/cloud-init.target.wants/cloud-final.service
new file mode 120000 (symlink)
index 0000000..ded4f26
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/cloud-final.service
\ No newline at end of file
diff --git a/etc/systemd/system/cloud-init.target.wants/cloud-init-hotplugd.socket b/etc/systemd/system/cloud-init.target.wants/cloud-init-hotplugd.socket
new file mode 120000 (symlink)
index 0000000..be84857
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/cloud-init-hotplugd.socket
\ No newline at end of file
diff --git a/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service b/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service
new file mode 120000 (symlink)
index 0000000..64bc43d
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/cloud-init-local.service
\ No newline at end of file
diff --git a/etc/systemd/system/cloud-init.target.wants/cloud-init.service b/etc/systemd/system/cloud-init.target.wants/cloud-init.service
new file mode 120000 (symlink)
index 0000000..c29badf
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/cloud-init.service
\ No newline at end of file
diff --git a/etc/systemd/system/dbus-org.freedesktop.ModemManager1.service b/etc/systemd/system/dbus-org.freedesktop.ModemManager1.service
new file mode 120000 (symlink)
index 0000000..6b5718b
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/ModemManager.service
\ No newline at end of file
diff --git a/etc/systemd/system/dbus-org.freedesktop.resolve1.service b/etc/systemd/system/dbus-org.freedesktop.resolve1.service
new file mode 120000 (symlink)
index 0000000..8f3f496
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/systemd-resolved.service
\ No newline at end of file
diff --git a/etc/systemd/system/dbus-org.freedesktop.thermald.service b/etc/systemd/system/dbus-org.freedesktop.thermald.service
new file mode 120000 (symlink)
index 0000000..bfb5941
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/thermald.service
\ No newline at end of file
diff --git a/etc/systemd/system/dbus-org.freedesktop.timesync1.service b/etc/systemd/system/dbus-org.freedesktop.timesync1.service
new file mode 120000 (symlink)
index 0000000..f64da56
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/systemd-timesyncd.service
\ No newline at end of file
diff --git a/etc/systemd/system/default.target.wants/e2scrub_reap.service b/etc/systemd/system/default.target.wants/e2scrub_reap.service
new file mode 120000 (symlink)
index 0000000..0c9e287
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/e2scrub_reap.service
\ No newline at end of file
diff --git a/etc/systemd/system/emergency.target.wants/grub-initrd-fallback.service b/etc/systemd/system/emergency.target.wants/grub-initrd-fallback.service
new file mode 120000 (symlink)
index 0000000..6074eaa
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/grub-initrd-fallback.service
\ No newline at end of file
diff --git a/etc/systemd/system/final.target.wants/snapd.system-shutdown.service b/etc/systemd/system/final.target.wants/snapd.system-shutdown.service
new file mode 120000 (symlink)
index 0000000..b5f013b
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/snapd.system-shutdown.service
\ No newline at end of file
diff --git a/etc/systemd/system/getty.target.wants/getty@tty1.service b/etc/systemd/system/getty.target.wants/getty@tty1.service
new file mode 120000 (symlink)
index 0000000..facee85
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/getty@.service
\ No newline at end of file
diff --git a/etc/systemd/system/graphical.target.wants/accounts-daemon.service b/etc/systemd/system/graphical.target.wants/accounts-daemon.service
new file mode 120000 (symlink)
index 0000000..ab5393d
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/accounts-daemon.service
\ No newline at end of file
diff --git a/etc/systemd/system/graphical.target.wants/udisks2.service b/etc/systemd/system/graphical.target.wants/udisks2.service
new file mode 120000 (symlink)
index 0000000..7bfaee3
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/udisks2.service
\ No newline at end of file
diff --git a/etc/systemd/system/iscsi.service b/etc/systemd/system/iscsi.service
new file mode 120000 (symlink)
index 0000000..f409a59
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/open-iscsi.service
\ No newline at end of file
diff --git a/etc/systemd/system/mdmonitor.service.wants/mdcheck_continue.timer b/etc/systemd/system/mdmonitor.service.wants/mdcheck_continue.timer
new file mode 120000 (symlink)
index 0000000..b9122cf
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/mdcheck_continue.timer
\ No newline at end of file
diff --git a/etc/systemd/system/mdmonitor.service.wants/mdcheck_start.timer b/etc/systemd/system/mdmonitor.service.wants/mdcheck_start.timer
new file mode 120000 (symlink)
index 0000000..470975f
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/mdcheck_start.timer
\ No newline at end of file
diff --git a/etc/systemd/system/mdmonitor.service.wants/mdmonitor-oneshot.timer b/etc/systemd/system/mdmonitor.service.wants/mdmonitor-oneshot.timer
new file mode 120000 (symlink)
index 0000000..633b8d2
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/mdmonitor-oneshot.timer
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/ModemManager.service b/etc/systemd/system/multi-user.target.wants/ModemManager.service
new file mode 120000 (symlink)
index 0000000..6b5718b
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/ModemManager.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/atd.service b/etc/systemd/system/multi-user.target.wants/atd.service
new file mode 120000 (symlink)
index 0000000..e225a48
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/atd.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/binfmt-support.service b/etc/systemd/system/multi-user.target.wants/binfmt-support.service
new file mode 120000 (symlink)
index 0000000..6c134cc
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/binfmt-support.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/console-setup.service b/etc/systemd/system/multi-user.target.wants/console-setup.service
new file mode 120000 (symlink)
index 0000000..29fafc8
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/console-setup.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/cron.service b/etc/systemd/system/multi-user.target.wants/cron.service
new file mode 120000 (symlink)
index 0000000..9a6753f
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/cron.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/dmesg.service b/etc/systemd/system/multi-user.target.wants/dmesg.service
new file mode 120000 (symlink)
index 0000000..d5129ae
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/dmesg.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/grub-common.service b/etc/systemd/system/multi-user.target.wants/grub-common.service
new file mode 120000 (symlink)
index 0000000..c0ca745
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/grub-common.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/grub-initrd-fallback.service b/etc/systemd/system/multi-user.target.wants/grub-initrd-fallback.service
new file mode 120000 (symlink)
index 0000000..6074eaa
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/grub-initrd-fallback.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/irqbalance.service b/etc/systemd/system/multi-user.target.wants/irqbalance.service
new file mode 120000 (symlink)
index 0000000..acfa2e5
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/irqbalance.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/lxd-agent-9p.service b/etc/systemd/system/multi-user.target.wants/lxd-agent-9p.service
new file mode 120000 (symlink)
index 0000000..ecfd509
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/lxd-agent-9p.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/lxd-agent.service b/etc/systemd/system/multi-user.target.wants/lxd-agent.service
new file mode 120000 (symlink)
index 0000000..0751c42
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/lxd-agent.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/networkd-dispatcher.service b/etc/systemd/system/multi-user.target.wants/networkd-dispatcher.service
new file mode 120000 (symlink)
index 0000000..9ca12e8
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/networkd-dispatcher.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/nginx.service b/etc/systemd/system/multi-user.target.wants/nginx.service
new file mode 120000 (symlink)
index 0000000..86a892d
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/nginx.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/ondemand.service b/etc/systemd/system/multi-user.target.wants/ondemand.service
new file mode 120000 (symlink)
index 0000000..596ee4b
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/ondemand.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/open-vm-tools.service b/etc/systemd/system/multi-user.target.wants/open-vm-tools.service
new file mode 120000 (symlink)
index 0000000..dac27a6
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/open-vm-tools.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/pollinate.service b/etc/systemd/system/multi-user.target.wants/pollinate.service
new file mode 120000 (symlink)
index 0000000..ceecdcc
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/pollinate.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/postgresql.service b/etc/systemd/system/multi-user.target.wants/postgresql.service
new file mode 120000 (symlink)
index 0000000..fde7afb
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/postgresql.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/remote-fs.target b/etc/systemd/system/multi-user.target.wants/remote-fs.target
new file mode 120000 (symlink)
index 0000000..840a3cb
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/remote-fs.target
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/rsync.service b/etc/systemd/system/multi-user.target.wants/rsync.service
new file mode 120000 (symlink)
index 0000000..57e0b03
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/rsync.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/rsyslog.service b/etc/systemd/system/multi-user.target.wants/rsyslog.service
new file mode 120000 (symlink)
index 0000000..c3fe73f
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/rsyslog.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/secureboot-db.service b/etc/systemd/system/multi-user.target.wants/secureboot-db.service
new file mode 120000 (symlink)
index 0000000..44e29d7
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/secureboot-db.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/smartmontools.service b/etc/systemd/system/multi-user.target.wants/smartmontools.service
new file mode 120000 (symlink)
index 0000000..a7af774
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/smartmontools.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snap-core18-1880.mount b/etc/systemd/system/multi-user.target.wants/snap-core18-1880.mount
new file mode 120000 (symlink)
index 0000000..b24628b
--- /dev/null
@@ -0,0 +1 @@
+/etc/systemd/system/snap-core18-1880.mount
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snap-core18-2409.mount b/etc/systemd/system/multi-user.target.wants/snap-core18-2409.mount
new file mode 120000 (symlink)
index 0000000..4f01630
--- /dev/null
@@ -0,0 +1 @@
+/etc/systemd/system/snap-core18-2409.mount
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snap-core20-1518.mount b/etc/systemd/system/multi-user.target.wants/snap-core20-1518.mount
new file mode 120000 (symlink)
index 0000000..9f0e2c6
--- /dev/null
@@ -0,0 +1 @@
+/etc/systemd/system/snap-core20-1518.mount
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snap-lxd-16099.mount b/etc/systemd/system/multi-user.target.wants/snap-lxd-16099.mount
new file mode 120000 (symlink)
index 0000000..8cb72f7
--- /dev/null
@@ -0,0 +1 @@
+/etc/systemd/system/snap-lxd-16099.mount
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snap-lxd-22753.mount b/etc/systemd/system/multi-user.target.wants/snap-lxd-22753.mount
new file mode 120000 (symlink)
index 0000000..960c53c
--- /dev/null
@@ -0,0 +1 @@
+/etc/systemd/system/snap-lxd-22753.mount
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snap-snapd-15904.mount b/etc/systemd/system/multi-user.target.wants/snap-snapd-15904.mount
new file mode 120000 (symlink)
index 0000000..bcc9f54
--- /dev/null
@@ -0,0 +1 @@
+/etc/systemd/system/snap-snapd-15904.mount
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snap-snapd-16010.mount b/etc/systemd/system/multi-user.target.wants/snap-snapd-16010.mount
new file mode 120000 (symlink)
index 0000000..134e68d
--- /dev/null
@@ -0,0 +1 @@
+/etc/systemd/system/snap-snapd-16010.mount
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snap.lxd.activate.service b/etc/systemd/system/multi-user.target.wants/snap.lxd.activate.service
new file mode 120000 (symlink)
index 0000000..42f4e1b
--- /dev/null
@@ -0,0 +1 @@
+/etc/systemd/system/snap.lxd.activate.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snapd.apparmor.service b/etc/systemd/system/multi-user.target.wants/snapd.apparmor.service
new file mode 120000 (symlink)
index 0000000..93661da
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/snapd.apparmor.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snapd.autoimport.service b/etc/systemd/system/multi-user.target.wants/snapd.autoimport.service
new file mode 120000 (symlink)
index 0000000..2a4978c
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/snapd.autoimport.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snapd.core-fixup.service b/etc/systemd/system/multi-user.target.wants/snapd.core-fixup.service
new file mode 120000 (symlink)
index 0000000..acd6be9
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/snapd.core-fixup.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snapd.recovery-chooser-trigger.service b/etc/systemd/system/multi-user.target.wants/snapd.recovery-chooser-trigger.service
new file mode 120000 (symlink)
index 0000000..ea555fd
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/snapd.recovery-chooser-trigger.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snapd.seeded.service b/etc/systemd/system/multi-user.target.wants/snapd.seeded.service
new file mode 120000 (symlink)
index 0000000..9b69301
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/snapd.seeded.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/snapd.service b/etc/systemd/system/multi-user.target.wants/snapd.service
new file mode 120000 (symlink)
index 0000000..a781c6a
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/snapd.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/ssh.service b/etc/systemd/system/multi-user.target.wants/ssh.service
new file mode 120000 (symlink)
index 0000000..7504947
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/ssh.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/sysstat.service b/etc/systemd/system/multi-user.target.wants/sysstat.service
new file mode 120000 (symlink)
index 0000000..29e6c2d
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/sysstat.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/systemd-networkd.service b/etc/systemd/system/multi-user.target.wants/systemd-networkd.service
new file mode 120000 (symlink)
index 0000000..3c55b24
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/systemd-networkd.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/systemd-resolved.service b/etc/systemd/system/multi-user.target.wants/systemd-resolved.service
new file mode 120000 (symlink)
index 0000000..8f3f496
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/systemd-resolved.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/thermald.service b/etc/systemd/system/multi-user.target.wants/thermald.service
new file mode 120000 (symlink)
index 0000000..bfb5941
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/thermald.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/ua-license-check.path b/etc/systemd/system/multi-user.target.wants/ua-license-check.path
new file mode 120000 (symlink)
index 0000000..d0f60ae
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/ua-license-check.path
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/ua-reboot-cmds.service b/etc/systemd/system/multi-user.target.wants/ua-reboot-cmds.service
new file mode 120000 (symlink)
index 0000000..e2ace0a
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/ua-reboot-cmds.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/ufw.service b/etc/systemd/system/multi-user.target.wants/ufw.service
new file mode 120000 (symlink)
index 0000000..8686649
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/ufw.service
\ No newline at end of file
diff --git a/etc/systemd/system/multi-user.target.wants/unattended-upgrades.service b/etc/systemd/system/multi-user.target.wants/unattended-upgrades.service
new file mode 120000 (symlink)
index 0000000..80d908b
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/unattended-upgrades.service
\ No newline at end of file
diff --git a/etc/systemd/system/multipath-tools.service b/etc/systemd/system/multipath-tools.service
new file mode 120000 (symlink)
index 0000000..8055e10
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/multipathd.service
\ No newline at end of file
diff --git a/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service b/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
new file mode 120000 (symlink)
index 0000000..3b627c5
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/systemd-networkd-wait-online.service
\ No newline at end of file
diff --git a/etc/systemd/system/open-vm-tools.service.requires/vgauth.service b/etc/systemd/system/open-vm-tools.service.requires/vgauth.service
new file mode 120000 (symlink)
index 0000000..ef86a36
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/vgauth.service
\ No newline at end of file
diff --git a/etc/systemd/system/paths.target.wants/apport-autoreport.path b/etc/systemd/system/paths.target.wants/apport-autoreport.path
new file mode 120000 (symlink)
index 0000000..aea906c
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/apport-autoreport.path
\ No newline at end of file
diff --git a/etc/systemd/system/rescue.target.wants/grub-initrd-fallback.service b/etc/systemd/system/rescue.target.wants/grub-initrd-fallback.service
new file mode 120000 (symlink)
index 0000000..6074eaa
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/grub-initrd-fallback.service
\ No newline at end of file
diff --git a/etc/systemd/system/sleep.target.wants/grub-common.service b/etc/systemd/system/sleep.target.wants/grub-common.service
new file mode 120000 (symlink)
index 0000000..c0ca745
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/grub-common.service
\ No newline at end of file
diff --git a/etc/systemd/system/sleep.target.wants/grub-initrd-fallback.service b/etc/systemd/system/sleep.target.wants/grub-initrd-fallback.service
new file mode 120000 (symlink)
index 0000000..6074eaa
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/grub-initrd-fallback.service
\ No newline at end of file
diff --git a/etc/systemd/system/smartd.service b/etc/systemd/system/smartd.service
new file mode 120000 (symlink)
index 0000000..a7af774
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/smartmontools.service
\ No newline at end of file
diff --git a/etc/systemd/system/snap-core18-1880.mount b/etc/systemd/system/snap-core18-1880.mount
new file mode 100644 (file)
index 0000000..4c3b07b
--- /dev/null
@@ -0,0 +1,14 @@
+[Unit]
+Description=Mount unit for core18, revision 1880
+Before=snapd.service
+After=zfs-mount.service
+
+[Mount]
+What=/var/lib/snapd/snaps/core18_1880.snap
+Where=/snap/core18/1880
+Type=squashfs
+Options=nodev,ro,x-gdu.hide,x-gvfs-hide
+LazyUnmount=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/etc/systemd/system/snap-core18-2409.mount b/etc/systemd/system/snap-core18-2409.mount
new file mode 100644 (file)
index 0000000..e556f53
--- /dev/null
@@ -0,0 +1,14 @@
+[Unit]
+Description=Mount unit for core18, revision 2409
+Before=snapd.service
+After=zfs-mount.service
+
+[Mount]
+What=/var/lib/snapd/snaps/core18_2409.snap
+Where=/snap/core18/2409
+Type=squashfs
+Options=nodev,ro,x-gdu.hide,x-gvfs-hide
+LazyUnmount=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/etc/systemd/system/snap-core20-1518.mount b/etc/systemd/system/snap-core20-1518.mount
new file mode 100644 (file)
index 0000000..5bc7aa3
--- /dev/null
@@ -0,0 +1,14 @@
+[Unit]
+Description=Mount unit for core20, revision 1518
+Before=snapd.service
+After=zfs-mount.service
+
+[Mount]
+What=/var/lib/snapd/snaps/core20_1518.snap
+Where=/snap/core20/1518
+Type=squashfs
+Options=nodev,ro,x-gdu.hide,x-gvfs-hide
+LazyUnmount=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/etc/systemd/system/snap-lxd-16099.mount b/etc/systemd/system/snap-lxd-16099.mount
new file mode 100644 (file)
index 0000000..6e94d29
--- /dev/null
@@ -0,0 +1,14 @@
+[Unit]
+Description=Mount unit for lxd, revision 16099
+Before=snapd.service
+After=zfs-mount.service
+
+[Mount]
+What=/var/lib/snapd/snaps/lxd_16099.snap
+Where=/snap/lxd/16099
+Type=squashfs
+Options=nodev,ro,x-gdu.hide,x-gvfs-hide
+LazyUnmount=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/etc/systemd/system/snap-lxd-22753.mount b/etc/systemd/system/snap-lxd-22753.mount
new file mode 100644 (file)
index 0000000..b138853
--- /dev/null
@@ -0,0 +1,14 @@
+[Unit]
+Description=Mount unit for lxd, revision 22753
+Before=snapd.service
+After=zfs-mount.service
+
+[Mount]
+What=/var/lib/snapd/snaps/lxd_22753.snap
+Where=/snap/lxd/22753
+Type=squashfs
+Options=nodev,ro,x-gdu.hide,x-gvfs-hide
+LazyUnmount=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/etc/systemd/system/snap-snapd-15904.mount b/etc/systemd/system/snap-snapd-15904.mount
new file mode 100644 (file)
index 0000000..1655971
--- /dev/null
@@ -0,0 +1,14 @@
+[Unit]
+Description=Mount unit for snapd, revision 15904
+Before=snapd.service
+After=zfs-mount.service
+
+[Mount]
+What=/var/lib/snapd/snaps/snapd_15904.snap
+Where=/snap/snapd/15904
+Type=squashfs
+Options=nodev,ro,x-gdu.hide,x-gvfs-hide
+LazyUnmount=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/etc/systemd/system/snap-snapd-16010.mount b/etc/systemd/system/snap-snapd-16010.mount
new file mode 100644 (file)
index 0000000..3ae74cc
--- /dev/null
@@ -0,0 +1,14 @@
+[Unit]
+Description=Mount unit for snapd, revision 16010
+Before=snapd.service
+After=zfs-mount.service
+
+[Mount]
+What=/var/lib/snapd/snaps/snapd_16010.snap
+Where=/snap/snapd/16010
+Type=squashfs
+Options=nodev,ro,x-gdu.hide,x-gvfs-hide
+LazyUnmount=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/etc/systemd/system/snap.lxd.activate.service b/etc/systemd/system/snap.lxd.activate.service
new file mode 100644 (file)
index 0000000..2f6af4d
--- /dev/null
@@ -0,0 +1,20 @@
+[Unit]
+# Auto-generated, DO NOT EDIT
+Description=Service for snap application lxd.activate
+Requires=snap-lxd-22753.mount
+Wants=network.target
+After=snap-lxd-22753.mount network.target snapd.apparmor.service
+X-Snappy=yes
+
+[Service]
+EnvironmentFile=-/etc/environment
+ExecStart=/usr/bin/snap run lxd.activate
+SyslogIdentifier=lxd.activate
+Restart=no
+WorkingDirectory=/var/snap/lxd/22753
+TimeoutStopSec=30
+Type=oneshot
+Delegate=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/etc/systemd/system/snap.lxd.daemon.service b/etc/systemd/system/snap.lxd.daemon.service
new file mode 100644 (file)
index 0000000..4e547b8
--- /dev/null
@@ -0,0 +1,19 @@
+[Unit]
+# Auto-generated, DO NOT EDIT
+Description=Service for snap application lxd.daemon
+Requires=snap-lxd-22753.mount
+Wants=network.target
+After=snap-lxd-22753.mount network.target snapd.apparmor.service
+X-Snappy=yes
+
+[Service]
+EnvironmentFile=-/etc/environment
+ExecStart=/usr/bin/snap run lxd.daemon
+SyslogIdentifier=lxd.daemon
+Restart=on-failure
+WorkingDirectory=/var/snap/lxd/22753
+ExecStop=/usr/bin/snap run --command=stop lxd.daemon
+ExecReload=/usr/bin/snap run --command=reload lxd.daemon
+TimeoutStopSec=600
+Type=simple
+Delegate=true
diff --git a/etc/systemd/system/snap.lxd.daemon.unix.socket b/etc/systemd/system/snap.lxd.daemon.unix.socket
new file mode 100644 (file)
index 0000000..f1f75c4
--- /dev/null
@@ -0,0 +1,15 @@
+[Unit]
+# Auto-generated, DO NOT EDIT
+Description=Socket unix for snap application lxd.daemon
+Requires=snap-lxd-22753.mount
+After=snap-lxd-22753.mount
+X-Snappy=yes
+
+[Socket]
+Service=snap.lxd.daemon.service
+FileDescriptorName=unix
+ListenStream=/var/snap/lxd/common/lxd/unix.socket
+SocketMode=0660
+
+[Install]
+WantedBy=sockets.target
diff --git a/etc/systemd/system/sockets.target.wants/apport-forward.socket b/etc/systemd/system/sockets.target.wants/apport-forward.socket
new file mode 120000 (symlink)
index 0000000..cf5f38d
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/apport-forward.socket
\ No newline at end of file
diff --git a/etc/systemd/system/sockets.target.wants/dm-event.socket b/etc/systemd/system/sockets.target.wants/dm-event.socket
new file mode 120000 (symlink)
index 0000000..1b353c4
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/dm-event.socket
\ No newline at end of file
diff --git a/etc/systemd/system/sockets.target.wants/iscsid.socket b/etc/systemd/system/sockets.target.wants/iscsid.socket
new file mode 120000 (symlink)
index 0000000..2202242
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/iscsid.socket
\ No newline at end of file
diff --git a/etc/systemd/system/sockets.target.wants/multipathd.socket b/etc/systemd/system/sockets.target.wants/multipathd.socket
new file mode 120000 (symlink)
index 0000000..c8a16a5
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/multipathd.socket
\ No newline at end of file
diff --git a/etc/systemd/system/sockets.target.wants/snap.lxd.daemon.unix.socket b/etc/systemd/system/sockets.target.wants/snap.lxd.daemon.unix.socket
new file mode 120000 (symlink)
index 0000000..d97d11f
--- /dev/null
@@ -0,0 +1 @@
+/etc/systemd/system/snap.lxd.daemon.unix.socket
\ No newline at end of file
diff --git a/etc/systemd/system/sockets.target.wants/snapd.socket b/etc/systemd/system/sockets.target.wants/snapd.socket
new file mode 120000 (symlink)
index 0000000..aa4e443
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/snapd.socket
\ No newline at end of file
diff --git a/etc/systemd/system/sockets.target.wants/systemd-networkd.socket b/etc/systemd/system/sockets.target.wants/systemd-networkd.socket
new file mode 120000 (symlink)
index 0000000..bcfcdba
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/systemd-networkd.socket
\ No newline at end of file
diff --git a/etc/systemd/system/sockets.target.wants/uuidd.socket b/etc/systemd/system/sockets.target.wants/uuidd.socket
new file mode 120000 (symlink)
index 0000000..0d603a3
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/uuidd.socket
\ No newline at end of file
diff --git a/etc/systemd/system/sshd-keygen@.service.d/disable-sshd-keygen-if-cloud-init-active.conf b/etc/systemd/system/sshd-keygen@.service.d/disable-sshd-keygen-if-cloud-init-active.conf
new file mode 100644 (file)
index 0000000..1a5d7a5
--- /dev/null
@@ -0,0 +1,7 @@
+# In some cloud-init enabled images the sshd-keygen template service may race
+# with cloud-init during boot causing issues with host key generation.  This
+# drop-in config adds a condition to sshd-keygen@.service if it exists and
+# prevents the sshd-keygen units from running *if* cloud-init is going to run.
+#
+[Unit]
+ConditionPathExists=!/run/systemd/generator.early/multi-user.target.wants/cloud-init.target
diff --git a/etc/systemd/system/sshd.service b/etc/systemd/system/sshd.service
new file mode 120000 (symlink)
index 0000000..7504947
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/ssh.service
\ No newline at end of file
diff --git a/etc/systemd/system/sysinit.target.wants/apparmor.service b/etc/systemd/system/sysinit.target.wants/apparmor.service
new file mode 120000 (symlink)
index 0000000..6fda6f1
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/apparmor.service
\ No newline at end of file
diff --git a/etc/systemd/system/sysinit.target.wants/blk-availability.service b/etc/systemd/system/sysinit.target.wants/blk-availability.service
new file mode 120000 (symlink)
index 0000000..3af3fda
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/blk-availability.service
\ No newline at end of file
diff --git a/etc/systemd/system/sysinit.target.wants/finalrd.service b/etc/systemd/system/sysinit.target.wants/finalrd.service
new file mode 120000 (symlink)
index 0000000..f87ac61
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/finalrd.service
\ No newline at end of file
diff --git a/etc/systemd/system/sysinit.target.wants/keyboard-setup.service b/etc/systemd/system/sysinit.target.wants/keyboard-setup.service
new file mode 120000 (symlink)
index 0000000..b84cde0
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/keyboard-setup.service
\ No newline at end of file
diff --git a/etc/systemd/system/sysinit.target.wants/lvm2-lvmpolld.socket b/etc/systemd/system/sysinit.target.wants/lvm2-lvmpolld.socket
new file mode 120000 (symlink)
index 0000000..dda468d
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/lvm2-lvmpolld.socket
\ No newline at end of file
diff --git a/etc/systemd/system/sysinit.target.wants/lvm2-monitor.service b/etc/systemd/system/sysinit.target.wants/lvm2-monitor.service
new file mode 120000 (symlink)
index 0000000..af161f3
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/lvm2-monitor.service
\ No newline at end of file
diff --git a/etc/systemd/system/sysinit.target.wants/multipathd.service b/etc/systemd/system/sysinit.target.wants/multipathd.service
new file mode 120000 (symlink)
index 0000000..8055e10
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/multipathd.service
\ No newline at end of file
diff --git a/etc/systemd/system/sysinit.target.wants/open-iscsi.service b/etc/systemd/system/sysinit.target.wants/open-iscsi.service
new file mode 120000 (symlink)
index 0000000..f409a59
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/open-iscsi.service
\ No newline at end of file
diff --git a/etc/systemd/system/sysinit.target.wants/setvtrgb.service b/etc/systemd/system/sysinit.target.wants/setvtrgb.service
new file mode 120000 (symlink)
index 0000000..8e2eabc
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/setvtrgb.service
\ No newline at end of file
diff --git a/etc/systemd/system/sysinit.target.wants/systemd-pstore.service b/etc/systemd/system/sysinit.target.wants/systemd-pstore.service
new file mode 120000 (symlink)
index 0000000..06e55a6
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/systemd-pstore.service
\ No newline at end of file
diff --git a/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service b/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service
new file mode 120000 (symlink)
index 0000000..f64da56
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/systemd-timesyncd.service
\ No newline at end of file
diff --git a/etc/systemd/system/syslog.service b/etc/systemd/system/syslog.service
new file mode 120000 (symlink)
index 0000000..c3fe73f
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/rsyslog.service
\ No newline at end of file
diff --git a/etc/systemd/system/timers.target.wants/apt-daily-upgrade.timer b/etc/systemd/system/timers.target.wants/apt-daily-upgrade.timer
new file mode 120000 (symlink)
index 0000000..ae3ad57
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/apt-daily-upgrade.timer
\ No newline at end of file
diff --git a/etc/systemd/system/timers.target.wants/apt-daily.timer b/etc/systemd/system/timers.target.wants/apt-daily.timer
new file mode 120000 (symlink)
index 0000000..0612ca7
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/apt-daily.timer
\ No newline at end of file
diff --git a/etc/systemd/system/timers.target.wants/certbot.timer b/etc/systemd/system/timers.target.wants/certbot.timer
new file mode 120000 (symlink)
index 0000000..b8d4c22
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/certbot.timer
\ No newline at end of file
diff --git a/etc/systemd/system/timers.target.wants/e2scrub_all.timer b/etc/systemd/system/timers.target.wants/e2scrub_all.timer
new file mode 120000 (symlink)
index 0000000..a62818c
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/e2scrub_all.timer
\ No newline at end of file
diff --git a/etc/systemd/system/timers.target.wants/fstrim.timer b/etc/systemd/system/timers.target.wants/fstrim.timer
new file mode 120000 (symlink)
index 0000000..2ed9fe6
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/fstrim.timer
\ No newline at end of file
diff --git a/etc/systemd/system/timers.target.wants/fwupd-refresh.timer b/etc/systemd/system/timers.target.wants/fwupd-refresh.timer
new file mode 120000 (symlink)
index 0000000..6797ce3
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/fwupd-refresh.timer
\ No newline at end of file
diff --git a/etc/systemd/system/timers.target.wants/logrotate.timer b/etc/systemd/system/timers.target.wants/logrotate.timer
new file mode 120000 (symlink)
index 0000000..90f5322
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/logrotate.timer
\ No newline at end of file
diff --git a/etc/systemd/system/timers.target.wants/man-db.timer b/etc/systemd/system/timers.target.wants/man-db.timer
new file mode 120000 (symlink)
index 0000000..31c2353
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/man-db.timer
\ No newline at end of file
diff --git a/etc/systemd/system/timers.target.wants/motd-news.timer b/etc/systemd/system/timers.target.wants/motd-news.timer
new file mode 120000 (symlink)
index 0000000..b5cf829
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/motd-news.timer
\ No newline at end of file
diff --git a/etc/systemd/system/timers.target.wants/snapd.snap-repair.timer b/etc/systemd/system/timers.target.wants/snapd.snap-repair.timer
new file mode 120000 (symlink)
index 0000000..e02622f
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/snapd.snap-repair.timer
\ No newline at end of file
diff --git a/etc/systemd/system/timers.target.wants/ua-timer.timer b/etc/systemd/system/timers.target.wants/ua-timer.timer
new file mode 120000 (symlink)
index 0000000..470cbfa
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/ua-timer.timer
\ No newline at end of file
diff --git a/etc/systemd/system/vmtoolsd.service b/etc/systemd/system/vmtoolsd.service
new file mode 120000 (symlink)
index 0000000..dac27a6
--- /dev/null
@@ -0,0 +1 @@
+/lib/systemd/system/open-vm-tools.service
\ No newline at end of file
diff --git a/etc/systemd/timesyncd.conf b/etc/systemd/timesyncd.conf
new file mode 100644 (file)
index 0000000..4fb71b1
--- /dev/null
@@ -0,0 +1,19 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+#
+# Entries in this file show the compile time defaults.
+# You can change settings by editing this file.
+# Defaults can be restored by simply deleting this file.
+#
+# See timesyncd.conf(5) for details.
+
+[Time]
+#NTP=
+#FallbackNTP=ntp.ubuntu.com
+#RootDistanceMaxSec=5
+#PollIntervalMinSec=32
+#PollIntervalMaxSec=2048
diff --git a/etc/systemd/user.conf b/etc/systemd/user.conf
new file mode 100644 (file)
index 0000000..bb10619
--- /dev/null
@@ -0,0 +1,46 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+#
+# You can override the directives in this file by creating files in
+# /etc/systemd/user.conf.d/*.conf.
+#
+# See systemd-user.conf(5) for details
+
+[Manager]
+#LogLevel=info
+#LogTarget=console
+#LogColor=yes
+#LogLocation=no
+#SystemCallArchitectures=
+#TimerSlackNSec=
+#StatusUnitFormat=description
+#DefaultTimerAccuracySec=1min
+#DefaultStandardOutput=inherit
+#DefaultStandardError=inherit
+#DefaultTimeoutStartSec=90s
+#DefaultTimeoutStopSec=90s
+#DefaultTimeoutAbortSec=
+#DefaultRestartSec=100ms
+#DefaultStartLimitIntervalSec=10s
+#DefaultStartLimitBurst=5
+#DefaultEnvironment=
+#DefaultLimitCPU=
+#DefaultLimitFSIZE=
+#DefaultLimitDATA=
+#DefaultLimitSTACK=
+#DefaultLimitCORE=
+#DefaultLimitRSS=
+#DefaultLimitNOFILE=
+#DefaultLimitAS=
+#DefaultLimitNPROC=
+#DefaultLimitMEMLOCK=
+#DefaultLimitLOCKS=
+#DefaultLimitSIGPENDING=
+#DefaultLimitMSGQUEUE=
+#DefaultLimitNICE=
+#DefaultLimitRTPRIO=
+#DefaultLimitRTTIME=
diff --git a/etc/systemd/user/sockets.target.wants/dirmngr.socket b/etc/systemd/user/sockets.target.wants/dirmngr.socket
new file mode 120000 (symlink)
index 0000000..cfde217
--- /dev/null
@@ -0,0 +1 @@
+/usr/lib/systemd/user/dirmngr.socket
\ No newline at end of file
diff --git a/etc/systemd/user/sockets.target.wants/gpg-agent-browser.socket b/etc/systemd/user/sockets.target.wants/gpg-agent-browser.socket
new file mode 120000 (symlink)
index 0000000..749a7e3
--- /dev/null
@@ -0,0 +1 @@
+/usr/lib/systemd/user/gpg-agent-browser.socket
\ No newline at end of file
diff --git a/etc/systemd/user/sockets.target.wants/gpg-agent-extra.socket b/etc/systemd/user/sockets.target.wants/gpg-agent-extra.socket
new file mode 120000 (symlink)
index 0000000..7031294
--- /dev/null
@@ -0,0 +1 @@
+/usr/lib/systemd/user/gpg-agent-extra.socket
\ No newline at end of file
diff --git a/etc/systemd/user/sockets.target.wants/gpg-agent-ssh.socket b/etc/systemd/user/sockets.target.wants/gpg-agent-ssh.socket
new file mode 120000 (symlink)
index 0000000..acb12ad
--- /dev/null
@@ -0,0 +1 @@
+/usr/lib/systemd/user/gpg-agent-ssh.socket
\ No newline at end of file
diff --git a/etc/systemd/user/sockets.target.wants/gpg-agent.socket b/etc/systemd/user/sockets.target.wants/gpg-agent.socket
new file mode 120000 (symlink)
index 0000000..26158f7
--- /dev/null
@@ -0,0 +1 @@
+/usr/lib/systemd/user/gpg-agent.socket
\ No newline at end of file
diff --git a/etc/systemd/user/sockets.target.wants/pk-debconf-helper.socket b/etc/systemd/user/sockets.target.wants/pk-debconf-helper.socket
new file mode 120000 (symlink)
index 0000000..e82d3c3
--- /dev/null
@@ -0,0 +1 @@
+/usr/lib/systemd/user/pk-debconf-helper.socket
\ No newline at end of file
diff --git a/etc/terminfo/README b/etc/terminfo/README
new file mode 100644 (file)
index 0000000..bea98cc
--- /dev/null
@@ -0,0 +1,3 @@
+This directory is for system-local terminfo descriptions. By default,
+ncurses will search ${HOME}/.terminfo first, then /etc/terminfo (this
+directory), then /lib/terminfo, and last not least /usr/share/terminfo.
diff --git a/etc/thermald/thermal-cpu-cdev-order.xml b/etc/thermald/thermal-cpu-cdev-order.xml
new file mode 100644 (file)
index 0000000..e690c5a
--- /dev/null
@@ -0,0 +1,18 @@
+
+<!--
+Specifies the order of compensation to cool CPU only.
+There is a default already implemented in the code, but
+this file can be used to change order
+
+The Following cooling device can present
+-->
+
+<CoolingDeviceOrder>
+       <!-- Specify Cooling device order -->
+       <CoolingDevice>rapl_controller</CoolingDevice>
+       <CoolingDevice>intel_pstate</CoolingDevice>
+       <CoolingDevice>intel_powerclamp</CoolingDevice>
+       <CoolingDevice>cpufreq</CoolingDevice>
+       <CoolingDevice>Processor</CoolingDevice>
+</CoolingDeviceOrder>
+
diff --git a/etc/timezone b/etc/timezone
new file mode 100644 (file)
index 0000000..7f39493
--- /dev/null
@@ -0,0 +1 @@
+Etc/UTC
diff --git a/etc/tmpfiles.d/screen-cleanup.conf b/etc/tmpfiles.d/screen-cleanup.conf
new file mode 100644 (file)
index 0000000..8eec909
--- /dev/null
@@ -0,0 +1,2 @@
+# This file is generated by /var/lib/dpkg/info/screen.postinst upon package configuration
+d /run/screen 1777 root utmp
diff --git a/etc/ubuntu-advantage/help_data.yaml b/etc/ubuntu-advantage/help_data.yaml
new file mode 100644 (file)
index 0000000..c301573
--- /dev/null
@@ -0,0 +1,90 @@
+cc-eal:
+    help: |
+      Common Criteria is an Information Technology Security Evaluation standard
+      (ISO/IEC IS 15408) for computer security certification. Ubuntu 16.04 has
+      been evaluated to assurance level EAL2 through CSEC. The evaluation was
+      performed on Intel x86_64, IBM Power8 and IBM Z hardware platforms.
+
+cis:
+    help: |
+      Ubuntu Security Guide is a tool for hardening and auditing and allows for
+      environment-specific customizations. It enables compliance with profiles
+      such as DISA-STIG and the CIS benchmarks. Find out more at
+      https://ubuntu.com/security/certifications/docs/usg
+
+
+esm-apps:
+    help: |
+      UA Apps: Extended Security Maintenance is enabled by default on entitled
+      workloads. It provides access to a private PPA which includes available
+      high and critical CVE fixes for Ubuntu LTS packages in the Ubuntu Main
+      and Ubuntu Universe repositories from the Ubuntu LTS release date until
+      its end of life. You can find out more about the esm service at
+      https://ubuntu.com/security/esm
+
+esm-infra:
+   help: |
+     esm-infra provides access to a private ppa which includes available high
+     and critical CVE fixes for Ubuntu LTS packages in the Ubuntu Main
+     repository between the end of the standard Ubuntu LTS security
+     maintenance and its end of life. It is enabled by default with
+     Extended Security Maintenance (ESM) for UA Apps and UA Infra.
+     You can find our more about the esm service at
+     https://ubuntu.com/security/esm
+
+fips:
+    help: |
+      FIPS 140-2 is a set of publicly announced cryptographic standards
+      developed by the National Institute of Standards and Technology
+      applicable for FedRAMP, HIPAA, PCI and ISO compliance use cases.
+      Note that "fips" does not provide security patching. For fips certified
+      modules with security patches please refer to fips-updates. The modules
+      are certified on Intel x86_64 and IBM Z hardware platforms for Ubuntu
+      18.04 and Intel x86_64, IBM Power8 and IBM Z hardware platforms for
+      Ubuntu 16.04. Below is the list of fips certified components per an
+      Ubuntu Version. You can find out more at
+      https://ubuntu.com/security/certifications#fips
+
+fips-updates:
+    help: |
+      fips-updates installs fips modules including all security patches
+      for those modules that have been provided since their certification date.
+      You can find out more at https://ubuntu.com/security/certifications#fips.
+
+livepatch:
+    help: |
+      Livepatch provides selected high and critical kernel CVE fixes and other
+      non-security bug fixes as kernel livepatches. Livepatches are applied
+      without rebooting a machine which drastically limits the need for
+      unscheduled system reboots. Due to the nature of fips compliance,
+      livepatches cannot be enabled on fips-enabled systems. You can find out
+      more about Ubuntu Kernel Livepatch service at
+      https://ubuntu.com/security/livepatch
+
+realtime-kernel:
+  help: |
+    The real-time kernel is a beta version of the 22.04 Ubuntu kernel with the
+    PREEMPT_RT patchset integrated for x86_64 and ARM64. It services extreme
+    latency-dependent use cases and provides deterministic response times to
+    service events. By meeting stringent preemption specifications, the
+    real-time kernel is suitable for telco applications and embedded devices
+    in industrial automation and robotics. To enroll in the beta program, visit
+    https://ubuntu.com/realtime-kernel
+
+ros:
+  help: |
+    ros provides access to a private PPA which includes security-related
+    updates for available high and critical CVE fixes for Robot Operating
+    System (ROS) packages. For access to ROS ESM and security updates, both
+    esm-infra and esm-apps services will also be enabled. To get additional
+    non-security updates, enable ros-updates. You can find out more about the
+    ROS ESM service at https://ubuntu.com/robotics/ros-esm
+
+ros-updates:
+  help: |
+    ros-updates provides access to a private PPA which includes
+    non-security-related updates for Robot Operating System (ROS) packages.
+    For full access to ROS ESM, security and non-security updates,
+    the esm-infra, esm-apps, and ros services will also be enabled. You can
+    find out more about the ROS ESM service at
+    https://ubuntu.com/robotics/ros-esm
diff --git a/etc/ubuntu-advantage/uaclient.conf b/etc/ubuntu-advantage/uaclient.conf
new file mode 100644 (file)
index 0000000..d86fc10
--- /dev/null
@@ -0,0 +1,18 @@
+# Ubuntu-Advantage client config file.
+# If you modify this file, run "ua refresh config" to ensure changes are
+# picked up by Ubuntu-Advantage client.
+
+contract_url: https://contracts.canonical.com
+data_dir: /var/lib/ubuntu-advantage
+log_file: /var/log/ubuntu-advantage.log
+log_level: debug
+security_url: https://ubuntu.com/security
+timer_log_file: /var/log/ubuntu-advantage-timer.log
+ua_config:
+  apt_http_proxy: null
+  apt_https_proxy: null
+  http_proxy: null
+  https_proxy: null
+  update_messaging_timer: 21600
+  update_status_timer: 43200
+  metering_timer: 14400
diff --git a/etc/ucf.conf b/etc/ucf.conf
new file mode 100644 (file)
index 0000000..cb4f02c
--- /dev/null
@@ -0,0 +1,39 @@
+#
+# This file is a bourne shell snippet, and is sourced by the
+# ucf script for configuration.
+#
+
+# Debugging information: The default value is 0 (no debugging
+# information is printed). To change the default behavior, uncomment
+# the following line and set the value to 1.
+#
+# DEBUG=0
+
+# Verbosity: The default value is 0 (quiet). To change the default
+# behavior, uncomment the following line and set the value to 1.
+#
+# VERBOSE=0
+
+
+# The src directory. This is the directory where the historical
+# md5sums for a file are looked for.  Specifically, the historical
+# md5sums are looked for in the subdirectory ${filename}.md5sum.d/
+#
+# conf_source_dir=/some/path/
+
+# Force the installed file to be retained. The default is have this
+# variable unset, which makes the script ask in case of doubt. To
+# change the default behavior, uncomment the following line and set
+# the value to YES
+#
+# conf_force_conffold=YES
+
+# Force the installed file to be overridden. The default is have this
+# variable unset, which makes the script ask in case of doubt. To
+# change the default behavior, uncomment the following line and set
+# the value to YES
+#
+# conf_force_conffnew=YES
+
+# Please note that only one of conf_force_conffold and
+# conf_force_conffnew should be set.
diff --git a/etc/udev/rules.d/70-snap.snapd.rules b/etc/udev/rules.d/70-snap.snapd.rules
new file mode 100644 (file)
index 0000000..8336de0
--- /dev/null
@@ -0,0 +1,1138 @@
+# This file is automatically generated.
+
+# Concatenation of all ModemManager udev rules
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change|move|bind", GOTO="mm_cinterion_port_types_end"
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="1e2d", GOTO="mm_cinterion_port_types"
+GOTO="mm_cinterion_port_types_end"
+
+LABEL="mm_cinterion_port_types"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+# PHS8
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="0053", ENV{.MM_USBIFNUM}=="01", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
+
+# PLS8 port types
+#  ttyACM0 (if #0): AT port
+#  ttyACM1 (if #2): AT port
+#  ttyACM2 (if #4): GPS data port
+#  ttyACM3 (if #6): unknown
+#  ttyACM4 (if #8): unknown
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="0061", ENV{.MM_USBIFNUM}=="00", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="0061", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="0061", ENV{.MM_USBIFNUM}=="04", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="0061", ENV{.MM_USBIFNUM}=="06", ENV{ID_MM_PORT_IGNORE}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="0061", ENV{.MM_USBIFNUM}=="08", ENV{ID_MM_PORT_IGNORE}="1"
+
+# PLS62 family non-mbim enumeration uses alternate settings for 2G band management
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="005b", ENV{ID_MM_CINTERION_MODEM_FAMILY}="imt"
+# PLS62 family non-mbim enumeration
+#  ttyACM0 (if #0): AT port
+#  ttyACM1 (if #2): AT port
+#  ttyACM2 (if #4): can be AT or GNSS in some models
+#  ttyACM3 (if #6): AT port (but just ignore)
+#  ttyACM4 (if #8): DIAG/QCDM
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="005b", ENV{.MM_USBIFNUM}=="00", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="005b", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="005b", ENV{.MM_USBIFNUM}=="04", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="005b", ENV{.MM_USBIFNUM}=="06", ENV{ID_MM_PORT_IGNORE}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="005b", ENV{.MM_USBIFNUM}=="08", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_QCDM}="1"
+
+# PLS62 family mbim enumeration
+#  ttyACM0 (if #0): AT port
+#  ttyACM1 (if #2): AT port
+#  ttyACM2 (if #4): can be AT or GNSS in some models
+#  ttyACM3 (if #6): AT port (but just ignore)
+#  ttyACM4 (if #8): DIAG/QCDM
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="005d", ENV{.MM_USBIFNUM}=="00", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="005d", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="005d", ENV{.MM_USBIFNUM}=="04", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="005d", ENV{.MM_USBIFNUM}=="06", ENV{ID_MM_PORT_IGNORE}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="005d", ENV{.MM_USBIFNUM}=="08", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_QCDM}="1"
+
+# PLS63
+#  ttyACM0 (if #0): AT port
+#  ttyACM1 (if #2): AT port
+#  ttyACM2 (if #4): GPS data port
+#  ttyACM3 (if #6): DIAG/QCDM
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="0069", ENV{.MM_USBIFNUM}=="00", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="0069", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="0069", ENV{.MM_USBIFNUM}=="04", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="0069", ENV{.MM_USBIFNUM}=="06", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_QCDM}="1"
+
+# PLS83
+#  ttyACM0 (if #0): AT port
+#  ttyACM1 (if #2): AT port
+#  ttyACM2 (if #4): GPS data port
+#  ttyACM3 (if #6): DIAG/QCDM
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="006F", ENV{.MM_USBIFNUM}=="00", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="006F", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="006F", ENV{.MM_USBIFNUM}=="04", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
+ATTRS{idVendor}=="1e2d", ATTRS{idProduct}=="006F", ENV{.MM_USBIFNUM}=="06", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_QCDM}="1"
+
+LABEL="mm_cinterion_port_types_end"
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change|move", GOTO="mm_mbm_end"
+SUBSYSTEMS=="usb", GOTO="mm_mbm_check"
+GOTO="mm_mbm_end"
+
+LABEL="mm_mbm_check"
+
+# Ericsson F3507g
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1900", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1902", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson F3607gw
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1904", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1905", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1906", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson F3307
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="190a", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1909", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson F3307 R2
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1914", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson C3607w
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1049", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson C3607w v2
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="190b", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson F5521gw
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="190d", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1911", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson H5321gw
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1919", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson H5321w
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="191d", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson F5321gw
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1917", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson F5321w
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="191b", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson C5621gw
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="191f", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson C5621w
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1921", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson H5321gw
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1926", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1927", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson C3304w
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1928", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Ericsson C5621 TFF
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1936", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Sony-Ericsson MD300
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="d0cf", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Sony-Ericsson MD400
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="d0e1", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Sony-Ericsson MD400G
+ATTRS{idVendor}=="0fce", ATTRS{idProduct}=="d103", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Dell 5560
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="818e", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Dell 5550
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="818d", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Dell 5530 HSDPA
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="8147", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Dell F3607gw
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="8183", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="8184", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Dell F3307
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="818b", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="413c", ATTRS{idProduct}=="818c", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# HP hs2330 Mobile Broadband Module
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="271d", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# HP hs2320 Mobile Broadband Module
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="261d", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# HP hs2340 Mobile Broadband Module
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="3a1d", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# HP hs2350 Mobile Broadband Module
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="3d1d", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# HP lc2000 Mobile Broadband Module
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="301d", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# HP lc2010 Mobile Broadband Module
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="2f1d", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Toshiba
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="130b", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Toshiba F3607gw
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="130c", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="1311", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Toshiba F3307
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="1315", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="1316", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="1317", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Toshiba F5521gw
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="1313", ENV{ID_MM_ERICSSON_MBM}="1"
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="1314", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Toshiba H5321gw
+ATTRS{idVendor}=="0930", ATTRS{idProduct}=="1319", ENV{ID_MM_ERICSSON_MBM}="1"
+
+# Lenovo N5321gw
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="193e", ENV{ID_MM_ERICSSON_MBM}="1"
+
+LABEL="mm_mbm_end"
+# do not edit this file, it will be overwritten on update
+ACTION!="add|change|move", GOTO="mm_huawei_port_types_end"
+
+ENV{ID_VENDOR_ID}!="12d1", GOTO="mm_huawei_port_types_end"
+
+# MU609 does not support getportmode (crashes modem with default firmware)
+ATTRS{idProduct}=="1573", ENV{ID_MM_HUAWEI_DISABLE_GETPORTMODE}="1"
+
+# Mark the modem and at port flags for ModemManager
+SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="ff", ATTRS{bInterfaceSubClass}=="01", ATTRS{bInterfaceProtocol}=="01", ENV{ID_MM_HUAWEI_MODEM_PORT}="1"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="ff", ATTRS{bInterfaceSubClass}=="01", ATTRS{bInterfaceProtocol}=="02", ENV{ID_MM_HUAWEI_AT_PORT}="1"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="ff", ATTRS{bInterfaceSubClass}=="02", ATTRS{bInterfaceProtocol}=="01", ENV{ID_MM_HUAWEI_MODEM_PORT}="1"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="ff", ATTRS{bInterfaceSubClass}=="02", ATTRS{bInterfaceProtocol}=="02", ENV{ID_MM_HUAWEI_AT_PORT}="1"
+
+# GPS NMEA port on MU609
+SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="ff", ATTRS{bInterfaceSubClass}=="01", ATTRS{bInterfaceProtocol}=="05", ENV{ID_MM_HUAWEI_GPS_PORT}="1"
+# GPS NMEA port on MU909
+SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="ff", ATTRS{bInterfaceSubClass}=="01", ATTRS{bInterfaceProtocol}=="14", ENV{ID_MM_HUAWEI_GPS_PORT}="1"
+
+# Only the standard ECM or NCM port can support dial-up with AT NDISDUP through AT port
+SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="02", ATTRS{bInterfaceSubClass}=="06",ATTRS{bInterfaceProtocol}=="00", ENV{ID_MM_HUAWEI_NDISDUP_SUPPORTED}="1"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="02", ATTRS{bInterfaceSubClass}=="0d",ATTRS{bInterfaceProtocol}=="00", ENV{ID_MM_HUAWEI_NDISDUP_SUPPORTED}="1"
+
+LABEL="mm_huawei_port_types_end"
+# do not edit this file, it will be overwritten on update
+
+# Longcheer makes modules that other companies rebrand, like:
+#
+# Alcatel One Touch X020
+# Alcatel One Touch X030
+# MobiData MBD-200HU
+# ST Mobile Connect HSUPA USB Modem
+#
+# Most of these values were scraped from various Longcheer-based Windows
+# driver .inf files.  cmmdm.inf lists the actual data (ie PPP) ports, while
+# cmser.inf lists the aux ports that may be either AT-capable or not but
+# cannot be used for PPP.
+
+
+ACTION!="add|change|move", GOTO="mm_longcheer_port_types_end"
+SUBSYSTEM!="tty", GOTO="mm_longcheer_port_types_end"
+
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c9e", GOTO="mm_longcheer_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="1bbb", GOTO="mm_tamobile_vendorcheck"
+GOTO="mm_longcheer_port_types_end"
+
+LABEL="mm_longcheer_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="3197", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="3197", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="3197", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="6000", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="6000", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="6000", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="6060", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="6060", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="6060", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+# Alcatel One Touch X020
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="6061", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="6061", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="6061", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7001", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7001", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7001", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7001", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7002", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7002", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7002", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7002", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7002", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7101", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7101", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7101", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7101", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7102", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7102", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7102", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7102", ENV{.MM_USBIFNUM}=="06", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="7102", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8000", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8000", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8000", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8000", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8001", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8001", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8001", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8001", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8002", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8002", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8002", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="8002", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+# ChinaBird PL68
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9000", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9000", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9000", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9001", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9001", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9001", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9001", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9002", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9002", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9002", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9002", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9003", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9003", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9003", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9003", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9003", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9004", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9004", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9004", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9005", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9005", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9005", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9010", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9010", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9010", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9010", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9012", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9012", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9012", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9012", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9020", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9020", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9020", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9020", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9022", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9022", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9022", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9022", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+# Zoom products
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9602", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9602", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9602", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9602", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9603", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9603", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9603", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9603", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9604", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9604", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9604", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9604", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9605", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9605", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9605", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9605", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9605", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9606", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9606", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9606", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9606", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9606", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9607", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9607", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9607", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9607", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9607", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9607", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+GOTO="mm_longcheer_port_types_end"
+
+
+LABEL="mm_tamobile_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+# Alcatel One Touch X060s
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0000", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_LONGCHEER_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0000", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_LONGCHEER_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0000", ENV{ID_MM_LONGCHEER_TAGGED}="1"
+
+GOTO="mm_longcheer_port_types_end"
+
+
+LABEL="mm_longcheer_port_types_end"
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change|move", GOTO="mm_mtk_port_types_end"
+
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="0e8d", GOTO="mm_mtk_port_types_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="2001", GOTO="mm_dlink_port_types_vendorcheck"
+GOTO="mm_mtk_port_types_end"
+
+# MediaTek devices ---------------------------
+
+LABEL="mm_mtk_port_types_vendorcheck"
+ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a1", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_MTK_MODEM_PORT}="1"
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a1", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_MTK_AT_PORT}="1"
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a1", ENV{ID_MM_MTK_TAGGED}="1"
+
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a2", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_MTK_MODEM_PORT}="1"
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a2", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_MTK_AT_PORT}="1"
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a2", ENV{ID_MM_MTK_TAGGED}="1"
+
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a4", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_MTK_MODEM_PORT}="1"
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a4", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_MTK_AT_PORT}="1"
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a4", ENV{ID_MM_MTK_TAGGED}="1"
+
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a5", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_MTK_MODEM_PORT}="1"
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a5", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_MTK_AT_PORT}="1"
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a5", ENV{ID_MM_MTK_TAGGED}="1"
+
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a7", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_MTK_MODEM_PORT}="1"
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a7", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_MTK_AT_PORT}="1"
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="00a7", ENV{ID_MM_MTK_TAGGED}="1"
+
+GOTO="mm_mtk_port_types_end"
+
+# D-Link devices ---------------------------
+
+LABEL="mm_dlink_port_types_vendorcheck"
+ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+# D-Link DWM-156 A5 (and later?)
+ATTRS{idVendor}=="2001", ATTRS{idProduct}=="7d00", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_MTK_MODEM_PORT}="1"
+ATTRS{idVendor}=="2001", ATTRS{idProduct}=="7d00", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_MTK_AT_PORT}="1"
+ATTRS{idVendor}=="2001", ATTRS{idProduct}=="7d00", ENV{ID_MM_MTK_TAGGED}="1"
+
+GOTO="mm_mtk_port_types_end"
+
+LABEL="mm_mtk_port_types_end"
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change|move", GOTO="mm_nokia_port_types_end"
+SUBSYSTEM!="tty", GOTO="mm_nokia_port_types_end"
+
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="0421", GOTO="mm_nokia_port_types_vendorcheck"
+GOTO="mm_nokia_port_types_end"
+
+LABEL="mm_nokia_port_types_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+# For Nokia Internet Sticks (CS-xx) the modem/PPP port appears to always be USB interface 1
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="060D", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0611", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="061A", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="061B", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="061F", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0619", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0620", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0623", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0624", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0625", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="062A", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="062E", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="062F", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_NOKIA_PORT_TYPE_MODEM}="1"
+
+LABEL="mm_nokia_port_types_end"
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change|move", GOTO="mm_pcmcia_device_blacklist_end"
+SUBSYSTEM!="pcmcia", GOTO="mm_pcmcia_device_blacklist_end"
+
+# Gemplus Serial Port smartcard adapter
+ATTRS{prod_id1}=="Gemplus", ATTRS{prod_id2}=="SerialPort", ATTRS{prod_id3}=="GemPC Card", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+LABEL="mm_pcmcia_device_blacklist_end"
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change|move", GOTO="mm_platform_device_whitelist_end"
+SUBSYSTEM!="platform", GOTO="mm_platform_device_whitelist_end"
+
+# Be careful here since many devices connected to platform drivers on PCs
+# are legacy devices that won't like probing.  But often on embedded
+# systems serial ports are provided by platform devices.
+
+# Allow atmel_usart
+DRIVERS=="atmel_usart", ENV{ID_MM_PLATFORM_DRIVER_PROBE}="1"
+
+LABEL="mm_platform_device_whitelist_end"
+# do not edit this file, it will be overwritten on update
+
+# Simtech makes modules that other companies rebrand, like:
+#
+# A-LINK 3GU
+# SCT UM300
+#
+# Most of these values were scraped from various SimTech-based Windows
+# driver .inf files.  *mdm.inf lists the main command ports, while
+# *ser.inf lists the aux ports that may be used for PPP.
+
+
+ACTION!="add|change|move", GOTO="mm_simtech_port_types_end"
+SUBSYSTEM!="tty", GOTO="mm_simtech_port_types_end"
+
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="1e0e", GOTO="mm_alink_vendorcheck"
+GOTO="mm_simtech_port_types_end"
+
+LABEL="mm_alink_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+# A-LINK 3GU
+ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="cefe", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_SIMTECH_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="cefe", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_SIMTECH_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="cefe", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_SIMTECH_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="cefe", ENV{ID_MM_SIMTECH_TAGGED}="1"
+
+# Prolink PH-300
+ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="9100", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_SIMTECH_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="9100", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_SIMTECH_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="9100", ENV{ID_MM_SIMTECH_TAGGED}="1"
+
+# SCT UM300
+ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="9200", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_SIMTECH_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="9200", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_SIMTECH_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1e0e", ATTRS{idProduct}=="9200", ENV{ID_MM_SIMTECH_TAGGED}="1"
+
+GOTO="mm_simtech_port_types_end"
+
+LABEL="mm_simtech_port_types_end"
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change|move", GOTO="mm_telit_port_types_end"
+SUBSYSTEM!="tty", GOTO="mm_telit_port_types_end"
+
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="1bc7", GOTO="mm_telit_vendorcheck"
+GOTO="mm_telit_port_types_end"
+
+LABEL="mm_telit_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+# UC864-E, UC864-E-AUTO, UC864-K, UC864-WD, UC864-WDU
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1003", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1003", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_TELIT_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1003", ENV{ID_MM_TELIT_TAGGED}="1"
+
+# UC864-G
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1004", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1004", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_TELIT_PORT_TYPE_NMEA}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1004", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_TELIT_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1004", ENV{ID_MM_TELIT_TAGGED}="1"
+
+# CC864-DUAL
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1005", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1005", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_TELIT_PORT_TYPE_NMEA}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1005", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_TELIT_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1005", ENV{ID_MM_TELIT_TAGGED}="1"
+
+# CC864-SINGLE, CC864-KPS
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1006", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1006", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_TELIT_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1006", ENV{ID_MM_TELIT_TAGGED}="1"
+
+# DE910-DUAL
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_TELIT_PORT_TYPE_NMEA}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_TELIT_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1010", ENV{ID_MM_TELIT_TAGGED}="1"
+
+# CE910-DUAL
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1011", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_TELIT_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="1011", ENV{ID_MM_TELIT_TAGGED}="1"
+
+# NOTE: Qualcomm Gobi-based devices like the LE920 should not be handled
+# by this plugin, but by the Gobi plugin.
+
+GOTO="mm_telit_port_types_end"
+LABEL="mm_telit_port_types_end"
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change|move", GOTO="mm_usb_device_blacklist_end"
+SUBSYSTEM!="usb", GOTO="mm_usb_device_blacklist_end"
+ENV{DEVTYPE}!="usb_device",  GOTO="mm_usb_device_blacklist_end"
+
+# Telegesis zigbee dongle
+ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="0003", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# APC UPS devices
+ATTRS{idVendor}=="051d", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Sweex 1000VA
+ATTRS{idVendor}=="0925", ATTRS{idProduct}=="1234", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Agiler UPS
+ATTRS{idVendor}=="05b8", ATTRS{idProduct}=="0000", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Krauler UP-M500VA
+ATTRS{idVendor}=="0001", ATTRS{idProduct}=="0000", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Ablerex 625L USB
+ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0000", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Belkin F6C1200-UNV
+ATTRS{idVendor}=="0665", ATTRS{idProduct}=="5161", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Various Liebert and Phoenixtec Power devices
+ATTRS{idVendor}=="06da", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Unitek Alpha 1200Sx
+ATTRS{idVendor}=="0f03", ATTRS{idProduct}=="0001", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Various Tripplite devices
+ATTRS{idVendor}=="09ae", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Various MGE Office Protection Systems devices
+ATTRS{idVendor}=="0463", ATTRS{idProduct}=="0001", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="0463", ATTRS{idProduct}=="ffff", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# CyberPower 900AVR/BC900D
+ATTRS{idVendor}=="0764", ATTRS{idProduct}=="0005", ENV{ID_MM_DEVICE_IGNORE}="1"
+# CyberPower CP1200AVR/BC1200D
+ATTRS{idVendor}=="0764", ATTRS{idProduct}=="0501", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Various Belkin devices
+ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0980", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0900", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0910", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0912", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0551", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0751", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0375", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="050d", ATTRS{idProduct}=="1100", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# HP R/T 2200 INTL (like SMART2200RMXL2U)
+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="1f0a", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Powerware devices
+ATTRS{idVendor}=="0592", ATTRS{idProduct}=="0002", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Palm Treo 700/900/etc
+# Shouldn't be probed themselves, but you can install programs like
+# "MobileStream USB Modem" which changes the USB PID of the device to something
+# that isn't blacklisted.
+ATTRS{idVendor}=="0830", ATTRS{idProduct}=="0061", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# GlobalScaleTechnologies SheevaPlug
+ATTRS{idVendor}=="9e88", ATTRS{idProduct}=="9e8f", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Atmel Corp at91sam SAMBA bootloader
+ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Dangerous Prototypes Bus Pirate v4
+ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="fb00", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# All devices from the Swiss Federal Institute of Technology
+ATTRS{idVendor}=="0617", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# West Mountain Radio devices
+ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="814a", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="814b", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="2405", ATTRS{idProduct}=="0003", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Arduinos
+ATTRS{idVendor}=="2341", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9207", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9208", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Adafruit Flora
+ATTRS{idVendor}=="239a", ATTRS{idProduct}=="0004", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="239a", ATTRS{idProduct}=="8004", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# All devices from Pololu Corporation
+# except some possible future products.
+ATTRS{idVendor}=="1ffb", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="00ad", ENV{ID_MM_DEVICE_IGNORE}="0"
+ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="00ae", ENV{ID_MM_DEVICE_IGNORE}="0"
+
+# Altair U-Boot device
+ATTRS{idVendor}=="0216", ATTRS{idProduct}=="0051", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Bluegiga BLE112B
+ATTRS{idVendor}=="2458", ATTRS{idProduct}=="0001", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Analog Devices BLIP camera
+ATTRS{idVendor}=="064b", ATTRS{idProduct}=="7823", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# MediaTek GPS chip (HOLUX M-1200E, GlobalTop Gms-d1, etc)
+ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="3329", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# PS-360 OEM (GPS sold with MS Street and Trips 2005)
+ATTRS{idVendor}=="067b", ATTRS{idProduct}=="aaa0", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# u-blox AG, u-blox 5 GPS chips
+ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a5", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a6", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Garmin GPS devices
+DRIVERS=="garmin_gps", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Cypress M8-based GPS devices, UPSes, and serial converters
+DRIVERS=="cypress_m8", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# All devices in the Openmoko vendor ID
+ATTRS{idVendor}=="1d50", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# All devices from 3D Robotics
+ATTRS{idVendor}=="26ac", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# empiriKit science lab controller device
+ATTRS{idVendor}=="0425", ATTRS{idProduct}=="0408", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+# Infineon Flashloader used by Intel XMM modem bootloader
+ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0716", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+LABEL="mm_usb_device_blacklist_end"
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change|move", GOTO="mm_usb_serial_adapters_greylist_end"
+SUBSYSTEM!="usb", GOTO="mm_usb_serial_adapters_greylist_end"
+ENV{DEVTYPE}!="usb_device",  GOTO="mm_usb_serial_adapters_greylist_end"
+
+# Belkin F5U183 Serial Adapter
+ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0103", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}="1"
+
+# FTDI-based serial adapters
+#   FTDI does USB to serial converter ICs; and it's very likely that they'll
+#   never do modems themselves, so it should be safe to add a rule only based
+#   on the vendor Id.
+ATTRS{idVendor}=="0403", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}="1"
+
+# ATEN Intl UC-232A (Prolific)
+ATTRS{idVendor}=="0557", ATTRS{idProduct}=="2008", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}="1"
+
+# Prolific USB to Serial adapter
+ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}="1"
+
+# Magic Control Technology Corp adapters
+ATTRS{idVendor}=="0711", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}="1"
+
+# Cygnal Integrated Products, Inc. CP210x
+ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}="1"
+ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea71", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}="1"
+
+# QinHeng Electronics HL-340
+ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}="1"
+
+# Atmel Corp. LUFA USB to Serial Adapter Project (Arduino)
+ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="204b", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}="1"
+
+# Netchip Technology, Inc. Linux-USB Serial Gadget (CDC ACM mode)
+ATTRS{idVendor}=="0525", ATTRS{idProduct}=="a4a7", ENV{ID_MM_DEVICE_MANUAL_SCAN_ONLY}="1"
+
+LABEL="mm_usb_serial_adapters_greylist_end"
+# do not edit this file, it will be overwritten on update
+
+# Alcatel One Touch X220D
+# Alcatel One Touch X200
+#
+# These values were scraped from the X220D's Windows .inf files.  jrdmdm.inf
+# lists the actual command and data (ie PPP) ports, while jrdser.inf lists the
+# aux ports that may be either AT-capable or not but cannot be used for PPP.
+
+
+ACTION!="add|change|move", GOTO="mm_x22x_port_types_end"
+SUBSYSTEM!="tty", GOTO="mm_x22x_port_types_end"
+
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="1bbb", GOTO="mm_x22x_generic_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="0b3c", GOTO="mm_x22x_olivetti_vendorcheck"
+GOTO="mm_x22x_port_types_end"
+
+# Generic JRD devices ---------------------------
+
+LABEL="mm_x22x_generic_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+# Alcatel X200
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0000", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_X22X_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0000", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0000", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0000", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0000", ENV{ID_MM_X22X_TAGGED}="1"
+
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0017", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_X22X_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0017", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0017", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0017", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0017", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="0017", ENV{ID_MM_X22X_TAGGED}="1"
+
+# Archos G9
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="00B7", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_X22X_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="00B7", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="00B7", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_X22X_PORT_TYPE_NMEA}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="00B7", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_X22X_PORT_TYPE_VOICE}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="00B7", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="1bbb", ATTRS{idProduct}=="00B7", ENV{ID_MM_X22X_TAGGED}="1"
+
+GOTO="mm_x22x_port_types_end"
+
+# Olivetti devices ---------------------------
+
+LABEL="mm_x22x_olivetti_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+# Olicard 200
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_X22X_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{.MM_USBIFNUM}=="06", ENV{ID_MM_X22X_PORT_TYPE_AUX}="1"
+ATTRS{idVendor}=="0b3c", ATTRS{idProduct}=="c005", ENV{ID_MM_X22X_TAGGED}="1"
+
+GOTO="mm_x22x_port_types_end"
+
+LABEL="mm_x22x_port_types_end"
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change|move", GOTO="mm_zte_port_types_end"
+SUBSYSTEM!="tty", GOTO="mm_zte_port_types_end"
+
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="19d2", GOTO="mm_zte_port_types_vendorcheck"
+GOTO="mm_zte_port_types_end"
+
+LABEL="mm_zte_port_types_vendorcheck"
+SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0001", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0001", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0002", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0002", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0003", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0003", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0004", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0004", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0005", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0005", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0006", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0006", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0007", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0007", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0008", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0008", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0009", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0009", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="000A", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="000A", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0012", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0012", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0015", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0015", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0016", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0016", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0017", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0017", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0018", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0018", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0019", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0019", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0021", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0021", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0024", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0024", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0025", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0025", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0030", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0030", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0033", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0033", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0037", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0037", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0039", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0039", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0042", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0042", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0043", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0043", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0048", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0048", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0049", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0049", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0052", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0052", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0054", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0054", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0055", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0055", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0057", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0057", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0058", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0058", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0061", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0061", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0063", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0063", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0064", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0064", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0066", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0066", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0078", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0078", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0082", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0082", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0091", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0091", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0104", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0104", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0106", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0106", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0108", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0108", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0113", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0113", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0117", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0117", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0118", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0118", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0121", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0121", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0122", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0122", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0123", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0123", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0124", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0124", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0125", ENV{.MM_USBIFNUM}=="05", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0125", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0126", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0126", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0128", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0128", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1007", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1007", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1008", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1008", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1254", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1254", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1515", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1515", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2002", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2002", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2003", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
+ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2003", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"
+
+# Icera-based devices that use DHCP, not AT%IPDPADDR
+ATTRS{product}=="K3805-z", ENV{ID_MM_ZTE_ICERA_DHCP}="1"
+
+LABEL="mm_zte_port_types_end"
+# do not edit this file, it will be overwritten on update
+
+# Tag any devices that MM might be interested in; if ModemManager is started
+# up right after udev, when MM explicitly requests devices on startup it may
+# get devices that haven't had all rules run yet.  Thus, we tag devices we're
+# interested in and when handling devices during MM startup we ignore any
+# that don't have this tag.  MM will still get the udev 'add' event for the
+# device a short while later and then process it as normal.
+
+ACTION!="add|change|move|bind", GOTO="mm_candidate_end"
+
+# Opening bound but disconnected Bluetooth RFCOMM ttys would initiate the
+# connection. Don't do that.
+KERNEL=="rfcomm*", DEVPATH=="*/virtual/*", GOTO="mm_candidate_end"
+
+SUBSYSTEM=="tty", ENV{ID_MM_CANDIDATE}="1"
+SUBSYSTEM=="net", ENV{ID_MM_CANDIDATE}="1"
+KERNEL=="cdc-wdm[0-9]*", SUBSYSTEM=="usb", ENV{ID_MM_CANDIDATE}="1"
+KERNEL=="cdc-wdm[0-9]*", SUBSYSTEM=="usbmisc", ENV{ID_MM_CANDIDATE}="1"
+
+# WWAN subsystem port handling
+#  - All USB devices ignored for now, only PCI devices expected
+#  - Only "wwan_port" device types processed (single ports); we fully ignore
+#    the "wwan_dev" device type (full device, not just one port)
+SUBSYSTEMS=="usb", GOTO="mm_candidate_end"
+SUBSYSTEM=="wwan", ENV{DEVTYPE}=="wwan_dev", GOTO="mm_candidate_end"
+SUBSYSTEM=="wwan", ENV{ID_MM_CANDIDATE}="1"
+SUBSYSTEM=="wwan", KERNEL=="*MBIM", ENV{ID_MM_PORT_TYPE_MBIM}="1"
+SUBSYSTEM=="wwan", KERNEL=="*QMI", ENV{ID_MM_PORT_TYPE_QMI}="1"
+SUBSYSTEM=="wwan", KERNEL=="*AT", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
+SUBSYSTEM=="wwan", KERNEL=="*QCDM", ENV{ID_MM_PORT_TYPE_QCDM}="1"
+
+LABEL="mm_candidate_end"
+
+
+## Concatenation of all ofono udev rules (plugins/*.rules in ofono sources)
+## Note that ofono uses this for very few modems and that in most cases it finds
+## modems by checking directly in code udev events, so changes here will be rare
+
+## plugins/ofono.rules
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change", GOTO="ofono_end"
+
+# ISI/Phonet drivers
+SUBSYSTEM!="net", GOTO="ofono_isi_end"
+ATTRS{type}!="820", GOTO="ofono_isi_end"
+KERNELS=="gadget", GOTO="ofono_isi_end"
+
+# Nokia N900 modem
+SUBSYSTEMS=="hsi", ENV{OFONO_DRIVER}="n900", ENV{OFONO_ISI_ADDRESS}="108"
+KERNEL=="phonet*", ENV{OFONO_DRIVER}="n900", ENV{OFONO_ISI_ADDRESS}="108"
+
+# STE u8500
+KERNEL=="shrm0", ENV{OFONO_DRIVER}="u8500"
+
+LABEL="ofono_isi_end"
+
+SUBSYSTEM!="usb", GOTO="ofono_end"
+ENV{DEVTYPE}!="usb_device", GOTO="ofono_end"
+
+# Ignore fake serial number
+ATTRS{serial}=="1234567890ABCDEF", ENV{ID_SERIAL_SHORT}=""
+
+# Nokia CDMA Device
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="023e", ENV{OFONO_DRIVER}="nokiacdma"
+ATTRS{idVendor}=="0421", ATTRS{idProduct}=="00b6", ENV{OFONO_DRIVER}="nokiacdma"
+
+# Lenovo H5321gw 0bdb:1926
+ATTRS{idVendor}=="0bdb", ATTRS{idProduct}=="1926", ENV{OFONO_DRIVER}="mbm"
+
+LABEL="ofono_end"
+
+## plugins/ofono-speedup.rules
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add|change", GOTO="ofono_speedup_end"
+
+SUBSYSTEM!="tty", GOTO="ofono_speedup_end"
+KERNEL!="ttyUSB[0-9]*", GOTO="ofono_speedup_end"
+
+# SpeedUp 7300
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9e00", ENV{ID_USB_INTERFACE_NUM}=="00", ENV{OFONO_LABEL}="modem"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9e00", ENV{ID_USB_INTERFACE_NUM}=="03", ENV{OFONO_LABEL}="aux"
+
+# SpeedUp
+ATTRS{idVendor}=="2020", ATTRS{idProduct}=="1005", ENV{ID_USB_INTERFACE_NUM}=="03", ENV{OFONO_LABEL}="modem"
+ATTRS{idVendor}=="2020", ATTRS{idProduct}=="1005", ENV{ID_USB_INTERFACE_NUM}=="01", ENV{OFONO_LABEL}="aux"
+
+ATTRS{idVendor}=="2020", ATTRS{idProduct}=="1008", ENV{ID_USB_INTERFACE_NUM}=="03", ENV{OFONO_LABEL}="modem"
+ATTRS{idVendor}=="2020", ATTRS{idProduct}=="1008", ENV{ID_USB_INTERFACE_NUM}=="01", ENV{OFONO_LABEL}="aux"
+
+# SpeedUp 9800
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9800", ENV{ID_USB_INTERFACE_NUM}=="01", ENV{OFONO_LABEL}="modem"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9800", ENV{ID_USB_INTERFACE_NUM}=="02", ENV{OFONO_LABEL}="aux"
+
+# SpeedUp U3501
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9605", ENV{ID_USB_INTERFACE_NUM}=="03", ENV{OFONO_LABEL}="modem"
+ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9605", ENV{ID_USB_INTERFACE_NUM}=="01", ENV{OFONO_LABEL}="aux"
+
+LABEL="ofono_speedup_end"
+
diff --git a/etc/udev/udev.conf b/etc/udev/udev.conf
new file mode 100644 (file)
index 0000000..7deb771
--- /dev/null
@@ -0,0 +1,10 @@
+# see udev.conf(5) for details
+#
+# udevd is also started in the initrd.  When this file is modified you might
+# also want to rebuild the initrd, so that it will include the modified configuration.
+
+#udev_log=info
+#children_max=
+#exec_delay=
+#event_timeout=180
+#resolve_names=early
diff --git a/etc/udisks2/udisks2.conf b/etc/udisks2/udisks2.conf
new file mode 100644 (file)
index 0000000..551952a
--- /dev/null
@@ -0,0 +1,10 @@
+[udisks2]
+# Comma separated list of modules to load.
+# Use asterisk to load all the modules.
+modules=*
+# Valid options are 'ondemand' or 'onstartup'.
+modules_load_preference=ondemand
+
+[defaults]
+# Valid options are 'luks1' or 'luks2'
+encryption=luks1
diff --git a/etc/ufw/after.init b/etc/ufw/after.init
new file mode 100644 (file)
index 0000000..e89217d
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# after.init: if executable, called by ufw-init. See 'man ufw-framework' for
+#             details. Note that output from these scripts is not seen via the
+#             the ufw command, but instead via ufw-init.
+#
+# Copyright 2013 Canonical Ltd.
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License version 3,
+#    as published by the Free Software Foundation.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+set -e
+
+case "$1" in
+start)
+    # typically required
+    ;;
+stop)
+    # typically required
+    ;;
+status)
+    # optional
+    ;;
+flush-all)
+    # optional
+    ;;
+*)
+    echo "'$1' not supported"
+    echo "Usage: after.init {start|stop|flush-all|status}"
+    ;;
+esac
diff --git a/etc/ufw/after.rules b/etc/ufw/after.rules
new file mode 100644 (file)
index 0000000..0d6c646
--- /dev/null
@@ -0,0 +1,30 @@
+#
+# rules.input-after
+#
+# Rules that should be run after the ufw command line added rules. Custom
+# rules should be added to one of these chains:
+#   ufw-after-input
+#   ufw-after-output
+#   ufw-after-forward
+#
+
+# Don't delete these required lines, otherwise there will be errors
+*filter
+:ufw-after-input - [0:0]
+:ufw-after-output - [0:0]
+:ufw-after-forward - [0:0]
+# End required lines
+
+# don't log noisy services by default
+-A ufw-after-input -p udp --dport 137 -j ufw-skip-to-policy-input
+-A ufw-after-input -p udp --dport 138 -j ufw-skip-to-policy-input
+-A ufw-after-input -p tcp --dport 139 -j ufw-skip-to-policy-input
+-A ufw-after-input -p tcp --dport 445 -j ufw-skip-to-policy-input
+-A ufw-after-input -p udp --dport 67 -j ufw-skip-to-policy-input
+-A ufw-after-input -p udp --dport 68 -j ufw-skip-to-policy-input
+
+# don't log noisy broadcast
+-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input
+
+# don't delete the 'COMMIT' line or these rules won't be processed
+COMMIT
diff --git a/etc/ufw/after6.rules b/etc/ufw/after6.rules
new file mode 100644 (file)
index 0000000..0d99672
--- /dev/null
@@ -0,0 +1,27 @@
+#
+# rules.input-after
+#
+# Rules that should be run after the ufw command line added rules. Custom
+# rules should be added to one of these chains:
+#   ufw6-after-input
+#   ufw6-after-output
+#   ufw6-after-forward
+#
+
+# Don't delete these required lines, otherwise there will be errors
+*filter
+:ufw6-after-input - [0:0]
+:ufw6-after-output - [0:0]
+:ufw6-after-forward - [0:0]
+# End required lines
+
+# don't log noisy services by default
+-A ufw6-after-input -p udp --dport 137 -j ufw6-skip-to-policy-input
+-A ufw6-after-input -p udp --dport 138 -j ufw6-skip-to-policy-input
+-A ufw6-after-input -p tcp --dport 139 -j ufw6-skip-to-policy-input
+-A ufw6-after-input -p tcp --dport 445 -j ufw6-skip-to-policy-input
+-A ufw6-after-input -p udp --dport 546 -j ufw6-skip-to-policy-input
+-A ufw6-after-input -p udp --dport 547 -j ufw6-skip-to-policy-input
+
+# don't delete the 'COMMIT' line or these rules won't be processed
+COMMIT
diff --git a/etc/ufw/applications.d/nginx b/etc/ufw/applications.d/nginx
new file mode 100644 (file)
index 0000000..0cb0449
--- /dev/null
@@ -0,0 +1,14 @@
+[Nginx HTTP]
+title=Web Server (Nginx, HTTP)
+description=Small, but very powerful and efficient web server
+ports=80/tcp
+
+[Nginx HTTPS]
+title=Web Server (Nginx, HTTPS)
+description=Small, but very powerful and efficient web server
+ports=443/tcp
+
+[Nginx Full]
+title=Web Server (Nginx, HTTP + HTTPS)
+description=Small, but very powerful and efficient web server
+ports=80,443/tcp
diff --git a/etc/ufw/applications.d/openssh-server b/etc/ufw/applications.d/openssh-server
new file mode 100644 (file)
index 0000000..9bbe906
--- /dev/null
@@ -0,0 +1,4 @@
+[OpenSSH]
+title=Secure shell server, an rshd replacement
+description=OpenSSH is a free implementation of the Secure Shell protocol.
+ports=22/tcp
diff --git a/etc/ufw/before.init b/etc/ufw/before.init
new file mode 100644 (file)
index 0000000..1348cb1
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# before.init: if executable, called by ufw-init. See 'man ufw-framework' for
+#              details. Note that output from these scripts is not seen via the
+#              the ufw command, but instead via ufw-init.
+#
+# Copyright 2013 Canonical Ltd.
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License version 3,
+#    as published by the Free Software Foundation.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+set -e
+
+case "$1" in
+start)
+    # typically required
+    ;;
+stop)
+    # typically required
+    ;;
+status)
+    # optional
+    ;;
+flush-all)
+    # optional
+    ;;
+*)
+    echo "'$1' not supported"
+    echo "Usage: before.init {start|stop|flush-all|status}"
+    ;;
+esac
diff --git a/etc/ufw/before.rules b/etc/ufw/before.rules
new file mode 100644 (file)
index 0000000..23b384e
--- /dev/null
@@ -0,0 +1,75 @@
+#
+# rules.before
+#
+# Rules that should be run before the ufw command line added rules. Custom
+# rules should be added to one of these chains:
+#   ufw-before-input
+#   ufw-before-output
+#   ufw-before-forward
+#
+
+# Don't delete these required lines, otherwise there will be errors
+*filter
+:ufw-before-input - [0:0]
+:ufw-before-output - [0:0]
+:ufw-before-forward - [0:0]
+:ufw-not-local - [0:0]
+# End required lines
+
+
+# allow all on loopback
+-A ufw-before-input -i lo -j ACCEPT
+-A ufw-before-output -o lo -j ACCEPT
+
+# quickly process packets for which we already have a connection
+-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+
+# drop INVALID packets (logs these in loglevel medium and higher)
+-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
+-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
+
+# ok icmp codes for INPUT
+-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
+-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
+-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
+-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
+
+# ok icmp code for FORWARD
+-A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT
+-A ufw-before-forward -p icmp --icmp-type time-exceeded -j ACCEPT
+-A ufw-before-forward -p icmp --icmp-type parameter-problem -j ACCEPT
+-A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT
+
+# allow dhcp client to work
+-A ufw-before-input -p udp --sport 67 --dport 68 -j ACCEPT
+
+#
+# ufw-not-local
+#
+-A ufw-before-input -j ufw-not-local
+
+# if LOCAL, RETURN
+-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
+
+# if MULTICAST, RETURN
+-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
+
+# if BROADCAST, RETURN
+-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
+
+# all other non-local packets are dropped
+-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
+-A ufw-not-local -j DROP
+
+# allow MULTICAST mDNS for service discovery (be sure the MULTICAST line above
+# is uncommented)
+-A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT
+
+# allow MULTICAST UPnP for service discovery (be sure the MULTICAST line above
+# is uncommented)
+-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT
+
+# don't delete the 'COMMIT' line or these rules won't be processed
+COMMIT
diff --git a/etc/ufw/before6.rules b/etc/ufw/before6.rules
new file mode 100644 (file)
index 0000000..abebbe7
--- /dev/null
@@ -0,0 +1,142 @@
+#
+# rules.before
+#
+# Rules that should be run before the ufw command line added rules. Custom
+# rules should be added to one of these chains:
+#   ufw6-before-input
+#   ufw6-before-output
+#   ufw6-before-forward
+#
+
+# Don't delete these required lines, otherwise there will be errors
+*filter
+:ufw6-before-input - [0:0]
+:ufw6-before-output - [0:0]
+:ufw6-before-forward - [0:0]
+# End required lines
+
+
+# allow all on loopback
+-A ufw6-before-input -i lo -j ACCEPT
+-A ufw6-before-output -o lo -j ACCEPT
+
+# drop packets with RH0 headers
+-A ufw6-before-input -m rt --rt-type 0 -j DROP
+-A ufw6-before-forward -m rt --rt-type 0 -j DROP
+-A ufw6-before-output -m rt --rt-type 0 -j DROP
+
+# quickly process packets for which we already have a connection
+-A ufw6-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+-A ufw6-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+-A ufw6-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+
+# multicast ping replies are part of the ok icmp codes for INPUT (rfc4890,
+# 4.4.1 and 4.4.2), but don't have an associated connection and are otherwise
+# be marked INVALID, so allow here instead.
+-A ufw6-before-input -p icmpv6 --icmpv6-type echo-reply -j ACCEPT
+
+# drop INVALID packets (logs these in loglevel medium and higher)
+-A ufw6-before-input -m conntrack --ctstate INVALID -j ufw6-logging-deny
+-A ufw6-before-input -m conntrack --ctstate INVALID -j DROP
+
+# ok icmp codes for INPUT (rfc4890, 4.4.1 and 4.4.2)
+-A ufw6-before-input -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
+-A ufw6-before-input -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
+# codes 0 and 1
+-A ufw6-before-input -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
+# codes 0-2 (echo-reply needs to be before INVALID, see above)
+-A ufw6-before-input -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
+-A ufw6-before-input -p icmpv6 --icmpv6-type echo-request -j ACCEPT
+-A ufw6-before-input -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT
+-A ufw6-before-input -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT
+-A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT
+-A ufw6-before-input -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT
+# IND solicitation
+-A ufw6-before-input -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT
+# IND advertisement
+-A ufw6-before-input -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT
+# MLD query
+-A ufw6-before-input -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT
+# MLD report
+-A ufw6-before-input -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT
+# MLD done
+-A ufw6-before-input -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT
+# MLD report v2
+-A ufw6-before-input -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT
+# SEND certificate path solicitation
+-A ufw6-before-input -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT
+# SEND certificate path advertisement
+-A ufw6-before-input -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT
+# MR advertisement
+-A ufw6-before-input -p icmpv6 --icmpv6-type 151 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
+# MR solicitation
+-A ufw6-before-input -p icmpv6 --icmpv6-type 152 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
+# MR termination
+-A ufw6-before-input -p icmpv6 --icmpv6-type 153 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
+
+# ok icmp codes for OUTPUT (rfc4890, 4.4.1 and 4.4.2)
+-A ufw6-before-output -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
+-A ufw6-before-output -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
+# codes 0 and 1
+-A ufw6-before-output -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
+# codes 0-2
+-A ufw6-before-output -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
+-A ufw6-before-output -p icmpv6 --icmpv6-type echo-request -j ACCEPT
+-A ufw6-before-output -p icmpv6 --icmpv6-type echo-reply -j ACCEPT
+-A ufw6-before-output -p icmpv6 --icmpv6-type router-solicitation -m hl --hl-eq 255 -j ACCEPT
+-A ufw6-before-output -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT
+-A ufw6-before-output -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT
+-A ufw6-before-output -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT
+# IND solicitation
+-A ufw6-before-output -p icmpv6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT
+# IND advertisement
+-A ufw6-before-output -p icmpv6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT
+# MLD query
+-A ufw6-before-output -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT
+# MLD report
+-A ufw6-before-output -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT
+# MLD done
+-A ufw6-before-output -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT
+# MLD report v2
+-A ufw6-before-output -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT
+# SEND certificate path solicitation
+-A ufw6-before-output -p icmpv6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT
+# SEND certificate path advertisement
+-A ufw6-before-output -p icmpv6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT
+# MR advertisement
+-A ufw6-before-output -p icmpv6 --icmpv6-type 151 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
+# MR solicitation
+-A ufw6-before-output -p icmpv6 --icmpv6-type 152 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
+# MR termination
+-A ufw6-before-output -p icmpv6 --icmpv6-type 153 -s fe80::/10 -m hl --hl-eq 1 -j ACCEPT
+
+# ok icmp codes for FORWARD (rfc4890, 4.3.1)
+-A ufw6-before-forward -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
+-A ufw6-before-forward -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
+# codes 0 and 1
+-A ufw6-before-forward -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
+# codes 0-2
+-A ufw6-before-forward -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
+-A ufw6-before-forward -p icmpv6 --icmpv6-type echo-request -j ACCEPT
+-A ufw6-before-forward -p icmpv6 --icmpv6-type echo-reply -j ACCEPT
+# ok icmp codes for FORWARD (rfc4890, 4.3.2)
+# Home Agent Address Discovery Reques
+-A ufw6-before-input -p icmpv6 --icmpv6-type 144 -j ACCEPT
+# Home Agent Address Discovery Reply
+-A ufw6-before-input -p icmpv6 --icmpv6-type 145 -j ACCEPT
+# Mobile Prefix Solicitation
+-A ufw6-before-input -p icmpv6 --icmpv6-type 146 -j ACCEPT
+# Mobile Prefix Advertisement
+-A ufw6-before-input -p icmpv6 --icmpv6-type 147 -j ACCEPT
+
+# allow dhcp client to work
+-A ufw6-before-input -p udp -s fe80::/10 --sport 547 -d fe80::/10 --dport 546 -j ACCEPT
+
+# allow MULTICAST mDNS for service discovery
+-A ufw6-before-input -p udp -d ff02::fb --dport 5353 -j ACCEPT
+
+# allow MULTICAST UPnP for service discovery
+-A ufw6-before-input -p udp -d ff02::f --dport 1900 -j ACCEPT
+
+# don't delete the 'COMMIT' line or these rules won't be processed
+COMMIT
diff --git a/etc/ufw/sysctl.conf b/etc/ufw/sysctl.conf
new file mode 100644 (file)
index 0000000..7bebf81
--- /dev/null
@@ -0,0 +1,41 @@
+#
+# Configuration file for setting network variables. Please note these settings
+# override /etc/sysctl.conf and /etc/sysctl.d. If you prefer to use
+# /etc/sysctl.conf, please adjust IPT_SYSCTL in /etc/default/ufw. See
+# Documentation/networking/ip-sysctl.txt in the kernel source code for more
+# information.
+#
+
+# Uncomment this to allow this host to route packets between interfaces
+#net/ipv4/ip_forward=1
+#net/ipv6/conf/default/forwarding=1
+#net/ipv6/conf/all/forwarding=1
+
+# Disable ICMP redirects. ICMP redirects are rarely used but can be used in
+# MITM (man-in-the-middle) attacks. Disabling ICMP may disrupt legitimate
+# traffic to those sites.
+net/ipv4/conf/all/accept_redirects=0
+net/ipv4/conf/default/accept_redirects=0
+net/ipv6/conf/all/accept_redirects=0
+net/ipv6/conf/default/accept_redirects=0
+
+# Ignore bogus ICMP errors
+net/ipv4/icmp_echo_ignore_broadcasts=1
+net/ipv4/icmp_ignore_bogus_error_responses=1
+net/ipv4/icmp_echo_ignore_all=0
+
+# Don't log Martian Packets (impossible addresses)
+# packets
+net/ipv4/conf/all/log_martians=0
+net/ipv4/conf/default/log_martians=0
+
+#net/ipv4/tcp_fin_timeout=30
+#net/ipv4/tcp_keepalive_intvl=1800
+
+# Uncomment this to turn off ipv6 autoconfiguration
+#net/ipv6/conf/default/autoconf=1
+#net/ipv6/conf/all/autoconf=1
+
+# Uncomment this to enable ipv6 privacy addressing
+#net/ipv6/conf/default/use_tempaddr=2
+#net/ipv6/conf/all/use_tempaddr=2
diff --git a/etc/ufw/ufw.conf b/etc/ufw/ufw.conf
new file mode 100644 (file)
index 0000000..28fe534
--- /dev/null
@@ -0,0 +1,10 @@
+# /etc/ufw/ufw.conf
+#
+
+# Set to yes to start on boot. If setting this remotely, be sure to add a rule
+# to allow your remote connection before starting ufw. Eg: 'ufw allow 22/tcp'
+ENABLED=yes
+
+# Please use the 'ufw' command to set the loglevel. Eg: 'ufw logging medium'.
+# See 'man ufw' for details.
+LOGLEVEL=low
diff --git a/etc/ufw/user.rules b/etc/ufw/user.rules
new file mode 100644 (file)
index 0000000..7f169d9
--- /dev/null
@@ -0,0 +1,45 @@
+*filter
+:ufw-user-input - [0:0]
+:ufw-user-output - [0:0]
+:ufw-user-forward - [0:0]
+:ufw-before-logging-input - [0:0]
+:ufw-before-logging-output - [0:0]
+:ufw-before-logging-forward - [0:0]
+:ufw-user-logging-input - [0:0]
+:ufw-user-logging-output - [0:0]
+:ufw-user-logging-forward - [0:0]
+:ufw-after-logging-input - [0:0]
+:ufw-after-logging-output - [0:0]
+:ufw-after-logging-forward - [0:0]
+:ufw-logging-deny - [0:0]
+:ufw-logging-allow - [0:0]
+:ufw-user-limit - [0:0]
+:ufw-user-limit-accept - [0:0]
+### RULES ###
+
+### tuple ### allow any 22 0.0.0.0/0 any 0.0.0.0/0 in
+-A ufw-user-input -p tcp --dport 22 -j ACCEPT
+-A ufw-user-input -p udp --dport 22 -j ACCEPT
+
+### tuple ### allow tcp 80,443 0.0.0.0/0 any 0.0.0.0/0 Nginx%20Full - in
+-A ufw-user-input -p tcp -m multiport --dports 80,443 -j ACCEPT -m comment --comment 'dapp_Nginx%20Full'
+
+### tuple ### allow tcp 22 0.0.0.0/0 any 0.0.0.0/0 OpenSSH - in
+-A ufw-user-input -p tcp --dport 22 -j ACCEPT -m comment --comment 'dapp_OpenSSH'
+
+### END RULES ###
+
+### LOGGING ###
+-A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
+-A ufw-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
+-I ufw-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10
+-A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
+-A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10
+### END LOGGING ###
+
+### RATE LIMITING ###
+-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] "
+-A ufw-user-limit -j REJECT
+-A ufw-user-limit-accept -j ACCEPT
+### END RATE LIMITING ###
+COMMIT
diff --git a/etc/ufw/user6.rules b/etc/ufw/user6.rules
new file mode 100644 (file)
index 0000000..ae9402d
--- /dev/null
@@ -0,0 +1,45 @@
+*filter
+:ufw6-user-input - [0:0]
+:ufw6-user-output - [0:0]
+:ufw6-user-forward - [0:0]
+:ufw6-before-logging-input - [0:0]
+:ufw6-before-logging-output - [0:0]
+:ufw6-before-logging-forward - [0:0]
+:ufw6-user-logging-input - [0:0]
+:ufw6-user-logging-output - [0:0]
+:ufw6-user-logging-forward - [0:0]
+:ufw6-after-logging-input - [0:0]
+:ufw6-after-logging-output - [0:0]
+:ufw6-after-logging-forward - [0:0]
+:ufw6-logging-deny - [0:0]
+:ufw6-logging-allow - [0:0]
+:ufw6-user-limit - [0:0]
+:ufw6-user-limit-accept - [0:0]
+### RULES ###
+
+### tuple ### allow any 22 ::/0 any ::/0 in
+-A ufw6-user-input -p tcp --dport 22 -j ACCEPT
+-A ufw6-user-input -p udp --dport 22 -j ACCEPT
+
+### tuple ### allow tcp 80,443 ::/0 any ::/0 Nginx%20Full - in
+-A ufw6-user-input -p tcp -m multiport --dports 80,443 -j ACCEPT -m comment --comment 'dapp_Nginx%20Full'
+
+### tuple ### allow tcp 22 ::/0 any ::/0 OpenSSH - in
+-A ufw6-user-input -p tcp --dport 22 -j ACCEPT -m comment --comment 'dapp_OpenSSH'
+
+### END RULES ###
+
+### LOGGING ###
+-A ufw6-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
+-A ufw6-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
+-I ufw6-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10
+-A ufw6-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
+-A ufw6-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10
+### END LOGGING ###
+
+### RATE LIMITING ###
+-A ufw6-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] "
+-A ufw6-user-limit -j REJECT
+-A ufw6-user-limit-accept -j ACCEPT
+### END RATE LIMITING ###
+COMMIT
diff --git a/etc/update-manager/meta-release b/etc/update-manager/meta-release
new file mode 100644 (file)
index 0000000..0793c9e
--- /dev/null
@@ -0,0 +1,7 @@
+# default location for the meta-release file
+
+[METARELEASE]
+URI = https://changelogs.ubuntu.com/meta-release
+URI_LTS = https://changelogs.ubuntu.com/meta-release-lts
+URI_UNSTABLE_POSTFIX = -development
+URI_PROPOSED_POSTFIX = -proposed
diff --git a/etc/update-manager/release-upgrades b/etc/update-manager/release-upgrades
new file mode 100644 (file)
index 0000000..fd6dece
--- /dev/null
@@ -0,0 +1,16 @@
+# Default behavior for the release upgrader.
+
+[DEFAULT]
+# Default prompting and upgrade behavior, valid options:
+#
+#  never  - Never check for, or allow upgrading to, a new release.
+#  normal - Check to see if a new release is available.  If more than one new
+#           release is found, the release upgrader will attempt to upgrade to
+#           the supported release that immediately succeeds the
+#           currently-running release.
+#  lts    - Check to see if a new LTS release is available.  The upgrader
+#           will attempt to upgrade to the first LTS release available after
+#           the currently-running one.  Note that if this option is used and
+#           the currently-running release is not itself an LTS release the
+#           upgrader will assume prompt was meant to be normal.
+Prompt=lts
diff --git a/etc/update-manager/release-upgrades.d/ubuntu-advantage-upgrades.cfg b/etc/update-manager/release-upgrades.d/ubuntu-advantage-upgrades.cfg
new file mode 100644 (file)
index 0000000..c7da279
--- /dev/null
@@ -0,0 +1,4 @@
+[Sources]
+Pockets=security,updates,proposed,backports,infra-security,infra-updates,apps-security,apps-updates
+[Distro]
+PostInstallScripts=./xorg_fix_proprietary.py, /usr/lib/ubuntu-advantage/upgrade_lts_contract.py
diff --git a/etc/update-motd.d/00-header b/etc/update-motd.d/00-header
new file mode 100644 (file)
index 0000000..5ef9c4f
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+#    00-header - create the header of the MOTD
+#    Copyright (C) 2009-2010 Canonical Ltd.
+#
+#    Authors: Dustin Kirkland <kirkland@canonical.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 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License along
+#    with this program; if not, write to the Free Software Foundation, Inc.,
+#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+[ -r /etc/lsb-release ] && . /etc/lsb-release
+
+if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
+       # Fall back to using the very slow lsb_release utility
+       DISTRIB_DESCRIPTION=$(lsb_release -s -d)
+fi
+
+printf "Welcome to %s (%s %s %s)\n" "$DISTRIB_DESCRIPTION" "$(uname -o)" "$(uname -r)" "$(uname -m)"
diff --git a/etc/update-motd.d/10-help-text b/etc/update-motd.d/10-help-text
new file mode 100644 (file)
index 0000000..47f02b7
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+#    10-help-text - print the help text associated with the distro
+#    Copyright (C) 2009-2010 Canonical Ltd.
+#
+#    Authors: Dustin Kirkland <kirkland@canonical.com>,
+#             Brian Murray <brian@canonical.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 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License along
+#    with this program; if not, write to the Free Software Foundation, Inc.,
+#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+printf "\n"
+printf " * Documentation:  https://help.ubuntu.com\n"
+printf " * Management:     https://landscape.canonical.com\n"
+printf " * Support:        https://ubuntu.com/advantage\n"
diff --git a/etc/update-motd.d/50-landscape-sysinfo b/etc/update-motd.d/50-landscape-sysinfo
new file mode 120000 (symlink)
index 0000000..566a630
--- /dev/null
@@ -0,0 +1 @@
+/usr/share/landscape/landscape-sysinfo.wrapper
\ No newline at end of file
diff --git a/etc/update-motd.d/50-motd-news b/etc/update-motd.d/50-motd-news
new file mode 100644 (file)
index 0000000..4b0b56a
--- /dev/null
@@ -0,0 +1,146 @@
+#!/bin/sh
+#
+#    50-motd-news - print the live news from the Ubuntu wire
+#    Copyright (C) 2016-2020 Canonical Ltd.
+#    Copyright (C) 2016-2017 Dustin Kirkland
+#
+#    Authors: Dustin Kirkland <kirkland@canonical.com>
+#             Steve Langasek <steve.langasek@canonical.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 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License along
+#    with this program; if not, write to the Free Software Foundation, Inc.,
+#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+##############################################################################
+# This program could be rewritten in C or Golang for faster performance.
+# Or it could be rewritten in Python or another higher level language
+# for more modularity.
+# However, I've insisted on shell here for transparency!
+#                                                                     - Dustin
+##############################################################################
+
+# Source the local configuration
+[ -r /etc/default/motd-news ] && . /etc/default/motd-news
+
+# Exit immediately, unless we're enabled
+# This makes this script very easy to disable in /etc/default/motd-news configuration
+[ "$ENABLED" = "1" ] || exit 0
+
+# Ensure sane defaults
+[ -n "$URLS" ] || URLS="https://motd.ubuntu.com"
+[ -n "$WAIT" ] || WAIT=5
+[ -n "$CACHE" ] || CACHE="/var/cache/motd-news"
+[ "$1" = "--force" ] && FORCED=1
+
+# Ensure we print safely, maximum of the first 10 lines,
+# maximum of the first 80 chars per line, no control chars
+safe_print() {
+       cat "$1" | head -n 10 | tr -d '\000-\011\013\014\016-\037' | cut -c -80
+}
+
+
+# If we're not forcing an update, and we have a cached motd-news file,
+# then just print it and exit as quickly as possible, for login performance.
+# Note that systemd should keep this cache file up to date, asynchronously
+if [ "$FORCED" != "1" ]; then
+       if [ -r $CACHE ]; then
+               echo
+               safe_print $CACHE
+       elif [ "$(id -u)" -eq 0 ]; then
+               : > $CACHE
+       fi
+       exit 0
+fi
+
+# If we've made it here, we've been given the --force argument,
+# probably from the systemd motd-news.service.  Let's update...
+
+# Abort early if wget is missing
+[ -x /usr/bin/wget ] || exit 0
+
+# Generate our temp files, clean up when done
+NEWS=$(mktemp) || exit 1
+ERR=$(mktemp) || exit 1
+CLOUD=$(mktemp) || exit 1
+trap "rm -f $NEWS $ERR $CLOUD" HUP INT QUIT ILL TRAP KILL BUS TERM
+
+# Construct a user agent, similar to Firefox/Chrome/Safari/IE to
+# ensure a proper, tailored, accurate message of the day
+
+# wget browser version, for debug purposes
+wget_ver="$(dpkg -l wget | awk '$1 == "ii" { print($3); exit(0); }')"
+
+# Distribution version, for messages releated to this Ubuntu release
+. /etc/lsb-release
+lsb=$(echo "$DISTRIB_DESCRIPTION" | sed -e "s/ /\//g")
+codename="$DISTRIB_CODENAME"
+
+# Kernel version and CPU type, for messages related to a particular revision or hardware
+platform="$(uname -o)/$(uname -r)/$(uname -m)"
+arch="$(uname -m)"
+cpu="$(grep -m1 "^model name" /proc/cpuinfo | sed -e "s/.*: //" -e "s:\s\+:/:g")"
+cloud_id="unknown"
+if [ -x /usr/bin/cloud-id ]; then
+    /usr/bin/cloud-id > "$CLOUD" 2>/dev/null
+    if [ "$?" -eq "0" ]; then
+        # sanitize it a bit, just in case
+        cloud_id=$(cut -c -40 "${CLOUD}" | tr -c -d '[:alnum:]')
+        if [ -z "${cloud_id}" ]; then
+            cloud_id="unknown"
+        fi
+    fi
+fi
+
+# Piece together the user agent
+USER_AGENT="wget/$wget_ver $lsb $platform $cpu cloud_id/$cloud_id"
+
+# Loop over any configured URLs
+for u in $URLS; do
+       # Ensure https:// protocol, for security reasons
+       case $u in
+               https://*)
+                       true
+               ;;
+               https://motd.ubuntu.com)
+                       u="$u/$codename/$arch"
+               ;;
+               *)
+                       continue
+               ;;
+       esac
+       # If we're forced, set the wait to much higher (1 minute)
+       [ "$FORCED" = "1" ] && WAIT=60
+       # Fetch and print the news motd
+       result=0
+       not_found_is_ok=0
+       wget --timeout "$WAIT" -U "$USER_AGENT" -O- --content-on-error "$u" >"$NEWS" 2>"$ERR" || result=$?
+       # from wget's manpage: 8   Server issued an error response.
+       if [ $result -eq 8 ]; then
+               if grep -q "ERROR 404" "$ERR"; then
+                       # The server's 404 document is the generic, non cloud-specific, motd-news
+                       # content present in the index.txt file
+                       not_found_is_ok=1
+               fi
+       fi
+       if [ $result -eq 0 ] || [ $not_found_is_ok -eq 1 ]; then
+               echo
+               # At most, 10 lines of text, remove control characters, print at most 80 characters per line
+               safe_print "$NEWS"
+               # Try to update the cache
+               safe_print "$NEWS" 2>/dev/null >$CACHE || true
+       else
+               : > "$CACHE"
+       fi
+done
+rm -f "$NEWS" "$ERR" "$CLOUD"
+exit 0
diff --git a/etc/update-motd.d/85-fwupd b/etc/update-motd.d/85-fwupd
new file mode 100644 (file)
index 0000000..261f9a3
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+if [ -f /run/motd.d/85-fwupd ]; then
+        cat /run/motd.d/85-fwupd
+fi
diff --git a/etc/update-motd.d/88-esm-announce b/etc/update-motd.d/88-esm-announce
new file mode 100644 (file)
index 0000000..44b521b
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+stamp="/var/lib/ubuntu-advantage/messages/motd-esm-announce"
+
+[ ! -r "$stamp" ] || cat "$stamp"
diff --git a/etc/update-motd.d/90-updates-available b/etc/update-motd.d/90-updates-available
new file mode 100644 (file)
index 0000000..9377fdc
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+stamp="/var/lib/update-notifier/updates-available"
+
+[ ! -r "$stamp" ] || cat "$stamp"
+
+find $stamp -newermt 'now-7 days' 2> /dev/null | grep -q -m 1 '.' || /usr/share/update-notifier/notify-updates-outdated
diff --git a/etc/update-motd.d/91-contract-ua-esm-status b/etc/update-motd.d/91-contract-ua-esm-status
new file mode 100644 (file)
index 0000000..ceb2272
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+stamp="/var/lib/ubuntu-advantage/messages/motd-esm-service-status"
+
+[ ! -r "$stamp" ] || cat "$stamp"
diff --git a/etc/update-motd.d/91-release-upgrade b/etc/update-motd.d/91-release-upgrade
new file mode 100644 (file)
index 0000000..dc2ae10
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# if the current release is under development there won't be a new one
+if [ "$(lsb_release -sd | cut -d' ' -f4)" = "(development" ]; then
+    exit 0
+fi
+
+# if it is non-root user, skip
+if [ $(id -u) -ne 0 ]; then
+    exit 0
+fi
+
+if [ -x /usr/lib/ubuntu-release-upgrader/release-upgrade-motd ]; then
+    exec /usr/lib/ubuntu-release-upgrader/release-upgrade-motd
+fi
diff --git a/etc/update-motd.d/92-unattended-upgrades b/etc/update-motd.d/92-unattended-upgrades
new file mode 100644 (file)
index 0000000..57799a4
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+if [ -x /usr/share/unattended-upgrades/update-motd-unattended-upgrades ]; then
+    exec /usr/share/unattended-upgrades/update-motd-unattended-upgrades
+fi
diff --git a/etc/update-motd.d/95-hwe-eol b/etc/update-motd.d/95-hwe-eol
new file mode 100644 (file)
index 0000000..3b4bd13
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+if [ -x /usr/lib/update-notifier/update-motd-hwe-eol ]; then
+    exec /usr/lib/update-notifier/update-motd-hwe-eol
+fi
diff --git a/etc/update-motd.d/97-overlayroot b/etc/update-motd.d/97-overlayroot
new file mode 100644 (file)
index 0000000..f201404
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+(egrep "overlayroot|/media/root-ro|/media/root-rw" /proc/mounts 2>/dev/null | sort -r) || true
+echo
diff --git a/etc/update-motd.d/98-fsck-at-reboot b/etc/update-motd.d/98-fsck-at-reboot
new file mode 100644 (file)
index 0000000..e5ec39e
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+if [ -x /usr/lib/update-notifier/update-motd-fsck-at-reboot ]; then
+    exec /usr/lib/update-notifier/update-motd-fsck-at-reboot
+fi
\ No newline at end of file
diff --git a/etc/update-motd.d/98-reboot-required b/etc/update-motd.d/98-reboot-required
new file mode 100644 (file)
index 0000000..e86de0b
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+if [ -x /usr/lib/update-notifier/update-motd-reboot-required ]; then
+    exec /usr/lib/update-notifier/update-motd-reboot-required
+fi
\ No newline at end of file
diff --git a/etc/usb_modeswitch.conf b/etc/usb_modeswitch.conf
new file mode 100644 (file)
index 0000000..e1643b6
--- /dev/null
@@ -0,0 +1,40 @@
+# Configuration for the usb_modeswitch package, a mode switching tool for
+# USB devices providing multiple states or modes
+#
+# Evaluated by the wrapper script /usr/sbin/usb_modeswitch_dispatcher
+#
+# To enable an option, set it to "1", "yes" or "true" (case doesn't matter)
+# Everything else counts as "disable"
+
+
+# Disable automatic mode switching globally (e.g. to access the original
+# install storage)
+
+DisableSwitching=0
+
+# Disable check for MBIM module presence and configuration globally (to aid
+# special embedded environments). Available as per-device parameter
+# 'NoMBIMCheck'
+
+DisableMBIMGlobal=0
+
+# Enable logging (results in a extensive report file in /var/log, named
+# "usb_modeswitch_<interface-name>" and probably others
+
+EnableLogging=0
+
+# Optional increase of "delay_use" for the usb-storage driver; there are hints
+# that a recent kernel default change to 1 sec. may lead to problems, particu-
+# larly with USB 3.0 ports. Set this to at least 3 (seconds) in that case.
+# Does nothing if the current system value is same or higher
+
+#SetStorageDelay=4
+
+# If the configuration for your Huawei modem uses the standard switching method,
+# you can globally set an alternative method here which provides a different mode:
+# either plain serial PPP (for older modems) or NCM which integrates nicely
+# with recent Linux distributions, possibly avoiding configuration through a
+# modem built-in web page. All other modems are not affected.
+# Available as per-device parameter 'AltHuaweiMode'
+
+HuaweiAltModeGlobal=0
diff --git a/etc/vim/vimrc b/etc/vim/vimrc
new file mode 100644 (file)
index 0000000..1fcd4d7
--- /dev/null
@@ -0,0 +1,55 @@
+" All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by
+" the call to :runtime you can find below.  If you wish to change any of those
+" settings, you should do it in this file (/etc/vim/vimrc), since debian.vim
+" will be overwritten everytime an upgrade of the vim packages is performed.
+" It is recommended to make changes after sourcing debian.vim since it alters
+" the value of the 'compatible' option.
+
+runtime! debian.vim
+
+" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc.
+" This happens after /etc/vim/vimrc(.local) are loaded, so it will override
+" any settings in these files.
+" If you don't want that to happen, uncomment the below line to prevent
+" defaults.vim from being loaded.
+" let g:skip_defaults_vim = 1
+
+" Uncomment the next line to make Vim more Vi-compatible
+" NOTE: debian.vim sets 'nocompatible'.  Setting 'compatible' changes numerous
+" options, so any other options should be set AFTER setting 'compatible'.
+"set compatible
+
+" Vim5 and later versions support syntax highlighting. Uncommenting the next
+" line enables syntax highlighting by default.
+if has("syntax")
+  syntax on
+endif
+
+" If using a dark background within the editing area and syntax highlighting
+" turn on this option as well
+"set background=dark
+
+" Uncomment the following to have Vim jump to the last position when
+" reopening a file
+"au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
+
+" Uncomment the following to have Vim load indentation rules and plugins
+" according to the detected filetype.
+"filetype plugin indent on
+
+" The following are commented out as they cause vim to behave a lot
+" differently from regular Vi. They are highly recommended though.
+"set showcmd           " Show (partial) command in status line.
+"set showmatch         " Show matching brackets.
+"set ignorecase                " Do case insensitive matching
+"set smartcase         " Do smart case matching
+"set incsearch         " Incremental search
+"set autowrite         " Automatically save before commands like :next and :make
+"set hidden            " Hide buffers when they are abandoned
+"set mouse=a           " Enable mouse usage (all modes)
+
+" Source a global configuration file if available
+if filereadable("/etc/vim/vimrc.local")
+  source /etc/vim/vimrc.local
+endif
+
diff --git a/etc/vim/vimrc.tiny b/etc/vim/vimrc.tiny
new file mode 100644 (file)
index 0000000..9bfec9b
--- /dev/null
@@ -0,0 +1,13 @@
+" Vim configuration file, in effect when invoked as "vi". The aim of this
+" configuration file is to provide a Vim environment as compatible with the
+" original vi as possible. Note that ~/.vimrc configuration files as other
+" configuration files in the runtimepath are still sourced.
+" When Vim is invoked differently ("vim", "view", "evim", ...) this file is
+" _not_ sourced; /etc/vim/vimrc and/or /etc/vim/gvimrc are.
+
+" Debian system-wide default configuration Vim
+set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim81,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,~/.vim/after
+
+set compatible
+
+" vim: set ft=vim:
diff --git a/etc/vmware-tools/poweroff-vm-default b/etc/vmware-tools/poweroff-vm-default
new file mode 100755 (executable)
index 0000000..39df657
--- /dev/null
@@ -0,0 +1,134 @@
+#!/bin/sh
+##########################################################
+# Copyright (C) 2010-2016 VMware, Inc. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation version 2.1 and no 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 Lesser GNU General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
+#
+##########################################################
+
+##########################################################################
+# DO NOT modify this file directly as it will be overwritten the next
+# time the VMware Tools are installed.
+##########################################################################
+
+#
+# statechange.sh
+#
+# This script is a refactored version of the legacy power scripts (e.g.,
+# poweron-vm-default).  It expects to be installed in their places --
+# in other words, `basename "$0"` might be poweron-vm-default.
+#
+# Handy reference/shorthand used in this doc/scripts:
+#    TOOLS_CONFDIR ::= Depends on platform and installation settings.  Likely
+#                      "/etc/vmware-tools" or
+#                      "/Library/Application Support/VMware Tools"
+#    powerOp       ::= One of "poweron-vm", "poweroff-vm", "suspend-vm", and
+#                      "resume-vm".
+#    vmwScriptDir  ::= $TOOLS_CONFDIR/scripts/vmware
+#    userScriptDir ::= $TOOLS_CONFDIR/scripts/${powerOp}-default.d
+#
+# End users may install scripts of their own under $userScriptDir.  They
+# are executed in alphabetical order with "$powerOp" as the only argument.
+#
+# NB:  This directory layout remains to preserve backwards compatibility. End
+# users are free to write a single script which uses its only parameter
+# (${powerOp}) as a discriminator, and then install symlinks to it in each
+# of the ${powerOp}-default.d directories.
+#
+# On power-on and resume, VMware's scripts execute before the end user's.  On
+# suspend and power-off, the end user's execute before VMware's.  (This way,
+# VMware stops services only after the user's scripts have finished their
+# work, and conversely restores the same services before the user's scripts
+# attempt to use them.)
+#
+# Should any script exit non-zero, only its value will be saved to exitCode.
+# (Any further non-zero exits will have no effect on exitCode.)  This script
+# exits with $exitCode.
+#
+# XXX Consider using the available/enabled pattern for VMware's scripts.
+#
+# XXX This should be staged as a single executable whereby the desired
+# power operation is passed in as a parameter.  (I.e., one would run
+# "/path/to/statechange.sh suspend-vm" rather than having to install
+# statechange.sh as suspend-vm-default.)
+#
+
+echo `date` ": Executing '$0'"
+
+# See above.
+TOOLS_CONFDIR=`dirname "$0"`
+export TOOLS_CONFDIR
+
+# Pull in subroutines like Panic.
+. "$TOOLS_CONFDIR"/statechange.subr
+
+
+#
+# RunScripts --
+#
+#    Executes scripts installed under $scriptDir.
+#
+# Side effects:
+#    exitCode may be incremented.
+#
+
+RunScripts() {
+   scriptDir="$1"
+
+   if [ -d "$scriptDir" ]; then
+      for scriptFile in "$scriptDir"/*; do
+         if [ -x "$scriptFile" ]; then
+            "$scriptFile" $powerOp
+            exitCode=`expr $exitCode \| $?`
+         fi
+      done
+   fi
+}
+
+
+#
+# main --
+#
+#    Entry point.  See comments at top of file for details.
+#
+# Results:
+#    Exits with $exitCode.
+#
+
+main() {
+   # This is sanity checked in the case/esac bit below.
+   powerOp=`basename "$0" | sed 's,-default,,'`
+   exitCode=0
+
+   vmwScriptDir="$TOOLS_CONFDIR/scripts/vmware"
+   userScriptDir="$TOOLS_CONFDIR/scripts/${powerOp}-default.d"
+
+   case "$powerOp" in
+      poweron-vm|resume-vm)
+         RunScripts "$vmwScriptDir"
+         RunScripts "$userScriptDir"
+         ;;
+      poweroff-vm|suspend-vm)
+         RunScripts "$userScriptDir"
+         RunScripts "$vmwScriptDir"
+         ;;
+      *)
+         Panic "Invalid argument: $powerOp"
+         ;;
+   esac
+
+   return $exitCode
+}
+
+main
diff --git a/etc/vmware-tools/poweron-vm-default b/etc/vmware-tools/poweron-vm-default
new file mode 100755 (executable)
index 0000000..39df657
--- /dev/null
@@ -0,0 +1,134 @@
+#!/bin/sh
+##########################################################
+# Copyright (C) 2010-2016 VMware, Inc. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation version 2.1 and no 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 Lesser GNU General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
+#
+##########################################################
+
+##########################################################################
+# DO NOT modify this file directly as it will be overwritten the next
+# time the VMware Tools are installed.
+##########################################################################
+
+#
+# statechange.sh
+#
+# This script is a refactored version of the legacy power scripts (e.g.,
+# poweron-vm-default).  It expects to be installed in their places --
+# in other words, `basename "$0"` might be poweron-vm-default.
+#
+# Handy reference/shorthand used in this doc/scripts:
+#    TOOLS_CONFDIR ::= Depends on platform and installation settings.  Likely
+#                      "/etc/vmware-tools" or
+#                      "/Library/Application Support/VMware Tools"
+#    powerOp       ::= One of "poweron-vm", "poweroff-vm", "suspend-vm", and
+#                      "resume-vm".
+#    vmwScriptDir  ::= $TOOLS_CONFDIR/scripts/vmware
+#    userScriptDir ::= $TOOLS_CONFDIR/scripts/${powerOp}-default.d
+#
+# End users may install scripts of their own under $userScriptDir.  They
+# are executed in alphabetical order with "$powerOp" as the only argument.
+#
+# NB:  This directory layout remains to preserve backwards compatibility. End
+# users are free to write a single script which uses its only parameter
+# (${powerOp}) as a discriminator, and then install symlinks to it in each
+# of the ${powerOp}-default.d directories.
+#
+# On power-on and resume, VMware's scripts execute before the end user's.  On
+# suspend and power-off, the end user's execute before VMware's.  (This way,
+# VMware stops services only after the user's scripts have finished their
+# work, and conversely restores the same services before the user's scripts
+# attempt to use them.)
+#
+# Should any script exit non-zero, only its value will be saved to exitCode.
+# (Any further non-zero exits will have no effect on exitCode.)  This script
+# exits with $exitCode.
+#
+# XXX Consider using the available/enabled pattern for VMware's scripts.
+#
+# XXX This should be staged as a single executable whereby the desired
+# power operation is passed in as a parameter.  (I.e., one would run
+# "/path/to/statechange.sh suspend-vm" rather than having to install
+# statechange.sh as suspend-vm-default.)
+#
+
+echo `date` ": Executing '$0'"
+
+# See above.
+TOOLS_CONFDIR=`dirname "$0"`
+export TOOLS_CONFDIR
+
+# Pull in subroutines like Panic.
+. "$TOOLS_CONFDIR"/statechange.subr
+
+
+#
+# RunScripts --
+#
+#    Executes scripts installed under $scriptDir.
+#
+# Side effects:
+#    exitCode may be incremented.
+#
+
+RunScripts() {
+   scriptDir="$1"
+
+   if [ -d "$scriptDir" ]; then
+      for scriptFile in "$scriptDir"/*; do
+         if [ -x "$scriptFile" ]; then
+            "$scriptFile" $powerOp
+            exitCode=`expr $exitCode \| $?`
+         fi
+      done
+   fi
+}
+
+
+#
+# main --
+#
+#    Entry point.  See comments at top of file for details.
+#
+# Results:
+#    Exits with $exitCode.
+#
+
+main() {
+   # This is sanity checked in the case/esac bit below.
+   powerOp=`basename "$0" | sed 's,-default,,'`
+   exitCode=0
+
+   vmwScriptDir="$TOOLS_CONFDIR/scripts/vmware"
+   userScriptDir="$TOOLS_CONFDIR/scripts/${powerOp}-default.d"
+
+   case "$powerOp" in
+      poweron-vm|resume-vm)
+         RunScripts "$vmwScriptDir"
+         RunScripts "$userScriptDir"
+         ;;
+      poweroff-vm|suspend-vm)
+         RunScripts "$userScriptDir"
+         RunScripts "$vmwScriptDir"
+         ;;
+      *)
+         Panic "Invalid argument: $powerOp"
+         ;;
+   esac
+
+   return $exitCode
+}
+
+main
diff --git a/etc/vmware-tools/resume-vm-default b/etc/vmware-tools/resume-vm-default
new file mode 100755 (executable)
index 0000000..39df657
--- /dev/null
@@ -0,0 +1,134 @@
+#!/bin/sh
+##########################################################
+# Copyright (C) 2010-2016 VMware, Inc. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation version 2.1 and no 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 Lesser GNU General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
+#
+##########################################################
+
+##########################################################################
+# DO NOT modify this file directly as it will be overwritten the next
+# time the VMware Tools are installed.
+##########################################################################
+
+#
+# statechange.sh
+#
+# This script is a refactored version of the legacy power scripts (e.g.,
+# poweron-vm-default).  It expects to be installed in their places --
+# in other words, `basename "$0"` might be poweron-vm-default.
+#
+# Handy reference/shorthand used in this doc/scripts:
+#    TOOLS_CONFDIR ::= Depends on platform and installation settings.  Likely
+#                      "/etc/vmware-tools" or
+#                      "/Library/Application Support/VMware Tools"
+#    powerOp       ::= One of "poweron-vm", "poweroff-vm", "suspend-vm", and
+#                      "resume-vm".
+#    vmwScriptDir  ::= $TOOLS_CONFDIR/scripts/vmware
+#    userScriptDir ::= $TOOLS_CONFDIR/scripts/${powerOp}-default.d
+#
+# End users may install scripts of their own under $userScriptDir.  They
+# are executed in alphabetical order with "$powerOp" as the only argument.
+#
+# NB:  This directory layout remains to preserve backwards compatibility. End
+# users are free to write a single script which uses its only parameter
+# (${powerOp}) as a discriminator, and then install symlinks to it in each
+# of the ${powerOp}-default.d directories.
+#
+# On power-on and resume, VMware's scripts execute before the end user's.  On
+# suspend and power-off, the end user's execute before VMware's.  (This way,
+# VMware stops services only after the user's scripts have finished their
+# work, and conversely restores the same services before the user's scripts
+# attempt to use them.)
+#
+# Should any script exit non-zero, only its value will be saved to exitCode.
+# (Any further non-zero exits will have no effect on exitCode.)  This script
+# exits with $exitCode.
+#
+# XXX Consider using the available/enabled pattern for VMware's scripts.
+#
+# XXX This should be staged as a single executable whereby the desired
+# power operation is passed in as a parameter.  (I.e., one would run
+# "/path/to/statechange.sh suspend-vm" rather than having to install
+# statechange.sh as suspend-vm-default.)
+#
+
+echo `date` ": Executing '$0'"
+
+# See above.
+TOOLS_CONFDIR=`dirname "$0"`
+export TOOLS_CONFDIR
+
+# Pull in subroutines like Panic.
+. "$TOOLS_CONFDIR"/statechange.subr
+
+
+#
+# RunScripts --
+#
+#    Executes scripts installed under $scriptDir.
+#
+# Side effects:
+#    exitCode may be incremented.
+#
+
+RunScripts() {
+   scriptDir="$1"
+
+   if [ -d "$scriptDir" ]; then
+      for scriptFile in "$scriptDir"/*; do
+         if [ -x "$scriptFile" ]; then
+            "$scriptFile" $powerOp
+            exitCode=`expr $exitCode \| $?`
+         fi
+      done
+   fi
+}
+
+
+#
+# main --
+#
+#    Entry point.  See comments at top of file for details.
+#
+# Results:
+#    Exits with $exitCode.
+#
+
+main() {
+   # This is sanity checked in the case/esac bit below.
+   powerOp=`basename "$0" | sed 's,-default,,'`
+   exitCode=0
+
+   vmwScriptDir="$TOOLS_CONFDIR/scripts/vmware"
+   userScriptDir="$TOOLS_CONFDIR/scripts/${powerOp}-default.d"
+
+   case "$powerOp" in
+      poweron-vm|resume-vm)
+         RunScripts "$vmwScriptDir"
+         RunScripts "$userScriptDir"
+         ;;
+      poweroff-vm|suspend-vm)
+         RunScripts "$userScriptDir"
+         RunScripts "$vmwScriptDir"
+         ;;
+      *)
+         Panic "Invalid argument: $powerOp"
+         ;;
+   esac
+
+   return $exitCode
+}
+
+main
diff --git a/etc/vmware-tools/scripts/vmware/network b/etc/vmware-tools/scripts/vmware/network
new file mode 100755 (executable)
index 0000000..0c2a93e
--- /dev/null
@@ -0,0 +1,623 @@
+#!/bin/sh -x
+##########################################################
+# Copyright (C) 2001-2018 VMware, Inc. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation version 2.1 and no 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 Lesser GNU General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
+#
+##########################################################
+
+
+#
+# network (Linux)
+#
+# Using a combination of a system networking script, ifconfig, ifup, ifdown
+# and the ip command, attempt to release and renew DHCP leases upon receipt
+# of suspend and resume events, respectively.
+#
+
+logbase=/var/log/vmware-network
+logfile=$logbase.log
+
+#
+# Rotate any logs
+#
+rotate_logfile() {
+    max=9
+    max=`expr $max - 1`
+    for s in `seq $max -1 1`; do
+        d=`expr $s + 1`
+        mv -f $logbase.$s.log $logbase.$d.log
+    done
+    mv -f $logbase.log $logbase.1.log
+}
+
+rotate_logfile
+
+# redirect stdio
+exec > $logfile 2>&1
+chmod 0600 $logfile
+
+
+echo `date` ": Executing '$0 $*'"
+echo
+
+. `dirname "$0"`/../../statechange.subr
+
+
+#
+# find_networking_script --
+#
+#    Searches common Linux distro init/rc paths to find a singular network
+#    services script.
+#
+# Result:
+#    Returns a valid networking script path on success or "error" on failure.
+#
+# Side effects:
+#    None.
+#
+
+find_networking_script() {
+   local script="error"
+   for dir in "/etc/init.d" "/sbin/init.d" "/etc" "/etc/rc.d" ; do
+      if [ -d "$dir/rc0.d" ] &&
+         [ -d "$dir/rc1.d" ] &&
+         [ -d "$dir/rc2.d" ] &&
+         [ -d "$dir/rc3.d" ] &&
+         [ -d "$dir/rc4.d" ] &&
+         [ -d "$dir/rc5.d" ] &&
+         [ -d "$dir/rc6.d" ]; then
+
+         # Now find the appropriate networking script.
+         if [ -d "$dir/init.d" ]; then
+            if [ -x "$dir/init.d/network" ]; then
+               script="$dir/init.d/network"
+            elif [ -x "$dir/init.d/networking" ]; then
+               script="$dir/init.d/networking"
+            fi
+         else
+            if [ -x "$dir/network" ]; then
+               script="$dir/network"
+            elif [ -x "$dir/networking" ]; then
+               script="$dir/networking"
+            fi
+         fi
+      fi
+   done
+
+   echo "$script"
+}
+
+
+#
+# exec_networking_script --
+#
+#    Execute the networking script to bring network interfaces up or down
+#    based on the given input action argument.
+#
+
+exec_networking_script()
+{
+   local script=$1
+   local action=$2
+
+   # Using SysV "service" if it exists, otherwise fall back to run the
+   # script directly
+   service=`which service 2>/dev/null`
+   if [ $? = 0 -a -n "$service" ]; then
+      serviceName=`basename "$script"`
+      "$service" "$serviceName" "$action"
+   else
+      "$script" "$action"
+   fi
+
+   return $?
+}
+
+
+#
+# exec_systemctl_service --
+#
+#    Handle linux distributions that use systemd to replace the legacy
+#    system V startup scripts. The previous network script searching
+#    approach is no longer viable in these systems. Invoke the systemctl
+#    command to control the network service instead.
+#
+
+exec_systemctl_service()
+{
+   local rc=1
+   local action=$1
+   local ctlcmd=$(which systemctl 2>/dev/null)
+   local service
+
+   [ -z "$ctlcmd" ] && return $rc
+
+   for svc in systemd-networkd network; do
+      if ! $ctlcmd status $svc | grep -iq 'not-found'; then
+         service=$svc && break
+      fi
+   done
+
+   [ -z "$service" ] && return $rc
+
+   $ctlcmd $action $service; rc=$?
+
+   # When use the systemd-networkd service to shut down interfaces, interface
+   # address and state remain unchanged. Need to use ip command to change its
+   # address and state.
+   if [ $rc = 0 -a $service = 'systemd-networkd' -a $action = 'stop' ]; then
+      config_network_intfs $action; rc=$?
+   fi
+
+   return $rc
+}
+
+
+#
+# del_intf_ip --
+#
+#    Use the ip command to remove all the addresses of an interface.
+#
+
+del_intf_ip()
+{
+   local nic=$1
+
+   $ip_cmd addr flush dev $nic
+   return $?
+}
+
+
+#
+# ip_intf_ops --
+#
+#    Use the ip command to change the state of an interface to up or down.
+#
+
+ip_intf_ops()
+{
+   local rc=1
+   local nic=$1
+   local ops=$2
+
+   [ -z "$ip_cmd" ] && return $rc
+
+   $ip_cmd link set $nic $ops; rc=$?
+
+   # Remove interface addresses when taking an interface down.
+   if [ $rc = 0 -a $ops = down ]; then
+      del_intf_ip $nic; rc=$?
+   fi
+
+   return $rc
+}
+
+
+#
+# intf_ops --
+#
+#    Execute the specified command (ifup or ifdown) if available, otherwise use
+#    the ip command as fallback. If ifup or ifdown fails, run the ip command to
+#    retry the intended operation.
+#
+
+intf_ops()
+{
+   local rc=0
+   local cmd=$1
+   local ops=$2
+   local nic=$3
+   local tmp
+
+   if [ ! -z "$cmd" ]; then
+      tmp=$($cmd $nic 2>&1); rc=$?
+
+      # Some systems still return a successful status even the command fails
+      # because the interface is not configured in the configuration file. So
+      # have to examine the command output to determine the actual status.
+      if [ $rc = 0 ]; then
+         echo $tmp | egrep -iq 'not configured|ignoring unknown' && rc=1
+      fi
+   fi
+
+   # If ifup/ifdown fails, try the ip fallback.
+   if [ -z "$cmd" -o $rc != 0 ]; then
+      ip_intf_ops $nic $ops; rc=$?
+   fi
+
+   return $rc
+}
+
+
+#
+# exec_intf_ops --
+#
+#    Perform an operation to bring an individual interface up or down.
+#
+
+exec_intf_ops()
+{
+   local rc=0
+   local action=$1
+   local nic=$2
+
+   case $action in
+      start)
+         intf_ops "$ifup_cmd" up $nic; rc=$?
+         ;;
+      stop)
+         intf_ops "$ifdown_cmd" down $nic; rc=$?
+         ;;
+      *)
+         Panic "Illegal interface action: $action"
+         ;;
+   esac
+
+   return $rc
+}
+
+
+#
+# config_network_intfs --
+#
+#    For Linux systems not supporting networking scripts to bring interfaces
+#    up or down, provide a way to change the interface state individually.
+#
+
+config_network_intfs()
+{
+   local rc=0
+   local action=$1
+
+   if [ -f "$activeList" ]; then
+
+      while read nic; do
+         exec_intf_ops $action $nic
+         rc=$(expr $rc \| $?)
+      done < $activeList
+   fi
+
+   return $rc
+}
+
+
+#
+# run_network_script --
+#
+#    Finds out how to run the system's script used to control networking, and
+#    runs it with the given argument (which should be one of the usual SysV
+#    init script arguments). If it does not work, tries the other alternatives.
+#    So far, our alternatives are (a) systemctl (b) network script (c) perform
+#    an individual interface state change.
+#
+
+run_network_script()
+{
+   local action=$1
+   local rc=0
+   local script
+
+   while true; do
+
+      exec_systemctl_service $action
+      [ $? != 0 ] || break
+
+      script=`find_networking_script`
+
+      if [ $script != "error" ]; then
+         exec_networking_script $script $action
+         [ $? != 0 ] || break
+      fi
+
+      # Since all the other alternatives fail, need to manually change
+      # individual interface state.
+      config_network_intfs $action; rc=$?
+      break
+   done
+
+   return $rc
+}
+
+
+#
+# save_active_NIC_list --
+#
+#    Records a list of every active NIC to /var/run/vmware-active-nics.
+#
+#    XXX What's the story on aliases?  Should they still be included, or will
+#    they be recreated automatically upon resume?
+#
+# Results:
+#    $activeList has, one per line, a list of all active NICs.
+#
+# Side effects:
+#    None.
+#
+
+save_active_NIC_list()
+{
+   local intf_out
+
+   >$activeList
+
+   # Find out all the non-loopback up interfaces. Use ip if available
+   # otherwise fall back to the ifconfig command.
+   # ifconfig is buggy on some platforms and truncates long
+   # network names
+   if [ -n "$ip_cmd" ]; then
+      for nic in $($ip_cmd link show up | egrep '\bUP\b' | awk -F: '{print $2}'); do
+         $ip_cmd link show ${nic%@*} | grep -iq 'link/ether' && echo ${nic%@*} >> $activeList
+      done
+   else
+      for nic in $($ifconfig_cmd | sed -n 's/^\([^: \t]*\).*$/\1/p'); do
+         intf_out=$($ifconfig_cmd $nic)
+         echo $intf_out | grep -iq loopback && continue
+         echo $intf_out | egrep -q '\bUP\b' && echo $nic >> $activeList
+      done
+   fi
+}
+
+
+#
+# rescue_NIC --
+#
+#    For each NIC recorded in $activeList that is not currently "up", run
+#    "ifup $nic" or "ip link set $nic up" to bring the interface up.
+#
+# Results:
+#    All downed NICs should be active.
+#
+
+rescue_NIC()
+{
+   local rc=0
+   local intf_out
+
+   if [ -f "$activeList" ]; then
+      while read nic; do
+         if [ -n "$ip_cmd" ]; then
+            intf_out=$($ip_cmd link show $nic up)
+         else
+            intf_out=$($ifconfig_cmd $nic)
+         fi
+
+         if echo $intf_out | grep -q 'UP'; then
+            echo `date` "[rescue_nic] $nic is already active."
+         else
+            echo `date` "[rescue_nic] activating $nic ..."
+
+            # Our best effort to activate interfaces, use ifup if available
+            # otherwise use the ip command as fallback.
+            intf_ops "$ifup_cmd" up $nic
+            rc=$(expr $rc \| $?)
+         fi
+      done < $activeList
+
+      rm -f $activeList
+   fi
+
+   return $rc
+}
+
+
+#
+# TranquilizeNetworkManager --
+#
+#    Put the NetworkManager daemon to sleep (maybe).
+#
+#    See http://projects.gnome.org/NetworkManager/developers/spec.html .
+#
+# Results:
+#    Sleep(true) request is sent to the NetworkManager D-Bus interface.
+#
+# Side effects:
+#    None.
+#
+
+TranquilizeNetworkManager()
+{
+   # `which' may be a bit noisy, so we'll shush it.
+   dbusSend=`which dbus-send 2>/dev/null`
+   rc=$?
+   if [ $rc -ne 0 ]; then
+      return $rc
+   fi
+
+   # Check NetworkManager state before disabling it.
+   nm_state=`$dbusSend --system --print-reply          \
+             --dest=org.freedesktop.NetworkManager     \
+             /org/freedesktop/NetworkManager           \
+             org.freedesktop.DBus.Properties.Get       \
+             string:'org.freedesktop.NetworkManager'   \
+             string:'State'                            \
+             | awk '/variant/ {print $3;}'`
+   if [ -z "$nm_state" ]; then
+      return 1
+   fi
+   # NetworkManager API     0.7/0.8   0.9
+   # NM_STATE_ASLEEP           1      10
+   # NM_STATE_DISCONNECTED     4      20
+   case $nm_state in
+      1|4|10|20)
+         # Nothing needs to be done.
+         return 0
+         ;;
+   esac
+
+   # NetworkManager 0.8.0 and above
+   $dbusSend --system --print-reply          \
+      --dest=org.freedesktop.NetworkManager  \
+      /org/freedesktop/NetworkManager        \
+      org.freedesktop.NetworkManager.Enable boolean:false
+   rc=$?
+   if [ $rc -eq 0 ]; then
+      return $rc
+   fi
+   # NetworkManager 0.7.0
+   $dbusSend --system --print-reply          \
+      --dest=org.freedesktop.NetworkManager  \
+      /org/freedesktop/NetworkManager        \
+      org.freedesktop.NetworkManager.Sleep boolean:true
+   rc=$?
+   if [ $rc -eq 0 ]; then
+      return $rc
+   fi
+   # NetworkManager 0.6
+   $dbusSend --system --print-reply          \
+      --dest=org.freedesktop.NetworkManager  \
+      /org/freedesktop/NetworkManager        \
+      org.freedesktop.NetworkManager.sleep
+   rc=$?
+
+   return $rc
+}
+
+
+#
+# WakeNetworkManager --
+#
+#    Wake the NetworkManager daemon (maybe).
+#
+#    See http://projects.gnome.org/NetworkManager/developers/spec.html .
+#
+# Results:
+#    Sleep(false)request is sent to the NetworkManager D-Bus interface.
+#
+# Side effects:
+#    None.
+#
+
+WakeNetworkManager()
+{
+   # `which' may be a bit noisy, so we'll shush it.
+   dbusSend=`which dbus-send 2>/dev/null`
+   rc=$?
+   if [ $rc = 0 ]; then
+      # NetworkManager 0.8.0
+      $dbusSend --system --print-reply          \
+         --dest=org.freedesktop.NetworkManager  \
+         /org/freedesktop/NetworkManager        \
+         org.freedesktop.NetworkManager.Enable boolean:true
+      rc=$?
+      if [ $rc = 0 ]; then
+         return $rc
+      fi
+      # NetworkManager 0.7.0
+      $dbusSend --system --print-reply          \
+         --dest=org.freedesktop.NetworkManager  \
+         /org/freedesktop/NetworkManager        \
+         org.freedesktop.NetworkManager.Sleep boolean:false
+      rc=$?
+      if [ $rc = 0 ]; then
+         return $rc
+      fi
+      # NetworkManager 0.6
+      $dbusSend --system --print-reply          \
+         --dest=org.freedesktop.NetworkManager  \
+         /org/freedesktop/NetworkManager        \
+         org.freedesktop.NetworkManager.wake
+      rc=$?
+   fi
+   return $rc
+}
+
+
+#
+# sanity_check --
+#
+#    Check if the script has all the commands it needs to carry out the
+#    request. So far, it requires either ip or ifconfig command to read
+#    interface configuration. Ifup is not checked here. It is checked at
+#    the place where we need to do individual interface state change.
+#
+
+sanity_check()
+{
+   ip_cmd=$(which ip 2>/dev/null)
+   ifconfig_cmd=$(which ifconfig 2>/dev/null)
+   ifup_cmd=$(which ifup 2>/dev/null)
+   ifdown_cmd=$(which ifdown 2>/dev/null)
+
+   [ -z "$ifconfig_cmd" -a -z "$ip_cmd" ] && \
+       Panic "ip and ifconfig not in search path."
+}
+
+
+#
+# main --
+#
+#    Main entry point.  Perform some sanity checking, then map state change
+#    events to relevant networking operations.
+#
+# Results:
+#    See comment at top of file.
+#
+
+main() {
+   exitCode=0
+   activeList=/var/run/vmware-active-nics
+
+   case "$1" in
+      poweron-vm)
+         rm -f $activeList
+         ;;
+      suspend-vm)
+         TranquilizeNetworkManager
+         exitCode=$?
+         if [ $exitCode != 0 ]; then
+            sanity_check suspend-vm
+            save_active_NIC_list
+            run_network_script stop
+            exitCode=$?
+         fi
+         ;;
+      resume-vm)
+         WakeNetworkManager
+         exitCode=$?
+         if [ $exitCode != 0 ]; then
+            sanity_check resume-vm
+            # According to hfu, "/etc/init.d/networking restart" on Debian 5.0
+            # may bring down ethernet interfaces tagged as "allow-hotplug" without
+            # bringing them back up.
+            #
+            # This is especially a problem when reverting to a live, running
+            # VM snapshot where an active NIC list hadn't yet been generated,
+            # resulting in sudden loss of an otherwise operational NIC.
+            #
+            # So, if the active list doesn't exist, assume we're coming back to
+            # a live snapshot and capture the current active list now for
+            # rescue later.
+            if [ ! -s $activeList ]; then
+               save_active_NIC_list
+            fi
+
+            # We shall use start not restart here. Otherwise we may not be able
+            # to bring back active list on distros like sles11sp2
+            # -- PR 816791
+            run_network_script start
+            rescue_NIC
+            exitCode=$?
+         fi
+         ;;
+      *)
+         echo "No argument supplied."
+         ;;
+   esac
+
+   return $exitCode
+}
+
+main "$@"
+echo `date` ": Finished '$0 $*'"
diff --git a/etc/vmware-tools/statechange.subr b/etc/vmware-tools/statechange.subr
new file mode 100644 (file)
index 0000000..8005f7d
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+##########################################################
+# Copyright (C) 2010-2016 VMware, Inc. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation version 2.1 and no 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 Lesser GNU General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
+#
+##########################################################
+
+##########################################################################
+# DO NOT modify this file directly as it will be overwritten the next
+# time the VMware Tools are installed.
+##########################################################################
+
+
+#
+# Panic --
+#
+#    Write a formatted error message to stderr and exit.
+#
+# Results:
+#    Stderr is spammed, program exits with exit code 1.
+#
+# Side effects:
+#    None.
+#
+
+Panic() {
+   fmt="`date '+%b %d %H:%M:%S'` `basename \"$0\"`"
+   if [ -n "$1" ]; then
+      fmt="${fmt}: $1"
+      shift
+   fi
+
+   printf >&2 "${fmt}\n" "$@"
+   exit 1
+}
diff --git a/etc/vmware-tools/suspend-vm-default b/etc/vmware-tools/suspend-vm-default
new file mode 100755 (executable)
index 0000000..39df657
--- /dev/null
@@ -0,0 +1,134 @@
+#!/bin/sh
+##########################################################
+# Copyright (C) 2010-2016 VMware, Inc. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published
+# by the Free Software Foundation version 2.1 and no 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 Lesser GNU General Public
+# License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
+#
+##########################################################
+
+##########################################################################
+# DO NOT modify this file directly as it will be overwritten the next
+# time the VMware Tools are installed.
+##########################################################################
+
+#
+# statechange.sh
+#
+# This script is a refactored version of the legacy power scripts (e.g.,
+# poweron-vm-default).  It expects to be installed in their places --
+# in other words, `basename "$0"` might be poweron-vm-default.
+#
+# Handy reference/shorthand used in this doc/scripts:
+#    TOOLS_CONFDIR ::= Depends on platform and installation settings.  Likely
+#                      "/etc/vmware-tools" or
+#                      "/Library/Application Support/VMware Tools"
+#    powerOp       ::= One of "poweron-vm", "poweroff-vm", "suspend-vm", and
+#                      "resume-vm".
+#    vmwScriptDir  ::= $TOOLS_CONFDIR/scripts/vmware
+#    userScriptDir ::= $TOOLS_CONFDIR/scripts/${powerOp}-default.d
+#
+# End users may install scripts of their own under $userScriptDir.  They
+# are executed in alphabetical order with "$powerOp" as the only argument.
+#
+# NB:  This directory layout remains to preserve backwards compatibility. End
+# users are free to write a single script which uses its only parameter
+# (${powerOp}) as a discriminator, and then install symlinks to it in each
+# of the ${powerOp}-default.d directories.
+#
+# On power-on and resume, VMware's scripts execute before the end user's.  On
+# suspend and power-off, the end user's execute before VMware's.  (This way,
+# VMware stops services only after the user's scripts have finished their
+# work, and conversely restores the same services before the user's scripts
+# attempt to use them.)
+#
+# Should any script exit non-zero, only its value will be saved to exitCode.
+# (Any further non-zero exits will have no effect on exitCode.)  This script
+# exits with $exitCode.
+#
+# XXX Consider using the available/enabled pattern for VMware's scripts.
+#
+# XXX This should be staged as a single executable whereby the desired
+# power operation is passed in as a parameter.  (I.e., one would run
+# "/path/to/statechange.sh suspend-vm" rather than having to install
+# statechange.sh as suspend-vm-default.)
+#
+
+echo `date` ": Executing '$0'"
+
+# See above.
+TOOLS_CONFDIR=`dirname "$0"`
+export TOOLS_CONFDIR
+
+# Pull in subroutines like Panic.
+. "$TOOLS_CONFDIR"/statechange.subr
+
+
+#
+# RunScripts --
+#
+#    Executes scripts installed under $scriptDir.
+#
+# Side effects:
+#    exitCode may be incremented.
+#
+
+RunScripts() {
+   scriptDir="$1"
+
+   if [ -d "$scriptDir" ]; then
+      for scriptFile in "$scriptDir"/*; do
+         if [ -x "$scriptFile" ]; then
+            "$scriptFile" $powerOp
+            exitCode=`expr $exitCode \| $?`
+         fi
+      done
+   fi
+}
+
+
+#
+# main --
+#
+#    Entry point.  See comments at top of file for details.
+#
+# Results:
+#    Exits with $exitCode.
+#
+
+main() {
+   # This is sanity checked in the case/esac bit below.
+   powerOp=`basename "$0" | sed 's,-default,,'`
+   exitCode=0
+
+   vmwScriptDir="$TOOLS_CONFDIR/scripts/vmware"
+   userScriptDir="$TOOLS_CONFDIR/scripts/${powerOp}-default.d"
+
+   case "$powerOp" in
+      poweron-vm|resume-vm)
+         RunScripts "$vmwScriptDir"
+         RunScripts "$userScriptDir"
+         ;;
+      poweroff-vm|suspend-vm)
+         RunScripts "$userScriptDir"
+         RunScripts "$vmwScriptDir"
+         ;;
+      *)
+         Panic "Invalid argument: $powerOp"
+         ;;
+   esac
+
+   return $exitCode
+}
+
+main
diff --git a/etc/vmware-tools/tools.conf b/etc/vmware-tools/tools.conf
new file mode 100644 (file)
index 0000000..b2007e3
--- /dev/null
@@ -0,0 +1,17 @@
+[logging]
+# Turns on logging globally. It can still be disabled for each domain.
+# log = true
+
+# Disables core dumps on fatal errors; they're enabled by default.
+# enableCoreDump = false
+
+# Defines the "vmsvc" domain, logging to file
+# vmsvc.level = message
+vmsvc.handler = file
+# Setup file rotation - keep 3 files
+vmsvc.maxOldLogFiles = 3
+# Max log file size kept: 1 MB
+vmsvc.maxLogSize = 1
+
+# Defines the "vmtoolsd" domain, and disable logging for it.
+# vmtoolsd.level = none
diff --git a/etc/vmware-tools/tools.conf.example b/etc/vmware-tools/tools.conf.example
new file mode 100644 (file)
index 0000000..4d55ebd
--- /dev/null
@@ -0,0 +1,418 @@
+# Copyright (c) 2019-2021 VMware, Inc.  All rights reserved.
+
+# "CAUTION: tools.conf is highly syntax sensitive file. Use extreme caution
+# while editing it. If modified, it is automatically re-loaded by
+# VMware Tools services every 5 seconds."
+#
+# Lines must not end with trailing white space.
+
+[unsetenvironment]
+# Defines environment variables to be removed from the service reading
+# the configuration file. Supported formats are:
+#
+# 1. <variableName>=
+# 2. <serviceName>.<variableName>=
+#
+# Where <serviceName> refers to the 'vmsvc' and 'vmusr',
+# <variableName> refers to the name of the environment
+# variable to be removed. '=' sign after <variableName>
+# is mandatory to maintain the configuration file syntax.
+# However, anything after '=' is ignored.
+#
+# Case-sensitive behavior is defined by the operating system.
+#
+# Note: unsetenvironment group is processed before setenvironment group.
+# As the service environment is setup at start up time, any changes
+# in this group require service to be restarted in order to take effect.
+#
+# Unsetting PATH for all services:
+# PATH=
+#
+# Unsetting PATH for vmsvc only:
+# vmsvc.PATH=
+#
+# Unsetting PATH for vmusr only:
+# vmusr.PATH=
+
+[setenvironment]
+# Defines environment variables to be set for the service reading
+# the configuration file. Supported formats are:
+#
+# 1. <variableName>=<variableValue>
+# 2. <serviceName>.<variableName>=<variableValue>
+#
+# Where <serviceName> refers to the 'vmsvc' and 'vmusr',
+# <variableName> refers to the name of the environment
+# variable to be set, and <variableValue> refers to the
+# value to be assigned to the environment variable.
+#
+# Case-sensitive behavior is defined by the operating system.
+#
+# Note: setenvironment group is processed after unsetenvironment group.
+# As the service environment is setup at start up time, any changes
+# in this group require service to be restarted in order to take effect.
+#
+# Setting TMPDIR for all services:
+# TMPDIR=/vmware/temp
+#
+# Setting TMPDIR for vmsvc only:
+# vmsvc.TMPDIR=/vmware/vmsvc/temp
+#
+# Setting TMPDIR for vmusr only:
+# vmusr.TMPDIR=/vmware/vmusr/temp
+
+[logging]
+# set to false to disable logging
+#log = true
+
+# Log destinations for various services
+# By default, logs go to
+# %windir%/temp/vmware-<servicename>.log
+# for Windows, and
+# /var/log/vmware-<servicename>-<username>.log
+# for Linux, MacOS and Solaris.
+
+# Possible values for handler are:
+# file: logs to a file. Set *.data to the file name
+# file+: same as 'file', but appends to the file
+#  All file paths used in *.data value need to be in Unix
+#  format (forward slashes) and in utf-8, for all operating
+#  systems.
+# vmx: logs to the host (ESXi, Workstation, Fusion)
+# std: Logs to stdout for level >= 'message',
+# and to stderr for more severe than 'message'.
+# syslog: logs to syslog
+# outputdebugstring: uses OutputDebugString (Windows only)
+
+# If handler is 'syslog' and the OS is Linux, the facility
+# can be set with <domain>.facility. The facility value can be one of
+# 'local0'..'local7', 'daemon' or 'user'. The default is 'user'.
+#vmtoolsd.facility = user
+
+# possible values for level are:
+# debug, info, message, warning, critical, error
+# Note that "debug" level logs generate huge amounts of logs and may also
+# include sensitive data required for diagnosis. Therefore, this level should
+# be used only for the duration of diagnosis of an issue and reverted back to
+# default setting post diagnosis.
+
+# Enable tools service logging to a file.
+#vmtoolsd.level = debug
+#vmtoolsd.handler = file
+#vmtoolsd.data = c:/tmp/vmtoolsd-${USER}.log
+
+# Enable 'vmsvc' service logging to a file.
+#vmsvc.level = debug
+#vmsvc.handler = file
+#vmsvc.data = c:/tmp/vmsvc.log
+
+# Enable VMwareResolutionSet.exe logging to a file.
+# Comment this for Linux guest, sometimes vmusr logs are not generated due
+# to this being uncommented
+#vmresset.level = debug
+#vmresset.handler = file+
+#vmresset.data = c:/tmp/vmresset.log
+
+# Enable new "vmusr" service logging to a file.
+#vmusr.level = debug
+#vmusr.handler = file
+#vmusr.data = c:/tmp/vmusr.${USER}.log
+
+# Set the following configuration if you want to collect the logs for
+# vmware-toolbox-cmd utility
+#toolboxcmd.level = debug
+#toolboxcmd.handler = file
+#toolboxcmd.data = c:/tmp/vmtoolboxcmd-${USER}.log
+
+# With no explicit logging configuration for deployPkg, its default log path in
+# Linux is /var/log/vmware-imc/toolsDeployPkg.log, and in Windows is
+# %WINDIR%/Temp/vmware-imc/toolsDeployPkg.log
+# Set the following configuration if you want to redirect the deployPkg log to
+# any existing location other than the default.
+#deployPkg.level = debug
+#deployPkg.handler = file
+#deployPkg.data = c:/tmp/toolsDeployPkg-${USER}.log
+
+# Redirecting the deployPkg log to the vmx log file. Please note that
+# "log = true" and the vmsvc log handler setting to vmx are also neccessary
+# if you want to redirect the deployPkg log to vmx.
+#log = true
+#vmsvc.level = debug
+#vmsvc.handler = vmx
+#deployPkg.level = debug
+#deployPkg.handler = vmx
+
+# Enable old VMwareUser/vmware-user logging to file.
+#log.file = c:/tmp/vmtools.log
+
+# Enable "hgfsServer" request handling logging to the appropriate service file.
+#hgfsServer.level = debug
+
+# Enable  "hgfs" manager and transport logging to the appropriate service file.
+#hgfsd.level = debug
+
+#vmbackup.level = debug
+#vmbackup.handler = vmx
+
+#vmvss.level = debug
+#vmvss.handler = vmx
+
+# Default 4096, 0=> disable log caching
+#maxCacheEntries=4096
+
+[powerops]
+# Custom scripts for power operations
+# This can be an absolute path, or a path relative to the tools
+# install path (/etc/vmware-tools/ for Linux).
+# For more information on configuring and querying custom scripts with
+# VMware Tools, see the "Use Custom VMware Tools Scripts" section of the
+# "VMware Tools Configuration Utility User's Guide".
+
+# Runs when the virtual machine is being powered on rather than resumed.
+# Also runs after virtual machine restarts.
+# The default script has no effect on networking for the virtual machine.
+#poweron-script=poweron-vm-default
+
+# Runs when the virtual machine is being powered off or reset.
+# The default script has no effect on networking for the virtual machine.
+#poweroff-script=poweroff-vm-default
+
+# Runs when the virtual machine is resumed after it was suspended.
+# On Windows guest operating systems, if the virtual machine is configured to
+# use DHCP, the default script renews the IP address of the virtual machine.
+# On Linux, Mac OS X, Solaris, and FreeBSD guest operating systems,
+# this script starts networking for the virtual machine.
+#resume-script=resume-vm-default
+
+# Runs when the virtual machine is being suspended.
+# On Windows guest operating systems, if the virtual machine is configured
+# to use DHCP, the default script releases the IP address of the virtual
+# machine.
+# On Linux, Mac OS X, Solaris, and FreeBSD, this script stops networking for
+# the virtual machine.
+#suspend-script=suspend-vm-default
+
+[guestinfo]
+
+# Set to true to disable the perf monitor.
+#disable-perf-mon=false
+
+# Set to true to disable DiskInfo.
+#disable-query-diskinfo=false
+
+# User-defined poll interval in seconds. Set to 0 to disable polling.
+#poll-interval=30
+
+# User-defined stats interval in seconds. Set to 0 to disable stats collection.
+#stats-interval=20
+
+# Whether stat results should be written to the log.
+#enable-stat-logging=false
+
+# Set a comma separated list of network interface names that can be the
+# primary ones. These will be sorted to the top. Interface names can use
+# wildcards like '*' and '?'. Default is no value.
+#primary-nics=
+
+# Set a comma separated list of network interface names that have low priority
+# (so they will be sorted to the end). Interface names can use wildcards like
+# '*' and '?'. Default is no value.
+#low-priority-nics=
+
+# Set a comma separated list of network interface names that shall be ignored.
+# Interface names can use wildcards like '*' and '?'.
+# Default for Linux and all non-Windows:
+#exclude-nics=veth*,docker*,virbr*
+# Default for Windows:
+#exclude-nics=vEthernet*
+
+# max umber of IPv4 routes to gather.
+#max-ipv4-routes=100
+
+# max umber of IPv6 routes to gather.
+#max-ipv6-routes=100
+
+# whether to include reserved space in diskInfo space metrics on Linux
+#diskinfo-include-reserved=false
+
+[appinfo]
+
+# This plugin collects info about running applications in guest OS.
+
+# Set to true to disable the appinfo plugin.
+#disabled=false
+
+# User-defined poll interval in seconds. Set to 0 to disable the plugin.
+#poll-interval=21600
+
+# For Windows guest, set to true to use WMI for getting the application
+# version info, otherwise native Win32 API is used.
+#useWMI=false
+
+[servicediscovery]
+
+# This plugin provides admins with additional info for better VM management.
+
+# Set to true to disable the servicediscovery plugin.
+#disabled=false
+
+[unity]
+#
+# Unity is available for Windows only.
+#
+
+# Set to true to override system decisions about whether unity should be available.
+#forceEnable=false
+
+# Override the desktop background color when in Unity mode.
+#desktop.backgroundColor=
+
+# The socket type can be 'ipsocket' or 'vsocket':
+#pbrpc.socketType
+
+[resolutionKMS]
+
+# Default is true if tools finds an xf86-video-vmware driver with
+# version >= 13.2.0. If you don't have X installed, set this to true manually.
+# This only affects tools for Linux.
+#enable=true
+
+[guestosinfo]
+
+# Override the short OS name sent by tools.
+#short-name=
+
+# Override the long OS name sent by tools.
+#long-name=
+
+[vmbackup]
+
+# enableSyncDriver is Linux only.
+#enableSyncDriver=true
+
+# enableVSS is Windows only.
+#enableVSS=true
+
+# vss.disableAppQuiescing is Windows only.
+# This setting can be used to force file system quiescing on Windows systems
+# having problems with application quiescing.
+# See https://kb.vmware.com/s/article/2146204
+#vss.disableAppQuiescing=false
+
+# Linux:
+# The value of excludedFileSystems is a comma-separated list of glob-style
+# patterns specifying the file system mount points to be excluded from
+# quiescing operation. The patterns may use '*' (wildcard) to represent
+# any string of characters and '?' (joker) to represent any single character.
+# The characters represented by the patterns '*' and '?' may include any
+# characters, including '/'.
+#
+# Windows:
+# The value of excludedFileSystems is a comma-separated list of mount points
+# specifying the volumes to be excluded from quiesced snapshots.
+# Each mount point must be a full path separated and ended with "\\".
+# For example, to exclude volumes with drive letter 'E' or mount point
+# "F:\mount\", use:
+# excludedFileSystems=E:\\,F:\\mount\\
+# This setting is ignored when application quiescing is used.
+
+#excludedFileSystems=
+
+# execScripts specifies whether to execute scripts as part of the quiescing
+# operation. Scripts are executed from the scripts directory along with the
+# legacy scripts.
+#
+# Scripts directory:
+# Linux: /etc/vmware-tools/backupScripts.d
+# Windows: <Install-Path>\backupScripts.d
+#
+# Legacy scripts:
+# Linux: /usr/sbin/pre-freeze-script and /usr/sbin/post-thaw-script
+# Windows: C:\windows\pre-freeze-script.bat and C:\windows\post-thaw-script.bat
+#
+# On each quiescing operation, scripts are invoked before quiescing and
+# either after a quiescing failure or after thawing.
+# The first argument passed to each script is
+# "freeze", when invoked before quiescing;
+# "freezefail", when invoked after a quiescing failure; or
+# "thaw", when invoked after thawing.
+# When invoked before quiescing, scripts from the directory are invoked in
+# alphabetically ascending order; when invoked following a quiescing failure
+# or thawing, they are invoked in the reverse order. Any subdirectories are
+# ignored.
+# Note that the legacy pre-freeze-script is invoked only before quiescing as
+# the first script and post-thaw-script is invoked after a quiescing failure
+# as well as after thawing as the last script.
+
+#execScripts=true
+
+# Additional argument to be passed to scripts
+#scriptArg=
+
+[guestoperations]
+
+# to disable all guest ops
+#disabled=false
+
+# Whether to use vgauth for guest op authentication
+#useVGAuth=true
+
+[autoupgrade]
+
+# The autoupgrade plugin is only available for Windows.
+
+# The "allow-upgrade" option controls whether automatic upgrades (or reinstalls)
+# are allowed. The two options "allow-add-feature" and "allow-remove-feature"
+# control whether adding or removing a feature will be allowed. The two latter
+# ones only affect Windows tools.
+
+#allow-upgrade=true
+#allow-add-feature=true
+#allow-remove-feature=true
+
+[deployPkg]
+
+# to disable guest customization
+#enable-customization=false
+
+[cbhelper]
+
+# The carbonblack helper plugin is only available for Windows.
+
+# User-defined poll interval in seconds. Set to 0 to disable polling.
+#poll-interval=60
+
+[gueststoreupgrade]
+
+# The guestStoreUpgrade plugin is only available for Windows.
+
+# The policy value is one of the settings listed below.
+# off         = no VMware Tools upgrade from GuestStore. Feature is
+#               disabled.
+# manual      = (Default) VMware Tools upgrade from GuestStore is
+#               manually started.
+# powercycle  = VMware Tools upgrade from GuestStore on system
+#               power on.
+
+#policy=manual
+
+# Time interval for periodically checking available VMware Tools package
+# version in the GuestStore.
+# User-defined poll interval in seconds. Set to 0 to disable polling.
+# Minimum valid value is 900 seconds (15 minutes)
+# Default value is 3600 seconds (60 minutes)
+#poll-interval=3600
+
+# VMware Tools package version metadata key to specify a VMware Tools
+# package version in the GuestStore.
+# User-defined key for VMware Tools package version.
+# Default value is "vmtools" which points to the latest version of
+# VMware Tools package in the GuestStore.
+#vmtools-version-key=vmtools
+
+[devicehelper]
+
+# The deviceHelper plugin is only available for Windows.
+
+# Set to true to disable the deviceHelper plugin.
+#disabled=false
diff --git a/etc/vmware-tools/vgauth.conf b/etc/vmware-tools/vgauth.conf
new file mode 100644 (file)
index 0000000..c10de51
--- /dev/null
@@ -0,0 +1,5 @@
+[service]
+samlSchemaDir = /etc/vmware-tools/vgauth/schemas
+
+[localization]
+msgCatalog = /usr/share/open-vm-tools
diff --git a/etc/vmware-tools/vgauth/schemas/XMLSchema-hasFacetAndProperty.xsd b/etc/vmware-tools/vgauth/schemas/XMLSchema-hasFacetAndProperty.xsd
new file mode 100644 (file)
index 0000000..df871d5
--- /dev/null
@@ -0,0 +1,142 @@
+<?xml version='1.0'?>
+<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" [
+<!ENTITY % s ''>
+<!ENTITY % p ''>
+<!-- keep this XML 1.0 correct -->
+<!ATTLIST schema xmlns:hfp CDATA #IMPLIED
+                 xmlns:xhtml CDATA #IMPLIED
+                 xmlns:xsi CDATA #IMPLIED
+                 xsi:schemaLocation CDATA #IMPLIED>
+<!ELEMENT xhtml:p ANY>
+<!ELEMENT xhtml:em ANY>
+]>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty" xmlns:xhtml="http://www.w3.org/1999/xhtml"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/1999/xhtml.xsd">
+
+ <annotation>
+  <documentation>
+   <xhtml:p> This schema defines 2 elements for use in the
+appinfo portion section of (potentially) all builtin datatypes in the schema
+for XML Schema Part 2: Datatypes.  </xhtml:p>
+   <xhtml:p> One intended use of
+this appinfo is in the generation of the HTML version of the XML Schema Part 2:
+Datatypes specification itself.  All portions of the HTML text which describe
+the facets and/or properties of each datatype is generated by an XSLT
+transformation which keys off of this appinfo.  </xhtml:p>
+   <xhtml:p> Schema
+processors may have another use for this appinfo (although one certainly not
+required in any way by the specification).  The information may be useful in
+dynamically building validation modules/classes and/or user-interfaces for
+schema creation.  </xhtml:p>
+  </documentation>
+ </annotation>
+
+ <element name="hasFacet">
+  <annotation>
+   <documentation>
+   <xhtml:p>
+    hasFacet is used to signal that the contraining facet
+    given in the name attribute is applicable to a primitive
+    datatype (and all types derived from it).
+</xhtml:p>
+   <xhtml:p>
+    Note: this element will only appear in the appinfo of
+    primitive types or built-in types derived by "list".
+   </xhtml:p>
+   <xhtml:p>
+    A schema processor (or the XSLT which generates the
+    HTML version of the XML Schema Part 2: Datatypes
+    specification) which reads a derived simpleType
+    definition should walk up the base type chain until
+    it reaches the primitive type at the top of the chain
+    and "push" all facets found their down to all derived
+    types in the chain.
+   </xhtml:p>
+   </documentation>
+  </annotation>
+  <complexType>
+   <attribute name="name" use="required">
+    <simpleType>
+     <annotation>
+      <documentation>
+       <xhtml:p>
+        This datatype names all existing contraining facets.
+</xhtml:p>
+       <xhtml:p>
+        Question: should each of the enumerations below be
+        given a documentation annotation, which would contain
+        the text to be used in the definition of the facet
+        in the XML Schema Part 2: Datatypes specification?
+        Might be nice to try to collect all of that information
+        together here.
+       </xhtml:p>
+      </documentation>
+     </annotation>
+     <restriction base="NMTOKEN">
+      <enumeration value="length"/>
+      <enumeration value="minLength"/>
+      <enumeration value="maxLength"/>
+      <enumeration value="pattern"/>
+      <enumeration value="enumeration"/>
+      <enumeration value="maxInclusive"/>
+      <enumeration value="maxExclusive"/>
+      <enumeration value="minInclusive"/>
+      <enumeration value="minExclusive"/>
+      <enumeration value="totalDigits"/>
+      <enumeration value="fractionDigits"/>
+      <enumeration value="whiteSpace"/>
+      <enumeration value="maxScale"/>
+      <enumeration value="minScale"/>
+     </restriction>
+    </simpleType>
+   </attribute>
+  </complexType>
+ </element>
+
+ <element name="hasProperty">
+  <annotation>
+   <documentation>
+    <xhtml:p> hasProperty is used to signal that the property
+given in the name attribute has the value given in the value attribute for the
+datatype in which it occurs (and all types derived from it, which do not
+override the value of the property).  </xhtml:p>
+    <xhtml:p> Note: this element
+may appear in the appinfo of primitive and built-in derived types.  </xhtml:p>
+    <xhtml:p> A schema processor (or the XSLT which generates the HTML version of
+the XML Schema Part 2: Datatypes specification) which reads a simpleType
+definition should gather the information from any occurances of hasProperty in
+that simpleType definition, and then walk up the base type chain gathering
+information from any occurances of hasProperty (unless a value was given to the
+name in a dervied type) until either it reaches the primitive type at the top
+of the chain or it has gathered values for all existing properties.  </xhtml:p>
+   </documentation>
+  </annotation>
+  <complexType>
+   <attribute name="name" use="required">
+    <simpleType>
+     <annotation>
+      <documentation>
+       <xhtml:p> This datatype names all existing fundamental
+facets, otherwise known as properties (with the exception of
+<xhtml:em>equality</xhtml:em>, a property which has no
+<xhtml:em>value</xhtml:em>).  </xhtml:p>
+       <xhtml:p> Question: should each of
+the enumerations below be given a documentation annotation, which would contain
+the text to be used in the definition of the properties in the XML Schema Part
+2: Datatypes specification? Might be nice to try to collect all of that
+information together here.  </xhtml:p>
+      </documentation>
+     </annotation>
+     <restriction base="NMTOKEN">
+      <enumeration value="ordered"/>
+      <enumeration value="bounded"/>
+      <enumeration value="cardinality"/>
+      <enumeration value="numeric"/>
+     </restriction>
+    </simpleType>
+   </attribute>
+   <attribute name="value" type="normalizedString" use="required"/>
+  </complexType>
+ </element>
+</schema>
diff --git a/etc/vmware-tools/vgauth/schemas/XMLSchema-instance.xsd b/etc/vmware-tools/vgauth/schemas/XMLSchema-instance.xsd
new file mode 100644 (file)
index 0000000..f47577b
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version='1.0'?>
+<!DOCTYPE xs:schema SYSTEM "XMLSchema.dtd" [
+<!ELEMENT p ANY>
+<!ELEMENT a ANY>
+<!ATTLIST a href CDATA #IMPLIED>
+<!ELEMENT hr ANY>
+<!ELEMENT h1 ANY>
+<!ELEMENT br ANY>
+]>
+<xs:schema targetNamespace="http://www.w3.org/2001/XMLSchema-instance"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns="http://www.w3.org/1999/xhtml">
+  <xs:annotation>
+   <xs:documentation>
+    <h1>XML Schema instance namespace</h1>
+    <p>See <a href="http://www.w3.org/TR/xmlschema-1/">the XML Schema
+       Recommendation</a> for an introduction</p>
+
+
+    <hr />
+    $Date: 2001/03/16 20:25:57 $<br />
+    $Id: XMLSchema-instance.xsd,v 1.4 2001/03/16 20:25:57 ht Exp $
+  </xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+  <xs:documentation><p>This schema should never be used as such:
+                    <a href="http://www.w3.org/TR/xmlschema-1/#no-xsi">the XML
+                    Schema Recommendation</a> forbids the declaration of
+                    attributes in this namespace</p>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="nil"/>
+ <xs:attribute name="type"/>
+ <xs:attribute name="schemaLocation"/>
+ <xs:attribute name="noNamespaceSchemaLocation"/>
+</xs:schema>
diff --git a/etc/vmware-tools/vgauth/schemas/XMLSchema.dtd b/etc/vmware-tools/vgauth/schemas/XMLSchema.dtd
new file mode 100644 (file)
index 0000000..d3c70b3
--- /dev/null
@@ -0,0 +1,402 @@
+<!-- DTD for XML Schemas: Part 1: Structures
+     Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
+     Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
+<!-- $Id: XMLSchema.dtd,v 1.31 2001/10/24 15:50:16 ht Exp $ -->
+<!-- Note this DTD is NOT normative, or even definitive. -->           <!--d-->
+<!-- prose copy in the structures REC is the definitive version -->    <!--d-->
+<!-- (which shouldn't differ from this one except for this -->         <!--d-->
+<!-- comment and entity expansions, but just in case) -->              <!--d-->
+<!-- With the exception of cases with multiple namespace
+     prefixes for the XML Schema namespace, any XML document which is
+     not valid per this DTD given redefinitions in its internal subset of the
+     'p' and 's' parameter entities below appropriate to its namespace
+     declaration of the XML Schema namespace is almost certainly not
+     a valid schema. -->
+
+<!-- The simpleType element and its constituent parts
+     are defined in XML Schema: Part 2: Datatypes -->
+<!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
+
+<!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a
+                         schema document to establish a different
+                         namespace prefix -->
+<!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must
+                         also define %s as the suffix for the appropriate
+                         namespace declaration (e.g. :foo) -->
+<!ENTITY % nds 'xmlns%s;'>
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % schema "%p;schema">
+<!ENTITY % complexType "%p;complexType">
+<!ENTITY % complexContent "%p;complexContent">
+<!ENTITY % simpleContent "%p;simpleContent">
+<!ENTITY % extension "%p;extension">
+<!ENTITY % element "%p;element">
+<!ENTITY % unique "%p;unique">
+<!ENTITY % key "%p;key">
+<!ENTITY % keyref "%p;keyref">
+<!ENTITY % selector "%p;selector">
+<!ENTITY % field "%p;field">
+<!ENTITY % group "%p;group">
+<!ENTITY % all "%p;all">
+<!ENTITY % choice "%p;choice">
+<!ENTITY % sequence "%p;sequence">
+<!ENTITY % any "%p;any">
+<!ENTITY % anyAttribute "%p;anyAttribute">
+<!ENTITY % attribute "%p;attribute">
+<!ENTITY % attributeGroup "%p;attributeGroup">
+<!ENTITY % include "%p;include">
+<!ENTITY % import "%p;import">
+<!ENTITY % redefine "%p;redefine">
+<!ENTITY % notation "%p;notation">
+
+<!-- annotation elements -->
+<!ENTITY % annotation "%p;annotation">
+<!ENTITY % appinfo "%p;appinfo">
+<!ENTITY % documentation "%p;documentation">
+
+<!-- Customisation entities for the ATTLIST of each element type.
+     Define one of these if your schema takes advantage of the
+     anyAttribute='##other' in the schema for schemas -->
+
+<!ENTITY % schemaAttrs ''>
+<!ENTITY % complexTypeAttrs ''>
+<!ENTITY % complexContentAttrs ''>
+<!ENTITY % simpleContentAttrs ''>
+<!ENTITY % extensionAttrs ''>
+<!ENTITY % elementAttrs ''>
+<!ENTITY % groupAttrs ''>
+<!ENTITY % allAttrs ''>
+<!ENTITY % choiceAttrs ''>
+<!ENTITY % sequenceAttrs ''>
+<!ENTITY % anyAttrs ''>
+<!ENTITY % anyAttributeAttrs ''>
+<!ENTITY % attributeAttrs ''>
+<!ENTITY % attributeGroupAttrs ''>
+<!ENTITY % uniqueAttrs ''>
+<!ENTITY % keyAttrs ''>
+<!ENTITY % keyrefAttrs ''>
+<!ENTITY % selectorAttrs ''>
+<!ENTITY % fieldAttrs ''>
+<!ENTITY % includeAttrs ''>
+<!ENTITY % importAttrs ''>
+<!ENTITY % redefineAttrs ''>
+<!ENTITY % notationAttrs ''>
+<!ENTITY % annotationAttrs ''>
+<!ENTITY % appinfoAttrs ''>
+<!ENTITY % documentationAttrs ''>
+
+<!ENTITY % complexDerivationSet "CDATA">
+      <!-- #all or space-separated list drawn from derivationChoice -->
+<!ENTITY % blockSet "CDATA">
+      <!-- #all or space-separated list drawn from
+                      derivationChoice + 'substitution' -->
+
+<!ENTITY % mgs '%all; | %choice; | %sequence;'>
+<!ENTITY % cs '%choice; | %sequence;'>
+<!ENTITY % formValues '(qualified|unqualified)'>
+
+
+<!ENTITY % attrDecls    '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
+
+<!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
+
+<!-- This is used in part2 -->
+<!ENTITY % restriction1 '((%mgs; | %group;)?)'>
+
+%xs-datatypes;
+
+<!-- the duplication below is to produce an unambiguous content model
+     which allows annotation everywhere -->
+<!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
+                    ((%simpleType; | %complexType;
+                      | %element; | %attribute;
+                      | %attributeGroup; | %group;
+                      | %notation; ),
+                     (%annotation;)*)* )>
+<!ATTLIST %schema;
+   targetNamespace      %URIref;               #IMPLIED
+   version              CDATA                  #IMPLIED
+   %nds;                %URIref;               #FIXED 'http://www.w3.org/2001/XMLSchema'
+   xmlns                CDATA                  #IMPLIED
+   finalDefault         %complexDerivationSet; ''
+   blockDefault         %blockSet;             ''
+   id                   ID                     #IMPLIED
+   elementFormDefault   %formValues;           'unqualified'
+   attributeFormDefault %formValues;           'unqualified'
+   xml:lang             CDATA                  #IMPLIED
+   %schemaAttrs;>
+<!-- Note the xmlns declaration is NOT in the Schema for Schemas,
+     because at the Infoset level where schemas operate,
+     xmlns(:prefix) is NOT an attribute! -->
+<!-- The declaration of xmlns is a convenience for schema authors -->
+
+<!-- The id attribute here and below is for use in external references
+     from non-schemas using simple fragment identifiers.
+     It is NOT used for schema-to-schema reference, internal or
+     external. -->
+
+<!-- a type is a named content type specification which allows attribute
+     declarations-->
+<!-- -->
+
+<!ELEMENT %complexType; ((%annotation;)?,
+                         (%simpleContent;|%complexContent;|
+                          %particleAndAttrs;))>
+
+<!ATTLIST %complexType;
+          name      %NCName;                        #IMPLIED
+          id        ID                              #IMPLIED
+          abstract  %boolean;                       #IMPLIED
+          final     %complexDerivationSet;          #IMPLIED
+          block     %complexDerivationSet;          #IMPLIED
+          mixed (true|false) 'false'
+          %complexTypeAttrs;>
+
+<!-- particleAndAttrs is shorthand for a root type -->
+<!-- mixed is disallowed if simpleContent, overriden if complexContent
+     has one too. -->
+
+<!-- If anyAttribute appears in one or more referenced attributeGroups
+     and/or explicitly, the intersection of the permissions is used -->
+
+<!ELEMENT %complexContent; ((%annotation;)?, (%restriction;|%extension;))>
+<!ATTLIST %complexContent;
+          mixed (true|false) #IMPLIED
+          id    ID           #IMPLIED
+          %complexContentAttrs;>
+
+<!-- restriction should use the branch defined above, not the simple
+     one from part2; extension should use the full model  -->
+
+<!ELEMENT %simpleContent; ((%annotation;)?, (%restriction;|%extension;))>
+<!ATTLIST %simpleContent;
+          id    ID           #IMPLIED
+          %simpleContentAttrs;>
+
+<!-- restriction should use the simple branch from part2, not the
+     one defined above; extension should have no particle  -->
+
+<!ELEMENT %extension; ((%annotation;)?, (%particleAndAttrs;))>
+<!ATTLIST %extension;
+          base  %QName;      #REQUIRED
+          id    ID           #IMPLIED
+          %extensionAttrs;>
+
+<!-- an element is declared by either:
+ a name and a type (either nested or referenced via the type attribute)
+ or a ref to an existing element declaration -->
+
+<!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
+                     (%unique; | %key; | %keyref;)*)>
+<!-- simpleType or complexType only if no type|ref attribute -->
+<!-- ref not allowed at top level -->
+<!ATTLIST %element;
+            name               %NCName;               #IMPLIED
+            id                 ID                     #IMPLIED
+            ref                %QName;                #IMPLIED
+            type               %QName;                #IMPLIED
+            minOccurs          %nonNegativeInteger;   #IMPLIED
+            maxOccurs          CDATA                  #IMPLIED
+            nillable           %boolean;              #IMPLIED
+            substitutionGroup  %QName;                #IMPLIED
+            abstract           %boolean;              #IMPLIED
+            final              %complexDerivationSet; #IMPLIED
+            block              %blockSet;             #IMPLIED
+            default            CDATA                  #IMPLIED
+            fixed              CDATA                  #IMPLIED
+            form               %formValues;           #IMPLIED
+            %elementAttrs;>
+<!-- type and ref are mutually exclusive.
+     name and ref are mutually exclusive, one is required -->
+<!-- In the absence of type AND ref, type defaults to type of
+     substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
+<!-- default and fixed are mutually exclusive -->
+
+<!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
+<!ATTLIST %group;
+          name        %NCName;               #IMPLIED
+          ref         %QName;                #IMPLIED
+          minOccurs   %nonNegativeInteger;   #IMPLIED
+          maxOccurs   CDATA                  #IMPLIED
+          id          ID                     #IMPLIED
+          %groupAttrs;>
+
+<!ELEMENT %all; ((%annotation;)?, (%element;)*)>
+<!ATTLIST %all;
+          minOccurs   (1)                    #IMPLIED
+          maxOccurs   (1)                    #IMPLIED
+          id          ID                     #IMPLIED
+          %allAttrs;>
+
+<!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %choice;
+          minOccurs   %nonNegativeInteger;   #IMPLIED
+          maxOccurs   CDATA                  #IMPLIED
+          id          ID                     #IMPLIED
+          %choiceAttrs;>
+
+<!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
+<!ATTLIST %sequence;
+          minOccurs   %nonNegativeInteger;   #IMPLIED
+          maxOccurs   CDATA                  #IMPLIED
+          id          ID                     #IMPLIED
+          %sequenceAttrs;>
+
+<!-- an anonymous grouping in a model, or
+     a top-level named group definition, or a reference to same -->
+
+<!-- Note that if order is 'all', group is not allowed inside.
+     If order is 'all' THIS group must be alone (or referenced alone) at
+     the top level of a content model -->
+<!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
+<!-- Should allow minOccurs=0 inside order='all' . . . -->
+
+<!ELEMENT %any; (%annotation;)?>
+<!ATTLIST %any;
+            namespace       CDATA                  '##any'
+            processContents (skip|lax|strict)      'strict'
+            minOccurs       %nonNegativeInteger;   '1'
+            maxOccurs       CDATA                  '1'
+            id              ID                     #IMPLIED
+            %anyAttrs;>
+
+<!-- namespace is interpreted as follows:
+                  ##any      - - any non-conflicting WFXML at all
+
+                  ##other    - - any non-conflicting WFXML from namespace other
+                                  than targetNamespace
+
+                  ##local    - - any unqualified non-conflicting WFXML/attribute
+                  one or     - - any non-conflicting WFXML from
+                  more URI        the listed namespaces
+                  references
+
+                  ##targetNamespace ##local may appear in the above list,
+                    with the obvious meaning -->
+
+<!ELEMENT %anyAttribute; (%annotation;)?>
+<!ATTLIST %anyAttribute;
+            namespace       CDATA              '##any'
+            processContents (skip|lax|strict)  'strict'
+            id              ID                 #IMPLIED
+            %anyAttributeAttrs;>
+<!-- namespace is interpreted as for 'any' above -->
+
+<!-- simpleType only if no type|ref attribute -->
+<!-- ref not allowed at top level, name iff at top level -->
+<!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
+<!ATTLIST %attribute;
+          name      %NCName;      #IMPLIED
+          id        ID            #IMPLIED
+          ref       %QName;       #IMPLIED
+          type      %QName;       #IMPLIED
+          use       (prohibited|optional|required) #IMPLIED
+          default   CDATA         #IMPLIED
+          fixed     CDATA         #IMPLIED
+          form      %formValues;  #IMPLIED
+          %attributeAttrs;>
+<!-- type and ref are mutually exclusive.
+     name and ref are mutually exclusive, one is required -->
+<!-- default for use is optional when nested, none otherwise -->
+<!-- default and fixed are mutually exclusive -->
+<!-- type attr and simpleType content are mutually exclusive -->
+
+<!-- an attributeGroup is a named collection of attribute decls, or a
+     reference thereto -->
+<!ELEMENT %attributeGroup; ((%annotation;)?,
+                       (%attribute; | %attributeGroup;)*,
+                       (%anyAttribute;)?) >
+<!ATTLIST %attributeGroup;
+                 name       %NCName;       #IMPLIED
+                 id         ID             #IMPLIED
+                 ref        %QName;        #IMPLIED
+                 %attributeGroupAttrs;>
+
+<!-- ref iff no content, no name.  ref iff not top level -->
+
+<!-- better reference mechanisms -->
+<!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %unique;
+          name     %NCName;       #REQUIRED
+         id       ID             #IMPLIED
+         %uniqueAttrs;>
+
+<!ELEMENT %key;    ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %key;
+          name     %NCName;       #REQUIRED
+         id       ID             #IMPLIED
+         %keyAttrs;>
+
+<!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
+<!ATTLIST %keyref;
+          name     %NCName;       #REQUIRED
+         refer    %QName;        #REQUIRED
+         id       ID             #IMPLIED
+         %keyrefAttrs;>
+
+<!ELEMENT %selector; ((%annotation;)?)>
+<!ATTLIST %selector;
+          xpath %XPathExpr; #REQUIRED
+          id    ID          #IMPLIED
+          %selectorAttrs;>
+<!ELEMENT %field; ((%annotation;)?)>
+<!ATTLIST %field;
+          xpath %XPathExpr; #REQUIRED
+          id    ID          #IMPLIED
+          %fieldAttrs;>
+
+<!-- Schema combination mechanisms -->
+<!ELEMENT %include; (%annotation;)?>
+<!ATTLIST %include;
+          schemaLocation %URIref; #REQUIRED
+          id             ID       #IMPLIED
+          %includeAttrs;>
+
+<!ELEMENT %import; (%annotation;)?>
+<!ATTLIST %import;
+          namespace      %URIref; #IMPLIED
+          schemaLocation %URIref; #IMPLIED
+          id             ID       #IMPLIED
+          %importAttrs;>
+
+<!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
+                      %attributeGroup; | %group;)*>
+<!ATTLIST %redefine;
+          schemaLocation %URIref; #REQUIRED
+          id             ID       #IMPLIED
+          %redefineAttrs;>
+
+<!ELEMENT %notation; (%annotation;)?>
+<!ATTLIST %notation;
+         name        %NCName;    #REQUIRED
+         id          ID          #IMPLIED
+         public      CDATA       #REQUIRED
+         system      %URIref;    #IMPLIED
+         %notationAttrs;>
+
+<!-- Annotation is either application information or documentation -->
+<!-- By having these here they are available for datatypes as well
+     as all the structures elements -->
+
+<!ELEMENT %annotation; (%appinfo; | %documentation;)*>
+<!ATTLIST %annotation; %annotationAttrs;>
+
+<!-- User must define annotation elements in internal subset for this
+     to work -->
+<!ELEMENT %appinfo; ANY>   <!-- too restrictive -->
+<!ATTLIST %appinfo;
+          source     %URIref;      #IMPLIED
+          id         ID         #IMPLIED
+          %appinfoAttrs;>
+<!ELEMENT %documentation; ANY>   <!-- too restrictive -->
+<!ATTLIST %documentation;
+          source     %URIref;   #IMPLIED
+          id         ID         #IMPLIED
+          xml:lang   CDATA      #IMPLIED
+          %documentationAttrs;>
+
+<!NOTATION XMLSchemaStructures PUBLIC
+           'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
+<!NOTATION XML PUBLIC
+           'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >
diff --git a/etc/vmware-tools/vgauth/schemas/XMLSchema.xsd b/etc/vmware-tools/vgauth/schemas/XMLSchema.xsd
new file mode 100644 (file)
index 0000000..0d375ee
--- /dev/null
@@ -0,0 +1,2424 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- XML Schema schema for XML Schemas: Part 1: Structures -->
+<!-- Note this schema is NOT the normative structures schema. -->
+<!-- The prose copy in the structures REC is the normative -->
+<!-- version (which shouldn't differ from this one except for -->
+<!-- this comment and entity expansions, but just in case -->
+<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" [
+
+<!-- provide ID type information even for parsers which only read the
+     internal subset -->
+<!ATTLIST xs:schema          id  ID  #IMPLIED>
+<!ATTLIST xs:complexType     id  ID  #IMPLIED>
+<!ATTLIST xs:complexContent  id  ID  #IMPLIED>
+<!ATTLIST xs:simpleContent   id  ID  #IMPLIED>
+<!ATTLIST xs:extension       id  ID  #IMPLIED>
+<!ATTLIST xs:element         id  ID  #IMPLIED>
+<!ATTLIST xs:group           id  ID  #IMPLIED>
+<!ATTLIST xs:all             id  ID  #IMPLIED>
+<!ATTLIST xs:choice          id  ID  #IMPLIED>
+<!ATTLIST xs:sequence        id  ID  #IMPLIED>
+<!ATTLIST xs:any             id  ID  #IMPLIED>
+<!ATTLIST xs:anyAttribute    id  ID  #IMPLIED>
+<!ATTLIST xs:attribute       id  ID  #IMPLIED>
+<!ATTLIST xs:attributeGroup  id  ID  #IMPLIED>
+<!ATTLIST xs:unique          id  ID  #IMPLIED>
+<!ATTLIST xs:key             id  ID  #IMPLIED>
+<!ATTLIST xs:keyref          id  ID  #IMPLIED>
+<!ATTLIST xs:selector        id  ID  #IMPLIED>
+<!ATTLIST xs:field           id  ID  #IMPLIED>
+<!ATTLIST xs:include         id  ID  #IMPLIED>
+<!ATTLIST xs:import          id  ID  #IMPLIED>
+<!ATTLIST xs:redefine        id  ID  #IMPLIED>
+<!ATTLIST xs:notation        id  ID  #IMPLIED>
+<!--
+     keep this schema XML1.0 DTD valid
+  -->
+        <!ENTITY % schemaAttrs 'xmlns:hfp CDATA #IMPLIED'>
+
+        <!ELEMENT hfp:hasFacet EMPTY>
+        <!ATTLIST hfp:hasFacet
+                name NMTOKEN #REQUIRED>
+
+        <!ELEMENT hfp:hasProperty EMPTY>
+        <!ATTLIST hfp:hasProperty
+                name NMTOKEN #REQUIRED
+                value CDATA #REQUIRED>
+<!--
+        Make sure that processors that do not read the external
+        subset will know about the various IDs we declare
+  -->
+        <!ATTLIST xs:simpleType id ID #IMPLIED>
+        <!ATTLIST xs:maxExclusive id ID #IMPLIED>
+        <!ATTLIST xs:minExclusive id ID #IMPLIED>
+        <!ATTLIST xs:maxInclusive id ID #IMPLIED>
+        <!ATTLIST xs:minInclusive id ID #IMPLIED>
+        <!ATTLIST xs:totalDigits id ID #IMPLIED>
+        <!ATTLIST xs:fractionDigits id ID #IMPLIED>
+        <!ATTLIST xs:length id ID #IMPLIED>
+        <!ATTLIST xs:minLength id ID #IMPLIED>
+        <!ATTLIST xs:maxLength id ID #IMPLIED>
+        <!ATTLIST xs:enumeration id ID #IMPLIED>
+        <!ATTLIST xs:pattern id ID #IMPLIED>
+        <!ATTLIST xs:appinfo id ID #IMPLIED>
+        <!ATTLIST xs:documentation id ID #IMPLIED>
+        <!ATTLIST xs:list id ID #IMPLIED>
+        <!ATTLIST xs:union id ID #IMPLIED>
+        ]>
+<xs:schema targetNamespace="http://www.w3.org/2001/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="EN" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xs:annotation>
+  <xs:documentation>
+    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp
+    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema language.  The documentation (within &lt;documentation&gt; elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+   <xs:documentation>
+   The simpleType element and all of its members are defined
+      towards the end of this schema document</xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
+   <xs:annotation>
+     <xs:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xs:documentation>
+   </xs:annotation>
+ </xs:import>
+
+ <xs:complexType name="openAttrs">
+   <xs:annotation>
+     <xs:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xs:documentation>
+   </xs:annotation>
+   <xs:complexContent>
+     <xs:restriction base="xs:anyType">
+       <xs:anyAttribute namespace="##other" processContents="lax"/>
+     </xs:restriction>
+   </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="annotated">
+   <xs:annotation>
+     <xs:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xs:documentation>
+   </xs:annotation>
+   <xs:complexContent>
+     <xs:extension base="xs:openAttrs">
+       <xs:sequence>
+         <xs:element ref="xs:annotation" minOccurs="0"/>
+       </xs:sequence>
+       <xs:attribute name="id" type="xs:ID"/>
+     </xs:extension>
+   </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="schemaTop">
+  <xs:annotation>
+   <xs:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xs:documentation>
+  </xs:annotation>
+  <xs:choice>
+   <xs:group ref="xs:redefinable"/>
+   <xs:element ref="xs:element"/>
+   <xs:element ref="xs:attribute"/>
+   <xs:element ref="xs:notation"/>
+  </xs:choice>
+ </xs:group>
+
+ <xs:group name="redefinable">
+  <xs:annotation>
+   <xs:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine&gt; below).</xs:documentation>
+  </xs:annotation>
+  <xs:choice>
+   <xs:element ref="xs:simpleType"/>
+   <xs:element ref="xs:complexType"/>
+   <xs:element ref="xs:group"/>
+   <xs:element ref="xs:attributeGroup"/>
+  </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="formChoice">
+  <xs:annotation>
+   <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+  </xs:annotation>
+  <xs:restriction base="xs:NMTOKEN">
+   <xs:enumeration value="qualified"/>
+   <xs:enumeration value="unqualified"/>
+  </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="reducedDerivationControl">
+  <xs:annotation>
+   <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+  </xs:annotation>
+  <xs:restriction base="xs:derivationControl">
+   <xs:enumeration value="extension"/>
+   <xs:enumeration value="restriction"/>
+  </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="derivationSet">
+  <xs:annotation>
+   <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+   <xs:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xs:documentation>
+  </xs:annotation>
+  <xs:union>
+   <xs:simpleType>
+    <xs:restriction base="xs:token">
+     <xs:enumeration value="#all"/>
+    </xs:restriction>
+   </xs:simpleType>
+   <xs:simpleType>
+    <xs:list itemType="xs:reducedDerivationControl"/>
+   </xs:simpleType>
+  </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="typeDerivationControl">
+  <xs:annotation>
+   <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+  </xs:annotation>
+  <xs:restriction base="xs:derivationControl">
+   <xs:enumeration value="extension"/>
+   <xs:enumeration value="restriction"/>
+   <xs:enumeration value="list"/>
+   <xs:enumeration value="union"/>
+  </xs:restriction>
+ </xs:simpleType>
+
+  <xs:simpleType name="fullDerivationSet">
+  <xs:annotation>
+   <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+   <xs:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>
+  </xs:annotation>
+  <xs:union>
+   <xs:simpleType>
+    <xs:restriction base="xs:token">
+     <xs:enumeration value="#all"/>
+    </xs:restriction>
+   </xs:simpleType>
+   <xs:simpleType>
+    <xs:list itemType="xs:typeDerivationControl"/>
+   </xs:simpleType>
+  </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="schema" id="schema">
+  <xs:annotation>
+    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+  </xs:annotation>
+  <xs:complexType>
+   <xs:complexContent>
+    <xs:extension base="xs:openAttrs">
+     <xs:sequence>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+       <xs:element ref="xs:include"/>
+       <xs:element ref="xs:import"/>
+       <xs:element ref="xs:redefine"/>
+       <xs:element ref="xs:annotation"/>
+      </xs:choice>
+      <xs:sequence minOccurs="0" maxOccurs="unbounded">
+       <xs:group ref="xs:schemaTop"/>
+       <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      </xs:sequence>
+     </xs:sequence>
+     <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+     <xs:attribute name="version" type="xs:token"/>
+     <xs:attribute name="finalDefault" type="xs:fullDerivationSet" use="optional" default=""/>
+     <xs:attribute name="blockDefault" type="xs:blockSet" use="optional" default=""/>
+     <xs:attribute name="attributeFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+     <xs:attribute name="elementFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+     <xs:attribute name="id" type="xs:ID"/>
+     <xs:attribute ref="xml:lang"/>
+    </xs:extension>
+   </xs:complexContent>
+  </xs:complexType>
+
+  <xs:key name="element">
+   <xs:selector xpath="xs:element"/>
+   <xs:field xpath="@name"/>
+  </xs:key>
+
+  <xs:key name="attribute">
+   <xs:selector xpath="xs:attribute"/>
+   <xs:field xpath="@name"/>
+  </xs:key>
+
+  <xs:key name="type">
+   <xs:selector xpath="xs:complexType|xs:simpleType"/>
+   <xs:field xpath="@name"/>
+  </xs:key>
+
+  <xs:key name="group">
+   <xs:selector xpath="xs:group"/>
+   <xs:field xpath="@name"/>
+  </xs:key>
+
+  <xs:key name="attributeGroup">
+   <xs:selector xpath="xs:attributeGroup"/>
+   <xs:field xpath="@name"/>
+  </xs:key>
+
+  <xs:key name="notation">
+   <xs:selector xpath="xs:notation"/>
+   <xs:field xpath="@name"/>
+  </xs:key>
+
+  <xs:key name="identityConstraint">
+   <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/>
+   <xs:field xpath="@name"/>
+  </xs:key>
+
+ </xs:element>
+
+ <xs:simpleType name="allNNI">
+  <xs:annotation><xs:documentation>
+   for maxOccurs</xs:documentation></xs:annotation>
+  <xs:union memberTypes="xs:nonNegativeInteger">
+   <xs:simpleType>
+    <xs:restriction base="xs:NMTOKEN">
+     <xs:enumeration value="unbounded"/>
+    </xs:restriction>
+   </xs:simpleType>
+  </xs:union>
+ </xs:simpleType>
+
+ <xs:attributeGroup name="occurs">
+  <xs:annotation><xs:documentation>
+   for all particles</xs:documentation></xs:annotation>
+  <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
+  <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="defRef">
+  <xs:annotation><xs:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xs:documentation></xs:annotation>
+  <xs:attribute name="name" type="xs:NCName"/>
+  <xs:attribute name="ref" type="xs:QName"/>
+ </xs:attributeGroup>
+
+ <xs:group name="typeDefParticle">
+  <xs:annotation>
+    <xs:documentation>
+   'complexType' uses this</xs:documentation></xs:annotation>
+  <xs:choice>
+   <xs:element name="group" type="xs:groupRef"/>
+   <xs:element ref="xs:all"/>
+   <xs:element ref="xs:choice"/>
+   <xs:element ref="xs:sequence"/>
+  </xs:choice>
+ </xs:group>
+
+
+
+ <xs:group name="nestedParticle">
+  <xs:choice>
+   <xs:element name="element" type="xs:localElement"/>
+   <xs:element name="group" type="xs:groupRef"/>
+   <xs:element ref="xs:choice"/>
+   <xs:element ref="xs:sequence"/>
+   <xs:element ref="xs:any"/>
+  </xs:choice>
+ </xs:group>
+
+ <xs:group name="particle">
+  <xs:choice>
+   <xs:element name="element" type="xs:localElement"/>
+   <xs:element name="group" type="xs:groupRef"/>
+   <xs:element ref="xs:all"/>
+   <xs:element ref="xs:choice"/>
+   <xs:element ref="xs:sequence"/>
+   <xs:element ref="xs:any"/>
+  </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="attribute">
+  <xs:complexContent>
+   <xs:extension base="xs:annotated">
+    <xs:sequence>
+     <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+    </xs:sequence>
+    <xs:attributeGroup ref="xs:defRef"/>
+    <xs:attribute name="type" type="xs:QName"/>
+    <xs:attribute name="use" use="optional" default="optional">
+     <xs:simpleType>
+      <xs:restriction base="xs:NMTOKEN">
+       <xs:enumeration value="prohibited"/>
+       <xs:enumeration value="optional"/>
+       <xs:enumeration value="required"/>
+      </xs:restriction>
+     </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="default" type="xs:string"/>
+    <xs:attribute name="fixed" type="xs:string"/>
+    <xs:attribute name="form" type="xs:formChoice"/>
+   </xs:extension>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelAttribute">
+  <xs:complexContent>
+   <xs:restriction base="xs:attribute">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+    </xs:sequence>
+    <xs:attribute name="ref" use="prohibited"/>
+    <xs:attribute name="form" use="prohibited"/>
+    <xs:attribute name="use" use="prohibited"/>
+    <xs:attribute name="name" use="required" type="xs:NCName"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="attrDecls">
+  <xs:sequence>
+   <xs:choice minOccurs="0" maxOccurs="unbounded">
+    <xs:element name="attribute" type="xs:attribute"/>
+    <xs:element name="attributeGroup" type="xs:attributeGroupRef"/>
+   </xs:choice>
+   <xs:element ref="xs:anyAttribute" minOccurs="0"/>
+  </xs:sequence>
+ </xs:group>
+
+ <xs:element name="anyAttribute" type="xs:wildcard" id="anyAttribute">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+  </xs:annotation>
+ </xs:element>
+
+ <xs:group name="complexTypeModel">
+  <xs:choice>
+      <xs:element ref="xs:simpleContent"/>
+      <xs:element ref="xs:complexContent"/>
+      <xs:sequence>
+       <xs:annotation>
+        <xs:documentation>
+   This branch is short for
+   &lt;complexContent&gt;
+   &lt;restriction base="xs:anyType"&gt;
+   ...
+   &lt;/restriction&gt;
+   &lt;/complexContent&gt;</xs:documentation>
+       </xs:annotation>
+       <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+       <xs:group ref="xs:attrDecls"/>
+      </xs:sequence>
+  </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="complexType" abstract="true">
+  <xs:complexContent>
+   <xs:extension base="xs:annotated">
+    <xs:group ref="xs:complexTypeModel"/>
+    <xs:attribute name="name" type="xs:NCName">
+     <xs:annotation>
+      <xs:documentation>
+      Will be restricted to required or forbidden</xs:documentation>
+     </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="mixed" type="xs:boolean" use="optional" default="false">
+     <xs:annotation>
+      <xs:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overriden by setting on complexContent child.</xs:documentation>
+    </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+    <xs:attribute name="final" type="xs:derivationSet"/>
+    <xs:attribute name="block" type="xs:derivationSet"/>
+   </xs:extension>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelComplexType">
+  <xs:complexContent>
+   <xs:restriction base="xs:complexType">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:group ref="xs:complexTypeModel"/>
+    </xs:sequence>
+    <xs:attribute name="name" type="xs:NCName" use="required"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localComplexType">
+  <xs:complexContent>
+   <xs:restriction base="xs:complexType">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:group ref="xs:complexTypeModel"/>
+    </xs:sequence>
+    <xs:attribute name="name" use="prohibited"/>
+    <xs:attribute name="abstract" use="prohibited"/>
+    <xs:attribute name="final" use="prohibited"/>
+    <xs:attribute name="block" use="prohibited"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="restrictionType">
+  <xs:complexContent>
+   <xs:extension base="xs:annotated">
+    <xs:sequence>
+     <xs:choice minOccurs="0">
+      <xs:group ref="xs:typeDefParticle"/>
+      <xs:group ref="xs:simpleRestrictionModel"/>
+     </xs:choice>
+     <xs:group ref="xs:attrDecls"/>
+    </xs:sequence>
+    <xs:attribute name="base" type="xs:QName" use="required"/>
+   </xs:extension>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="complexRestrictionType">
+  <xs:complexContent>
+   <xs:restriction base="xs:restrictionType">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:choice minOccurs="0">
+      <xs:annotation>
+       <xs:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xs:documentation>
+      </xs:annotation>
+      <xs:group ref="xs:typeDefParticle"/>
+     </xs:choice>
+     <xs:group ref="xs:attrDecls"/>
+    </xs:sequence>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="extensionType">
+  <xs:complexContent>
+   <xs:extension base="xs:annotated">
+    <xs:sequence>
+     <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+     <xs:group ref="xs:attrDecls"/>
+    </xs:sequence>
+    <xs:attribute name="base" type="xs:QName" use="required"/>
+   </xs:extension>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="complexContent" id="complexContent">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+  </xs:annotation>
+  <xs:complexType>
+   <xs:complexContent>
+    <xs:extension base="xs:annotated">
+     <xs:choice>
+      <xs:element name="restriction" type="xs:complexRestrictionType"/>
+      <xs:element name="extension" type="xs:extensionType"/>
+     </xs:choice>
+     <xs:attribute name="mixed" type="xs:boolean">
+      <xs:annotation>
+       <xs:documentation>
+       Overrides any setting on complexType parent.</xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    </xs:extension>
+   </xs:complexContent>
+  </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="simpleRestrictionType">
+  <xs:complexContent>
+   <xs:restriction base="xs:restrictionType">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:choice minOccurs="0">
+      <xs:annotation>
+       <xs:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xs:documentation>
+      </xs:annotation>
+      <xs:group ref="xs:simpleRestrictionModel"/>
+     </xs:choice>
+     <xs:group ref="xs:attrDecls"/>
+    </xs:sequence>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExtensionType">
+  <xs:complexContent>
+   <xs:restriction base="xs:extensionType">
+    <xs:sequence>
+     <xs:annotation>
+      <xs:documentation>
+      No typeDefParticle group reference</xs:documentation>
+     </xs:annotation>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:group ref="xs:attrDecls"/>
+    </xs:sequence>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="simpleContent" id="simpleContent">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+  </xs:annotation>
+  <xs:complexType>
+   <xs:complexContent>
+    <xs:extension base="xs:annotated">
+     <xs:choice>
+      <xs:element name="restriction" type="xs:simpleRestrictionType"/>
+      <xs:element name="extension" type="xs:simpleExtensionType"/>
+     </xs:choice>
+    </xs:extension>
+   </xs:complexContent>
+  </xs:complexType>
+ </xs:element>
+
+ <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+  </xs:annotation>
+ </xs:element>
+
+
+  <xs:simpleType name="blockSet">
+   <xs:annotation>
+    <xs:documentation>
+    A utility type, not for public use</xs:documentation>
+    <xs:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xs:documentation>
+   </xs:annotation>
+   <xs:union>
+    <xs:simpleType>
+     <xs:restriction base="xs:token">
+      <xs:enumeration value="#all"/>
+     </xs:restriction>
+    </xs:simpleType>
+    <xs:simpleType>
+     <xs:list>
+      <xs:simpleType>
+       <xs:restriction base="xs:derivationControl">
+        <xs:enumeration value="extension"/>
+        <xs:enumeration value="restriction"/>
+        <xs:enumeration value="substitution"/>
+       </xs:restriction>
+      </xs:simpleType>
+     </xs:list>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+
+ <xs:complexType name="element" abstract="true">
+  <xs:annotation>
+   <xs:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xs:documentation>
+  </xs:annotation>
+
+  <xs:complexContent>
+   <xs:extension base="xs:annotated">
+    <xs:sequence>
+     <xs:choice minOccurs="0">
+      <xs:element name="simpleType" type="xs:localSimpleType"/>
+      <xs:element name="complexType" type="xs:localComplexType"/>
+     </xs:choice>
+     <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attributeGroup ref="xs:defRef"/>
+    <xs:attribute name="type" type="xs:QName"/>
+    <xs:attribute name="substitutionGroup" type="xs:QName"/>
+    <xs:attributeGroup ref="xs:occurs"/>
+    <xs:attribute name="default" type="xs:string"/>
+    <xs:attribute name="fixed" type="xs:string"/>
+    <xs:attribute name="nillable" type="xs:boolean" use="optional" default="false"/>
+    <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+    <xs:attribute name="final" type="xs:derivationSet"/>
+    <xs:attribute name="block" type="xs:blockSet"/>
+    <xs:attribute name="form" type="xs:formChoice"/>
+   </xs:extension>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelElement">
+  <xs:complexContent>
+   <xs:restriction base="xs:element">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:choice minOccurs="0">
+      <xs:element name="simpleType" type="xs:localSimpleType"/>
+      <xs:element name="complexType" type="xs:localComplexType"/>
+     </xs:choice>
+     <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="ref" use="prohibited"/>
+    <xs:attribute name="form" use="prohibited"/>
+    <xs:attribute name="minOccurs" use="prohibited"/>
+    <xs:attribute name="maxOccurs" use="prohibited"/>
+    <xs:attribute name="name" use="required" type="xs:NCName"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localElement">
+  <xs:complexContent>
+   <xs:restriction base="xs:element">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:choice minOccurs="0">
+      <xs:element name="simpleType" type="xs:localSimpleType"/>
+      <xs:element name="complexType" type="xs:localComplexType"/>
+     </xs:choice>
+     <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="substitutionGroup" use="prohibited"/>
+    <xs:attribute name="final" use="prohibited"/>
+    <xs:attribute name="abstract" use="prohibited"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="element" type="xs:topLevelElement" id="element">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+  </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="group" abstract="true">
+  <xs:annotation>
+   <xs:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xs:documentation>
+  </xs:annotation>
+  <xs:complexContent>
+   <xs:extension base="xs:annotated">
+    <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/>
+    <xs:attributeGroup ref="xs:defRef"/>
+    <xs:attributeGroup ref="xs:occurs"/>
+   </xs:extension>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="realGroup">
+  <xs:complexContent>
+   <xs:restriction base="xs:group">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:choice minOccurs="0" maxOccurs="1">
+      <xs:element ref="xs:all"/>
+      <xs:element ref="xs:choice"/>
+      <xs:element ref="xs:sequence"/>
+     </xs:choice>
+    </xs:sequence>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedGroup">
+  <xs:complexContent>
+   <xs:restriction base="xs:realGroup">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:choice minOccurs="1" maxOccurs="1">
+      <xs:element name="all">
+       <xs:complexType>
+        <xs:complexContent>
+         <xs:restriction base="xs:all">
+          <xs:group ref="xs:allModel"/>
+          <xs:attribute name="minOccurs" use="prohibited"/>
+          <xs:attribute name="maxOccurs" use="prohibited"/>
+          <xs:anyAttribute namespace="##other" processContents="lax"/>
+         </xs:restriction>
+        </xs:complexContent>
+       </xs:complexType>
+      </xs:element>
+      <xs:element name="choice" type="xs:simpleExplicitGroup"/>
+      <xs:element name="sequence" type="xs:simpleExplicitGroup"/>
+     </xs:choice>
+    </xs:sequence>
+    <xs:attribute name="name" use="required" type="xs:NCName"/>
+    <xs:attribute name="ref" use="prohibited"/>
+    <xs:attribute name="minOccurs" use="prohibited"/>
+    <xs:attribute name="maxOccurs" use="prohibited"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="groupRef">
+  <xs:complexContent>
+   <xs:restriction base="xs:realGroup">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="ref" use="required" type="xs:QName"/>
+    <xs:attribute name="name" use="prohibited"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="explicitGroup">
+  <xs:annotation>
+   <xs:documentation>
+   group type for the three kinds of group</xs:documentation>
+  </xs:annotation>
+  <xs:complexContent>
+   <xs:restriction base="xs:group">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="name" type="xs:NCName" use="prohibited"/>
+    <xs:attribute name="ref" type="xs:QName" use="prohibited"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExplicitGroup">
+  <xs:complexContent>
+   <xs:restriction base="xs:explicitGroup">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="minOccurs" use="prohibited"/>
+    <xs:attribute name="maxOccurs" use="prohibited"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="allModel">
+  <xs:sequence>
+      <xs:element ref="xs:annotation" minOccurs="0"/>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+       <xs:annotation>
+        <xs:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xs:documentation>
+       </xs:annotation>
+       <xs:element name="element" type="xs:narrowMaxMin"/>
+      </xs:choice>
+     </xs:sequence>
+ </xs:group>
+
+
+ <xs:complexType name="narrowMaxMin">
+  <xs:annotation>
+   <xs:documentation>restricted max/min</xs:documentation>
+  </xs:annotation>
+  <xs:complexContent>
+   <xs:restriction base="xs:localElement">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:choice minOccurs="0">
+      <xs:element name="simpleType" type="xs:localSimpleType"/>
+      <xs:element name="complexType" type="xs:localComplexType"/>
+     </xs:choice>
+     <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="minOccurs" use="optional" default="1">
+     <xs:simpleType>
+      <xs:restriction base="xs:nonNegativeInteger">
+       <xs:enumeration value="0"/>
+       <xs:enumeration value="1"/>
+      </xs:restriction>
+     </xs:simpleType>
+    </xs:attribute>
+    <xs:attribute name="maxOccurs" use="optional" default="1">
+     <xs:simpleType>
+      <xs:restriction base="xs:allNNI">
+       <xs:enumeration value="0"/>
+       <xs:enumeration value="1"/>
+      </xs:restriction>
+     </xs:simpleType>
+    </xs:attribute>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+  <xs:complexType name="all">
+   <xs:annotation>
+    <xs:documentation>
+   Only elements allowed inside</xs:documentation>
+   </xs:annotation>
+   <xs:complexContent>
+    <xs:restriction base="xs:explicitGroup">
+     <xs:group ref="xs:allModel"/>
+     <xs:attribute name="minOccurs" use="optional" default="1">
+      <xs:simpleType>
+       <xs:restriction base="xs:nonNegativeInteger">
+        <xs:enumeration value="0"/>
+        <xs:enumeration value="1"/>
+       </xs:restriction>
+      </xs:simpleType>
+     </xs:attribute>
+     <xs:attribute name="maxOccurs" use="optional" default="1">
+      <xs:simpleType>
+       <xs:restriction base="xs:allNNI">
+        <xs:enumeration value="1"/>
+       </xs:restriction>
+      </xs:simpleType>
+     </xs:attribute>
+     <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:restriction>
+   </xs:complexContent>
+  </xs:complexType>
+
+ <xs:element name="all" id="all" type="xs:all">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+  </xs:annotation>
+ </xs:element>
+
+ <xs:element name="choice" type="xs:explicitGroup" id="choice">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+  </xs:annotation>
+ </xs:element>
+
+ <xs:element name="sequence" type="xs:explicitGroup" id="sequence">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+  </xs:annotation>
+ </xs:element>
+
+ <xs:element name="group" type="xs:namedGroup" id="group">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+  </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="wildcard">
+  <xs:complexContent>
+   <xs:extension base="xs:annotated">
+    <xs:attribute name="namespace" type="xs:namespaceList" use="optional" default="##any"/>
+    <xs:attribute name="processContents" use="optional" default="strict">
+     <xs:simpleType>
+      <xs:restriction base="xs:NMTOKEN">
+       <xs:enumeration value="skip"/>
+       <xs:enumeration value="lax"/>
+       <xs:enumeration value="strict"/>
+      </xs:restriction>
+     </xs:simpleType>
+    </xs:attribute>
+   </xs:extension>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="any" id="any">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+  </xs:annotation>
+  <xs:complexType>
+   <xs:complexContent>
+    <xs:extension base="xs:wildcard">
+     <xs:attributeGroup ref="xs:occurs"/>
+    </xs:extension>
+   </xs:complexContent>
+  </xs:complexType>
+ </xs:element>
+
+  <xs:annotation>
+   <xs:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xs:documentation>
+  </xs:annotation>
+  <xs:annotation>
+   <xs:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xs:documentation>
+  </xs:annotation>
+
+ <xs:simpleType name="namespaceList">
+  <xs:annotation>
+   <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+  </xs:annotation>
+  <xs:union>
+   <xs:simpleType>
+    <xs:restriction base="xs:token">
+     <xs:enumeration value="##any"/>
+     <xs:enumeration value="##other"/>
+    </xs:restriction>
+   </xs:simpleType>
+   <xs:simpleType>
+    <xs:list>
+     <xs:simpleType>
+      <xs:union memberTypes="xs:anyURI">
+       <xs:simpleType>
+        <xs:restriction base="xs:token">
+         <xs:enumeration value="##targetNamespace"/>
+         <xs:enumeration value="##local"/>
+        </xs:restriction>
+       </xs:simpleType>
+      </xs:union>
+     </xs:simpleType>
+    </xs:list>
+   </xs:simpleType>
+  </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+  </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="attributeGroup" abstract="true">
+  <xs:complexContent>
+   <xs:extension base="xs:annotated">
+    <xs:group ref="xs:attrDecls"/>
+    <xs:attributeGroup ref="xs:defRef"/>
+   </xs:extension>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedAttributeGroup">
+  <xs:complexContent>
+   <xs:restriction base="xs:attributeGroup">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+     <xs:group ref="xs:attrDecls"/>
+    </xs:sequence>
+    <xs:attribute name="name" use="required" type="xs:NCName"/>
+    <xs:attribute name="ref" use="prohibited"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="attributeGroupRef">
+  <xs:complexContent>
+   <xs:restriction base="xs:attributeGroup">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="ref" use="required" type="xs:QName"/>
+    <xs:attribute name="name" use="prohibited"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="attributeGroup" type="xs:namedAttributeGroup" id="attributeGroup">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+  </xs:annotation>
+ </xs:element>
+
+ <xs:element name="include" id="include">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+  </xs:annotation>
+  <xs:complexType>
+   <xs:complexContent>
+    <xs:extension base="xs:annotated">
+     <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+    </xs:extension>
+   </xs:complexContent>
+  </xs:complexType>
+ </xs:element>
+
+ <xs:element name="redefine" id="redefine">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+  </xs:annotation>
+  <xs:complexType>
+   <xs:complexContent>
+    <xs:extension base="xs:openAttrs">
+     <xs:choice minOccurs="0" maxOccurs="unbounded">
+      <xs:element ref="xs:annotation"/>
+      <xs:group ref="xs:redefinable"/>
+     </xs:choice>
+     <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+     <xs:attribute name="id" type="xs:ID"/>
+    </xs:extension>
+   </xs:complexContent>
+  </xs:complexType>
+ </xs:element>
+
+ <xs:element name="import" id="import">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+  </xs:annotation>
+  <xs:complexType>
+   <xs:complexContent>
+    <xs:extension base="xs:annotated">
+     <xs:attribute name="namespace" type="xs:anyURI"/>
+     <xs:attribute name="schemaLocation" type="xs:anyURI"/>
+    </xs:extension>
+   </xs:complexContent>
+  </xs:complexType>
+ </xs:element>
+
+ <xs:element name="selector" id="selector">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+  </xs:annotation>
+  <xs:complexType>
+  <xs:complexContent>
+   <xs:extension base="xs:annotated">
+     <xs:attribute name="xpath" use="required">
+      <xs:simpleType>
+       <xs:annotation>
+        <xs:documentation>A subset of XPath expressions for use
+in selectors</xs:documentation>
+        <xs:documentation>A utility type, not for public
+use</xs:documentation>
+       </xs:annotation>
+       <xs:restriction base="xs:token">
+        <xs:annotation>
+         <xs:documentation>The following pattern is intended to allow XPath
+                           expressions per the following EBNF:
+          Selector    ::=    Path ( '|' Path )*
+          Path    ::=    ('.//')? Step ( '/' Step )*
+          Step    ::=    '.' | NameTest
+          NameTest    ::=    QName | '*' | NCName ':' '*'
+                           child:: is also allowed
+         </xs:documentation>
+        </xs:annotation>
+        <xs:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+        </xs:pattern>
+       </xs:restriction>
+      </xs:simpleType>
+     </xs:attribute>
+   </xs:extension>
+  </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="field" id="field">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+  </xs:annotation>
+  <xs:complexType>
+  <xs:complexContent>
+   <xs:extension base="xs:annotated">
+     <xs:attribute name="xpath" use="required">
+      <xs:simpleType>
+       <xs:annotation>
+        <xs:documentation>A subset of XPath expressions for use
+in fields</xs:documentation>
+        <xs:documentation>A utility type, not for public
+use</xs:documentation>
+       </xs:annotation>
+       <xs:restriction base="xs:token">
+        <xs:annotation>
+         <xs:documentation>The following pattern is intended to allow XPath
+                           expressions per the same EBNF as for selector,
+                           with the following change:
+          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest )
+         </xs:documentation>
+        </xs:annotation>
+        <xs:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+        </xs:pattern>
+       </xs:restriction>
+      </xs:simpleType>
+     </xs:attribute>
+   </xs:extension>
+  </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="keybase">
+  <xs:complexContent>
+   <xs:extension base="xs:annotated">
+    <xs:sequence>
+     <xs:element ref="xs:selector"/>
+     <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="name" type="xs:NCName" use="required"/>
+   </xs:extension>
+  </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="identityConstraint">
+  <xs:annotation>
+   <xs:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xs:documentation>
+  </xs:annotation>
+  <xs:choice>
+   <xs:element ref="xs:unique"/>
+   <xs:element ref="xs:key"/>
+   <xs:element ref="xs:keyref"/>
+  </xs:choice>
+ </xs:group>
+
+ <xs:element name="unique" type="xs:keybase" id="unique">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+  </xs:annotation>
+ </xs:element>
+ <xs:element name="key" type="xs:keybase" id="key">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+  </xs:annotation>
+ </xs:element>
+ <xs:element name="keyref" id="keyref">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+  </xs:annotation>
+  <xs:complexType>
+   <xs:complexContent>
+    <xs:extension base="xs:keybase">
+     <xs:attribute name="refer" type="xs:QName" use="required"/>
+    </xs:extension>
+   </xs:complexContent>
+  </xs:complexType>
+ </xs:element>
+
+ <xs:element name="notation" id="notation">
+  <xs:annotation>
+   <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+  </xs:annotation>
+  <xs:complexType>
+   <xs:complexContent>
+    <xs:extension base="xs:annotated">
+     <xs:attribute name="name" type="xs:NCName" use="required"/>
+     <xs:attribute name="public" type="xs:public"/>
+     <xs:attribute name="system" type="xs:anyURI"/>
+    </xs:extension>
+   </xs:complexContent>
+  </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="public">
+  <xs:annotation>
+   <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+   <xs:documentation>
+   A public identifier, per ISO 8879</xs:documentation>
+  </xs:annotation>
+  <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+
+ <xs:element name="appinfo" id="appinfo">
+   <xs:annotation>
+     <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+   </xs:annotation>
+   <xs:complexType mixed="true">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+     <xs:any processContents="lax"/>
+    </xs:sequence>
+    <xs:attribute name="source" type="xs:anyURI"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:complexType>
+ </xs:element>
+
+ <xs:element name="documentation" id="documentation">
+   <xs:annotation>
+     <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+   </xs:annotation>
+   <xs:complexType mixed="true">
+    <xs:sequence minOccurs="0" maxOccurs="unbounded">
+     <xs:any processContents="lax"/>
+    </xs:sequence>
+    <xs:attribute name="source" type="xs:anyURI"/>
+    <xs:attribute ref="xml:lang"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:complexType>
+ </xs:element>
+
+ <xs:element name="annotation" id="annotation">
+   <xs:annotation>
+     <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+   </xs:annotation>
+   <xs:complexType>
+    <xs:complexContent>
+     <xs:extension base="xs:openAttrs">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+       <xs:element ref="xs:appinfo"/>
+       <xs:element ref="xs:documentation"/>
+      </xs:choice>
+      <xs:attribute name="id" type="xs:ID"/>
+     </xs:extension>
+    </xs:complexContent>
+   </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+  <xs:documentation>
+   notations for use within XML Schema schemas</xs:documentation>
+ </xs:annotation>
+
+ <xs:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xs:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+
+ <xs:complexType name="anyType" mixed="true">
+  <xs:annotation>
+   <xs:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xs:documentation>
+  </xs:annotation>
+  <xs:sequence>
+   <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+  </xs:sequence>
+  <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+
+  <xs:annotation>
+    <xs:documentation>
+      First the built-in primitive datatypes.  These definitions are for
+      information only, the real built-in definitions are magic.
+    </xs:documentation>
+
+    <xs:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xs:documentation>
+  </xs:annotation>
+
+  <xs:simpleType name="string" id="string">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#string"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="preserve" id="string.preserve"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="boolean" id="boolean">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="boolean.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="float" id="float">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#float"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="float.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="double" id="double">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#double"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="double.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="decimal" id="decimal">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="totalDigits"/>
+        <hfp:hasFacet name="fractionDigits"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="decimal.whiteSpace"/>
+    </xs:restriction>
+   </xs:simpleType>
+
+   <xs:simpleType name="duration" id="duration">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="duration.whiteSpace"/>
+    </xs:restriction>
+   </xs:simpleType>
+
+ <xs:simpleType name="dateTime" id="dateTime">
+    <xs:annotation>
+    <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="dateTime.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="time" id="time">
+    <xs:annotation>
+    <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#time"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="time.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="date" id="date">
+   <xs:annotation>
+    <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#date"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="date.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="gYearMonth" id="gYearMonth">
+   <xs:annotation>
+    <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="gYearMonth.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="gYear" id="gYear">
+    <xs:annotation>
+    <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="gYear.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+ <xs:simpleType name="gMonthDay" id="gMonthDay">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+       <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+         <xs:whiteSpace value="collapse" fixed="true" id="gMonthDay.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="gDay" id="gDay">
+    <xs:annotation>
+  <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+         <xs:whiteSpace value="collapse" fixed="true" id="gDay.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+ <xs:simpleType name="gMonth" id="gMonth">
+    <xs:annotation>
+  <xs:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+         <xs:whiteSpace value="collapse" fixed="true" id="gMonth.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+   <xs:simpleType name="hexBinary" id="hexBinary">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="hexBinary.whiteSpace"/>
+    </xs:restriction>
+   </xs:simpleType>
+
+ <xs:simpleType name="base64Binary" id="base64Binary">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="base64Binary.whiteSpace"/>
+    </xs:restriction>
+   </xs:simpleType>
+
+   <xs:simpleType name="anyURI" id="anyURI">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="anyURI.whiteSpace"/>
+    </xs:restriction>
+   </xs:simpleType>
+
+  <xs:simpleType name="QName" id="QName">
+    <xs:annotation>
+        <xs:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="QName.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+   <xs:simpleType name="NOTATION" id="NOTATION">
+    <xs:annotation>
+        <xs:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+      <xs:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:anySimpleType">
+      <xs:whiteSpace value="collapse" fixed="true" id="NOTATION.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:annotation>
+    <xs:documentation>
+      Now the derived primitive types
+    </xs:documentation>
+  </xs:annotation>
+
+  <xs:simpleType name="normalizedString" id="normalizedString">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+    </xs:annotation>
+    <xs:restriction base="xs:string">
+      <xs:whiteSpace value="replace" id="normalizedString.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="token" id="token">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#token"/>
+    </xs:annotation>
+    <xs:restriction base="xs:normalizedString">
+      <xs:whiteSpace value="collapse" id="token.whiteSpace"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="language" id="language">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#language"/>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:pattern value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*" id="language.pattern">
+        <xs:annotation>
+          <xs:documentation source="http://www.ietf.org/rfc/rfc3066.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).
+          </xs:documentation>
+        </xs:annotation>
+      </xs:pattern>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="IDREFS" id="IDREFS">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+    </xs:annotation>
+    <xs:restriction>
+      <xs:simpleType>
+        <xs:list itemType="xs:IDREF"/>
+      </xs:simpleType>
+        <xs:minLength value="1" id="IDREFS.minLength"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="ENTITIES" id="ENTITIES">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+    </xs:annotation>
+    <xs:restriction>
+      <xs:simpleType>
+        <xs:list itemType="xs:ENTITY"/>
+      </xs:simpleType>
+        <xs:minLength value="1" id="ENTITIES.minLength"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="NMTOKEN" id="NMTOKEN">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:pattern value="\c+" id="NMTOKEN.pattern">
+        <xs:annotation>
+          <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xs:documentation>
+        </xs:annotation>
+      </xs:pattern>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="NMTOKENS" id="NMTOKENS">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+    </xs:annotation>
+    <xs:restriction>
+      <xs:simpleType>
+        <xs:list itemType="xs:NMTOKEN"/>
+      </xs:simpleType>
+        <xs:minLength value="1" id="NMTOKENS.minLength"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="Name" id="Name">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:pattern value="\i\c*" id="Name.pattern">
+        <xs:annotation>
+          <xs:documentation source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xs:documentation>
+        </xs:annotation>
+      </xs:pattern>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="NCName" id="NCName">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+    </xs:annotation>
+    <xs:restriction base="xs:Name">
+      <xs:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+        <xs:annotation>
+          <xs:documentation source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xs:documentation>
+        </xs:annotation>
+      </xs:pattern>
+    </xs:restriction>
+  </xs:simpleType>
+
+   <xs:simpleType name="ID" id="ID">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+    </xs:annotation>
+    <xs:restriction base="xs:NCName"/>
+   </xs:simpleType>
+
+   <xs:simpleType name="IDREF" id="IDREF">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+    </xs:annotation>
+    <xs:restriction base="xs:NCName"/>
+   </xs:simpleType>
+
+   <xs:simpleType name="ENTITY" id="ENTITY">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+    </xs:annotation>
+    <xs:restriction base="xs:NCName"/>
+   </xs:simpleType>
+
+  <xs:simpleType name="integer" id="integer">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+    </xs:annotation>
+    <xs:restriction base="xs:decimal">
+      <xs:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+      <xs:pattern value="[\-+]?[0-9]+"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+    </xs:annotation>
+    <xs:restriction base="xs:integer">
+      <xs:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="negativeInteger" id="negativeInteger">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+    </xs:annotation>
+    <xs:restriction base="xs:nonPositiveInteger">
+      <xs:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="long" id="long">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#long"/>
+    </xs:annotation>
+    <xs:restriction base="xs:integer">
+      <xs:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+      <xs:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="int" id="int">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#int"/>
+    </xs:annotation>
+    <xs:restriction base="xs:long">
+      <xs:minInclusive value="-2147483648" id="int.minInclusive"/>
+      <xs:maxInclusive value="2147483647" id="int.maxInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="short" id="short">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#short"/>
+    </xs:annotation>
+    <xs:restriction base="xs:int">
+      <xs:minInclusive value="-32768" id="short.minInclusive"/>
+      <xs:maxInclusive value="32767" id="short.maxInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="byte" id="byte">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+    </xs:annotation>
+    <xs:restriction base="xs:short">
+      <xs:minInclusive value="-128" id="byte.minInclusive"/>
+      <xs:maxInclusive value="127" id="byte.maxInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+    </xs:annotation>
+    <xs:restriction base="xs:integer">
+      <xs:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="unsignedLong" id="unsignedLong">
+    <xs:annotation>
+      <xs:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xs:appinfo>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+    </xs:annotation>
+    <xs:restriction base="xs:nonNegativeInteger">
+      <xs:maxInclusive value="18446744073709551615" id="unsignedLong.maxInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="unsignedInt" id="unsignedInt">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+    </xs:annotation>
+    <xs:restriction base="xs:unsignedLong">
+      <xs:maxInclusive value="4294967295" id="unsignedInt.maxInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="unsignedShort" id="unsignedShort">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+    </xs:annotation>
+    <xs:restriction base="xs:unsignedInt">
+      <xs:maxInclusive value="65535" id="unsignedShort.maxInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="unsignedByte" id="unsignedByte">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+    </xs:annotation>
+    <xs:restriction base="xs:unsignedShort">
+      <xs:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="positiveInteger" id="positiveInteger">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+    </xs:annotation>
+    <xs:restriction base="xs:nonNegativeInteger">
+      <xs:minInclusive value="1" id="positiveInteger.minInclusive"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+ <xs:simpleType name="derivationControl">
+  <xs:annotation>
+   <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+  </xs:annotation>
+  <xs:restriction base="xs:NMTOKEN">
+   <xs:enumeration value="substitution"/>
+   <xs:enumeration value="extension"/>
+   <xs:enumeration value="restriction"/>
+   <xs:enumeration value="list"/>
+   <xs:enumeration value="union"/>
+  </xs:restriction>
+ </xs:simpleType>
+
+ <xs:group name="simpleDerivation">
+  <xs:choice>
+    <xs:element ref="xs:restriction"/>
+    <xs:element ref="xs:list"/>
+    <xs:element ref="xs:union"/>
+  </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="simpleDerivationSet">
+  <xs:annotation>
+   <xs:documentation>
+   #all or (possibly empty) subset of {restriction, union, list}
+   </xs:documentation>
+   <xs:documentation>
+   A utility type, not for public use</xs:documentation>
+  </xs:annotation>
+  <xs:union>
+   <xs:simpleType>
+    <xs:restriction base="xs:token">
+     <xs:enumeration value="#all"/>
+    </xs:restriction>
+   </xs:simpleType>
+   <xs:simpleType>
+    <xs:list>
+     <xs:simpleType>
+      <xs:restriction base="xs:derivationControl">
+       <xs:enumeration value="list"/>
+       <xs:enumeration value="union"/>
+       <xs:enumeration value="restriction"/>
+      </xs:restriction>
+     </xs:simpleType>
+    </xs:list>
+   </xs:simpleType>
+  </xs:union>
+ </xs:simpleType>
+
+  <xs:complexType name="simpleType" abstract="true">
+    <xs:complexContent>
+      <xs:extension base="xs:annotated">
+        <xs:group ref="xs:simpleDerivation"/>
+        <xs:attribute name="final" type="xs:simpleDerivationSet"/>
+        <xs:attribute name="name" type="xs:NCName">
+          <xs:annotation>
+            <xs:documentation>
+              Can be restricted to required or forbidden
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="topLevelSimpleType">
+    <xs:complexContent>
+      <xs:restriction base="xs:simpleType">
+        <xs:sequence>
+          <xs:element ref="xs:annotation" minOccurs="0"/>
+          <xs:group ref="xs:simpleDerivation"/>
+        </xs:sequence>
+        <xs:attribute name="name" use="required" type="xs:NCName">
+          <xs:annotation>
+            <xs:documentation>
+              Required at the top level
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+       <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:restriction>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:complexType name="localSimpleType">
+    <xs:complexContent>
+      <xs:restriction base="xs:simpleType">
+        <xs:sequence>
+          <xs:element ref="xs:annotation" minOccurs="0"/>
+          <xs:group ref="xs:simpleDerivation"/>
+        </xs:sequence>
+        <xs:attribute name="name" use="prohibited">
+          <xs:annotation>
+            <xs:documentation>
+              Forbidden when nested
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="final" use="prohibited"/>
+       <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:restriction>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+    </xs:annotation>
+  </xs:element>
+
+  <xs:group name="facets">
+   <xs:annotation>
+    <xs:documentation>
+       We should use a substitution group for facets, but
+       that's ruled out because it would allow users to
+       add their own, which we're not ready for yet.
+    </xs:documentation>
+   </xs:annotation>
+   <xs:choice>
+    <xs:element ref="xs:minExclusive"/>
+    <xs:element ref="xs:minInclusive"/>
+    <xs:element ref="xs:maxExclusive"/>
+    <xs:element ref="xs:maxInclusive"/>
+    <xs:element ref="xs:totalDigits"/>
+    <xs:element ref="xs:fractionDigits"/>
+    <xs:element ref="xs:length"/>
+    <xs:element ref="xs:minLength"/>
+    <xs:element ref="xs:maxLength"/>
+    <xs:element ref="xs:enumeration"/>
+    <xs:element ref="xs:whiteSpace"/>
+    <xs:element ref="xs:pattern"/>
+   </xs:choice>
+  </xs:group>
+
+  <xs:group name="simpleRestrictionModel">
+   <xs:sequence>
+    <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+    <xs:group ref="xs:facets" minOccurs="0" maxOccurs="unbounded"/>
+   </xs:sequence>
+  </xs:group>
+
+  <xs:element name="restriction" id="restriction">
+   <xs:complexType>
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xs:documentation>
+      </xs:annotation>
+      <xs:complexContent>
+        <xs:extension base="xs:annotated">
+         <xs:group ref="xs:simpleRestrictionModel"/>
+         <xs:attribute name="base" type="xs:QName" use="optional"/>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="list" id="list">
+   <xs:complexType>
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xs:documentation>
+      </xs:annotation>
+      <xs:complexContent>
+        <xs:extension base="xs:annotated">
+          <xs:sequence>
+            <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+          </xs:sequence>
+          <xs:attribute name="itemType" type="xs:QName" use="optional"/>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="union" id="union">
+   <xs:complexType>
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xs:documentation>
+      </xs:annotation>
+      <xs:complexContent>
+        <xs:extension base="xs:annotated">
+          <xs:sequence>
+            <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0" maxOccurs="unbounded"/>
+          </xs:sequence>
+          <xs:attribute name="memberTypes" use="optional">
+            <xs:simpleType>
+              <xs:list itemType="xs:QName"/>
+            </xs:simpleType>
+          </xs:attribute>
+        </xs:extension>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:complexType name="facet">
+    <xs:complexContent>
+      <xs:extension base="xs:annotated">
+        <xs:attribute name="value" use="required"/>
+        <xs:attribute name="fixed" type="xs:boolean" use="optional" default="false"/>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
+
+ <xs:complexType name="noFixedFacet">
+  <xs:complexContent>
+   <xs:restriction base="xs:facet">
+    <xs:sequence>
+     <xs:element ref="xs:annotation" minOccurs="0"/>
+    </xs:sequence>
+    <xs:attribute name="fixed" use="prohibited"/>
+    <xs:anyAttribute namespace="##other" processContents="lax"/>
+   </xs:restriction>
+  </xs:complexContent>
+ </xs:complexType>
+
+  <xs:element name="minExclusive" id="minExclusive" type="xs:facet">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="minInclusive" id="minInclusive" type="xs:facet">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+    </xs:annotation>
+  </xs:element>
+
+  <xs:element name="maxExclusive" id="maxExclusive" type="xs:facet">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="maxInclusive" id="maxInclusive" type="xs:facet">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+    </xs:annotation>
+  </xs:element>
+
+  <xs:complexType name="numFacet">
+    <xs:complexContent>
+      <xs:restriction base="xs:facet">
+       <xs:sequence>
+         <xs:element ref="xs:annotation" minOccurs="0"/>
+       </xs:sequence>
+       <xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/>
+       <xs:anyAttribute namespace="##other" processContents="lax"/>
+      </xs:restriction>
+    </xs:complexContent>
+  </xs:complexType>
+
+  <xs:element name="totalDigits" id="totalDigits">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:restriction base="xs:numFacet">
+          <xs:sequence>
+            <xs:element ref="xs:annotation" minOccurs="0"/>
+          </xs:sequence>
+          <xs:attribute name="value" type="xs:positiveInteger" use="required"/>
+         <xs:anyAttribute namespace="##other" processContents="lax"/>
+        </xs:restriction>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="fractionDigits" id="fractionDigits" type="xs:numFacet">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+    </xs:annotation>
+  </xs:element>
+
+  <xs:element name="length" id="length" type="xs:numFacet">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="minLength" id="minLength" type="xs:numFacet">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="maxLength" id="maxLength" type="xs:numFacet">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+    </xs:annotation>
+  </xs:element>
+
+  <xs:element name="enumeration" id="enumeration" type="xs:noFixedFacet">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+    </xs:annotation>
+  </xs:element>
+
+  <xs:element name="whiteSpace" id="whiteSpace">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:restriction base="xs:facet">
+          <xs:sequence>
+            <xs:element ref="xs:annotation" minOccurs="0"/>
+          </xs:sequence>
+          <xs:attribute name="value" use="required">
+            <xs:simpleType>
+              <xs:restriction base="xs:NMTOKEN">
+                <xs:enumeration value="preserve"/>
+                <xs:enumeration value="replace"/>
+                <xs:enumeration value="collapse"/>
+              </xs:restriction>
+            </xs:simpleType>
+          </xs:attribute>
+         <xs:anyAttribute namespace="##other" processContents="lax"/>
+        </xs:restriction>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="pattern" id="pattern">
+    <xs:annotation>
+      <xs:documentation source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:complexContent>
+        <xs:restriction base="xs:noFixedFacet">
+          <xs:sequence>
+            <xs:element ref="xs:annotation" minOccurs="0"/>
+          </xs:sequence>
+          <xs:attribute name="value" type="xs:string" use="required"/>
+         <xs:anyAttribute namespace="##other" processContents="lax"/>
+        </xs:restriction>
+      </xs:complexContent>
+    </xs:complexType>
+  </xs:element>
+
+</xs:schema>
diff --git a/etc/vmware-tools/vgauth/schemas/catalog.xml b/etc/vmware-tools/vgauth/schemas/catalog.xml
new file mode 100644 (file)
index 0000000..da78917
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+  <uri name="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" uri="xmldsig-core-schema.xsd"/>
+  <uri name="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd" uri="xenc-schema.xsd"/>
+</catalog>
diff --git a/etc/vmware-tools/vgauth/schemas/datatypes.dtd b/etc/vmware-tools/vgauth/schemas/datatypes.dtd
new file mode 100644 (file)
index 0000000..ed07e4e
--- /dev/null
@@ -0,0 +1,203 @@
+<!--
+        DTD for XML Schemas: Part 2: Datatypes
+        $Id: datatypes.dtd,v 1.23 2001/03/16 17:36:30 ht Exp $
+        Note this DTD is NOT normative, or even definitive. - - the
+        prose copy in the datatypes REC is the definitive version
+        (which shouldn't differ from this one except for this comment
+        and entity expansions, but just in case)
+  -->
+
+<!--
+        This DTD cannot be used on its own, it is intended
+        only for incorporation in XMLSchema.dtd, q.v.
+  -->
+
+<!-- Define all the element names, with optional prefix -->
+<!ENTITY % simpleType "%p;simpleType">
+<!ENTITY % restriction "%p;restriction">
+<!ENTITY % list "%p;list">
+<!ENTITY % union "%p;union">
+<!ENTITY % maxExclusive "%p;maxExclusive">
+<!ENTITY % minExclusive "%p;minExclusive">
+<!ENTITY % maxInclusive "%p;maxInclusive">
+<!ENTITY % minInclusive "%p;minInclusive">
+<!ENTITY % totalDigits "%p;totalDigits">
+<!ENTITY % fractionDigits "%p;fractionDigits">
+<!ENTITY % length "%p;length">
+<!ENTITY % minLength "%p;minLength">
+<!ENTITY % maxLength "%p;maxLength">
+<!ENTITY % enumeration "%p;enumeration">
+<!ENTITY % whiteSpace "%p;whiteSpace">
+<!ENTITY % pattern "%p;pattern">
+
+<!--
+        Customisation entities for the ATTLIST of each element
+        type. Define one of these if your schema takes advantage
+        of the anyAttribute='##other' in the schema for schemas
+  -->
+
+<!ENTITY % simpleTypeAttrs "">
+<!ENTITY % restrictionAttrs "">
+<!ENTITY % listAttrs "">
+<!ENTITY % unionAttrs "">
+<!ENTITY % maxExclusiveAttrs "">
+<!ENTITY % minExclusiveAttrs "">
+<!ENTITY % maxInclusiveAttrs "">
+<!ENTITY % minInclusiveAttrs "">
+<!ENTITY % totalDigitsAttrs "">
+<!ENTITY % fractionDigitsAttrs "">
+<!ENTITY % lengthAttrs "">
+<!ENTITY % minLengthAttrs "">
+<!ENTITY % maxLengthAttrs "">
+<!ENTITY % enumerationAttrs "">
+<!ENTITY % whiteSpaceAttrs "">
+<!ENTITY % patternAttrs "">
+
+<!-- Define some entities for informative use as attribute
+        types -->
+<!ENTITY % URIref "CDATA">
+<!ENTITY % XPathExpr "CDATA">
+<!ENTITY % QName "NMTOKEN">
+<!ENTITY % QNames "NMTOKENS">
+<!ENTITY % NCName "NMTOKEN">
+<!ENTITY % nonNegativeInteger "NMTOKEN">
+<!ENTITY % boolean "(true|false)">
+<!ENTITY % simpleDerivationSet "CDATA">
+<!--
+        #all or space-separated list drawn from derivationChoice
+  -->
+
+<!--
+        Note that the use of 'facet' below is less restrictive
+        than is really intended:  There should in fact be no
+        more than one of each of minInclusive, minExclusive,
+        maxInclusive, maxExclusive, totalDigits, fractionDigits,
+        length, maxLength, minLength within datatype,
+        and the min- and max- variants of Inclusive and Exclusive
+        are mutually exclusive. On the other hand,  pattern and
+        enumeration may repeat.
+  -->
+<!ENTITY % minBound "(%minInclusive; | %minExclusive;)">
+<!ENTITY % maxBound "(%maxInclusive; | %maxExclusive;)">
+<!ENTITY % bounds "%minBound; | %maxBound;">
+<!ENTITY % numeric "%totalDigits; | %fractionDigits;">
+<!ENTITY % ordered "%bounds; | %numeric;">
+<!ENTITY % unordered
+   "%pattern; | %enumeration; | %whiteSpace; | %length; |
+   %maxLength; | %minLength;">
+<!ENTITY % facet "%ordered; | %unordered;">
+<!ENTITY % facetAttr
+        "value CDATA #REQUIRED
+        id ID #IMPLIED">
+<!ENTITY % fixedAttr "fixed %boolean; #IMPLIED">
+<!ENTITY % facetModel "(%annotation;)?">
+<!ELEMENT %simpleType;
+        ((%annotation;)?, (%restriction; | %list; | %union;))>
+<!ATTLIST %simpleType;
+    name      %NCName; #IMPLIED
+    final     %simpleDerivationSet; #IMPLIED
+    id        ID       #IMPLIED
+    %simpleTypeAttrs;>
+<!-- name is required at top level -->
+<!ELEMENT %restriction; ((%annotation;)?,
+                         (%restriction1; |
+                          ((%simpleType;)?,(%facet;)*)),
+                         (%attrDecls;))>
+<!ATTLIST %restriction;
+    base      %QName;                  #IMPLIED
+    id        ID       #IMPLIED
+    %restrictionAttrs;>
+<!--
+        base and simpleType child are mutually exclusive,
+        one is required.
+
+        restriction is shared between simpleType and
+        simpleContent and complexContent (in XMLSchema.xsd).
+        restriction1 is for the latter cases, when this
+        is restricting a complex type, as is attrDecls.
+  -->
+<!ELEMENT %list; ((%annotation;)?,(%simpleType;)?)>
+<!ATTLIST %list;
+    itemType      %QName;             #IMPLIED
+    id        ID       #IMPLIED
+    %listAttrs;>
+<!--
+        itemType and simpleType child are mutually exclusive,
+        one is required
+  -->
+<!ELEMENT %union; ((%annotation;)?,(%simpleType;)*)>
+<!ATTLIST %union;
+    id            ID       #IMPLIED
+    memberTypes   %QNames;            #IMPLIED
+    %unionAttrs;>
+<!--
+        At least one item in memberTypes or one simpleType
+        child is required
+  -->
+
+<!ELEMENT %maxExclusive; %facetModel;>
+<!ATTLIST %maxExclusive;
+        %facetAttr;
+        %fixedAttr;
+        %maxExclusiveAttrs;>
+<!ELEMENT %minExclusive; %facetModel;>
+<!ATTLIST %minExclusive;
+        %facetAttr;
+        %fixedAttr;
+        %minExclusiveAttrs;>
+
+<!ELEMENT %maxInclusive; %facetModel;>
+<!ATTLIST %maxInclusive;
+        %facetAttr;
+        %fixedAttr;
+        %maxInclusiveAttrs;>
+<!ELEMENT %minInclusive; %facetModel;>
+<!ATTLIST %minInclusive;
+        %facetAttr;
+        %fixedAttr;
+        %minInclusiveAttrs;>
+
+<!ELEMENT %totalDigits; %facetModel;>
+<!ATTLIST %totalDigits;
+        %facetAttr;
+        %fixedAttr;
+        %totalDigitsAttrs;>
+<!ELEMENT %fractionDigits; %facetModel;>
+<!ATTLIST %fractionDigits;
+        %facetAttr;
+        %fixedAttr;
+        %fractionDigitsAttrs;>
+
+<!ELEMENT %length; %facetModel;>
+<!ATTLIST %length;
+        %facetAttr;
+        %fixedAttr;
+        %lengthAttrs;>
+<!ELEMENT %minLength; %facetModel;>
+<!ATTLIST %minLength;
+        %facetAttr;
+        %fixedAttr;
+        %minLengthAttrs;>
+<!ELEMENT %maxLength; %facetModel;>
+<!ATTLIST %maxLength;
+        %facetAttr;
+        %fixedAttr;
+        %maxLengthAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %enumeration; %facetModel;>
+<!ATTLIST %enumeration;
+        %facetAttr;
+        %enumerationAttrs;>
+
+<!ELEMENT %whiteSpace; %facetModel;>
+<!ATTLIST %whiteSpace;
+        %facetAttr;
+        %fixedAttr;
+        %whiteSpaceAttrs;>
+
+<!-- This one can be repeated -->
+<!ELEMENT %pattern; %facetModel;>
+<!ATTLIST %pattern;
+        %facetAttr;
+        %patternAttrs;>
diff --git a/etc/vmware-tools/vgauth/schemas/saml-schema-assertion-2.0.xsd b/etc/vmware-tools/vgauth/schemas/saml-schema-assertion-2.0.xsd
new file mode 100644 (file)
index 0000000..6aa3b27
--- /dev/null
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="US-ASCII"?>\r
+<schema\r
+    targetNamespace="urn:oasis:names:tc:SAML:2.0:assertion"\r
+    xmlns="http://www.w3.org/2001/XMLSchema"\r
+    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"\r
+    xmlns:ds="http://www.w3.org/2000/09/xmldsig#"\r
+    xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"\r
+    elementFormDefault="unqualified"\r
+    attributeFormDefault="unqualified"\r
+    blockDefault="substitution"\r
+    version="2.0">\r
+    <import namespace="http://www.w3.org/2000/09/xmldsig#"\r
+        schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/>\r
+    <import namespace="http://www.w3.org/2001/04/xmlenc#"\r
+        schemaLocation="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd"/>\r
+    <annotation>\r
+        <documentation>\r
+            Document identifier: saml-schema-assertion-2.0\r
+            Location: http://docs.oasis-open.org/security/saml/v2.0/\r
+            Revision history:\r
+            V1.0 (November, 2002):\r
+              Initial Standard Schema.\r
+            V1.1 (September, 2003):\r
+              Updates within the same V1.0 namespace.\r
+            V2.0 (March, 2005):\r
+              New assertion schema for SAML V2.0 namespace.\r
+        </documentation>\r
+    </annotation>\r
+    <attributeGroup name="IDNameQualifiers">\r
+        <attribute name="NameQualifier" type="string" use="optional"/>\r
+        <attribute name="SPNameQualifier" type="string" use="optional"/>\r
+    </attributeGroup>\r
+    <element name="BaseID" type="saml:BaseIDAbstractType"/>\r
+    <complexType name="BaseIDAbstractType" abstract="true">\r
+        <attributeGroup ref="saml:IDNameQualifiers"/>\r
+    </complexType>\r
+    <element name="NameID" type="saml:NameIDType"/>\r
+    <complexType name="NameIDType">\r
+        <simpleContent>\r
+            <extension base="string">\r
+                <attributeGroup ref="saml:IDNameQualifiers"/>\r
+                <attribute name="Format" type="anyURI" use="optional"/>\r
+                <attribute name="SPProvidedID" type="string" use="optional"/>\r
+            </extension>\r
+        </simpleContent>\r
+    </complexType>\r
+    <complexType name="EncryptedElementType">\r
+        <sequence>\r
+            <element ref="xenc:EncryptedData"/>\r
+            <element ref="xenc:EncryptedKey" minOccurs="0" maxOccurs="unbounded"/>\r
+        </sequence>\r
+    </complexType>\r
+    <element name="EncryptedID" type="saml:EncryptedElementType"/>\r
+    <element name="Issuer" type="saml:NameIDType"/>\r
+    <element name="AssertionIDRef" type="NCName"/>\r
+    <element name="AssertionURIRef" type="anyURI"/>\r
+    <element name="Assertion" type="saml:AssertionType"/>\r
+    <complexType name="AssertionType">\r
+        <sequence>\r
+            <element ref="saml:Issuer"/>\r
+            <element ref="ds:Signature" minOccurs="0"/>\r
+            <element ref="saml:Subject" minOccurs="0"/>\r
+            <element ref="saml:Conditions" minOccurs="0"/>\r
+            <element ref="saml:Advice" minOccurs="0"/>\r
+            <choice minOccurs="0" maxOccurs="unbounded">\r
+                <element ref="saml:Statement"/>\r
+                <element ref="saml:AuthnStatement"/>\r
+                <element ref="saml:AuthzDecisionStatement"/>\r
+                <element ref="saml:AttributeStatement"/>\r
+            </choice>\r
+        </sequence>\r
+        <attribute name="Version" type="string" use="required"/>\r
+        <attribute name="ID" type="ID" use="required"/>\r
+        <attribute name="IssueInstant" type="dateTime" use="required"/>\r
+    </complexType>\r
+    <element name="Subject" type="saml:SubjectType"/>\r
+    <complexType name="SubjectType">\r
+        <choice>\r
+            <sequence>\r
+                <choice>\r
+                    <element ref="saml:BaseID"/>\r
+                    <element ref="saml:NameID"/>\r
+                    <element ref="saml:EncryptedID"/>\r
+                </choice>\r
+                <element ref="saml:SubjectConfirmation" minOccurs="0" maxOccurs="unbounded"/>\r
+            </sequence>\r
+            <element ref="saml:SubjectConfirmation" maxOccurs="unbounded"/>\r
+        </choice>\r
+    </complexType>\r
+    <element name="SubjectConfirmation" type="saml:SubjectConfirmationType"/>\r
+    <complexType name="SubjectConfirmationType">\r
+        <sequence>\r
+            <choice minOccurs="0">\r
+                <element ref="saml:BaseID"/>\r
+                <element ref="saml:NameID"/>\r
+                <element ref="saml:EncryptedID"/>\r
+            </choice>\r
+            <element ref="saml:SubjectConfirmationData" minOccurs="0"/>\r
+        </sequence>\r
+        <attribute name="Method" type="anyURI" use="required"/>\r
+    </complexType>\r
+    <element name="SubjectConfirmationData" type="saml:SubjectConfirmationDataType"/>\r
+    <complexType name="SubjectConfirmationDataType" mixed="true">\r
+        <complexContent>\r
+            <restriction base="anyType">\r
+                <sequence>\r
+                    <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
+                </sequence>\r
+                <attribute name="NotBefore" type="dateTime" use="optional"/>\r
+                <attribute name="NotOnOrAfter" type="dateTime" use="optional"/>\r
+                <attribute name="Recipient" type="anyURI" use="optional"/>\r
+                <attribute name="InResponseTo" type="NCName" use="optional"/>\r
+                <attribute name="Address" type="string" use="optional"/>\r
+                <anyAttribute namespace="##other" processContents="lax"/>\r
+            </restriction>\r
+        </complexContent>\r
+    </complexType>\r
+    <complexType name="KeyInfoConfirmationDataType" mixed="false">\r
+        <complexContent>\r
+            <restriction base="saml:SubjectConfirmationDataType">\r
+                <sequence>\r
+                    <element ref="ds:KeyInfo" maxOccurs="unbounded"/>\r
+                </sequence>\r
+            </restriction>\r
+        </complexContent>\r
+    </complexType>\r
+    <element name="Conditions" type="saml:ConditionsType"/>\r
+    <complexType name="ConditionsType">\r
+        <choice minOccurs="0" maxOccurs="unbounded">\r
+            <element ref="saml:Condition"/>\r
+            <element ref="saml:AudienceRestriction"/>\r
+            <element ref="saml:OneTimeUse"/>\r
+            <element ref="saml:ProxyRestriction"/>\r
+        </choice>\r
+        <attribute name="NotBefore" type="dateTime" use="optional"/>\r
+        <attribute name="NotOnOrAfter" type="dateTime" use="optional"/>\r
+    </complexType>\r
+    <element name="Condition" type="saml:ConditionAbstractType"/>\r
+    <complexType name="ConditionAbstractType" abstract="true"/>\r
+    <element name="AudienceRestriction" type="saml:AudienceRestrictionType"/>\r
+    <complexType name="AudienceRestrictionType">\r
+        <complexContent>\r
+            <extension base="saml:ConditionAbstractType">\r
+                <sequence>\r
+                    <element ref="saml:Audience" maxOccurs="unbounded"/>\r
+                </sequence>\r
+            </extension>\r
+        </complexContent>\r
+    </complexType>\r
+    <element name="Audience" type="anyURI"/>\r
+    <element name="OneTimeUse" type="saml:OneTimeUseType" />\r
+    <complexType name="OneTimeUseType">\r
+        <complexContent>\r
+            <extension base="saml:ConditionAbstractType"/>\r
+        </complexContent>\r
+    </complexType>\r
+    <element name="ProxyRestriction" type="saml:ProxyRestrictionType"/>\r
+    <complexType name="ProxyRestrictionType">\r
+    <complexContent>\r
+        <extension base="saml:ConditionAbstractType">\r
+            <sequence>\r
+                <element ref="saml:Audience" minOccurs="0" maxOccurs="unbounded"/>\r
+            </sequence>\r
+            <attribute name="Count" type="nonNegativeInteger" use="optional"/>\r
+        </extension>\r
+       </complexContent>\r
+    </complexType>\r
+    <element name="Advice" type="saml:AdviceType"/>\r
+    <complexType name="AdviceType">\r
+        <choice minOccurs="0" maxOccurs="unbounded">\r
+            <element ref="saml:AssertionIDRef"/>\r
+            <element ref="saml:AssertionURIRef"/>\r
+            <element ref="saml:Assertion"/>\r
+            <element ref="saml:EncryptedAssertion"/>\r
+            <any namespace="##other" processContents="lax"/>\r
+        </choice>\r
+    </complexType>\r
+    <element name="EncryptedAssertion" type="saml:EncryptedElementType"/>\r
+    <element name="Statement" type="saml:StatementAbstractType"/>\r
+    <complexType name="StatementAbstractType" abstract="true"/>\r
+    <element name="AuthnStatement" type="saml:AuthnStatementType"/>\r
+    <complexType name="AuthnStatementType">\r
+        <complexContent>\r
+            <extension base="saml:StatementAbstractType">\r
+                <sequence>\r
+                    <element ref="saml:SubjectLocality" minOccurs="0"/>\r
+                    <element ref="saml:AuthnContext"/>\r
+                </sequence>\r
+                <attribute name="AuthnInstant" type="dateTime" use="required"/>\r
+                <attribute name="SessionIndex" type="string" use="optional"/>\r
+                <attribute name="SessionNotOnOrAfter" type="dateTime" use="optional"/>\r
+            </extension>\r
+        </complexContent>\r
+    </complexType>\r
+    <element name="SubjectLocality" type="saml:SubjectLocalityType"/>\r
+    <complexType name="SubjectLocalityType">\r
+        <attribute name="Address" type="string" use="optional"/>\r
+        <attribute name="DNSName" type="string" use="optional"/>\r
+    </complexType>\r
+    <element name="AuthnContext" type="saml:AuthnContextType"/>\r
+    <complexType name="AuthnContextType">\r
+        <sequence>\r
+            <choice>\r
+                <sequence>\r
+                    <element ref="saml:AuthnContextClassRef"/>\r
+                    <choice minOccurs="0">\r
+                        <element ref="saml:AuthnContextDecl"/>\r
+                        <element ref="saml:AuthnContextDeclRef"/>\r
+                    </choice>\r
+                </sequence>\r
+                <choice>\r
+                    <element ref="saml:AuthnContextDecl"/>\r
+                    <element ref="saml:AuthnContextDeclRef"/>\r
+                </choice>\r
+            </choice>\r
+            <element ref="saml:AuthenticatingAuthority" minOccurs="0" maxOccurs="unbounded"/>\r
+        </sequence>\r
+    </complexType>\r
+    <element name="AuthnContextClassRef" type="anyURI"/>\r
+    <element name="AuthnContextDeclRef" type="anyURI"/>\r
+    <element name="AuthnContextDecl" type="anyType"/>\r
+    <element name="AuthenticatingAuthority" type="anyURI"/>\r
+    <element name="AuthzDecisionStatement" type="saml:AuthzDecisionStatementType"/>\r
+    <complexType name="AuthzDecisionStatementType">\r
+        <complexContent>\r
+            <extension base="saml:StatementAbstractType">\r
+                <sequence>\r
+                    <element ref="saml:Action" maxOccurs="unbounded"/>\r
+                    <element ref="saml:Evidence" minOccurs="0"/>\r
+                </sequence>\r
+                <attribute name="Resource" type="anyURI" use="required"/>\r
+                <attribute name="Decision" type="saml:DecisionType" use="required"/>\r
+            </extension>\r
+        </complexContent>\r
+    </complexType>\r
+    <simpleType name="DecisionType">\r
+        <restriction base="string">\r
+            <enumeration value="Permit"/>\r
+            <enumeration value="Deny"/>\r
+            <enumeration value="Indeterminate"/>\r
+        </restriction>\r
+    </simpleType>\r
+    <element name="Action" type="saml:ActionType"/>\r
+    <complexType name="ActionType">\r
+        <simpleContent>\r
+            <extension base="string">\r
+                <attribute name="Namespace" type="anyURI" use="required"/>\r
+            </extension>\r
+        </simpleContent>\r
+    </complexType>\r
+    <element name="Evidence" type="saml:EvidenceType"/>\r
+    <complexType name="EvidenceType">\r
+        <choice maxOccurs="unbounded">\r
+            <element ref="saml:AssertionIDRef"/>\r
+            <element ref="saml:AssertionURIRef"/>\r
+            <element ref="saml:Assertion"/>\r
+            <element ref="saml:EncryptedAssertion"/>\r
+        </choice>\r
+    </complexType>\r
+    <element name="AttributeStatement" type="saml:AttributeStatementType"/>\r
+    <complexType name="AttributeStatementType">\r
+        <complexContent>\r
+            <extension base="saml:StatementAbstractType">\r
+                <choice maxOccurs="unbounded">\r
+                    <element ref="saml:Attribute"/>\r
+                    <element ref="saml:EncryptedAttribute"/>\r
+                </choice>\r
+            </extension>\r
+        </complexContent>\r
+    </complexType>\r
+    <element name="Attribute" type="saml:AttributeType"/>\r
+    <complexType name="AttributeType">\r
+        <sequence>\r
+            <element ref="saml:AttributeValue" minOccurs="0" maxOccurs="unbounded"/>\r
+        </sequence>\r
+        <attribute name="Name" type="string" use="required"/>\r
+        <attribute name="NameFormat" type="anyURI" use="optional"/>\r
+        <attribute name="FriendlyName" type="string" use="optional"/>\r
+        <anyAttribute namespace="##other" processContents="lax"/>\r
+    </complexType>\r
+    <element name="AttributeValue" type="anyType" nillable="true"/>\r
+    <element name="EncryptedAttribute" type="saml:EncryptedElementType"/>\r
+</schema>\r
diff --git a/etc/vmware-tools/vgauth/schemas/xenc-schema.xsd b/etc/vmware-tools/vgauth/schemas/xenc-schema.xsd
new file mode 100644 (file)
index 0000000..8b3571d
--- /dev/null
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "XMLSchema.dtd" [
+   <!ATTLIST schema
+     xmlns:xenc CDATA #FIXED 'http://www.w3.org/2001/04/xmlenc#'
+     xmlns:ds CDATA #FIXED 'http://www.w3.org/2000/09/xmldsig#'>
+   <!ENTITY xenc 'http://www.w3.org/2001/04/xmlenc#'>
+   <!ENTITY % p ''>
+   <!ENTITY % s ''>
+  ]>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" version="1.0" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2001/04/xmlenc#" elementFormDefault="qualified">
+
+  <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/>
+
+  <complexType name="EncryptedType" abstract="true">
+    <sequence>
+      <element name="EncryptionMethod" type="xenc:EncryptionMethodType" minOccurs="0"/>
+      <element ref="ds:KeyInfo" minOccurs="0"/>
+      <element ref="xenc:CipherData"/>
+      <element ref="xenc:EncryptionProperties" minOccurs="0"/>
+    </sequence>
+    <attribute name="Id" type="ID" use="optional"/>
+    <attribute name="Type" type="anyURI" use="optional"/>
+    <attribute name="MimeType" type="string" use="optional"/>
+    <attribute name="Encoding" type="anyURI" use="optional"/>
+  </complexType>
+
+  <complexType name="EncryptionMethodType" mixed="true">
+    <sequence>
+      <element name="KeySize" minOccurs="0" type="xenc:KeySizeType"/>
+      <element name="OAEPparams" minOccurs="0" type="base64Binary"/>
+      <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </sequence>
+    <attribute name="Algorithm" type="anyURI" use="required"/>
+  </complexType>
+
+    <simpleType name="KeySizeType">
+      <restriction base="integer"/>
+    </simpleType>
+
+  <element name="CipherData" type="xenc:CipherDataType"/>
+  <complexType name="CipherDataType">
+     <choice>
+       <element name="CipherValue" type="base64Binary"/>
+       <element ref="xenc:CipherReference"/>
+     </choice>
+    </complexType>
+
+   <element name="CipherReference" type="xenc:CipherReferenceType"/>
+   <complexType name="CipherReferenceType">
+       <choice>
+         <element name="Transforms" type="xenc:TransformsType" minOccurs="0"/>
+       </choice>
+       <attribute name="URI" type="anyURI" use="required"/>
+   </complexType>
+
+     <complexType name="TransformsType">
+       <sequence>
+         <element ref="ds:Transform" maxOccurs="unbounded"/>
+       </sequence>
+     </complexType>
+
+
+  <element name="EncryptedData" type="xenc:EncryptedDataType"/>
+  <complexType name="EncryptedDataType">
+    <complexContent>
+      <extension base="xenc:EncryptedType">
+       </extension>
+    </complexContent>
+  </complexType>
+
+  <!-- Children of ds:KeyInfo -->
+
+  <element name="EncryptedKey" type="xenc:EncryptedKeyType"/>
+  <complexType name="EncryptedKeyType">
+    <complexContent>
+      <extension base="xenc:EncryptedType">
+        <sequence>
+          <element ref="xenc:ReferenceList" minOccurs="0"/>
+          <element name="CarriedKeyName" type="string" minOccurs="0"/>
+        </sequence>
+        <attribute name="Recipient" type="string" use="optional"/>
+      </extension>
+    </complexContent>
+  </complexType>
+
+    <element name="AgreementMethod" type="xenc:AgreementMethodType"/>
+    <complexType name="AgreementMethodType" mixed="true">
+      <sequence>
+        <element name="KA-Nonce" minOccurs="0" type="base64Binary"/>
+        <!-- <element ref="ds:DigestMethod" minOccurs="0"/> -->
+        <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+        <element name="OriginatorKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+        <element name="RecipientKeyInfo" minOccurs="0" type="ds:KeyInfoType"/>
+      </sequence>
+      <attribute name="Algorithm" type="anyURI" use="required"/>
+    </complexType>
+
+  <!-- End Children of ds:KeyInfo -->
+
+  <element name="ReferenceList">
+    <complexType>
+      <choice minOccurs="1" maxOccurs="unbounded">
+        <element name="DataReference" type="xenc:ReferenceType"/>
+        <element name="KeyReference" type="xenc:ReferenceType"/>
+      </choice>
+    </complexType>
+  </element>
+
+  <complexType name="ReferenceType">
+    <sequence>
+      <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+    </sequence>
+    <attribute name="URI" type="anyURI" use="required"/>
+  </complexType>
+
+
+  <element name="EncryptionProperties" type="xenc:EncryptionPropertiesType"/>
+  <complexType name="EncryptionPropertiesType">
+    <sequence>
+      <element ref="xenc:EncryptionProperty" maxOccurs="unbounded"/>
+    </sequence>
+    <attribute name="Id" type="ID" use="optional"/>
+  </complexType>
+
+    <element name="EncryptionProperty" type="xenc:EncryptionPropertyType"/>
+    <complexType name="EncryptionPropertyType" mixed="true">
+      <choice maxOccurs="unbounded">
+        <any namespace="##other" processContents="lax"/>
+      </choice>
+      <attribute name="Target" type="anyURI" use="optional"/>
+      <attribute name="Id" type="ID" use="optional"/>
+      <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
+    </complexType>
+
+</schema>
diff --git a/etc/vmware-tools/vgauth/schemas/xml.xsd b/etc/vmware-tools/vgauth/schemas/xml.xsd
new file mode 100644 (file)
index 0000000..20555e2
--- /dev/null
@@ -0,0 +1,287 @@
+<?xml version='1.0'?>
+<?xml-stylesheet href="../2008/09/xsd.xsl" type="text/xsl"?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema"
+  xmlns   ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information
+      about this namespace.
+     </p>
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+
+      <h3>lang (as an attribute name)</h3>
+      <p>
+       denotes an attribute whose value
+       is a language code for the natural language of the content of
+       any element; its value is inherited.  This name is reserved
+       by virtue of its definition in the XML specification.</p>
+
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.
+     </p>
+     <p>
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+
+      <h3>space (as an attribute name)</h3>
+      <p>
+       denotes an attribute whose
+       value is a keyword indicating what whitespace processing
+       discipline is intended for the content of the element; its
+       value is inherited.  This name is reserved by virtue of its
+       definition in the XML specification.</p>
+
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:restriction base="xs:NCName">
+    <xs:enumeration value="default"/>
+    <xs:enumeration value="preserve"/>
+   </xs:restriction>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI"> <xs:annotation>
+   <xs:documentation>
+    <div>
+
+      <h3>base (as an attribute name)</h3>
+      <p>
+       denotes an attribute whose value
+       provides a URI to be used as the base for interpreting any
+       relative URIs in the scope of the element on which it
+       appears; its value is inherited.  This name is reserved
+       by virtue of its definition in the XML Base specification.</p>
+
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+
+      <h3>id (as an attribute name)</h3>
+      <p>
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+  <xs:attribute ref="xml:base"/>
+  <xs:attribute ref="xml:lang"/>
+  <xs:attribute ref="xml:space"/>
+  <xs:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+
+    <h3>Father (in any context at all)</h3>
+
+    <div class="bodytext">
+     <p>
+      denotes Jon Bosak, the chair of
+      the original XML Working Group.  This name is reserved by
+      the following decision of the W3C XML Plenary and
+      XML Coordination groups:
+     </p>
+     <blockquote>
+       <p>
+       In appreciation for his vision, leadership and
+       dedication the W3C XML Plenary on this 10th day of
+       February, 2000, reserves for Jon Bosak in perpetuity
+       the XML name "xml:Father".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type . . .>
+           . . .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+     <p>
+      The schema document at that URI may however change in the future,
+      in order to remain compatible with the latest version of XML
+      Schema itself, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd
+      </a>
+      will change accordingly; the version at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd
+      </a>
+      will not change.
+     </p>
+     <p>
+      Previous dated (and unchanging) versions of this schema
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+       http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+       http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+       http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
+
diff --git a/etc/vmware-tools/vgauth/schemas/xmldsig-core-schema.xsd b/etc/vmware-tools/vgauth/schemas/xmldsig-core-schema.xsd
new file mode 100644 (file)
index 0000000..d78b743
--- /dev/null
@@ -0,0 +1,308 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN" "XMLSchema.dtd" [
+   <!ATTLIST schema
+     xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#">
+   <!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'>
+   <!ENTITY % p ''>
+   <!ENTITY % s ''>
+  ]>
+<!-- Schema for XML Signatures
+    http://www.w3.org/2000/09/xmldsig#
+    $Revision: 1.1 $ on $Date: 2002/02/08 20:32:26 $ by $Author: reagle $
+
+    Copyright 2001 The Internet Society and W3C (Massachusetts Institute
+    of Technology, Institut National de Recherche en Informatique et en
+    Automatique, Keio University). All Rights Reserved.
+    http://www.w3.org/Consortium/Legal/
+
+    This document is governed by the W3C Software License [1] as described
+    in the FAQ [2].
+
+    [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
+    [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" targetNamespace="http://www.w3.org/2000/09/xmldsig#" version="0.1" elementFormDefault="qualified">
+
+<!-- Basic Types Defined for Signatures -->
+
+<simpleType name="CryptoBinary">
+  <restriction base="base64Binary">
+  </restriction>
+</simpleType>
+
+<!-- Start Signature -->
+
+<element name="Signature" type="ds:SignatureType"/>
+<complexType name="SignatureType">
+  <sequence>
+    <element ref="ds:SignedInfo"/>
+    <element ref="ds:SignatureValue"/>
+    <element ref="ds:KeyInfo" minOccurs="0"/>
+    <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
+  </sequence>
+  <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+  <element name="SignatureValue" type="ds:SignatureValueType"/>
+  <complexType name="SignatureValueType">
+    <simpleContent>
+      <extension base="base64Binary">
+        <attribute name="Id" type="ID" use="optional"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+
+<!-- Start SignedInfo -->
+
+<element name="SignedInfo" type="ds:SignedInfoType"/>
+<complexType name="SignedInfoType">
+  <sequence>
+    <element ref="ds:CanonicalizationMethod"/>
+    <element ref="ds:SignatureMethod"/>
+    <element ref="ds:Reference" maxOccurs="unbounded"/>
+  </sequence>
+  <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+  <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>
+  <complexType name="CanonicalizationMethodType" mixed="true">
+    <sequence>
+      <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
+      <!-- (0,unbounded) elements from (1,1) namespace -->
+    </sequence>
+    <attribute name="Algorithm" type="anyURI" use="required"/>
+  </complexType>
+
+  <element name="SignatureMethod" type="ds:SignatureMethodType"/>
+  <complexType name="SignatureMethodType" mixed="true">
+    <sequence>
+      <element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/>
+      <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+      <!-- (0,unbounded) elements from (1,1) external namespace -->
+    </sequence>
+    <attribute name="Algorithm" type="anyURI" use="required"/>
+  </complexType>
+
+<!-- Start Reference -->
+
+<element name="Reference" type="ds:ReferenceType"/>
+<complexType name="ReferenceType">
+  <sequence>
+    <element ref="ds:Transforms" minOccurs="0"/>
+    <element ref="ds:DigestMethod"/>
+    <element ref="ds:DigestValue"/>
+  </sequence>
+  <attribute name="Id" type="ID" use="optional"/>
+  <attribute name="URI" type="anyURI" use="optional"/>
+  <attribute name="Type" type="anyURI" use="optional"/>
+</complexType>
+
+  <element name="Transforms" type="ds:TransformsType"/>
+  <complexType name="TransformsType">
+    <sequence>
+      <element ref="ds:Transform" maxOccurs="unbounded"/>
+    </sequence>
+  </complexType>
+
+  <element name="Transform" type="ds:TransformType"/>
+  <complexType name="TransformType" mixed="true">
+    <choice minOccurs="0" maxOccurs="unbounded">
+      <any namespace="##other" processContents="lax"/>
+      <!-- (1,1) elements from (0,unbounded) namespaces -->
+      <element name="XPath" type="string"/>
+    </choice>
+    <attribute name="Algorithm" type="anyURI" use="required"/>
+  </complexType>
+
+<!-- End Reference -->
+
+<element name="DigestMethod" type="ds:DigestMethodType"/>
+<complexType name="DigestMethodType" mixed="true">
+  <sequence>
+    <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+  </sequence>
+  <attribute name="Algorithm" type="anyURI" use="required"/>
+</complexType>
+
+<element name="DigestValue" type="ds:DigestValueType"/>
+<simpleType name="DigestValueType">
+  <restriction base="base64Binary"/>
+</simpleType>
+
+<!-- End SignedInfo -->
+
+<!-- Start KeyInfo -->
+
+<element name="KeyInfo" type="ds:KeyInfoType"/>
+<complexType name="KeyInfoType" mixed="true">
+  <choice maxOccurs="unbounded">
+    <element ref="ds:KeyName"/>
+    <element ref="ds:KeyValue"/>
+    <element ref="ds:RetrievalMethod"/>
+    <element ref="ds:X509Data"/>
+    <element ref="ds:PGPData"/>
+    <element ref="ds:SPKIData"/>
+    <element ref="ds:MgmtData"/>
+    <any processContents="lax" namespace="##other"/>
+    <!-- (1,1) elements from (0,unbounded) namespaces -->
+  </choice>
+  <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+  <element name="KeyName" type="string"/>
+  <element name="MgmtData" type="string"/>
+
+  <element name="KeyValue" type="ds:KeyValueType"/>
+  <complexType name="KeyValueType" mixed="true">
+   <choice>
+     <element ref="ds:DSAKeyValue"/>
+     <element ref="ds:RSAKeyValue"/>
+     <any namespace="##other" processContents="lax"/>
+   </choice>
+  </complexType>
+
+  <element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
+  <complexType name="RetrievalMethodType">
+    <sequence>
+      <element ref="ds:Transforms" minOccurs="0"/>
+    </sequence>
+    <attribute name="URI" type="anyURI"/>
+    <attribute name="Type" type="anyURI" use="optional"/>
+  </complexType>
+
+<!-- Start X509Data -->
+
+<element name="X509Data" type="ds:X509DataType"/>
+<complexType name="X509DataType">
+  <sequence maxOccurs="unbounded">
+    <choice>
+      <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
+      <element name="X509SKI" type="base64Binary"/>
+      <element name="X509SubjectName" type="string"/>
+      <element name="X509Certificate" type="base64Binary"/>
+      <element name="X509CRL" type="base64Binary"/>
+      <any namespace="##other" processContents="lax"/>
+    </choice>
+  </sequence>
+</complexType>
+
+<complexType name="X509IssuerSerialType">
+  <sequence>
+    <element name="X509IssuerName" type="string"/>
+    <element name="X509SerialNumber" type="integer"/>
+  </sequence>
+</complexType>
+
+<!-- End X509Data -->
+
+<!-- Begin PGPData -->
+
+<element name="PGPData" type="ds:PGPDataType"/>
+<complexType name="PGPDataType">
+  <choice>
+    <sequence>
+      <element name="PGPKeyID" type="base64Binary"/>
+      <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
+      <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+    </sequence>
+    <sequence>
+      <element name="PGPKeyPacket" type="base64Binary"/>
+      <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+    </sequence>
+  </choice>
+</complexType>
+
+<!-- End PGPData -->
+
+<!-- Begin SPKIData -->
+
+<element name="SPKIData" type="ds:SPKIDataType"/>
+<complexType name="SPKIDataType">
+  <sequence maxOccurs="unbounded">
+    <element name="SPKISexp" type="base64Binary"/>
+    <any namespace="##other" processContents="lax" minOccurs="0"/>
+  </sequence>
+</complexType>
+
+<!-- End SPKIData -->
+
+<!-- End KeyInfo -->
+
+<!-- Start Object (Manifest, SignatureProperty) -->
+
+<element name="Object" type="ds:ObjectType"/>
+<complexType name="ObjectType" mixed="true">
+  <sequence minOccurs="0" maxOccurs="unbounded">
+    <any namespace="##any" processContents="lax"/>
+  </sequence>
+  <attribute name="Id" type="ID" use="optional"/>
+  <attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet -->
+  <attribute name="Encoding" type="anyURI" use="optional"/>
+</complexType>
+
+<element name="Manifest" type="ds:ManifestType"/>
+<complexType name="ManifestType">
+  <sequence>
+    <element ref="ds:Reference" maxOccurs="unbounded"/>
+  </sequence>
+  <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+<element name="SignatureProperties" type="ds:SignaturePropertiesType"/>
+<complexType name="SignaturePropertiesType">
+  <sequence>
+    <element ref="ds:SignatureProperty" maxOccurs="unbounded"/>
+  </sequence>
+  <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+   <element name="SignatureProperty" type="ds:SignaturePropertyType"/>
+   <complexType name="SignaturePropertyType" mixed="true">
+     <choice maxOccurs="unbounded">
+       <any namespace="##other" processContents="lax"/>
+       <!-- (1,1) elements from (1,unbounded) namespaces -->
+     </choice>
+     <attribute name="Target" type="anyURI" use="required"/>
+     <attribute name="Id" type="ID" use="optional"/>
+   </complexType>
+
+<!-- End Object (Manifest, SignatureProperty) -->
+
+<!-- Start Algorithm Parameters -->
+
+<simpleType name="HMACOutputLengthType">
+  <restriction base="integer"/>
+</simpleType>
+
+<!-- Start KeyValue Element-types -->
+
+<element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
+<complexType name="DSAKeyValueType">
+  <sequence>
+    <sequence minOccurs="0">
+      <element name="P" type="ds:CryptoBinary"/>
+      <element name="Q" type="ds:CryptoBinary"/>
+    </sequence>
+    <element name="G" type="ds:CryptoBinary" minOccurs="0"/>
+    <element name="Y" type="ds:CryptoBinary"/>
+    <element name="J" type="ds:CryptoBinary" minOccurs="0"/>
+    <sequence minOccurs="0">
+      <element name="Seed" type="ds:CryptoBinary"/>
+      <element name="PgenCounter" type="ds:CryptoBinary"/>
+    </sequence>
+  </sequence>
+</complexType>
+
+<element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
+<complexType name="RSAKeyValueType">
+  <sequence>
+    <element name="Modulus" type="ds:CryptoBinary"/>
+    <element name="Exponent" type="ds:CryptoBinary"/>
+  </sequence>
+</complexType>
+
+<!-- End KeyValue Element-types -->
+
+<!-- End Signature -->
+
+</schema>
diff --git a/etc/vtrgb b/etc/vtrgb
new file mode 120000 (symlink)
index 0000000..586040f
--- /dev/null
+++ b/etc/vtrgb
@@ -0,0 +1 @@
+/etc/alternatives/vtrgb
\ No newline at end of file
diff --git a/etc/wgetrc b/etc/wgetrc
new file mode 100644 (file)
index 0000000..369e22c
--- /dev/null
@@ -0,0 +1,138 @@
+###
+### Sample Wget initialization file .wgetrc
+###
+
+## You can use this file to change the default behaviour of wget or to
+## avoid having to type many many command-line options. This file does
+## not contain a comprehensive list of commands -- look at the manual
+## to find out what you can put into this file. You can find this here:
+##   $ info wget.info 'Startup File'
+## Or online here:
+##   https://www.gnu.org/software/wget/manual/wget.html#Startup-File
+##
+## Wget initialization file can reside in /etc/wgetrc
+## (global, for all users) or $HOME/.wgetrc (for a single user).
+##
+## To use the settings in this file, you will have to uncomment them,
+## as well as change them, in most cases, as the values on the
+## commented-out lines are the default values (e.g. "off").
+##
+## Command are case-, underscore- and minus-insensitive.
+## For example ftp_proxy, ftp-proxy and ftpproxy are the same.
+
+
+##
+## Global settings (useful for setting up in /etc/wgetrc).
+## Think well before you change them, since they may reduce wget's
+## functionality, and make it behave contrary to the documentation:
+##
+
+# You can set retrieve quota for beginners by specifying a value
+# optionally followed by 'K' (kilobytes) or 'M' (megabytes).  The
+# default quota is unlimited.
+#quota = inf
+
+# You can lower (or raise) the default number of retries when
+# downloading a file (default is 20).
+#tries = 20
+
+# Lowering the maximum depth of the recursive retrieval is handy to
+# prevent newbies from going too "deep" when they unwittingly start
+# the recursive retrieval.  The default is 5.
+#reclevel = 5
+
+# By default Wget uses "passive FTP" transfer where the client
+# initiates the data connection to the server rather than the other
+# way around.  That is required on systems behind NAT where the client
+# computer cannot be easily reached from the Internet.  However, some
+# firewalls software explicitly supports active FTP and in fact has
+# problems supporting passive transfer.  If you are in such
+# environment, use "passive_ftp = off" to revert to active FTP.
+#passive_ftp = off
+passive_ftp = on
+
+# The "wait" command below makes Wget wait between every connection.
+# If, instead, you want Wget to wait only between retries of failed
+# downloads, set waitretry to maximum number of seconds to wait (Wget
+# will use "linear backoff", waiting 1 second after the first failure
+# on a file, 2 seconds after the second failure, etc. up to this max).
+#waitretry = 10
+
+
+##
+## Local settings (for a user to set in his $HOME/.wgetrc).  It is
+## *highly* undesirable to put these settings in the global file, since
+## they are potentially dangerous to "normal" users.
+##
+## Even when setting up your own ~/.wgetrc, you should know what you
+## are doing before doing so.
+##
+
+# Set this to on to use timestamping by default:
+#timestamping = off
+
+# It is a good idea to make Wget send your email address in a `From:'
+# header with your request (so that server administrators can contact
+# you in case of errors).  Wget does *not* send `From:' by default.
+#header = From: Your Name <username@site.domain>
+
+# You can set up other headers, like Accept-Language.  Accept-Language
+# is *not* sent by default.
+#header = Accept-Language: en
+
+# You can set the default proxies for Wget to use for http, https, and ftp.
+# They will override the value in the environment.
+#https_proxy = http://proxy.yoyodyne.com:18023/
+#http_proxy = http://proxy.yoyodyne.com:18023/
+#ftp_proxy = http://proxy.yoyodyne.com:18023/
+
+# If you do not want to use proxy at all, set this to off.
+#use_proxy = on
+
+# You can customize the retrieval outlook.  Valid options are default,
+# binary, mega and micro.
+#dot_style = default
+
+# Setting this to off makes Wget not download /robots.txt.  Be sure to
+# know *exactly* what /robots.txt is and how it is used before changing
+# the default!
+#robots = on
+
+# It can be useful to make Wget wait between connections.  Set this to
+# the number of seconds you want Wget to wait.
+#wait = 0
+
+# You can force creating directory structure, even if a single is being
+# retrieved, by setting this to on.
+#dirstruct = off
+
+# You can turn on recursive retrieving by default (don't do this if
+# you are not sure you know what it means) by setting this to on.
+#recursive = off
+
+# To always back up file X as X.orig before converting its links (due
+# to -k / --convert-links / convert_links = on having been specified),
+# set this variable to on:
+#backup_converted = off
+
+# To have Wget follow FTP links from HTML files by default, set this
+# to on:
+#follow_ftp = off
+
+# To try ipv6 addresses first:
+#prefer-family = IPv6
+
+# Set default IRI support state
+#iri = off
+
+# Force the default system encoding
+#localencoding = UTF-8
+
+# Force the default remote server encoding
+#remoteencoding = UTF-8
+
+# Turn on to prevent following non-HTTPS links when in recursive mode
+#httpsonly = off
+
+# Tune HTTPS security (auto, SSLv2, SSLv3, TLSv1, PFS)
+#secureprotocol = auto
diff --git a/etc/xattr.conf b/etc/xattr.conf
new file mode 100644 (file)
index 0000000..dcbc12c
--- /dev/null
@@ -0,0 +1,21 @@
+# /etc/xattr.conf
+#
+# Format:
+# <pattern> <action>
+#
+# Actions:
+#   permissions - copy when trying to preserve permissions.
+#   skip - do not copy.
+
+system.nfs4_acl                        permissions
+system.nfs4acl                 permissions
+system.posix_acl_access                permissions
+system.posix_acl_default       permissions
+trusted.SGI_ACL_DEFAULT                skip            # xfs specific
+trusted.SGI_ACL_FILE           skip            # xfs specific
+trusted.SGI_CAP_FILE           skip            # xfs specific
+trusted.SGI_DMI_*              skip            # xfs specific
+trusted.SGI_MAC_FILE           skip            # xfs specific
+xfsroot.*                      skip            # xfs specific; obsolete
+user.Beagle.*                  skip            # ignore Beagle index data
+security.evm                   skip            # may only be written by kernel
diff --git a/etc/xdg/autostart/snap-userd-autostart.desktop b/etc/xdg/autostart/snap-userd-autostart.desktop
new file mode 100644 (file)
index 0000000..d0dd7a5
--- /dev/null
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=Snap user application autostart helper
+Comment=Helper program for launching snap applications that are configured to start automatically.
+Exec=/usr/bin/snap userd --autostart
+Type=Application
+NoDisplay=true
diff --git a/etc/xdg/autostart/xdg-user-dirs.desktop b/etc/xdg/autostart/xdg-user-dirs.desktop
new file mode 100644 (file)
index 0000000..987511d
--- /dev/null
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Type=Application
+Name=User folders update
+TryExec=xdg-user-dirs-update
+Exec=xdg-user-dirs-update
+StartupNotify=false
+NoDisplay=true
+X-Ubuntu-Gettext-Domain=xdg-user-dirs
+
+X-GNOME-Autostart-Phase=Initialization
+X-KDE-autostart-phase=1
diff --git a/etc/xdg/systemd/user b/etc/xdg/systemd/user
new file mode 120000 (symlink)
index 0000000..1c75bd3
--- /dev/null
@@ -0,0 +1 @@
+../../systemd/user
\ No newline at end of file
diff --git a/etc/xdg/user-dirs.conf b/etc/xdg/user-dirs.conf
new file mode 100644 (file)
index 0000000..86012d0
--- /dev/null
@@ -0,0 +1,11 @@
+# This controls the behaviour of xdg-user-dirs-update which is run on user login
+# You can also have per-user config in ~/.config/user-dirs.conf, or specify
+# the XDG_CONFIG_HOME and/or XDG_CONFIG_DIRS to override this
+#
+
+enabled=True
+
+# This sets the filename encoding to use. You can specify an explicit
+# encoding, or "locale" which means the encoding of the users locale
+# will be used
+filename_encoding=UTF-8
diff --git a/etc/xdg/user-dirs.defaults b/etc/xdg/user-dirs.defaults
new file mode 100644 (file)
index 0000000..6baf7cc
--- /dev/null
@@ -0,0 +1,16 @@
+# Default settings for user directories
+#
+# The values are relative pathnames from the home directory and
+# will be translated on a per-path-element basis into the users locale
+DESKTOP=Desktop
+DOWNLOAD=Downloads
+TEMPLATES=Templates
+PUBLICSHARE=Public
+DOCUMENTS=Documents
+MUSIC=Music
+PICTURES=Pictures
+VIDEOS=Videos
+# Another alternative is:
+#MUSIC=Documents/Music
+#PICTURES=Documents/Pictures
+#VIDEOS=Documents/Videos
diff --git a/etc/zsh_command_not_found b/etc/zsh_command_not_found
new file mode 100644 (file)
index 0000000..c9b64cc
--- /dev/null
@@ -0,0 +1,14 @@
+# (c) Zygmunt Krynicki 2007,
+# Licensed under GPL, see COPYING for the whole text
+#
+# This script will look-up command in the database and suggest
+# installation of packages available from the repository
+
+if [[ -x /usr/lib/command-not-found ]] ; then
+       if (( ! ${+functions[command_not_found_handler]} )) ; then
+               function command_not_found_handler {
+                       [[ -x /usr/lib/command-not-found ]] || return 1
+                       /usr/lib/command-not-found --no-failure-msg -- ${1+"$1"} && :
+               }
+       fi
+fi